104 lines
4.8 KiB
Python
104 lines
4.8 KiB
Python
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)
|
|
addedfiles_nc = models.ManyToManyField('NCFile', 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})
|
|
|
|
class NCFile(models.Model):
|
|
agency = models.ForeignKey(Agency, on_delete=models.CASCADE)
|
|
nc_id = models.IntegerField(default=0)
|
|
file_id = models.ForeignKey(DataFile, on_delete=models.CASCADE, null=True, blank=True, default=None)
|