From 6b3953aded1024dd93498a3c3744d77a707617fc Mon Sep 17 00:00:00 2001 From: bassamalasadi <bassamalasadi@gmail.com> Date: Thu, 11 Feb 2021 09:47:40 +0200 Subject: [PATCH] Updating the lead count for each category --- leads/models.py | 1 + leads/templates/leads/category_list.html | 14 ++++++++++++-- leads/views.py | 23 ++++++++++++++++++++--- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/leads/models.py b/leads/models.py index b39843c..4c93c80 100644 --- a/leads/models.py +++ b/leads/models.py @@ -64,6 +64,7 @@ def __str__(self): class Category(models.Model): name = models.CharField(max_length=30) # New, Contacted, Converted, Unconverted + number = models.IntegerField(default=0) organisation = models.ForeignKey(UserProfile, on_delete=models.CASCADE) def __str__(self): diff --git a/leads/templates/leads/category_list.html b/leads/templates/leads/category_list.html index 3f9c779..a1603aa 100644 --- a/leads/templates/leads/category_list.html +++ b/leads/templates/leads/category_list.html @@ -24,14 +24,24 @@ <h1 class="sm:text-4xl text-3xl font-medium title-font mb-2 text-gray-900">Categ <td class="px-4 py-3">Unassigned</td> <td class="px-4 py-3">{{ unassigned_lead_count }}</td> </tr> - {% for category in category_list %} + <!-- {% for category in category_list %} <tr> <td class="px-4 py-3"> <a class="hover:text-blue-500" href="{% url 'leads:category-detail' category.pk %}">{{ category.name }}</a> </td> <td class="px-4 py-3">TODO count</td> </tr> - {% endfor %} + {% endfor %} --> + + {% for ret in reset %} + <div> + <tr> + <td class="px-4 py-3" > <a href="{% url 'leads:category-detail' ret.id %}">{{ ret.name }} </a></td> + <td class="px-4 py-3">{{ ret.number }}</td> + </tr> + </div> + {% endfor %} + </tbody> </table> </div> diff --git a/leads/views.py b/leads/views.py index 8d2f89b..64d1197 100644 --- a/leads/views.py +++ b/leads/views.py @@ -262,8 +262,14 @@ class CategoryListView(LoginRequiredMixin, generic.ListView): context_object_name = "category_list" def get_context_data(self, **kwargs): - context = super(CategoryListView, self).get_context_data(**kwargs) user = self.request.user + context = super(CategoryListView, self).get_context_data(**kwargs) + # Extraction of the Categories info + # <QuerySet [{'id': 6, 'name': 'developer', 'organisation_id': 1}, + # {'id': 7, 'name': 'salary', 'organisation_id': 1}, + # {'id': 8, 'name': 'DevOps', 'organisation_id': 1}]> + cate_list = context['object_list'].values() + list_of_categories = [] if user.is_organisor: queryset = Lead.objects.filter( @@ -271,14 +277,25 @@ def get_context_data(self, **kwargs): ) else: queryset = Lead.objects.filter( - organisation=user.agent.organisation + organisations=user.agent.organisation ) + # Looping over the extracted list of dictionaries + for cate_number in cate_list: + # Update The number field in each category by counting all the leads that connected to this category + cate_number['number'] = queryset.filter( + category=cate_number['id']).count() + x = {'id': cate_number['id'], 'name': cate_number['name'], + 'number': cate_number['number']} + list_of_categories.append(x) context.update({ - "unassigned_lead_count": queryset.filter(category__isnull=True).count() + "unassigned_lead_count": queryset.filter(category__isnull=True).count(), + "reset": list_of_categories + }) return context + def get_queryset(self): user = self.request.user # initial queryset of leads for the entire organisation