Skip to content

Commit 3c4d14c

Browse files
authored
Merge pull request #516 from MicroPyramid/new_release
new release
2 parents 31b677f + 6d424d2 commit 3c4d14c

30 files changed

+371
-166
lines changed

accounts/serializer.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
AttachmentsSerializer,
66
OrganizationSerializer,
77
ProfileSerializer,
8+
UserSerializer
89
)
910
from contacts.serializer import ContactSerializer
1011
from leads.serializer import LeadSerializer
@@ -18,7 +19,7 @@ class Meta:
1819

1920

2021
class AccountSerializer(serializers.ModelSerializer):
21-
created_by = ProfileSerializer()
22+
created_by = UserSerializer()
2223
lead = LeadSerializer()
2324
org = OrganizationSerializer()
2425
tags = TagsSerailizer(read_only=True, many=True)

accounts/views.py

+23-11
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,10 @@
3030
from accounts.tasks import send_email, send_email_to_assigned_user
3131
from cases.serializer import CaseSerializer
3232
from common.models import Attachments, Comment, Profile
33+
from leads.models import Lead
34+
from leads.serializer import LeadSerializer
3335

34-
# from common.custom_auth import JSONWebTokenAuthentication
36+
from common.external_auth import CustomDualAuthentication
3537
from common.serializer import (
3638
AttachmentsSerializer,
3739
CommentSerializer,
@@ -55,7 +57,7 @@
5557

5658

5759
class AccountsListView(APIView, LimitOffsetPagination):
58-
# authentication_classes = (JSONWebTokenAuthentication,)
60+
authentication_classes = (CustomDualAuthentication,)
5961
permission_classes = (IsAuthenticated,)
6062
model = Account
6163
serializer_class = AccountReadSerializer
@@ -65,7 +67,7 @@ def get_context_data(self, **kwargs):
6567
queryset = self.model.objects.filter(org=self.request.profile.org).order_by("-id")
6668
if self.request.profile.role != "ADMIN" and not self.request.profile.is_admin:
6769
queryset = queryset.filter(
68-
Q(created_by=self.request.profile) | Q(assigned_to=self.request.profile)
70+
Q(created_by=self.request.profile.user.user) | Q(assigned_to=self.request.profile)
6971
).distinct()
7072

7173
if params:
@@ -77,7 +79,7 @@ def get_context_data(self, **kwargs):
7779
queryset = queryset.filter(industry__icontains=params.get("industry"))
7880
if params.get("tags"):
7981
queryset = queryset.filter(
80-
tags__in=json.loads(params.get("tags"))
82+
tags__in=params.get("tags")
8183
).distinct()
8284

8385
context = {}
@@ -136,6 +138,12 @@ def get_context_data(self, **kwargs):
136138
"id", "user__email"
137139
)
138140
context["users"] = users
141+
leads = Lead.objects.filter(org=self.request.profile.org).exclude(
142+
Q(status="converted") | Q(status="closed")
143+
)
144+
context["users"] = users
145+
context["leads"] = LeadSerializer(leads, many=True).data
146+
context["status"] = ["open","close"]
139147
return context
140148

141149
@extend_schema(tags=["Accounts"], parameters=swagger_params1.account_get_params)
@@ -207,7 +215,7 @@ def post(self, request, *args, **kwargs):
207215

208216

209217
class AccountDetailView(APIView):
210-
# authentication_classes = (JSONWebTokenAuthentication,)
218+
authentication_classes = (CustomDualAuthentication,)
211219
permission_classes = (IsAuthenticated,)
212220
serializer_class = AccountReadSerializer
213221

@@ -226,7 +234,6 @@ def put(self, request, pk, format=None):
226234
serializer = AccountCreateSerializer(
227235
account_object, data=data, request_obj=request, account=True
228236
)
229-
serializer.data['org'] = request.profile.org
230237

231238
if serializer.is_valid():
232239
if (
@@ -285,7 +292,7 @@ def put(self, request, pk, format=None):
285292

286293
if self.request.FILES.get("account_attachment"):
287294
attachment = Attachments()
288-
attachment.created_by = self.request.profile
295+
attachment.created_by = self.request.profile.user
289296
attachment.file_name = self.request.FILES.get("account_attachment").name
290297
attachment.account = account_object
291298
attachment.attachment = self.request.FILES.get("account_attachment")
@@ -375,6 +382,9 @@ def get(self, request, pk, format=None):
375382
users_mention = []
376383
else:
377384
users_mention = []
385+
leads = Lead.objects.filter(org=self.request.profile.org).exclude(
386+
Q(status="converted") | Q(status="closed")
387+
)
378388
context.update(
379389
{
380390
"attachments": AttachmentsSerializer(
@@ -419,6 +429,8 @@ def get(self, request, pk, format=None):
419429
self.account.sent_email.all(), many=True
420430
).data,
421431
"users_mention": users_mention,
432+
"leads" : LeadSerializer(leads, many=True).data,
433+
"status" : ["open","close"]
422434
}
423435
)
424436
return Response(context)
@@ -460,7 +472,7 @@ def post(self, request, pk, **kwargs):
460472

461473
if self.request.FILES.get("account_attachment"):
462474
attachment = Attachments()
463-
attachment.created_by = self.request.profile
475+
attachment.created_by = self.request.profile.user
464476
attachment.file_name = self.request.FILES.get("account_attachment").name
465477
attachment.account = self.account_obj
466478
attachment.attachment = self.request.FILES.get("account_attachment")
@@ -484,7 +496,7 @@ def post(self, request, pk, **kwargs):
484496

485497
class AccountCommentView(APIView):
486498
model = Comment
487-
# authentication_classes = (JSONWebTokenAuthentication,)
499+
authentication_classes = (CustomDualAuthentication,)
488500
permission_classes = (IsAuthenticated,)
489501
serializer_class = AccountCommentEditSwaggerSerializer
490502

@@ -546,7 +558,7 @@ def delete(self, request, pk, format=None):
546558

547559
class AccountAttachmentView(APIView):
548560
model = Attachments
549-
# authentication_classes = (JSONWebTokenAuthentication,)
561+
authentication_classes = (CustomDualAuthentication,)
550562
permission_classes = (IsAuthenticated,)
551563
serializer_class = AccountDetailEditSwaggerSerializer
552564

@@ -573,7 +585,7 @@ def delete(self, request, pk, format=None):
573585

574586

575587
class AccountCreateMailView(APIView):
576-
# authentication_classes = (JSONWebTokenAuthentication,)
588+
authentication_classes = (CustomDualAuthentication,)
577589
permission_classes = (IsAuthenticated,)
578590
model = Account
579591
serializer_class = EmailWriteSerializer
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Generated by Django 4.2.1 on 2023-10-31 12:42
2+
3+
from django.conf import settings
4+
from django.db import migrations, models
5+
import django.db.models.deletion
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
12+
('cases', '0002_initial'),
13+
]
14+
15+
operations = [
16+
migrations.AlterField(
17+
model_name='case',
18+
name='created_by',
19+
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By'),
20+
),
21+
]

cases/models.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ class Case(BaseModel):
3232
closed_on = models.DateField()
3333
description = models.TextField(blank=True, null=True)
3434
assigned_to = models.ManyToManyField(Profile, related_name="case_assigned_users")
35-
created_by = models.ForeignKey(
36-
Profile, related_name="case_created_by", on_delete=models.SET_NULL, null=True
37-
)
35+
# created_by = models.ForeignKey(
36+
# Profile, related_name="case_created_by", on_delete=models.SET_NULL, null=True
37+
# )
3838
is_active = models.BooleanField(default=False)
3939
teams = models.ManyToManyField(Teams, related_name="cases_teams")
4040
org = models.ForeignKey(

cases/serializer.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from accounts.serializer import AccountSerializer
44
from cases.models import Case
5-
from common.serializer import OrganizationSerializer, ProfileSerializer
5+
from common.serializer import OrganizationSerializer, ProfileSerializer,UserSerializer
66
from contacts.serializer import ContactSerializer
77
from teams.serializer import TeamsSerializer
88

@@ -11,7 +11,7 @@ class CaseSerializer(serializers.ModelSerializer):
1111
account = AccountSerializer()
1212
contacts = ContactSerializer(read_only=True, many=True)
1313
assigned_to = ProfileSerializer(read_only=True, many=True)
14-
created_by = ProfileSerializer(read_only=True)
14+
created_by = UserSerializer(read_only=True)
1515
teams = TeamsSerializer(read_only=True, many=True)
1616
org = OrganizationSerializer()
1717

cases/views.py

+18-18
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from cases.tasks import send_email_to_assigned_user
1717
from common.models import Attachments, Comment, Profile
1818

19-
# from common.custom_auth import JSONWebTokenAuthentication
19+
from common.external_auth import CustomDualAuthentication
2020
from common.serializer import AttachmentsSerializer, CommentSerializer
2121
from common.utils import CASE_TYPE, PRIORITY_CHOICE, STATUS_CHOICE
2222
from contacts.models import Contact
@@ -25,7 +25,7 @@
2525

2626

2727
class CaseListView(APIView, LimitOffsetPagination):
28-
# authentication_classes = (JSONWebTokenAuthentication,)
28+
authentication_classes = (CustomDualAuthentication,)
2929
permission_classes = (IsAuthenticated,)
3030
model = Case
3131

@@ -37,13 +37,13 @@ def get_context_data(self, **kwargs):
3737
profiles = Profile.objects.filter(is_active=True, org=self.request.profile.org)
3838
if self.request.profile.role != "ADMIN" and not self.request.profile.is_admin:
3939
queryset = queryset.filter(
40-
Q(created_by=self.request.profile) | Q(assigned_to=self.request.profile)
40+
Q(created_by=self.request.profile.user) | Q(assigned_to=self.request.profile)
4141
).distinct()
4242
accounts = accounts.filter(
43-
Q(created_by=self.request.profile) | Q(assigned_to=self.request.profile)
43+
Q(created_by=self.request.profile.user) | Q(assigned_to=self.request.profile)
4444
).distinct()
4545
contacts = contacts.filter(
46-
Q(created_by=self.request.profile) | Q(assigned_to=self.request.profile)
46+
Q(created_by=self.request.profile.user) | Q(assigned_to=self.request.profile)
4747
).distinct()
4848
profiles = profiles.filter(role="ADMIN")
4949

@@ -97,26 +97,26 @@ def post(self, request, *args, **kwargs):
9797
serializer = CaseCreateSerializer(data=params, request_obj=request)
9898
if serializer.is_valid():
9999
cases_obj = serializer.save(
100-
created_by=request.profile,
100+
created_by=request.profile.user,
101101
org=request.profile.org,
102102
closed_on=params.get("closed_on"),
103103
case_type=params.get("case_type"),
104104
)
105105

106106
if params.get("contacts"):
107-
contacts_list = json.loads(params.get("contacts"))
107+
contacts_list = params.get("contacts")
108108
contacts = Contact.objects.filter(id__in=contacts_list, org=request.profile.org)
109109
if contacts:
110110
cases_obj.contacts.add(*contacts)
111111

112112
if params.get("teams"):
113-
teams_list = json.loads(params.get("teams"))
113+
teams_list = params.get("teams")
114114
teams = Teams.objects.filter(id__in=teams_list, org=request.profile.org)
115115
if teams.exists():
116116
cases_obj.teams.add(*teams)
117117

118118
if params.get("assigned_to"):
119-
assinged_to_list = json.loads(params.get("assigned_to"))
119+
assinged_to_list = params.get("assigned_to")
120120
profiles = Profile.objects.filter(
121121
id__in=assinged_to_list, org=request.profile.org, is_active=True
122122
)
@@ -125,7 +125,7 @@ def post(self, request, *args, **kwargs):
125125

126126
if self.request.FILES.get("case_attachment"):
127127
attachment = Attachments()
128-
attachment.created_by = self.request.profile
128+
attachment.created_by = self.request.profile.user
129129
attachment.file_name = self.request.FILES.get("case_attachment").name
130130
attachment.cases = cases_obj
131131
attachment.attachment = self.request.FILES.get("case_attachment")
@@ -148,7 +148,7 @@ def post(self, request, *args, **kwargs):
148148

149149

150150
class CaseDetailView(APIView):
151-
# authentication_classes = (JSONWebTokenAuthentication,)
151+
authentication_classes = (CustomDualAuthentication,)
152152
permission_classes = (IsAuthenticated,)
153153
model = Case
154154

@@ -194,21 +194,21 @@ def put(self, request, pk, format=None):
194194
)
195195
cases_object.contacts.clear()
196196
if params.get("contacts"):
197-
contacts_list = json.loads(params.get("contacts"))
197+
contacts_list = params.get("contacts")
198198
contacts = Contact.objects.filter(id__in=contacts_list, org=request.profile.org)
199199
if contacts:
200200
cases_object.contacts.add(*contacts)
201201

202202
cases_object.teams.clear()
203203
if params.get("teams"):
204-
teams_list = json.loads(params.get("teams"))
204+
teams_list = params.get("teams")
205205
teams = Teams.objects.filter(id__in=teams_list, org=request.profile.org)
206206
if teams.exists():
207207
cases_object.teams.add(*teams)
208208

209209
cases_object.assigned_to.clear()
210210
if params.get("assigned_to"):
211-
assinged_to_list = json.loads(params.get("assigned_to"))
211+
assinged_to_list = params.get("assigned_to")
212212
profiles = Profile.objects.filter(
213213
id__in=assinged_to_list, org=request.profile.org, is_active=True
214214
)
@@ -217,7 +217,7 @@ def put(self, request, pk, format=None):
217217

218218
if self.request.FILES.get("case_attachment"):
219219
attachment = Attachments()
220-
attachment.created_by = self.request.profile
220+
attachment.created_by = self.request.profile.user
221221
attachment.file_name = self.request.FILES.get("case_attachment").name
222222
attachment.case = cases_object
223223
attachment.attachment = self.request.FILES.get("case_attachment")
@@ -366,7 +366,7 @@ def post(self, request, pk, **kwargs):
366366

367367
if self.request.FILES.get("case_attachment"):
368368
attachment = Attachments()
369-
attachment.created_by = self.request.profile
369+
attachment.created_by = self.request.profile.user
370370
attachment.file_name = self.request.FILES.get("case_attachment").name
371371
attachment.case = self.cases_obj
372372
attachment.attachment = self.request.FILES.get("case_attachment")
@@ -387,7 +387,7 @@ def post(self, request, pk, **kwargs):
387387

388388
class CaseCommentView(APIView):
389389
model = Comment
390-
# authentication_classes = (JSONWebTokenAuthentication,)
390+
authentication_classes = (CustomDualAuthentication,)
391391
permission_classes = (IsAuthenticated,)
392392

393393
def get_object(self, pk):
@@ -450,7 +450,7 @@ def delete(self, request, pk, format=None):
450450

451451
class CaseAttachmentView(APIView):
452452
model = Attachments
453-
# authentication_classes = (JSONWebTokenAuthentication,)
453+
authentication_classes = (CustomDualAuthentication,)
454454
permission_classes = (IsAuthenticated,)
455455

456456
@extend_schema(

0 commit comments

Comments
 (0)