diff --git a/vendor/regidesk/regidesk/models.py b/vendor/regidesk/regidesk/models.py index 87cce9b0d6279272d3f01c1d03b5ec184a6ba83d..540ad5e7997b2ef0b701a1098e82262e26e48c2a 100644 --- a/vendor/regidesk/regidesk/models.py +++ b/vendor/regidesk/regidesk/models.py @@ -37,6 +37,7 @@ class BoardingPassTemplate(models.Model): verbose_name = ("Boarding Pass template") verbose_name_plural = ("Boarding Pass templates") + class BoardingPass(models.Model): template = models.ForeignKey(BoardingPassTemplate, null=True, blank=True, @@ -54,6 +55,8 @@ class BoardingPass(models.Model): ("view_boarding_pass", "Can view sent boarding passes"), ("send_boarding_pass", "Can send boarding passes"), ) + verbose_name = ("Boarding Pass") + verbose_name_plural = ("Boarding Passes") def __unicode__(self): return self.checkin.attendee.attendeeprofilebase.attendeeprofile.name + ' ' + self.timestamp.strftime('%Y-%m-%d %H:%M:%S') @@ -62,6 +65,7 @@ class BoardingPass(models.Model): def email_args(self): return (self.subject, self.body, self.from_address, self.user.email) + class CheckIn(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) @@ -159,7 +163,8 @@ class CheckIn(models.Model): updated = True if not self.venueless_traits: - self.venueless_traits = ".".join(("attendee",)) + traits = self._get_venueless_traits() + self.venueless_traits = ",".join(traits) updated = True if not self._venueless_token: @@ -171,11 +176,43 @@ class CheckIn(models.Model): return self._venueless_token + def _get_venueless_traits(self): + traits = ["attendee"] + + ticket_type = self.user.attendee.ticket_type + + 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 + def _generate_venueless_token(self): """ Generate token for Venueless login """ issued_at = datetime.datetime.utcnow() expiry = settings.LCA_END + datetime.timedelta(days=1) + if self.user.attendee.ticket_type == "Miniconf Only": + # Miniconf only ticket holders have limited access + expiry = settings.LCA_MINICONF_END payload = { "iss": settings.VENUELESS_TOKEN_ISSUER,