Skip to content

Commit d0dfe7d

Browse files
authored
Merge pull request #35 from akirachix/feature/bug-fix
Feature/bug fix
2 parents 5c9ce6a + b54f571 commit d0dfe7d

File tree

7 files changed

+68
-7
lines changed

7 files changed

+68
-7
lines changed

api/serializers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ def update(self, instance, validated_data):
420420
profile.practice_number = practice_number
421421
profile.save()
422422
if cpd_points_2025 is not None:
423-
profile.cpd_points_2025 = cpd_points_2025 + 1
423+
profile.cpd_points_2025 = cpd_points_2025
424424
profile.save()
425425

426426
return instance

api/urls.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from django.urls import include, path
22
from rest_framework.routers import DefaultRouter
3-
from api.views import CaseAssignmentViewSet, CaseViewSet,CPDPointViewSet,DetaineeViewSet, LawyerRegistrationView, ForgotPasswordView, VerifyCodeView, ResetPasswordView,UsersViewSet, UserSignupView, LoginView
3+
from api.views import CaseAssignmentViewSet, CaseViewSet,CPDPointViewSet,DetaineeViewSet, LawyerRegistrationView, ForgotPasswordView, VerifyCodeView, ResetPasswordView,UsersViewSet, UserSignupView, LoginView,ApplicantCaseViewSet
44
from rest_framework.authtoken.views import obtain_auth_token
55

66

@@ -10,7 +10,8 @@
1010
router.register(r'case-assignments', CaseAssignmentViewSet, basename='case-assignment')
1111
router.register(r"users", UsersViewSet, basename="users")
1212
router.register(r"detainees", DetaineeViewSet, basename="detainees")
13-
# router.register(r"my-cases", MyCaseViewSet, basename="my-cases")
13+
router.register(r"applicant-cases", ApplicantCaseViewSet, basename="applicant-cases")
14+
1415

1516

1617

api/views.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from rest_framework import viewsets, generics, status
22
from rest_framework.permissions import AllowAny
33
from django.shortcuts import render
4-
from rest_framework import viewsets, status
4+
from rest_framework import viewsets, status,permissions
55
from rest_framework.response import Response
66
from rest_framework.permissions import AllowAny, IsAuthenticated
77
from .serializers import CaseAssignmentSerializer, CaseSerializer,CPDPointSerializer,DetaineeSerializer
@@ -257,6 +257,13 @@ def update(self, request, *args, **kwargs):
257257

258258
permission_classes = [AllowAny]
259259

260+
class ApplicantCaseViewSet(viewsets.ReadOnlyModelViewSet):
261+
serializer_class = CaseSerializer
262+
permission_classes = [permissions.IsAuthenticated]
263+
264+
def get_queryset(self):
265+
return Case.objects.filter(user=self.request.user)
266+
260267
class UsersViewSet(viewsets.ModelViewSet):
261268
queryset = User.objects.all()
262269
serializer_class = UserSerializer

cases/migrations/0016_case_user.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Generated by Django 5.2.6 on 2025-10-16 05:31
2+
3+
import django.db.models.deletion
4+
from django.conf import settings
5+
from django.db import migrations, models
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
("cases", "0015_remove_case_assigned_lawyer"),
12+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
13+
]
14+
15+
operations = [
16+
migrations.AddField(
17+
model_name="case",
18+
name="user",
19+
field=models.ForeignKey(
20+
blank=True,
21+
limit_choices_to={"role": "applicant"},
22+
null=True,
23+
on_delete=django.db.models.deletion.CASCADE,
24+
to=settings.AUTH_USER_MODEL,
25+
),
26+
),
27+
]

cases/models.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,21 @@ class Case(models.Model):
8080
null=True,
8181
blank=True
8282
)
83+
user = models.ForeignKey(
84+
User,
85+
on_delete=models.CASCADE,
86+
null=True,
87+
blank=True,
88+
limit_choices_to={'role': 'applicant'}
89+
)
8390
predicted_urgency_level = models.CharField(
8491
max_length=20,
8592
choices=[('high', 'High'), ('medium', 'Medium'), ('low', 'Low')],
8693
null=True,
8794
blank=True
8895
)
8996
date_of_offense = models.DateField(null=True, blank=True)
97+
9098
trial_date = models.DateField(null=True, blank=True)
9199
police_station = models.CharField(max_length=255, null=True, blank=True)
92100
latitude = models.DecimalField(max_digits=9, decimal_places=6, null=True, blank=True)

cases/services.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,31 @@ def assign_case_automatically(case_id):
6363
'environment': 'environment_law',
6464
'employment': 'employment_law',
6565
'civil': 'civil_law',
66-
'other': 'criminal_law'
66+
'other': 'criminal_law',
67+
'theft': 'criminal_law',
68+
'assault': 'criminal_law',
69+
'murder': 'criminal_law',
70+
'abduction': 'criminal_law',
71+
'fraud': 'corporate_law',
72+
'harassment': 'employment_law',
6773
}
68-
69-
field_name = specialization_map.get(case.predicted_case_type.lower(), None)
74+
case_type = case.predicted_case_type.lower().strip()
75+
if " - " in case_type:
76+
case_type = case_type.split(" - ")[0].strip()
77+
elif "/" in case_type:
78+
case_type = case_type.split("/")[0].strip()
79+
field_name = specialization_map.get(case_type)
7080
if not field_name:
81+
for key, value in specialization_map.items():
82+
if key in case_type:
83+
field_name = value
84+
break
7185
logger.error(f"Unknown predicted case type: {case.predicted_case_type}")
7286
return None
87+
if not field_name:
88+
logger.error(f"Unknown predicted case type: {case.predicted_case_type}")
89+
return None
90+
7391

7492
lawyers = LawyerProfile.objects.filter(verified=True, **{field_name: True})
7593

-5.21 MB
Binary file not shown.

0 commit comments

Comments
 (0)