Files
@ 9815e1131dee
Branch filter:
Location: symposion_app/pinaxcon/templatetags/lca2018_tags.py
9815e1131dee
4.8 KiB
text/x-python
Remove mention of mask requirement
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | import hashlib
from decimal import Decimal
from django import template
from django.conf import settings
from django.contrib.staticfiles.templatetags import staticfiles
from easy_thumbnails.files import get_thumbnailer
from registrasion.templatetags import registrasion_tags
from symposion.conference import models as conference_models
from symposion.schedule.models import Track
from regidesk.models import CheckIn
CONFERENCE_ID = settings.CONFERENCE_ID
GST_RATE = settings.GST_RATE
register = template.Library()
@register.simple_tag()
def classname(ob):
return ob.__class__.__name__
@register.simple_tag(takes_context=True)
def can_manage(context, proposal):
return proposal_permission(context, "manage", proposal)
@register.simple_tag(takes_context=True)
def can_review(context, proposal):
return proposal_permission(context, "review", proposal)
def proposal_permission(context, permname, proposal):
slug = proposal.kind.section.slug
perm = "reviews.can_%s_%s" % (permname, slug)
return context.request.user.has_perm(perm)
@register.simple_tag(takes_context=True)
def speaker_photo(context, speaker, size):
''' Provides the speaker profile, or else fall back to libravatar or gravatar. '''
if speaker.photo:
thumbnailer = get_thumbnailer(speaker.photo)
thumbnail_options = {'crop': True, 'size': (size, size)}
thumbnail = thumbnailer.get_thumbnail(thumbnail_options)
return thumbnail.url
else:
email = speaker.user.email.encode("utf-8")
md5sum = hashlib.md5(email.strip().lower()).hexdigest()
fallback_image = ("https://linux.conf.au/site_media/static/lca2017"
"/images/speaker-fallback-devil.jpg")
url = "https://secure.gravatar.com/avatar/%s?s=%d&d=%s" % (md5sum, size, "mp")
return url
@register.simple_tag()
def define(value):
return value
@register.simple_tag()
def presentation_bg_number(presentation, count):
return sum(ord(i) for i in presentation.title) % count
@register.filter()
def gst(amount):
value_no_gst = Decimal(amount / (1 + GST_RATE))
return Decimal(amount - value_no_gst).quantize(Decimal('0.01'))
@register.simple_tag()
def conference_name():
return conference_models.Conference.objects.get(id=CONFERENCE_ID).title
@register.simple_tag()
def conference_start_date():
return conference_models.Conference.objects.get(id=CONFERENCE_ID).start_date
@register.simple_tag()
def conference_end_date():
return conference_models.Conference.objects.get(id=CONFERENCE_ID).end_date
@register.simple_tag()
def conference_timezone():
return conference_models.Conference.objects.get(id=CONFERENCE_ID).timezone
@register.filter()
def day_has_tracks(timetable, day):
try:
track_names = day.track_set.all()
has_tracks = True
except Track.DoesNotExist:
has_tracks = False
return len(track_names)
@register.filter()
def trackname(room, day):
if not room:
return None
try:
track_name = room.track_set.get(day=day).name
except Track.DoesNotExist:
track_name = None
return track_name
@register.simple_tag(takes_context=True)
def ticket_type(context):
# Default to purchased ticket type (only item from category 1)
items = registrasion_tags.items_purchased(context, 1)
if not items:
return "NO TICKET"
item = next(iter(items))
name = item.product.name
if name == "Conference Volunteer":
return "Volunteer"
elif name == "Conference Organiser":
return "Organiser"
else:
ticket_type = name
# Miniconfs are section 2
# General sessions are section 1
user = registrasion_tags.user_for_context(context)
if hasattr(user, "speaker_profile"):
best = 0
for presentation in user.speaker_profile.presentations.all():
if presentation.section.id == 1:
best = 1
if best == 0 and presentation.section.id == 2:
best = 2
if best == 1:
return "Speaker"
elif best == 2:
return "Miniconf Org"
if name == "Sponsor":
return "Professional"
elif name == "Fairy Penguin Sponsor":
return "Professional"
elif name == "Monday and Tuesday Only":
return "Mon/Tue Only"
# Default to product type
return ticket_type
@register.simple_tag(takes_context=True)
def venueless_login_url(context):
# Check that they have a ticket first (only item from category 1)
items = registrasion_tags.items_purchased(context, 1)
if not items:
return ''
# Get token from checkin
user=context.request.user
checkin = CheckIn.objects.get_or_create(user=user)[0]
if checkin.venueless_token:
return f'{settings.VENUELESS_URL}/#token={checkin.venueless_token}'
return ''
|