Files
@ 0b1a15ca777d
Branch filter:
Location: copyleftconf-website-fork/pinaxcon/registrasion/models.py - annotation
0b1a15ca777d
4.5 KiB
text/x-python
Update badge artwork
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 | a6e7388d819f 6c94eb9e91ee 737db640aaeb ca6edb87069d 6c94eb9e91ee 6c94eb9e91ee 737db640aaeb 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d 6c94eb9e91ee ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d c82ad6c1181e c82ad6c1181e c82ad6c1181e c82ad6c1181e c82ad6c1181e c82ad6c1181e ca6edb87069d ca6edb87069d 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee ca6edb87069d 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee ca6edb87069d ca6edb87069d 6c94eb9e91ee ca6edb87069d 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d 6c94eb9e91ee 6c94eb9e91ee ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee ca6edb87069d 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee ca6edb87069d 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee 6c94eb9e91ee ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d ca6edb87069d c82ad6c1181e c82ad6c1181e c82ad6c1181e c82ad6c1181e c82ad6c1181e c82ad6c1181e c82ad6c1181e c82ad6c1181e c82ad6c1181e | from django.core.exceptions import ValidationError
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
from django_countries.fields import CountryField
from registrasion import models as rego
class AttendeeProfile(rego.AttendeeProfileBase):
@classmethod
def name_field(cls):
''' This is used to pre-fill the attendee's name from the
speaker profile. If it's None, that functionality is disabled. '''
return "name"
def invoice_recipient(self):
lines = [
self.name_per_invoice,
]
if self.company:
lines.append("C/- " + self.company)
if self.address_line_1:
lines.append(self.address_line_1)
if self.address_line_2:
lines.append(self.address_line_2)
if self.address_suburb or self.address_postcode:
lines.append("%s %s" % (
self.address_suburb or "",
self.address_postcode or "",
))
if self.state:
lines.append(self.state)
if self.country:
lines.append(self.country.name)
return "\n".join(unicode(line) for line in lines)
def clean(self):
errors = []
if self.country == "US" and not self.state:
errors.append(
("state", "US-based attendees must list their state"),
)
if self.address_line_2 and not self.address_line_1:
errors.append((
"address_line_1",
"Please fill in line 1 before filling line 2",
))
if not self.agreement:
errors.append((
"agreement",
"You must accept the agreement.",
))
if errors:
raise ValidationError(dict(errors))
def save(self):
if not self.name_per_invoice:
self.name_per_invoice = self.name
super(AttendeeProfile, self).save()
# Things that appear on badge
name = models.CharField(
verbose_name="Your name (for your conference nametag)",
max_length=64,
help_text="Your name, as you'd like it to appear on your badge. ",
)
company = models.CharField(
max_length=64,
help_text="The name of your company, as you'd like it on your badge and receipt",
blank=True,
)
name_per_invoice = models.CharField(
verbose_name="Your legal name (for your receipt)",
max_length=256,
help_text="If your legal name is different to the name on your badge, "
"fill this in, and we'll put it on your receipt. Otherwise, "
"leave it blank.",
blank=True,
)
address_line_1 = models.CharField(
verbose_name="Address line 1",
help_text="This address, if provided, will appear on your receipt.",
max_length=1024,
blank=True,
)
address_line_2 = models.CharField(
verbose_name="Address line 2",
max_length=1024,
blank=True,
)
address_suburb = models.CharField(
verbose_name="City/Town/Suburb",
max_length=1024,
blank=True,
)
address_postcode = models.CharField(
verbose_name="Postal/Zip code",
max_length=1024,
blank=True,
)
country = CountryField(
default="US",
)
state = models.CharField(
max_length=256,
verbose_name="State/Territory/Province",
blank=True,
)
dietary_restrictions = models.CharField(
verbose_name="Food allergies, intolerances, or dietary restrictions",
max_length=256,
blank=True,
)
accessibility_requirements = models.CharField(
verbose_name="Accessibility-related requirements",
max_length=256,
blank=True,
)
gender = models.CharField(
help_text="Gender data will only be used for demographic purposes.",
max_length=64,
blank=True,
)
newsletter = models.BooleanField(
verbose_name="Subscribe to North Bay Python newsletter",
help_text="Select to be subscribed to the low-volume North Bay Python "
"announcements newsletter",
blank=True,
)
agreement = models.BooleanField(
verbose_name="Agreement",
help_text="I agree to act according to the <a href='/code-of-conduct'> "
"North Bay Python Code of Conduct</a>. I also agree with the "
"North Bay Python <a href='/terms'>Terms and Conditions</a>.",
blank=False,
default=False,
)
|