Skip to content

Commit e6c0830

Browse files
author
mattfreire
committed
Leads queryset and optional agent
1 parent 0cb6d2d commit e6c0830

File tree

4 files changed

+74
-6
lines changed

4 files changed

+74
-6
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Generated by Django 3.1.4 on 2020-12-16 10:46
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('leads', '0003_auto_20201216_1027'),
11+
]
12+
13+
operations = [
14+
migrations.AlterField(
15+
model_name='lead',
16+
name='agent',
17+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='leads.agent'),
18+
),
19+
]
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Generated by Django 3.1.4 on 2020-12-16 10:53
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('leads', '0004_auto_20201216_1046'),
11+
]
12+
13+
operations = [
14+
migrations.AddField(
15+
model_name='lead',
16+
name='organisation',
17+
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='leads.userprofile'),
18+
preserve_default=False,
19+
),
20+
]

leads/models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ class Lead(models.Model):
1919
first_name = models.CharField(max_length=20)
2020
last_name = models.CharField(max_length=20)
2121
age = models.IntegerField(default=0)
22-
agent = models.ForeignKey("Agent", on_delete=models.CASCADE)
22+
organisation = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
23+
agent = models.ForeignKey("Agent", null=True, blank=True, on_delete=models.SET_NULL)
2324

2425
def __str__(self):
2526
return f"{self.first_name} {self.last_name}"

leads/views.py

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,19 @@ def landing_page(request):
2929

3030
class LeadListView(LoginRequiredMixin, generic.ListView):
3131
template_name = "leads/lead_list.html"
32-
queryset = Lead.objects.all()
3332
context_object_name = "leads"
3433

34+
def get_queryset(self):
35+
user = self.request.user
36+
# initial queryset of leads for the entire organisation
37+
if user.is_organisor:
38+
queryset = Lead.objects.filter(organisation=user.userprofile)
39+
else:
40+
queryset = Lead.objects.filter(organisation=user.agent.organisation)
41+
# filter for the agent that is logged in
42+
queryset = queryset.filter(agent__user=user)
43+
return queryset
44+
3545

3646
def lead_list(request):
3747
leads = Lead.objects.all()
@@ -43,9 +53,19 @@ def lead_list(request):
4353

4454
class LeadDetailView(LoginRequiredMixin, generic.DetailView):
4555
template_name = "leads/lead_detail.html"
46-
queryset = Lead.objects.all()
4756
context_object_name = "lead"
4857

58+
def get_queryset(self):
59+
user = self.request.user
60+
# initial queryset of leads for the entire organisation
61+
if user.is_organisor:
62+
queryset = Lead.objects.filter(organisation=user.userprofile)
63+
else:
64+
queryset = Lead.objects.filter(organisation=user.agent.organisation)
65+
# filter for the agent that is logged in
66+
queryset = queryset.filter(agent__user=user)
67+
return queryset
68+
4969

5070
def lead_detail(request, pk):
5171
lead = Lead.objects.get(id=pk)
@@ -70,7 +90,7 @@ def form_valid(self, form):
7090
recipient_list=["[email protected]"]
7191
)
7292
return super(LeadCreateView, self).form_valid(form)
73-
93+
7494

7595
def lead_create(request):
7696
form = LeadModelForm()
@@ -87,9 +107,13 @@ def lead_create(request):
87107

88108
class LeadUpdateView(OrganisorAndLoginRequiredMixin, generic.UpdateView):
89109
template_name = "leads/lead_update.html"
90-
queryset = Lead.objects.all()
91110
form_class = LeadModelForm
92111

112+
def get_queryset(self):
113+
user = self.request.user
114+
# initial queryset of leads for the entire organisation
115+
return Lead.objects.filter(organisation=user.userprofile)
116+
93117
def get_success_url(self):
94118
return reverse("leads:lead-list")
95119

@@ -111,11 +135,15 @@ def lead_update(request, pk):
111135

112136
class LeadDeleteView(OrganisorAndLoginRequiredMixin, generic.DeleteView):
113137
template_name = "leads/lead_delete.html"
114-
queryset = Lead.objects.all()
115138

116139
def get_success_url(self):
117140
return reverse("leads:lead-list")
118141

142+
def get_queryset(self):
143+
user = self.request.user
144+
# initial queryset of leads for the entire organisation
145+
return Lead.objects.filter(organisation=user.userprofile)
146+
119147

120148
def lead_delete(request, pk):
121149
lead = Lead.objects.get(id=pk)

0 commit comments

Comments
 (0)