Schule als Staat Projekt Web, Dokumente, etc.
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

129 rindas
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'