from django.db import models from django.contrib.auth.models import User from users.models import Agency from django.urls import reverse from areas.models import Areas from tasks.models import Tasks from cloud.models import DataFile from users.models import AgencyGroup from organizer.models import AGPassword, AGContacts, QuickLinks import datetime from django.utils import timezone class StandardCommentRate(models.Model): #standard = models.ForeignKey("Standards", on_delete=models.CASCADE) rated_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True) rate_stats = models.IntegerField(default=0) oncomment = models.ForeignKey("StandardComments", on_delete=models.CASCADE) class StandardComments(models.Model): standard = models.ForeignKey("Standards", on_delete=models.CASCADE) content = models.CharField(max_length=200, blank=False, default="") comment_by = models.ForeignKey(User, on_delete=models.CASCADE) comment_on = models.DateTimeField(default=timezone.now, blank=True) last_modified_on = models.DateTimeField(default=timezone.now, blank=True) class Standards(models.Model): agency = models.ForeignKey(Agency, on_delete=models.CASCADE) area = models.ForeignKey(Areas, on_delete=models.SET_NULL, blank=True, null=True) task = models.ForeignKey(Tasks, on_delete=models.SET_NULL, blank=True, null=True) name = models.CharField(max_length=200, blank=False, default="") content = models.TextField(blank=True, verbose_name='Inhalt', default="") created_standard_by = models.ForeignKey(User, default=None, null=True, on_delete=models.SET_NULL) created_standard_date = models.DateTimeField(default=timezone.now, blank=True) published_by = models.ForeignKey(User, on_delete=models.SET_NULL, related_name='user_published_standard', default=None, null=True) published_on = models.DateTimeField(default=timezone.now, blank=True) last_modified_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name='user_modified_standard', default=None) last_modified_on = models.DateTimeField(default=timezone.now, blank=True) public = models.BooleanField(default=False) freefield_title = models.CharField(max_length=200, blank=False, null=True, default="") freefield_content = models.TextField(max_length=500, blank=False, null=True, default="") delflag = models.BooleanField(default=False) deldate = models.DateTimeField(default=timezone.now, blank=True) # USER # VERTRETER #representative = models.ForeignKey(User, on_delete=models.PROTECT, related_name="user_repr", blank=True, null=True) representative = models.ManyToManyField(User, blank=True, related_name='user_rep') # AUSFÜHRENDER #executor = models.ForeignKey(User, on_delete=models.PROTECT, related_name="user_executor", blank=True, null=True) executor = models.ManyToManyField(User, blank=True, related_name='user_ex') # VERANTWORTLICHER #authority = models.ForeignKey(User, on_delete=models.PROTECT, related_name="user_authority", blank=True, null=True) authority = models.ManyToManyField(User, blank=True, related_name='user_aut') # GRUPPEN representative_group = models.ManyToManyField(AgencyGroup, blank=True, related_name="group_rep") executor_group = models.ManyToManyField(AgencyGroup, blank=True, related_name="group_ex") authority_group = models.ManyToManyField(AgencyGroup, blank=True, related_name="group_aut") # FILES addedfiles = models.ManyToManyField(DataFile, blank=True) # VERLINKTE STANDARDS linked_standards = models.ManyToManyField('Standards', blank=True) # GORUPS visibleby = models.ManyToManyField(AgencyGroup, blank=True) # Contacts addedcontacts = models.ManyToManyField(AGContacts, blank=True) # Passwords addedpasswords = models.ManyToManyField(AGPassword, blank=True) # Quicklinks addedquicklinks = models.ManyToManyField(QuickLinks, blank=True, related_name="standard_quicklinks") # FIELD FOR AGENCYNETWORK comments = models.ManyToManyField("StandardComments", blank=True, related_name='comments') parent_standard = models.ForeignKey("Standards", related_name='partentedstandard', on_delete=models.SET_NULL, blank=True, null=True, default=None) shared_on = models.DateTimeField(default=timezone.now, blank=True) favoritfrom = models.ManyToManyField(User, blank=True, related_name="FavoritFrom") #Counter, wie oft dieser Standard in eine andere Agentur kopiert wird agencynetworkcounter = models.IntegerField(default=0) def __str__(self): return f'{self.name}' # Hier Path für Templates des Models mit Parametern def get_absolute_url(self): return reverse('standards-add', kwargs={'pk':self.pk})