diff --git a/crm/filters.py b/crm/filters.py index 002ac07..97e433b 100644 --- a/crm/filters.py +++ b/crm/filters.py @@ -1,14 +1,23 @@ import django_filters +from django.db.models import Q from .models import Event, Status, Prospect + class ProspectFilter(django_filters.FilterSet): - zip_code = django_filters.CharFilter(lookup_expr='icontains') + zip_code = django_filters.CharFilter(lookup_expr='istartswith', label='Code postal') events = django_filters.ModelMultipleChoiceFilter( queryset=Event.objects.all(), field_name='events', ) + city = django_filters.CharFilter(lookup_expr='icontains', label='Ville') + name = django_filters.CharFilter(method='filter_name', label='Nom') + + def filter_name(self, queryset, name, value): + return queryset.filter( + Q(first_name__icontains=value) | Q(last_name__icontains=value) | Q(entity_name__icontains=value) + ) class Meta: model = Prospect - fields = ['city', 'events'] + fields = ['name', 'city', 'events', 'zip_code'] diff --git a/crm/forms.py b/crm/forms.py index efd945a..10edf6c 100644 --- a/crm/forms.py +++ b/crm/forms.py @@ -12,8 +12,11 @@ class SmallTextArea(forms.Textarea): }) super().__init__(*args, **kwargs) -class CSVImportForm(forms.Form): - csv_file = forms.FileField() +class ProspectForm(forms.ModelForm): + class Meta: + model = Prospect + fields = ['entity_name', 'first_name', 'last_name', 'email', + 'phone', 'address', 'zip_code', 'city'] class BulkEmailForm(forms.Form): prospects = forms.ModelMultipleChoiceField( @@ -38,3 +41,6 @@ class EventForm(forms.ModelForm): widgets = { 'date': forms.DateTimeInput(attrs={'type': 'datetime-local'}), } + +class CSVImportForm(forms.Form): + csv_file = forms.FileField() diff --git a/crm/models.py b/crm/models.py index 8baa4e9..5028da6 100644 --- a/crm/models.py +++ b/crm/models.py @@ -41,6 +41,9 @@ class Prospect(models.Model): ("view_prospects", "Can view prospects"), ] + def full_name(self): + return f'{self.first_name} {self.last_name}' + def __str__(self): return ' - '.join(filter(None, [self.entity_name, self.first_name, self.last_name, f"({self.email})"])) diff --git a/crm/static/crm/js/prospects.js b/crm/static/crm/js/prospects.js new file mode 100644 index 0000000..ca4a579 --- /dev/null +++ b/crm/static/crm/js/prospects.js @@ -0,0 +1,6 @@ +document.getElementById("select-all").addEventListener("change", function () { + const checkboxes = document.getElementsByName("selected_prospects"); + for (let checkbox of checkboxes) { + checkbox.checked = this.checked; + } +}); diff --git a/crm/static/js/prospect_list.js b/crm/static/js/prospect_list.js deleted file mode 100644 index 9378e4a..0000000 --- a/crm/static/js/prospect_list.js +++ /dev/null @@ -1,10 +0,0 @@ -document.addEventListener("DOMContentLoaded", function () { - const selectAll = document.getElementById("select-all"); - const prospectCheckboxes = document.getElementsByName("selected_prospects"); - - selectAll.addEventListener("change", function () { - prospectCheckboxes.forEach((checkbox) => { - checkbox.checked = selectAll.checked; - }); - }); -}); diff --git a/crm/templates/crm/base.html b/crm/templates/crm/base.html index 14cf3de..51e4079 100644 --- a/crm/templates/crm/base.html +++ b/crm/templates/crm/base.html @@ -37,6 +37,8 @@ + {% block extra_js %}{% endblock %} +
diff --git a/crm/templates/crm/prospect_form.html b/crm/templates/crm/prospect_form.html new file mode 100644 index 0000000..334e8bf --- /dev/null +++ b/crm/templates/crm/prospect_form.html @@ -0,0 +1,17 @@ +{% extends "crm/base.html" %} + +{% block head_title %}{{ first_title }}{% endblock %} +{% block first_title %}{{ first_title }}{% endblock %} +{% block second_title %}{{ second_title }}{% endblock %} + +{% block content %} + +