[ADD] BASE: Option to select primary mail server (#104)

This commit is contained in:
Ashwanth Balakrishnan
2024-03-06 20:56:22 +05:30
committed by GitHub
parent 63f37177f5
commit 18523883e0
3 changed files with 38 additions and 27 deletions

View File

@@ -3,6 +3,7 @@ models.py
This module is used to register django models
"""
from collections.abc import Iterable
from typing import Any
import django
@@ -33,11 +34,13 @@ def validate_time_format(value):
except ValueError as e:
raise ValidationError(_("Invalid format, excepted HH:MM")) from e
def clear_messages(request):
storage = messages.get_messages(request)
for message in storage:
pass
class Company(models.Model):
"""
Company model
@@ -717,14 +720,16 @@ class WorkTypeRequest(models.Model):
ordering = [
"-id",
]
def delete(self,*args, **kwargs):
request = getattr(_thread_locals,"request",None)
def delete(self, *args, **kwargs):
request = getattr(_thread_locals, "request", None)
if not self.approved:
super().delete(*args, **kwargs)
else:
if request:
clear_messages(request)
messages.warning(request,"The request entry cannot be deleted.")
messages.warning(request, "The request entry cannot be deleted.")
def is_any_work_type_request_exists(self):
approved_work_type_requests_range = WorkTypeRequest.objects.filter(
employee_id=self.employee_id,
@@ -777,9 +782,7 @@ class WorkTypeRequest(models.Model):
)
if not self.is_permanent_work_type:
if not self.requested_till:
raise ValidationError(
_("Requested till field is required.")
)
raise ValidationError(_("Requested till field is required."))
def __str__(self) -> str:
return f"{self.employee_id.employee_first_name} \
@@ -796,7 +799,7 @@ class WorktyperequestComment(models.Model):
request_id = models.ForeignKey(WorkTypeRequest, on_delete=models.CASCADE)
employee_id = models.ForeignKey(Employee, on_delete=models.CASCADE)
comment = models.TextField(null=True, verbose_name=_("Comment"))
files = models.ManyToManyField(BaserequestFile,blank=True)
files = models.ManyToManyField(BaserequestFile, blank=True)
created_at = models.DateTimeField(
auto_now_add=True,
verbose_name=_("Created At"),
@@ -894,9 +897,7 @@ class ShiftRequest(models.Model):
)
if not self.is_permanent_shift:
if not self.requested_till:
raise ValidationError(
_("Requested till field is required.")
)
raise ValidationError(_("Requested till field is required."))
def is_any_request_exists(self):
approved_shift_requests_range = ShiftRequest.objects.filter(
@@ -940,21 +941,20 @@ class ShiftRequest(models.Model):
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
def delete(self,*args, **kwargs):
request = getattr(_thread_locals,"request",None)
def delete(self, *args, **kwargs):
request = getattr(_thread_locals, "request", None)
if not self.approved:
super().delete(*args, **kwargs)
else:
if request:
clear_messages(request)
messages.warning(request,"The request entry cannot be deleted.")
messages.warning(request, "The request entry cannot be deleted.")
def __str__(self) -> str:
return f"{self.employee_id.employee_first_name} \
{self.employee_id.employee_last_name} - {self.requested_date}"
class ShiftrequestComment(models.Model):
"""
ShiftrequestComment Model
@@ -964,7 +964,7 @@ class ShiftrequestComment(models.Model):
request_id = models.ForeignKey(ShiftRequest, on_delete=models.CASCADE)
employee_id = models.ForeignKey(Employee, on_delete=models.CASCADE)
files = models.ManyToManyField(BaserequestFile,blank=True)
files = models.ManyToManyField(BaserequestFile, blank=True)
comment = models.TextField(null=True, verbose_name=_("Comment"))
created_at = models.DateTimeField(
auto_now_add=True,
@@ -994,6 +994,9 @@ class DynamicEmailConfiguration(models.Model):
SingletoneModel to keep the mail server configurations
"""
is_primary = models.BooleanField(
default=False, verbose_name=_("Primary Mail Server")
)
host = models.CharField(
blank=True, null=True, max_length=256, verbose_name=_("Email Host")
)
@@ -1040,16 +1043,16 @@ class DynamicEmailConfiguration(models.Model):
)
)
if not self.company_id:
servers_same_company = DynamicEmailConfiguration.objects.filter(
company_id__isnull=True
).exclude(id=self.id)
if servers_same_company.exists():
raise ValidationError({"company_id": _("This field is required")})
raise ValidationError({"company_id": _("This field is required")})
def __str__(self):
return self.username
def save(self, *args, **kwargs) -> None:
if self.is_primary:
DynamicEmailConfiguration.objects.filter(is_primary=True).update(
is_primary=False
)
super().save(*args, **kwargs)
servers_same_company = DynamicEmailConfiguration.objects.filter(
company_id=self.company_id
@@ -1267,20 +1270,22 @@ class AnnouncementExpire(models.Model):
class Announcement(models.Model):
"""
Anonuncement Model for stroing all announcements.
"""
from employee.models import Employee
title = models.CharField(max_length=30)
description = models.TextField(null=True,max_length=255)
description = models.TextField(null=True, max_length=255)
attachments = models.ManyToManyField(
Attachment, related_name="announcement_attachments", blank=True
)
created_on = models.DateTimeField(auto_now_add=True)
expire_date = models.DateField(null=True, blank=True)
employees = models.ManyToManyField(Employee, related_name="announcement_employees", blank=True)
employees = models.ManyToManyField(
Employee, related_name="announcement_employees", blank=True
)
department = models.ManyToManyField(Department, blank=True)
job_position = models.ManyToManyField(JobPosition, blank=True)
disable_comments = models.BooleanField(default=False)
@@ -1290,6 +1295,7 @@ class Announcement(models.Model):
This method is used to get the view count of the announcement
"""
return self.announcementview_set.filter(viewed=True)
def __str__(self):
return self.title
@@ -1303,7 +1309,7 @@ class AnnouncementComment(models.Model):
announcement_id = models.ForeignKey(Announcement, on_delete=models.CASCADE)
employee_id = models.ForeignKey(Employee, on_delete=models.CASCADE)
comment = models.TextField(null=True, verbose_name=_("Comment"),max_length=255)
comment = models.TextField(null=True, verbose_name=_("Comment"), max_length=255)
created_at = models.DateTimeField(
auto_now_add=True,
verbose_name=_("Created At"),
@@ -1315,10 +1321,11 @@ class AnnouncementView(models.Model):
"""
Announcemnt View Model
"""
user = models.ForeignKey(User, on_delete=models.CASCADE)
announcement = models.ForeignKey(Announcement, on_delete=models.CASCADE)
viewed = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True,null=True)
created_at = models.DateTimeField(auto_now_add=True, null=True)
class EmailLog(models.Model):