UPD: small steps to become python3 compatible.
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
import datetime
|
||||
import difflib
|
||||
import logging
|
||||
@@ -11,6 +12,7 @@ from django.contrib.auth import get_user_model
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.db import models
|
||||
from django.template.loader import get_template
|
||||
from django.utils.encoding import python_2_unicode_compatible
|
||||
from django.utils.translation import get_language, ugettext_lazy as _
|
||||
from django_countries.fields import CountryField
|
||||
|
||||
@@ -24,206 +26,207 @@ from ..workflow import DefaultWorkflow
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@python_2_unicode_compatible
|
||||
class Event(models.Model):
|
||||
# Metadata
|
||||
owner = models.ForeignKey(settings.AUTH_USER_MODEL,
|
||||
null=True,
|
||||
on_delete=models.SET(get_ghost_user),
|
||||
related_name='events',
|
||||
verbose_name=_(u'Ersteller'))
|
||||
verbose_name=_('Ersteller'))
|
||||
created_at = models.DateTimeField(auto_now_add=True,
|
||||
verbose_name=_(u'Erstellt'))
|
||||
verbose_name=_('Erstellt'))
|
||||
number = models.CharField(unique=True,
|
||||
max_length=config.NUMBER_MAX_LENGTH,
|
||||
blank=True,
|
||||
null=True,
|
||||
default=None,
|
||||
verbose_name=_(u'Programmnummer'))
|
||||
verbose_name=_('Programmnummer'))
|
||||
|
||||
# DescriptionForm
|
||||
title = models.CharField(max_length=config.TITLE_MAX_LENGTH, verbose_name=_(u'Titel'))
|
||||
description = models.TextField(verbose_name=_(u'Beschreibung'))
|
||||
title = models.CharField(max_length=config.TITLE_MAX_LENGTH, verbose_name=_('Titel'))
|
||||
description = models.TextField(verbose_name=_('Beschreibung'))
|
||||
|
||||
# ModeForm
|
||||
mode = models.CharField(max_length=choices.CHOICE_FIELD_MAX_LENGTH,
|
||||
choices=choices.MODE_CHOICES,
|
||||
verbose_name=_(u'Veranstaltungsart'))
|
||||
verbose_name=_('Veranstaltungsart'))
|
||||
sport = models.CharField(max_length=choices.CHOICE_FIELD_MAX_LENGTH,
|
||||
choices=choices.SPORT_CHOICES,
|
||||
verbose_name=_(u'Spielart'))
|
||||
verbose_name=_('Spielart'))
|
||||
ski_lift = models.BooleanField(default=False,
|
||||
verbose_name=_(u'Skiliftbenutzung'))
|
||||
verbose_name=_('Skiliftbenutzung'))
|
||||
level = models.CharField(max_length=choices.CHOICE_FIELD_MAX_LENGTH,
|
||||
choices=choices.LEVEL_CHOICES,
|
||||
verbose_name=_(u'Schwierigkeitsnivau'))
|
||||
first_day = models.DateField(verbose_name=_(u'Erster Tag'))
|
||||
verbose_name=_('Schwierigkeitsnivau'))
|
||||
first_day = models.DateField(verbose_name=_('Erster Tag'))
|
||||
alt_first_day = models.DateField(blank=True,
|
||||
null=True,
|
||||
verbose_name=u'%s - %s' % (_(u'Ersatztermin'), _(u'Erster Tag')))
|
||||
verbose_name='%s - %s' % (_('Ersatztermin'), _('Erster Tag')))
|
||||
last_day = models.DateField(blank=True,
|
||||
null=True,
|
||||
verbose_name=_(u'Letzter Tag'))
|
||||
verbose_name=_('Letzter Tag'))
|
||||
alt_last_day = models.DateField(blank=True,
|
||||
null=True,
|
||||
verbose_name=u'%s - %s' % (_(u'Ersatztermin'), _(u'Letzter Tag')))
|
||||
verbose_name='%s - %s' % (_('Ersatztermin'), _('Letzter Tag')))
|
||||
|
||||
# LocationForm
|
||||
country = CountryField(countries=choices.CountryChoiceSet,
|
||||
verbose_name=_(u'Land'))
|
||||
verbose_name=_('Land'))
|
||||
terrain = models.CharField(max_length=choices.CHOICE_FIELD_MAX_LENGTH,
|
||||
choices=choices.TERRAIN_CHOICES,
|
||||
default=choices.TERRAIN_CHOICES[0][0],
|
||||
verbose_name=_(u'Gelände'))
|
||||
verbose_name=_('Gelände'))
|
||||
location = models.CharField(max_length=config.LOCATION_MAX_LENGTH,
|
||||
blank=True,
|
||||
verbose_name=_(u'Ort oder Gebiet'))
|
||||
verbose_name=_('Ort oder Gebiet'))
|
||||
transport = models.CharField(max_length=choices.CHOICE_FIELD_MAX_LENGTH,
|
||||
choices=choices.TRANSPORT_CHOICES,
|
||||
default=choices.TRANSPORT_CHOICES[0][0],
|
||||
verbose_name=_(u'Verkehrsmittel'))
|
||||
verbose_name=_('Verkehrsmittel'))
|
||||
transport_other = models.CharField(max_length=config.TRANSPORT_OTHER_MAX_LENGTH,
|
||||
blank=True,
|
||||
verbose_name=_(u'Anderes Verkehrsmittel'))
|
||||
verbose_name=_('Anderes Verkehrsmittel'))
|
||||
|
||||
# JourneyForm
|
||||
meeting_point = models.CharField(max_length=choices.CHOICE_FIELD_MAX_LENGTH,
|
||||
choices=choices.MEETING_POINT_CHOICES,
|
||||
default=choices.MEETING_POINT_CHOICES[0][0],
|
||||
verbose_name=_(u'Treffpunkt'))
|
||||
verbose_name=_('Treffpunkt'))
|
||||
meeting_point_other = models.CharField(max_length=config.MEETING_POINT_OTHER_MAX_LENGTH,
|
||||
blank=True,
|
||||
verbose_name=_(u'Anderer Treffpunkt'))
|
||||
verbose_name=_('Anderer Treffpunkt'))
|
||||
meeting_time = models.TimeField(blank=True,
|
||||
null=True,
|
||||
verbose_name=_(u'Uhrzeit am Treffpunkt'))
|
||||
verbose_name=_('Uhrzeit am Treffpunkt'))
|
||||
departure_time = models.TimeField(blank=True,
|
||||
null=True,
|
||||
verbose_name=_(u'Uhrzeit Abfahrt'))
|
||||
verbose_name=_('Uhrzeit Abfahrt'))
|
||||
departure_ride = models.CharField(max_length=config.DEPARTURE_RIDE_MAX_LENGTH,
|
||||
blank=True,
|
||||
verbose_name=_(u'Bahn-/Bus-Linie'))
|
||||
verbose_name=_('Bahn-/Bus-Linie'))
|
||||
return_departure_time = models.TimeField(blank=True,
|
||||
null=True,
|
||||
verbose_name=_(u'Uhrzeit Rückfahrt'))
|
||||
verbose_name=_('Uhrzeit Rückfahrt'))
|
||||
return_arrival_time = models.TimeField(blank=True,
|
||||
null=True,
|
||||
verbose_name=_(u'Uhrzeit Rückkunft'))
|
||||
verbose_name=_('Uhrzeit Rückkunft'))
|
||||
arrival_previous_day = models.BooleanField(default=False,
|
||||
verbose_name=_(u'Anreise des Trainers am Vortag'))
|
||||
verbose_name=_('Anreise des Trainers am Vortag'))
|
||||
|
||||
# AccommodationForm
|
||||
basecamp = models.CharField(max_length=config.BASECAMP_MAX_LENGTH,
|
||||
blank=True,
|
||||
verbose_name=_(u'Stützpunkt'))
|
||||
verbose_name=_('Stützpunkt'))
|
||||
|
||||
accommodation = models.CharField(max_length=choices.CHOICE_FIELD_MAX_LENGTH,
|
||||
choices=choices.ACCOMMODATION_CHOICES,
|
||||
default=choices.ACCOMMODATION_CHOICES[0][0],
|
||||
verbose_name=_(u'Unterkunft'))
|
||||
verbose_name=_('Unterkunft'))
|
||||
accommodation_other = models.CharField(max_length=config.ACCOMMODATION_OTHER_MAX_LENGTH,
|
||||
blank=True,
|
||||
verbose_name=_(u'Andere Unterkunft'))
|
||||
verbose_name=_('Andere Unterkunft'))
|
||||
meals = models.CharField(max_length=choices.CHOICE_FIELD_MAX_LENGTH,
|
||||
choices=choices.MEALS_CHOICES,
|
||||
default=choices.MEALS_CHOICES[0][0],
|
||||
verbose_name=_(u'Verpflegung'))
|
||||
verbose_name=_('Verpflegung'))
|
||||
meals_other = models.CharField(max_length=config.MEALS_OTHER_MAX_LENGTH,
|
||||
blank=True,
|
||||
verbose_name=_(u'Andere Verpflegung'))
|
||||
verbose_name=_('Andere Verpflegung'))
|
||||
|
||||
# RequirementsForm
|
||||
requirements = models.TextField(blank=True,
|
||||
verbose_name=_(u'Anforderungen'))
|
||||
verbose_name=_('Anforderungen'))
|
||||
equipment = models.TextField(blank=True,
|
||||
verbose_name=_(u'Ausrüstung'))
|
||||
verbose_name=_('Ausrüstung'))
|
||||
pre_meeting_1 = models.DateTimeField(blank=True,
|
||||
null=True,
|
||||
verbose_name=u'1. %s' % _(u'Vortreffen'))
|
||||
verbose_name='1. %s' % _('Vortreffen'))
|
||||
pre_meeting_2 = models.DateTimeField(blank=True,
|
||||
null=True,
|
||||
verbose_name=u'2. %s' % _(u'Vortreffen'))
|
||||
verbose_name='2. %s' % _('Vortreffen'))
|
||||
|
||||
# TrainerForm
|
||||
trainer_firstname = models.CharField(max_length=config.TRAINER_NAME_MAX_LENGTH,
|
||||
blank=True,
|
||||
verbose_name=u'1. %s %s' % (_(u'Trainer'), _(u'Vorname')))
|
||||
verbose_name='1. %s %s' % (_('Trainer'), _('Vorname')))
|
||||
trainer_familyname = models.CharField(max_length=config.TRAINER_NAME_MAX_LENGTH,
|
||||
blank=True,
|
||||
verbose_name=u'1. %s %s' % (_(u'Trainer'), _(u'Familienname')))
|
||||
verbose_name='1. %s %s' % (_('Trainer'), _('Familienname')))
|
||||
trainer_email = models.EmailField(blank=True,
|
||||
verbose_name=u'1. %s %s' % (_(u'Trainer'), _(u'E-Mail')))
|
||||
verbose_name='1. %s %s' % (_('Trainer'), _('E-Mail')))
|
||||
trainer_phone = models.CharField(max_length=config.PHONE_NUMBER_MAX_LENGTH,
|
||||
blank=True,
|
||||
verbose_name=u'1. %s %s' % (_(u'Trainer'), _(u'Telefon')))
|
||||
verbose_name='1. %s %s' % (_('Trainer'), _('Telefon')))
|
||||
trainer_2_fullname = models.CharField(max_length=config.TRAINER_NAME_MAX_LENGTH,
|
||||
blank=True,
|
||||
verbose_name=u'2. %s %s' % (_(u'Trainer'), _(u'Name')))
|
||||
verbose_name='2. %s %s' % (_('Trainer'), _('Name')))
|
||||
trainer_2_email = models.EmailField(blank=True,
|
||||
verbose_name=u'2. %s %s' % (_(u'Trainer'), _(u'E-Mail')))
|
||||
verbose_name='2. %s %s' % (_('Trainer'), _('E-Mail')))
|
||||
trainer_2_phone = models.CharField(max_length=config.PHONE_NUMBER_MAX_LENGTH,
|
||||
blank=True,
|
||||
verbose_name=u'2. %s %s' % (_(u'Trainer'), _(u'Telefon')))
|
||||
verbose_name='2. %s %s' % (_('Trainer'), _('Telefon')))
|
||||
trainer_3_fullname = models.CharField(max_length=config.TRAINER_NAME_MAX_LENGTH,
|
||||
blank=True,
|
||||
verbose_name=u'3. %s %s' % (_(u'Trainer'), _(u'Name')))
|
||||
verbose_name='3. %s %s' % (_('Trainer'), _('Name')))
|
||||
trainer_3_email = models.EmailField(blank=True,
|
||||
verbose_name=u'3. %s %s' % (_(u'Trainer'), _(u'E-Mail')))
|
||||
verbose_name='3. %s %s' % (_('Trainer'), _('E-Mail')))
|
||||
trainer_3_phone = models.CharField(max_length=config.PHONE_NUMBER_MAX_LENGTH,
|
||||
blank=True,
|
||||
verbose_name=u'3. %s %s' % (_(u'Trainer'), _(u'Telefon')))
|
||||
verbose_name='3. %s %s' % (_('Trainer'), _('Telefon')))
|
||||
|
||||
# RegistrationForm
|
||||
min_participants = models.IntegerField(default=0,
|
||||
verbose_name=_(u'Min. Teilnehmer'))
|
||||
verbose_name=_('Min. Teilnehmer'))
|
||||
max_participants = models.IntegerField(default=0,
|
||||
verbose_name=_(u'Max. Teilnehmer'))
|
||||
verbose_name=_('Max. Teilnehmer'))
|
||||
registration_required = models.BooleanField(default=False,
|
||||
verbose_name=_(u'Anmeldung notwendig'))
|
||||
verbose_name=_('Anmeldung notwendig'))
|
||||
deadline = models.DateField(blank=True,
|
||||
null=True,
|
||||
verbose_name=_(u'Anmeldeschluss'))
|
||||
verbose_name=_('Anmeldeschluss'))
|
||||
registration_howto = models.TextField(blank=True,
|
||||
verbose_name=_(u'Anmeldungshinweis'))
|
||||
verbose_name=_('Anmeldungshinweis'))
|
||||
|
||||
# ChargesForm
|
||||
charge = models.FloatField(default=0,
|
||||
verbose_name=_(u'Teilnahmegebühr'))
|
||||
verbose_name=_('Teilnahmegebühr'))
|
||||
additional_costs = models.CharField(max_length=config.ADDITIONAL_COSTS_MAX_LENGTH,
|
||||
blank=True,
|
||||
verbose_name=_(u'Zusätzliche Kosten'))
|
||||
verbose_name=_('Zusätzliche Kosten'))
|
||||
|
||||
# TrainingForm
|
||||
course_topic_1 = models.TextField(blank=True,
|
||||
verbose_name=u'%s - %s 1' % (_(u'Kursinhalt'), _(u'Absatz')))
|
||||
verbose_name='%s - %s 1' % (_('Kursinhalt'), _('Absatz')))
|
||||
course_topic_2 = models.TextField(blank=True,
|
||||
verbose_name=u'%s - %s 2' % (_(u'Kursinhalt'), _(u'Absatz')))
|
||||
verbose_name='%s - %s 2' % (_('Kursinhalt'), _('Absatz')))
|
||||
course_topic_3 = models.TextField(blank=True,
|
||||
verbose_name=u'%s - %s 3' % (_(u'Kursinhalt'), _(u'Absatz')))
|
||||
verbose_name='%s - %s 3' % (_('Kursinhalt'), _('Absatz')))
|
||||
course_topic_4 = models.TextField(blank=True,
|
||||
verbose_name=u'%s - %s 4' % (_(u'Kursinhalt'), _(u'Absatz')))
|
||||
verbose_name='%s - %s 4' % (_('Kursinhalt'), _('Absatz')))
|
||||
course_topic_5 = models.TextField(blank=True,
|
||||
verbose_name=u'%s - %s 5' % (_(u'Kursinhalt'), _(u'Absatz')))
|
||||
verbose_name='%s - %s 5' % (_('Kursinhalt'), _('Absatz')))
|
||||
course_topic_6 = models.TextField(blank=True,
|
||||
verbose_name=u'%s - %s 6' % (_(u'Kursinhalt'), _(u'Absatz')))
|
||||
verbose_name='%s - %s 6' % (_('Kursinhalt'), _('Absatz')))
|
||||
course_goal_1 = models.TextField(blank=True,
|
||||
verbose_name=u'%s - %s 1' % (_(u'Kursziele'), _(u'Absatz')))
|
||||
verbose_name='%s - %s 1' % (_('Kursziele'), _('Absatz')))
|
||||
course_goal_2 = models.TextField(blank=True,
|
||||
verbose_name=u'%s - %s 2' % (_(u'Kursziele'), _(u'Absatz')))
|
||||
verbose_name='%s - %s 2' % (_('Kursziele'), _('Absatz')))
|
||||
course_goal_3 = models.TextField(blank=True,
|
||||
verbose_name=u'%s - %s 3' % (_(u'Kursziele'), _(u'Absatz')))
|
||||
verbose_name='%s - %s 3' % (_('Kursziele'), _('Absatz')))
|
||||
course_goal_4 = models.TextField(blank=True,
|
||||
verbose_name=u'%s - %s 4' % (_(u'Kursziele'), _(u'Absatz')))
|
||||
verbose_name='%s - %s 4' % (_('Kursziele'), _('Absatz')))
|
||||
course_goal_5 = models.TextField(blank=True,
|
||||
verbose_name=u'%s - %s 5' % (_(u'Kursziele'), _(u'Absatz')))
|
||||
verbose_name='%s - %s 5' % (_('Kursziele'), _('Absatz')))
|
||||
course_goal_6 = models.TextField(blank=True,
|
||||
verbose_name=u'%s - %s 6' % (_(u'Kursziele'), _(u'Absatz')))
|
||||
verbose_name='%s - %s 6' % (_('Kursziele'), _('Absatz')))
|
||||
|
||||
# SummaryForm
|
||||
planned_publication_date = models.DateField(blank=True,
|
||||
null=True,
|
||||
verbose_name=_(u'Veröffentlichung am'))
|
||||
verbose_name=_('Veröffentlichung am'))
|
||||
internal_note = models.TextField(blank=True,
|
||||
verbose_name=_(u'Bearbeitungshinweis'))
|
||||
verbose_name=_('Bearbeitungshinweis'))
|
||||
|
||||
@property
|
||||
def workflow(self):
|
||||
@@ -240,14 +243,14 @@ class Event(models.Model):
|
||||
self._editor = editor
|
||||
|
||||
class Meta:
|
||||
verbose_name = _(u'Veranstaltung')
|
||||
verbose_name_plural = _(u'Veranstaltungen')
|
||||
verbose_name = _('Veranstaltung')
|
||||
verbose_name_plural = _('Veranstaltungen')
|
||||
ordering = ['first_day']
|
||||
|
||||
def __unicode__(self):
|
||||
return u'{number} - {title} ({date})'.format(number=self.get_number(),
|
||||
title=self.title,
|
||||
date=self.get_formated_date())
|
||||
def __str__(self):
|
||||
return '{number} - {title} ({date})'.format(number=self.get_number(),
|
||||
title=self.title,
|
||||
date=self.get_formated_date())
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('dav_events:detail', kwargs={'pk': self.pk})
|
||||
@@ -260,11 +263,11 @@ class Event(models.Model):
|
||||
user_model = get_user_model()
|
||||
username = self.trainer_email.lower()
|
||||
if not username:
|
||||
s = self.trainer_firstname.replace(u'ß', u'ss')
|
||||
s = self.trainer_firstname.replace('ß', 'ss')
|
||||
s = unicodedata.normalize('NFKD', s).encode('ascii', 'ignore')
|
||||
s = re.sub(r'[^a-z-]', '', s.lower())
|
||||
username = s
|
||||
s = self.trainer_familyname.replace(u'ß', u'ss')
|
||||
s = self.trainer_familyname.replace('ß', 'ss')
|
||||
s = unicodedata.normalize('NFKD', s).encode('ascii', 'ignore')
|
||||
s = re.sub(r'[^a-z-]', '', s.lower())
|
||||
username += '.' + s
|
||||
@@ -362,7 +365,7 @@ class Event(models.Model):
|
||||
|
||||
begin = format_date(begin_date, begin_format, locale=lang)
|
||||
end = format_date(end_date, end_format, locale=lang)
|
||||
r = u'{begin} - {end}'.format(begin=begin, end=end)
|
||||
r = '{begin} - {end}'.format(begin=begin, end=end)
|
||||
|
||||
return r
|
||||
|
||||
@@ -376,7 +379,7 @@ class Event(models.Model):
|
||||
return self.get_formated_date(begin_date=begin_date, end_date=end_date, format='numeric')
|
||||
|
||||
def get_trainer_full_name(self):
|
||||
return u'%s %s' % (self.trainer_firstname, self.trainer_familyname)
|
||||
return '%s %s' % (self.trainer_firstname, self.trainer_familyname)
|
||||
|
||||
def get_template_context(self, context=None):
|
||||
if self.alt_last_day:
|
||||
|
||||
Reference in New Issue
Block a user