CBV code updates: 28th May

This commit is contained in:
Horilla
2025-05-28 09:42:28 +05:30
parent 499fcc8cd8
commit c2f0409e09
136 changed files with 13059 additions and 8455 deletions

View File

@@ -1,17 +1,56 @@
import os
from django.core.exceptions import ValidationError
from django.db import models
from django.db.models.signals import post_delete
from django.dispatch import receiver
# Create your models here.
class FaceDetection(models.Model):
company_id = models.OneToOneField(
"base.Company", related_name="face_detection", on_delete=models.CASCADE
"base.Company",
related_name="face_detection",
on_delete=models.CASCADE,
null=True,
blank=True,
)
start = models.BooleanField(default=False)
def clean(self):
if self.company_id is None:
qs = FaceDetection.objects.filter(company_id__isnull=True)
if self.pk:
qs = qs.exclude(pk=self.pk)
if qs.exists():
raise ValidationError(
"Only one FaceDetection can have a null company_id."
)
def save(self, *args, **kwargs):
self.full_clean() # Ensures `clean()` runs
super().save(*args, **kwargs)
class Meta:
constraints = [
models.UniqueConstraint(
fields=["company_id"],
name="unique_company_id_when_not_null_facedetection",
condition=~models.Q(company_id=None),
)
]
class EmployeeFaceDetection(models.Model):
employee_id = models.OneToOneField(
"employee.Employee", related_name="face_detection", on_delete=models.CASCADE
)
image = models.ImageField()
@receiver(post_delete, sender=EmployeeFaceDetection)
def delete_image_file(sender, instance, **kwargs):
if instance.image and instance.image.path:
if os.path.isfile(instance.image.path):
os.remove(instance.image.path)

View File

@@ -1,5 +1,4 @@
<form hx-post="{% url 'face-config' %}" hx-swap="none" hx-on-htmx-after-request="$('#reloadMessagesButton').click();">
{% csrf_token %}
{{form.as_p}}
</form>

View File

@@ -10,6 +10,7 @@ from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView
from base.models import Company
from facedetection.forms import FaceDetectionSetupForm
from horilla.decorators import hx_request_required
@@ -34,10 +35,6 @@ class FaceDetectionConfigAPIView(APIView):
except Exception as e:
raise serializers.ValidationError(e)
@method_decorator(
permission_required("facedetection.view_facedetection", raise_exception=True),
name="dispatch",
)
def get(self, request):
serializer = FaceDetectionSerializer(self.get_facedetection(request))
return Response(serializer.data, status=status.HTTP_200_OK)
@@ -122,7 +119,10 @@ class EmployeeFaceDetectionGetPostAPIView(APIView):
def get_company(request):
try:
company = request.user.employee_get.get_company()
selected_company = request.session.get("selected_company")
if selected_company == "all":
return None
company = Company.objects.get(id=selected_company)
return company
except Exception as e:
raise serializers.ValidationError(e)
@@ -141,7 +141,6 @@ def get_facedetection(request):
@permission_required("geofencing.add_localbackup")
@hx_request_required
def face_detection_config(request):
print(">>>>>>>>>>>>>>>>>>>>>")
try:
form = FaceDetectionSetupForm(instance=get_facedetection(request))
except: