Files
@ 4944a8a84125
Branch filter:
Location: copyleftconf-website-fork/pinaxcon/registrasion/models.py
4944a8a84125
4.1 KiB
text/x-python
images: New favicon.
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 | 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",
help_text="For example: vegetarian, vegan, gluten intolerant, low carb, allergic to _____, …",
max_length=256,
blank=True,
)
agreement = models.BooleanField(
verbose_name="Agreement",
help_text="I agree to act according to the <a href='/code-of-conduct'>"
"Code of Conduct</a>. I also agree with the "
"CopyleftConf <a href='/terms'>Terms and Conditions</a>.",
blank=False,
default=False,
)
|