@@ -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)
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,