Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # model.py
- """Moduł zawierający modle reprezentujące Słowniki."""
- from django.db import models
- from django.db.models import Q
- class Dictionary(models.Model):
- """Model przechowujący wykaz Słowników zamkniętych/otwartych."""
- name = models.CharField('nazwa', max_length=1024)
- indication = models.CharField('oznaczenie', max_length=32, unique=True)
- def __str__(self):
- return f'{self.name} ({self.indication})'
- class Meta:
- verbose_name = 'słownik'
- verbose_name_plural = 'słowniki'
- class ExtendedDictionaryItemValidityPeriodManager(models.Manager):
- """Menadżer zawierający dodatkowe metody ułatwiające operowanie na wartościach Słowników."""
- def available_at(self, time_point):
- """Zwraca wartości dostepne w określonym punkcie czasu.
- :param time_point: punkt czasowy
- :type time_point: datetime.datetime
- :rtype: django.db.models.query.QuerySet
- """
- return self.get_queryset().filter(
- Q(entry_date__lte=time_point) & (Q(cancellation_date__gt=time_point) | Q(cancellation_date__isnull=True))
- )
- class CurrentDictionaryItemManager(models.Manager):
- """Menadżer zwracający aktualne wartości Słownika."""
- def get_queryset(self):
- return super().get_queryset().filter(cancellation_date__isnull=True)
- class DictionaryItemValidityPeriod(models.Model):
- """Model abstrakcyjny określający okres obowiązywania wartości Słownika."""
- entry_date = models.DateTimeField('data obowiązywania - od', auto_now_add=True)
- cancellation_date = models.DateTimeField('data obowiązywania - do', null=True, blank=True)
- objects = ExtendedDictionaryItemValidityPeriodManager()
- current = CurrentDictionaryItemManager()
- class Meta:
- abstract = True
- class ClosedDictionaryItem(DictionaryItemValidityPeriod):
- """Model przechowujący wartości ze Słowników zamkniętych."""
- dictionary = models.ForeignKey(Dictionary, on_delete=models.CASCADE)
- value = models.TextField('wartość')
- def __str__(self):
- return f'{self.dictionary.name} - {self.value}'
- class Meta:
- verbose_name = 'wartość słownika zamkniętego'
- verbose_name_plural = 'wartości słowników zamkniętych'
- class ExtendedOpenDictionaryItemManager(models.Manager):
- """Menadżer zawierający dodatkowe metody ułatwiające operowanie na wartościach Słowników otwartych."""
- def available_at(self, time_point):
- """Zwraca wartości dostepne w określonym punkcie czasu.
- :param time_point: punkt czasowy
- :type time_point: datetime.datetime
- :rtype: django.db.models.query.QuerySet
- """
- return self.get_queryset().filter(
- Q(rejected=False) & Q(entry_date__lte=time_point) & (Q(cancellation_date__gt=time_point) | Q(cancellation_date__isnull=True))
- )
- class CurrentOpenDictionaryItemManager(models.Manager):
- """Menadżer zwracający aktualne wartości Słownika otwartego."""
- def get_queryset(self):
- return super().get_queryset().filter(entry_date__isnull=False, cancellation_date__isnull=True, rejected=False)
- class OpenDictionaryItem(models.Model):
- """Model przechowujący wartości ze słowników otwartych."""
- dictionary = models.ForeignKey(Dictionary, on_delete=models.CASCADE)
- value = models.TextField('wartość')
- entry_date = models.DateTimeField('data obowiązywania - od', null=True, blank=True)
- cancellation_date = models.DateTimeField('data obowiązywania - do', null=True, blank=True)
- rejected = models.BooleanField('odrzucony')
- objects = ExtendedOpenDictionaryItemManager()
- current = CurrentOpenDictionaryItemManager()
- def __str__(self):
- return f'{self.dictionary.name} - {self.value}'
- class Meta:
- verbose_name = 'wartość słownika otwartego'
- verbose_name_plural = 'wartości słowników otwartych'
- class ProjectEntity(DictionaryItemValidityPeriod):
- """Model słownika Podmiotów Projektu."""
- name = models.CharField('nazwa jednostki', max_length=1024)
- institutional_role = models.CharField('rola instytucjonalna w projekcie', max_length=256)
- street = models.CharField('ulica', max_length=256)
- house_no = models.CharField('numer lokalu', max_length=64)
- postal_code = models.CharField('kod pocztowy', max_length=6)
- post_office = models.CharField('miejscowość poczty', max_length=256)
- phone_no = models.CharField('numer telefonu', max_length=10)
- e_mail = models.EmailField()
- esp = models.CharField(verbose_name='ESP', max_length=255)
- preferred_communication_channel = models.CharField('preferowany dla instytucji kanał komunikacji', max_length=6)
- class Meta:
- verbose_name = 'podmiot projektu'
- verbose_name_plural = 'podmioty projektu'
- class ProjectTeamMember(DictionaryItemValidityPeriod):
- """Model słownika Zespołu projektu."""
- last_name = models.CharField('nazwisko', max_length=128)
- first_name = models.CharField('imię', max_length=128)
- role = models.CharField('rola osobowa w projekcie', max_length=128)
- unit_name = models.CharField('nazwa jednostki', max_length=256)
- office_department = models.CharField('biuro/departament', max_length=256)
- function = models.CharField('funkcja w jednostce', max_length=256)
- phone_no = models.CharField('numer telefonu', max_length=10)
- e_mail = models.EmailField()
- esp = models.CharField('ESP', max_length=255)
- preferred_communication_channel = models.CharField('preferowany dla instytucji kanał komunikacji', max_length=6)
- class Meta:
- verbose_name = 'członek zespołu projektu'
- verbose_name_plural = 'członkowie zespołu projektu'
- class WalletProgram(DictionaryItemValidityPeriod):
- """Model słownika Portfele/programy."""
- short_name = models.CharField('skrócona nazwa portfela PRM/portfela/programu', max_length=32)
- full_name = models.CharField('pełna nazwa portfela PRM/portfela/programu', max_length=128)
- class Meta:
- verbose_name = 'portfel/program'
- verbose_name_plural = 'portfele/programy'
- class WalletProgramEntity(DictionaryItemValidityPeriod):
- """Model słownika Podmioty portfela/programu."""
- institutional_role = models.CharField('rola instytucjonalna w portfelu PRM/portfelu/programie', max_length=128)
- unit_name = models.CharField('nazwa jednostki', max_length=256)
- street = models.CharField('ulica', max_length=256)
- house_no = models.CharField('numer lokalu', max_length=64)
- postal_code = models.CharField('kod pocztowy', max_length=6)
- post_office = models.CharField('miejscowość poczty', max_length=256)
- phone_no = models.CharField('numer telefonu', max_length=10)
- e_mail = models.EmailField()
- esp = models.CharField(verbose_name='ESP', max_length=255)
- preferred_communication_channel = models.CharField('preferowany dla instytucji kanał komunikacji', max_length=6)
- class Meta:
- verbose_name = 'podmiot portfela/programu'
- verbose_name_plural = 'podmioty portfela/programu'
- class WalletProgramTeamMember(DictionaryItemValidityPeriod):
- """Model słownika Zespołu portfela/programu."""
- role = models.CharField('rola osobowa w portfelu PRM/ portfelu/programie', max_length=128)
- last_name = models.CharField('nazwisko', max_length=128)
- first_name = models.CharField('imię', max_length=128)
- unit_name = models.CharField('nazwa jednostki', max_length=128)
- office_department = models.CharField('biuro/departament', max_length=256)
- function = models.CharField('funkcja w jednostce', max_length=256)
- phone_no = models.CharField('numer telefonu', max_length=10)
- e_mail = models.EmailField()
- esp = models.CharField(verbose_name='ESP', max_length=256)
- preferred_communication_channel = models.CharField('preferowany dla instytucji kanał komunikacji', max_length=6)
- class Meta:
- verbose_name = 'członek zespołu portfela/programu'
- verbose_name_plural = 'członkowie zespołu portfela/programu'
- class SRDProject(DictionaryItemValidityPeriod):
- """Model słowników Projekty SOR."""
- name = models.CharField('nazwa projektu SOR', max_length=256)
- kind = models.CharField('typ projektu SOR', max_length=16)
- class Meta:
- verbose_name = 'projekt SOR'
- verbose_name_plural = 'projekty SOR'
- class StrategieAndStrategicProgram(DictionaryItemValidityPeriod):
- """Model słownika Strategie i programy strategiczne."""
- name = models.CharField('nazwa strategii/programu', max_length=64)
- purpose = models.CharField('cel szczegółowy strategii/programu', max_length=64)
- area = models.CharField('obszar strategii', max_length=64)
- class Meta:
- verbose_name = 'strategia i program strategiczny'
- verbose_name_plural = 'strategie i programy strategiczne'
- class OperationalProgram(DictionaryItemValidityPeriod):
- """Model słownika Programy operacyjne."""
- activities = models.CharField('działania/Poddziałania Programu Operacyjnego', max_length=1024)
- po = models.CharField('PO', max_length=8)
- priority_axis = models.CharField('oś priorytetowa', max_length=64)
- activity = models.CharField('działanie', max_length=256)
- sub_activity = models.CharField('poddziałanie', max_length=64, blank=True)
- class Meta:
- verbose_name = 'program operacyjny'
- verbose_name_plural = 'programy operacyjne'
- class BudgetPart(DictionaryItemValidityPeriod):
- """Model słownika Części budżetowe."""
- part = models.CharField('część budżetowa', max_length=256)
- number = models.CharField('numer części budżetowej', max_length=5)
- name = models.CharField('nazwa części budżetowej', max_length=256)
- class Meta:
- verbose_name = 'część budżetowa'
- verbose_name_plural = 'części budżetowe'
- class Risk(DictionaryItemValidityPeriod):
- """Model słownika Ryzyka."""
- name = models.CharField('nazwa ryzyka', max_length=256)
- category = models.CharField('kategoria ryzyka', max_length=128)
- class Meta:
- verbose_name = 'ryzyko'
- verbose_name_plural = 'ryzyka'
- class ProjectOpinion(DictionaryItemValidityPeriod):
- """Model słownika Opiniowanie projektów."""
- project_name = models.CharField('nazwa projektu', max_length=256)
- wallet_program_name_abbreviation = models.CharField('skrócona nazwa portfela/programu', max_length=64)
- reviewing_path = models.CharField('ścieżka opiniowania projektu', max_length=128)
- report_opinion = models.CharField('opiniowane raporty formularzowe/zestawy danych', max_length=128)
- phase = models.CharField('faza opiniowania', max_length=128)
- presentation_date = models.DateField('data prezentowania danych opiniowanego projektu')
- recipients = models.CharField('lista adresatów', max_length=128)
- class Meta:
- verbose_name = 'opiniowanie projektu'
- verbose_name_plural = 'opiniowanie projektów'
- # views.py
- class DictionaryListView(LoginRequiredMixin, ListView):
- """Widok listy słowników"""
- model = Dictionary
- template_name = 'administration/dictionaries/list.html'
- ordering = []
Add Comment
Please, Sign In to add comment