Skip to content

Commit

Permalink
added get_text to model base.py and view veranstalter.py
Browse files Browse the repository at this point in the history
  • Loading branch information
4-dash committed Nov 19, 2024
1 parent a777e3b commit fee6a20
Show file tree
Hide file tree
Showing 4 changed files with 856 additions and 175 deletions.
138 changes: 69 additions & 69 deletions src/feedback/models/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import random

from django.db import models
from django.utils.translation import gettext_lazy as _
from django.utils.translation import gettext as _
from django.db.utils import OperationalError
from django.urls import reverse
from django.core.exceptions import ValidationError
Expand All @@ -29,15 +29,15 @@ class Semester(models.Model):

)
SICHTBARKEIT_CHOICES = (
('ADM', 'Administratoren'),
('VER', 'Veranstalter'),
('ALL', 'alle (öffentlich)'),
('ADM', _('Administratoren')),
('VER', _('Veranstalter')),
('ALL', _('alle (öffentlich)')),
)

semester = models.IntegerField(help_text='Aufbau: YYYYS, wobei YYYY = Jahreszahl und S = Semester (0=SS, 5=WS).',
unique=True)
fragebogen = models.CharField(max_length=5, choices=FRAGEBOGEN_CHOICES,
help_text='Verwendete Version des Fragebogens.')
help_text=_('Verwendete Version des Fragebogens.'))
sichtbarkeit = models.CharField(max_length=3, choices=SICHTBARKEIT_CHOICES,
help_text='Sichtbarkeit der Evaluationsergebnisse.<br /><em>' +
SICHTBARKEIT_CHOICES[0][1] +
Expand All @@ -48,7 +48,7 @@ class Semester(models.Model):
':</em> alle (beschränkt auf das Uninetz)<br />'
)
vollerhebung = models.BooleanField(default=False)
standard_ergebnisversand = models.DateField(null=True, blank=True, verbose_name='Ergebnisversand', help_text='Standarddatum für den Ergebnisversand')
standard_ergebnisversand = models.DateField(null=True, blank=True, verbose_name=_('Ergebnisversand'), help_text=_('Standarddatum für den Ergebnisversand'))

def _format_generic(self, ss, ws, space, modulus):
sem = self.semester // 10
Expand Down Expand Up @@ -138,16 +138,16 @@ def __str__(self):
return self.name

class Meta:
verbose_name = 'Fachgebiet'
verbose_name_plural = 'Fachgebiete'
verbose_name = _('Fachgebiet')
verbose_name_plural = _('Fachgebiete')
app_label = 'feedback'


class EmailEndung(models.Model):
"""Repräsentiert alle Domains die für E-Mails von Veranstaltern verwendet werden"""
fachgebiet = models.ForeignKey(Fachgebiet,
blank=True,
help_text="Hier soll der Domainname einer Email-Adresse eines Fachgebiets stehen.",
help_text=_("Hier soll der Domainname einer Email-Adresse eines Fachgebiets stehen."),
on_delete=models.CASCADE)
domain = models.CharField(max_length=150,
null=True)
Expand All @@ -156,8 +156,8 @@ def __str__(self):
return self.domain

class Meta:
verbose_name = 'Fachgebiet Emailendung'
verbose_name_plural = 'Fachgebiet Emailendungen'
verbose_name = _('Fachgebiet Emailendung')
verbose_name_plural = _('Fachgebiet Emailendungen')
app_label = 'feedback'


Expand All @@ -167,17 +167,17 @@ class FachgebietEmail(models.Model):
email_sekretaerin = models.EmailField(blank=True)

class Meta:
verbose_name = 'Fachgebiet Email'
verbose_name_plural = 'Fachgebiet Emails'
verbose_name = _('Fachgebiet Email')
verbose_name_plural = _('Fachgebiet Emails')
app_label = 'feedback'


class Person(models.Model):
"""Repräsentiert eine Person der TUD aus dem FB20."""
GESCHLECHT_CHOICES = (
('', ''),
('m', 'Herr'),
('w', 'Frau'),
('m', _('Herr')),
('w', _('Frau')),
)

GESCHLECHT_EVASYS_XML = {
Expand All @@ -191,8 +191,8 @@ class Person(models.Model):
nachname = models.CharField(_('last name'), max_length=30, blank=True)
email = models.EmailField(_('E-Mail'), blank=True)
anschrift = models.CharField(_('anschrift'), max_length=80, blank=True,
help_text='Tragen Sie bitte nur die Anschrift ohne Namen ein, '
'da der Name automatisch hinzugefügt wird.')
help_text=_('Tragen Sie bitte nur die Anschrift ohne Namen ein, '
'da der Name automatisch hinzugefügt wird.'))
fachgebiet = models.ForeignKey(Fachgebiet, null=True, blank=True, on_delete=models.CASCADE)

def full_name(self):
Expand All @@ -213,9 +213,9 @@ def printable(self) -> bool:
return self.vorname != "" and self.nachname != "" and self.email != "" and self.anschrift != ""

class Meta:
verbose_name = 'Person'
verbose_name_plural = 'Personen'
ordering = 'nachname', 'vorname'
verbose_name = _('Person')
verbose_name_plural = _('Personen')
ordering = _('nachname'), _('vorname')
app_label = 'feedback'

@staticmethod
Expand Down Expand Up @@ -312,15 +312,15 @@ class AlternativVorname(models.Model):
class Veranstaltung(models.Model):
"""Repräsentiert eine Veranstaltung der TUD."""
TYP_CHOICES = (
('v', 'Vorlesung'),
('vu', 'Vorlesung mit Übung'),
('pr', 'Praktikum'),
('se', 'Seminar'),
('v', _('Vorlesung')),
('vu', _('Vorlesung mit Übung')),
('pr', _('Praktikum')),
('se', _('Seminar')),
)

SPRACHE_CHOICES = (
('de', 'Deutsch'),
('en', 'Englisch'),
('de', _('Deutsch')),
('en', _('Englisch')),
)
# 0 undefiniert
# 1 Vorlesung
Expand Down Expand Up @@ -394,22 +394,22 @@ class Veranstaltung(models.Model):
STATUS_ERGEBNISSE_VERSANDT = 1000

STATUS_CHOICES = (
(STATUS_ANGELEGT, 'Angelegt'),
(STATUS_BESTELLUNG_GEOEFFNET, 'Bestellung geöffnet'),
(STATUS_KEINE_EVALUATION, 'Keine Evaluation'),
(STATUS_KEINE_EVALUATION_FINAL, 'Keine Evaluation final'),
(STATUS_BESTELLUNG_LIEGT_VOR, 'Bestellung liegt vor'),
(STATUS_BESTELLUNG_WIRD_VERARBEITET, 'Bestellung wird verarbeitet'),
(STATUS_GEDRUCKT, 'Gedruckt'),
(STATUS_VERSANDT, 'Versandt'),
(STATUS_BOEGEN_EINGEGANGEN, 'Bögen eingegangen'),
(STATUS_BOEGEN_GESCANNT, 'Bögen gescannt'),
(STATUS_ERGEBNISSE_VERSANDT, 'Ergebnisse versandt'),
(STATUS_ANGELEGT, _('Angelegt')),
(STATUS_BESTELLUNG_GEOEFFNET, _('Bestellung geöffnet')),
(STATUS_KEINE_EVALUATION, _('Keine Evaluation')),
(STATUS_KEINE_EVALUATION_FINAL, _('Keine Evaluation final')),
(STATUS_BESTELLUNG_LIEGT_VOR, _('Bestellung liegt vor')),
(STATUS_BESTELLUNG_WIRD_VERARBEITET, _('Bestellung wird verarbeitet')),
(STATUS_GEDRUCKT, _('Gedruckt')),
(STATUS_VERSANDT, _('Versandt')),
(STATUS_BOEGEN_EINGEGANGEN, _('Bögen eingegangen')),
(STATUS_BOEGEN_GESCANNT, _('Bögen gescannt')),
(STATUS_ERGEBNISSE_VERSANDT, _('Ergebnisse versandt')),
)

BOOL_CHOICES = (
(True, 'Ja'),
(False, 'Nein'),
(True, _('Ja')),
(False, _('Nein')),
)

# TODO: not the final version of status transition
Expand All @@ -433,7 +433,7 @@ class Veranstaltung(models.Model):
MIN_BESTELLUNG_ANZAHL = 5

# Helfertext für Dozenten für den Veranstaltungstyp.
vlNoEx = 'Wenn Ihre Vorlesung keine Übung hat wählen Sie bitte <i>%s</i> aus'
vlNoEx = _('Wenn Ihre Vorlesung keine Übung hat wählen Sie bitte <i>%s</i> aus')
for cur in TYP_CHOICES:
if cur[0] == 'v':
vlNoEx = vlNoEx % cur[1]
Expand All @@ -442,41 +442,41 @@ class Veranstaltung(models.Model):
typ = models.CharField(max_length=2, choices=TYP_CHOICES, help_text=vlNoEx)
name = models.CharField(max_length=150)
semester = models.ForeignKey(Semester, on_delete=models.CASCADE)
lv_nr = models.CharField(max_length=15, blank=True, verbose_name='LV-Nummer')
lv_nr = models.CharField(max_length=15, blank=True, verbose_name=_('LV-Nummer'))
status = models.IntegerField(choices=STATUS_CHOICES, default=STATUS_ANGELEGT)
grundstudium = models.BooleanField()
evaluieren = models.BooleanField(choices=BOOL_CHOICES, default=True)
veranstalter = models.ManyToManyField(Person, blank=True,
help_text='Alle Personen, die mit der Veranstaltung befasst sind und z.B. Fragebögen bestellen können sollen.')
help_text=_('Alle Personen, die mit der Veranstaltung befasst sind und z.B. Fragebögen bestellen können sollen.'))

sprache = models.CharField(max_length=2, choices=SPRACHE_CHOICES, null=True, blank=True)
anzahl = models.IntegerField(null=True, blank=True)
verantwortlich = models.ForeignKey(Person, related_name='verantwortlich', null=True, blank=True, on_delete=models.CASCADE,
help_text='Diese Person wird von uns bei Rückfragen kontaktiert und bekommt die Fragenbögen zugeschickt')
help_text=_('Diese Person wird von uns bei Rückfragen kontaktiert und bekommt die Fragenbögen zugeschickt'))
ergebnis_empfaenger = models.ManyToManyField(Person, blank=True,
related_name='ergebnis_empfaenger',
verbose_name='Empfänger der Ergebnisse',
help_text='An diese Personen werden die Ergebnisse per E-Mail geschickt.')
verbose_name=_('Empfänger der Ergebnisse'),
help_text=_('An diese Personen werden die Ergebnisse per E-Mail geschickt.'))
primaerdozent = models.ForeignKey(Person, related_name='primaerdozent', null=True, blank=True, on_delete=models.CASCADE,
help_text='Die Person, die im Anschreiben erwähnt wird')
help_text=_('Die Person, die im Anschreiben erwähnt wird'))
auswertungstermin = models.DateField(null=True, blank=True,
verbose_name='Auswertungstermin',
help_text='An welchem Tag sollen Fragebögen für diese Veranstaltung ausgewerter werden? ' +
'Fragebögen die danach eintreffen werden nicht mehr ausgewertet.')
verbose_name=_('Auswertungstermin'),
help_text=_('An welchem Tag sollen Fragebögen für diese Veranstaltung ausgewerter werden? ') +
_('Fragebögen die danach eintreffen werden nicht mehr ausgewertet.'))
bestelldatum = models.DateField(null=True, blank=True)
access_token = models.CharField(max_length=16, blank=True)
freiefrage1 = models.TextField(verbose_name='1. Freie Frage', blank=True)
freiefrage2 = models.TextField(verbose_name='2. Freie Frage', blank=True)
kleingruppen = models.TextField(verbose_name='Kleingruppen', blank=True)
freiefrage1 = models.TextField(verbose_name=_('1. Freie Frage'), blank=True)
freiefrage2 = models.TextField(verbose_name=_('2. Freie Frage'), blank=True)
kleingruppen = models.TextField(verbose_name=_('Kleingruppen'), blank=True)
veroeffentlichen = models.BooleanField(default=True, choices=BOOL_CHOICES)
digitale_eval = models.BooleanField(default=True, verbose_name='Digitale Evaluation',
help_text='Die Evaluation soll digital durchgeführt werden. Die Studierenden füllen die Evaluation online aus.', blank=True)
digitale_eval = models.BooleanField(default=True, verbose_name=_('Digitale Evaluation'),
help_text=_('Die Evaluation soll digital durchgeführt werden. Die Studierenden füllen die Evaluation online aus.'), blank=True)
digitale_eval_type = models.CharField(
default='T',
choices=DIGITALE_EVAL,
max_length=1,
verbose_name='Digitaler Evaluationstyp',
help_text='Es werden generell zwei Typen von Verteilungsmethoden angeboten: Bei TANs erhalten Sie eine Excel Datei mit einer Liste aller TANs, welche Sie beispielsweise mithilfe von moodle verteilen können (eine Anleitung dazu wird bereitgestellt). Beim losungsbasierten Verfahren erhalten Sie einen einfachen, mehrfachbenutzbaren Link zum Onlinefragebogen.'
verbose_name=_('Digitaler Evaluationstyp'),
help_text=_('Es werden generell zwei Typen von Verteilungsmethoden angeboten: Bei TANs erhalten Sie eine Excel Datei mit einer Liste aller TANs, welche Sie beispielsweise mithilfe von moodle verteilen können (eine Anleitung dazu wird bereitgestellt). Beim losungsbasierten Verfahren erhalten Sie einen einfachen, mehrfachbenutzbaren Link zum Onlinefragebogen.')
)

def get_next_state(self):
Expand Down Expand Up @@ -560,10 +560,10 @@ def get_evasys_umfragetyp(self):
def get_barcode_number(self, tutorgruppe=0):
"""Barcode Nummer für diese Veranstaltung"""
if tutorgruppe > 99:
raise ValueError("Tutorgruppe muss kleiner 100 sein")
raise ValueError(_("Tutorgruppe muss kleiner 100 sein"))

if isinstance(tutorgruppe, int) == False:
raise ValueError("Tutorgruppe muss eine ganze Zahl sein")
raise ValueError(_("Tutorgruppe muss eine ganze Zahl sein"))

base = Veranstaltung.BARCODE_BASE
veranst = self.pk
Expand All @@ -586,7 +586,7 @@ def get_evasys_list_veranstalter(self):
@staticmethod
def decode_barcode(barcode):
if (ean_checksum_valid(barcode) != True):
raise ValueError("Der Barcode ist nicht valide")
raise ValueError(_("Der Barcode ist nicht valide"))

# entferne das Padding am Anfang
information = barcode % Veranstaltung.BARCODE_BASE
Expand Down Expand Up @@ -630,7 +630,7 @@ def log(self, interface, is_frontend=False):

def auwertungstermin_to_late_msg(self):
toLateDate = self.semester.last_Auswertungstermin_to_late_human()
return 'Der Auswertungstermin muss vor dem %s liegen.' % toLateDate
return _(f'Der Auswertungstermin muss vor dem {toLateDate} liegen.')

def has_uebung(self):
"""Gibt True zurück wenn die Veranstaltung eine Übung hat sonst False"""
Expand All @@ -646,7 +646,7 @@ def veranstalter_list(self):


def anzahl_too_few_msg(self) :
return f'Anzahl der Bestellungen muss mindestens {self.MIN_BESTELLUNG_ANZAHL} sein. Bei weniger als {self.MIN_BESTELLUNG_ANZAHL} Teilnehmenden ist eine Evaluation leider nicht möglich'
return _(f'Anzahl der Bestellungen muss mindestens {self.MIN_BESTELLUNG_ANZAHL} sein. Bei weniger als {self.MIN_BESTELLUNG_ANZAHL} Teilnehmenden ist eine Evaluation leider nicht möglich')


def clean(self, *args, **kwargs):
Expand All @@ -672,7 +672,7 @@ def link_veranstalter(self): # @see http://stackoverflow.com/a/17948593
if self.pk is not None and self.access_token is not None:
return link_veranstalter + (link_suffix_format % (self.pk, self.access_token))
else:
return "Der Veranstalter Link wird erst nach dem Anlegen angezeigt"
return _("Der Veranstalter Link wird erst nach dem Anlegen angezeigt")

def allow_order(self):
"""Überprüft anhand des Status' der Veranstaltung, ob bestellt werden darf."""
Expand Down Expand Up @@ -710,8 +710,8 @@ def csv_to_tutor(self, csv_content):
nummer += 1

class Meta:
verbose_name = 'Veranstaltung'
verbose_name_plural = 'Veranstaltungen'
verbose_name = _('Veranstaltung')
verbose_name_plural = _('Veranstaltungen')
ordering = ['semester', 'typ', 'name']
unique_together = ('name', 'lv_nr', 'semester')
app_label = 'feedback'
Expand All @@ -734,8 +734,8 @@ def __str__(self):
return '%s %s %d' % (self.vorname, self.nachname, self.nummer)

class Meta:
verbose_name = 'Tutor'
verbose_name_plural = 'Tutoren'
verbose_name = _('Tutor')
verbose_name_plural = _('Tutoren')
unique_together = (('nummer', 'veranstaltung'),)
app_label = 'feedback'

Expand All @@ -749,7 +749,7 @@ def __str__(self):
return self.subject

class Meta:
verbose_name = 'Mailvorlage'
verbose_name = _('Mailvorlage')
verbose_name_plural = verbose_name + 'n'
ordering = ['subject']
app_label = 'feedback'
Expand All @@ -775,8 +775,8 @@ class BarcodeAllowedState(models.Model):
allow_state = models.IntegerField(choices=Veranstaltung.STATUS_CHOICES, null=True)

class Meta:
verbose_name = 'Erlaubter Zustand'
verbose_name_plural = 'Erlaubte Zustände'
verbose_name = _('Erlaubter Zustand')
verbose_name_plural = _('Erlaubte Zustände')
unique_together = (('barcode_scanner', 'allow_state'),)
app_label = 'feedback'

Expand Down
Loading

0 comments on commit fee6a20

Please sign in to comment.