Changeset - 731858c19142
[Not reviewed]
0 1 0
Joel Addison - 3 years ago 2022-01-05 08:11:27
joel@addison.net.au
Add ticket type to venueless traits

Allow permissions to be setup in venueless based on the ticket type
in addition to existing specific traits.
1 file changed with 5 insertions and 0 deletions:
0 comments (0 inline, 0 general)
vendor/regidesk/regidesk/models.py
Show inline comments
 
# -*- coding: utf-8 -*-
 
import base64
 
import datetime
 
from decimal import Decimal
 
from io import BytesIO
 
import jwt
 
import re
 

	
 
from django.core.exceptions import ValidationError
 
from django.utils import timezone
 

	
 
from django.conf import settings
 
from django.db import models
 
from django.db.models import Q, F
 
from django.db.models import Case, When, Value
 
from django.db.models import Count
 
from django.db.models.signals import post_save
 
from django.contrib.auth import get_user_model
 
import pyqrcode
 

	
 
from symposion import constants
 
from symposion.text_parser import parse
 
from registrasion.models import commerce
 
from registrasion.util import generate_access_code as generate_code
 

	
 
User = get_user_model()
 

	
 

	
 
class BoardingPassTemplate(models.Model):
 

	
 
    label = models.CharField(max_length=100, verbose_name="Label")
...
 
@@ -163,48 +164,52 @@ class CheckIn(models.Model):
 
            updated = True
 

	
 
        if not self.venueless_traits:
 
            traits = self._get_venueless_traits()
 
            self.venueless_traits = ",".join(traits)
 
            updated = True
 

	
 
        if not self.venueless_traits or not self._venueless_token:
 
            self._venueless_token = self._generate_venueless_token()
 
            updated = True
 

	
 
        if updated:
 
            self.save()
 

	
 
        return self._venueless_token
 

	
 
    def _get_venueless_traits(self):
 
        """ Returns a list of traits based on the user's ticket """
 
        ticket_type = self.user.attendee.ticket_type
 
        if not ticket_type:
 
            return []
 

	
 
        traits = ["attendee"]
 

	
 
        ticket_code = re.sub(r'\s+', '', ticket_type)
 
        ticket_trait = f'ticket_{ticket_code}'
 
        traits.append(ticket_trait)
 

	
 
        if ticket_type == "Conference Volunteer":
 
            traits.append("volunteer")
 
        elif ticket_type == "Conference Organiser":
 
            traits.append("organiser")
 

	
 
        if hasattr(self.user, "speaker_profile"):
 
            best = 0
 
            for presentation in self.user.speaker_profile.presentations.all():
 
                if presentation.section.id == 1:
 
                    # Main Conference Speaker
 
                    best = 1
 
                if best == 0 and presentation.section.id == 2:
 
                    # Miniconf Organiser
 
                    best = 2
 

	
 
            if best == 1:
 
                traits.append("speaker")
 
            elif best == 2:
 
                traits.append("miniconf_org")
 
            else:
 
                traits.append("miniconf_speaker")
 

	
 
        return traits
 

	
0 comments (0 inline, 0 general)