minor update

This commit is contained in:
2025-08-25 14:26:58 +05:30
parent 17f309dcda
commit 7272f1726f
13 changed files with 163 additions and 33 deletions
+45 -29
View File
@@ -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