minor update
This commit is contained in:
+45
-29
@@ -26,6 +26,33 @@ class User(AbstractUser):
|
||||
related_query_name='core_user',
|
||||
)
|
||||
|
||||
class Department(models.Model):
|
||||
name = models.CharField(max_length=100, unique=True)
|
||||
description = models.TextField(blank=True, null=True)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
# Each department can have many users
|
||||
users = models.ManyToManyField(
|
||||
settings.AUTH_USER_MODEL,
|
||||
related_name="departments",
|
||||
blank=True
|
||||
)
|
||||
|
||||
# One admin per department
|
||||
admin = models.OneToOneField(
|
||||
settings.AUTH_USER_MODEL,
|
||||
on_delete=models.SET_NULL,
|
||||
related_name="admin_of_department",
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
|
||||
class Meta:
|
||||
ordering = ["name"]
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class IssueCategory(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
description = models.TextField(blank=True)
|
||||
@@ -65,6 +92,15 @@ class Issue(models.Model):
|
||||
related_name="reported_issues"
|
||||
)
|
||||
|
||||
# 🔹 Add relation to department
|
||||
department = models.ForeignKey(
|
||||
Department,
|
||||
on_delete=models.SET_NULL,
|
||||
null=True,
|
||||
blank=True,
|
||||
related_name="issues"
|
||||
)
|
||||
|
||||
location = models.CharField(max_length=200, blank=True)
|
||||
latitude = models.FloatField(null=True, blank=True)
|
||||
longitude = models.FloatField(null=True, blank=True)
|
||||
@@ -98,7 +134,14 @@ class Issue(models.Model):
|
||||
def has_user_voted(self, user):
|
||||
if user.is_authenticated and hasattr(self, "votes"):
|
||||
return self.votes.filter(user=user).exists()
|
||||
return False
|
||||
return
|
||||
|
||||
def assign_to_department(self, department):
|
||||
"""Assign issue to a department and auto-update status to acknowledged"""
|
||||
self.department = department
|
||||
self.status = self.STATUS_ACKNOWLEDGED
|
||||
self.save()
|
||||
|
||||
|
||||
|
||||
class Vote(models.Model):
|
||||
@@ -127,31 +170,4 @@ class Comment(models.Model):
|
||||
|
||||
@property
|
||||
def is_reply(self):
|
||||
return self.parent is not None
|
||||
|
||||
class Department(models.Model):
|
||||
name = models.CharField(max_length=100, unique=True)
|
||||
description = models.TextField(blank=True, null=True)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
# Each department can have many users
|
||||
users = models.ManyToManyField(
|
||||
settings.AUTH_USER_MODEL,
|
||||
related_name="departments",
|
||||
blank=True
|
||||
)
|
||||
|
||||
# One admin per department
|
||||
admin = models.OneToOneField(
|
||||
settings.AUTH_USER_MODEL,
|
||||
on_delete=models.SET_NULL,
|
||||
related_name="admin_of_department",
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
|
||||
class Meta:
|
||||
ordering = ["name"]
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
return self.parent is not None
|
||||
Reference in New Issue
Block a user