Files
@ 2465f2645e2e
Branch filter:
Location: symposion_app/vendor/symposion/speakers/models.py
2465f2645e2e
5.2 KiB
text/x-python
urlize abstracts
I've looked through the database and I can't find any accepted
proposals that actually contain anything to linkify - but I've had
several requests from people that I think are reasonable, things like
being able to link to their project (we ask them to provide a project
url but we don't use that link)
This seems like a reasonably fast way to let those people add a
link. We still have to manually accept changes to their proposal so we
have a chance to look at the content of the url if we want.
The urlize filter adds rel=nofollow to the link automatically.
I've looked through the database and I can't find any accepted
proposals that actually contain anything to linkify - but I've had
several requests from people that I think are reasonable, things like
being able to link to their project (we ask them to provide a project
url but we don't use that link)
This seems like a reasonably fast way to let those people add a
link. We still have to manually accept changes to their proposal so we
have a chance to look at the content of the url if we want.
The urlize filter adds rel=nofollow to the link automatically.
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 | import datetime
from django.core.urlresolvers import reverse
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User
from symposion import constants
from symposion.text_parser import parse
class Speaker(models.Model):
SESSION_COUNT_CHOICES = [
(1, "One"),
(2, "Two")
]
user = models.OneToOneField(User, null=True, related_name="speaker_profile", verbose_name=_("User"))
name = models.CharField(verbose_name=_("Name"), max_length=100,
help_text=_("As you would like it to appear in the"
" conference programme."))
biography = models.TextField(
blank=True,
help_text=_("This will appear on the conference website and in the "
"programme. Please write in the third person, eg 'Alice "
"is a Moblin hacker...', 150-200 words. " +
constants.TEXT_FIELD_MONOSPACE_NOTE),
verbose_name=_("Biography"),
)
biography_html = models.TextField(blank=True)
experience = models.TextField(
blank=True,
help_text=_("Have you had any experience presenting elsewhere? If so, "
"we'd like to know. Anything you put here will only be "
"seen by the organisers and reviewers; use it to convince "
"them why they should accept your proposal. " +
constants.TEXT_FIELD_MONOSPACE_NOTE),
verbose_name=_("Speaking experience"),
)
experience_html = models.TextField(blank=True)
photo = models.ImageField(upload_to="speaker_photos", blank=True, verbose_name=_("Photo"))
telephone = models.CharField(
max_length=15,
help_text=_(u"The conference team will need this to contact you "
"during the conference week. If you don't have one, or do "
"not wish to provide it, then enter NONE in this field.")
)
homepage = models.URLField(
blank=True,
help_text=_(u"Your home page, if you have one")
)
twitter_username = models.CharField(
max_length=15,
blank=True,
help_text=_(u"Your Twitter account")
)
accessibility = models.TextField(
blank=True,
help_text=_("Please describe any special accessibility requirements "
"that you may have. " +
constants.TEXT_FIELD_MONOSPACE_NOTE),
verbose_name=_("Accessibility requirements"))
accessibility_html = models.TextField(blank=True)
travel_assistance = models.BooleanField(
blank=True,
default=False,
help_text=_("Check this box if you require assistance to travel to Sydney to "
"present your proposed sessions."),
verbose_name=_("Travel assistance required"),
)
accommodation_assistance = models.BooleanField(
blank=True,
default=False,
help_text=_("Check this box if you require us to provide you with student-style "
"accommodation in order to present your proposed sessions."),
verbose_name=_("Accommodation assistance required"),
)
agreement = models.BooleanField(
default=False,
help_text=_("I agree to the "
"<a href=\"https://linux.conf.au/attend/terms-and-conditions\"> "
"terms and conditions of attendance</a>, and I have read, "
"understood, and agree to act according to the standards set "
"forth in our "
"<a href=\"https://linux.conf.au/attend/code-of-conduct\">"
"Code of Conduct</a>.")
)
annotation = models.TextField(verbose_name=_("Annotation")) # staff only
invite_email = models.CharField(max_length=200, unique=True, null=True, db_index=True, verbose_name=_("Invite_email"))
invite_token = models.CharField(max_length=40, db_index=True, verbose_name=_("Invite token"))
created = models.DateTimeField(
default=datetime.datetime.now,
editable=False,
verbose_name=_("Created")
)
class Meta:
ordering = ['name']
verbose_name = _("Speaker")
verbose_name_plural = _("Speakers")
permissions = (('can_view_contact_details', 'Can View Contact Details'),)
def save(self, *args, **kwargs):
self.biography_html = parse(self.biography)
self.experience_html = parse(self.experience)
self.accessibility_html = parse(self.accessibility)
return super(Speaker, self).save(*args, **kwargs)
def __str__(self):
if self.user:
return self.name
else:
return "?"
def get_absolute_url(self):
return reverse("speaker_edit")
@property
def email(self):
if self.user is not None:
return self.user.email
else:
return self.invite_email
@property
def all_presentations(self):
presentations = []
if self.presentations:
for p in self.presentations.all():
presentations.append(p)
for p in self.copresentations.all():
presentations.append(p)
return presentations
|