digitaleagenturnc/standards/models.py

76 lines
3.4 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
import datetime
from django.utils import timezone
#from ckeditor_uploader.fields import RichTextUploadingField
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)
rated = models.IntegerField()
class Standards(models.Model):
agency = models.ForeignKey(Agency, on_delete=models.CASCADE)
area = models.ForeignKey(Areas, on_delete=models.CASCADE)
task = models.ForeignKey(Tasks, on_delete=models.CASCADE)
name = models.CharField(max_length=200, blank=False, default="")
content = models.TextField(blank=True, verbose_name='Inhalt', default="")
created_standard_by = models.ForeignKey(User, on_delete=models.PROTECT)
created_standard_date = models.DateTimeField(default=timezone.now, blank=True)
published_by = models.ForeignKey(User, on_delete=models.PROTECT, related_name='user_published_standard', default=None)
published_on = models.DateTimeField(default=timezone.now, blank=True)
last_modified_by = models.ForeignKey(User, on_delete=models.PROTECT, 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, default="")
freefield_content = models.TextField(max_length=500, blank=False, default="")
# 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')
# FILES
addedfiles = models.ManyToManyField(DataFile, blank=True)
# VERLINKTE STANDARDS
linked_standards = models.ManyToManyField('Standards', blank=True)
# GORUPS
visibleby = models.ManyToManyField(AgencyGroup, blank=True)
indi_name = models.CharField(max_length=200, blank=False, default="")
indi_conmtent = models.CharField(max_length=500, blank=False, default="")
# FIELD FOR AGENCYNETWORK
comments = models.ManyToManyField("StandardComments", blank=True, related_name='comments')
parent_standard = models.ForeignKey("Standards", related_name='partentedstandard', on_delete=models.PROTECT, blank=True, null=True, default=None)
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-update', kwargs={'pk':self.pk})