Schule als Staat Projekt Web, Dokumente, etc.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

129 lignes
4.7KB

  1. from django.db import models
  2. class Angestellter(models.Model):
  3. name = models.CharField('Name', max_length=100)
  4. klasse = models.CharField('Klasse', max_length=10)
  5. is_teacher = models.BooleanField('Ist Lehrer?', default=False)
  6. def __str__(self):
  7. return "{} ({})".format(self.name, self.klasse)
  8. def show_betriebe(self):
  9. return ", ".join([str(b) for b in self.betriebe.all()])
  10. show_betriebe.short_description = "Betriebe"
  11. def zugeteilt(self):
  12. return self.betriebe.all().count() > 0
  13. zugeteilt.boolean = True
  14. def ist_klein(self):
  15. return self.klasse[0] in ['5', '6', '7']
  16. ist_klein.boolean = True
  17. class Meta:
  18. verbose_name = 'Angestellter'
  19. verbose_name_plural = 'Angestellte'
  20. # Create your models here.
  21. class Betrieb(models.Model):
  22. name = models.CharField('Name', max_length=100)
  23. manager = models.CharField('Betriebsleiter', max_length=200)
  24. email = models.EmailField('Kontakt Email', blank=True)
  25. arbeitnehmerzahl = models.IntegerField('Anzahl Arbeitnehmer',
  26. default=0,
  27. help_text='Gesamtzahl aller angestellten '
  28. 'Arbeitnehmer/-innen inklusive Betriebsleiter/-innen')
  29. arbeitnehmerzahl.short_description = 'Stellen'
  30. raumforderung = models.FloatField('Raumanforderung', default=0,
  31. help_text='In Zahlen ausgedrückter '
  32. 'Raumwunsch (halber Raum = 0,5)')
  33. raum = models.IntegerField('Raum', default=102)
  34. aufsicht = models.CharField('Aufsicht', max_length=100, default='keine')
  35. kredit = models.IntegerField('Kreditwunsch', default=0)
  36. business_idea = models.TextField('Idee')
  37. ip_address = models.CharField('IP Adresse', max_length=50, blank=True)
  38. confirmed = models.BooleanField('Bestätigt', default=False)
  39. approved = models.BooleanField('Zugelassen', default=False)
  40. angestellte = models.ManyToManyField(Angestellter,
  41. verbose_name='Angestellte',
  42. blank=True,
  43. related_name='betriebe')
  44. def arbeitnehmerzahl_kurz(self):
  45. return self.arbeitnehmerzahl
  46. arbeitnehmerzahl_kurz.short_description = 'Stellen'
  47. def punkt(self):
  48. kleine_angestellte = [a for a in self.angestellte.all() if a.ist_klein()]
  49. max_angestellte = self.angestellte.all().count()
  50. if len(kleine_angestellte) == 0:
  51. return 0
  52. elif len(kleine_angestellte) < (max_angestellte / 2):
  53. return 0.5
  54. else:
  55. return 1
  56. punkt.short_description = 'Punkt'
  57. def arbeiter_effektiv(self):
  58. return "{}/{}".format(self.angestellte.all().count(),
  59. self.arbeitnehmerzahl)
  60. arbeiter_effektiv.short_description = 'Stellen'
  61. def __str__(self):
  62. return str(self.name)
  63. class Meta:
  64. verbose_name = 'Betrieb'
  65. verbose_name_plural = 'Betriebe'
  66. class Partei(models.Model):
  67. name = models.CharField('Name', max_length=100)
  68. abbreviation = models.CharField('Abkürzung', max_length=5)
  69. chef = models.CharField('Parteivorsitzende', max_length=200)
  70. email = models.EmailField('Kontakt Email')
  71. description = models.TextField('Beschreibung (Ziele etc.)')
  72. ip_address = models.CharField('IP Adresse', max_length=50, blank=True)
  73. confirmed = models.BooleanField('Bestätigt', default=False)
  74. approved = models.BooleanField('Zugelassen', default=False)
  75. def __str__(self):
  76. return str(self.name)
  77. class Meta:
  78. verbose_name = 'Partei'
  79. verbose_name_plural = 'Parteien'
  80. class PresidentCandidate(models.Model):
  81. name = models.CharField('Name', max_length=100)
  82. email = models.EmailField('Kontakt Email')
  83. motivation = models.TextField('Motivation')
  84. ip_address = models.CharField('IP Adresse', max_length=50, blank=True)
  85. confirmed = models.BooleanField('Bestätigt', default=False)
  86. approved = models.BooleanField('Zugelassen', default=False)
  87. def __str__(self):
  88. return str(self.name)
  89. class Meta:
  90. verbose_name = 'Präsidentschaftskandidat'
  91. verbose_name_plural = 'Präsidentschaftskandidaten'
  92. class Question(models.Model):
  93. subject = models.CharField('Betreff', max_length=100)
  94. email = models.EmailField('Kontakt Email')
  95. content = models.TextField('Inhalt')
  96. ip_address = models.CharField('IP Adresse', max_length=50, blank=True)
  97. answered = models.BooleanField('Beantwortet', default=False)
  98. def __str__(self):
  99. return str(self.subject)
  100. class Meta:
  101. verbose_name = 'Frage'
  102. verbose_name_plural = 'Fragen'