diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index 5c4f6036..3fb06776 100644 Binary files a/osinaweb/db.sqlite3 and b/osinaweb/db.sqlite3 differ diff --git a/osinaweb/osinacore/add/views.py b/osinaweb/osinacore/add/views.py index ec961b5e..f6f0f102 100644 --- a/osinaweb/osinacore/add/views.py +++ b/osinaweb/osinacore/add/views.py @@ -909,6 +909,7 @@ def add_addressbook(request): country_id = request.POST.get('country') # Optional for now contact_types = request.POST.getlist('contact_type[]') contact_values = request.POST.getlist('contact_value[]') + selected_groups = request.POST.getlist('groups') # Create AddressBook instance address_book = AddressBook.objects.create( @@ -918,6 +919,9 @@ def add_addressbook(request): country_id=country_id if country_id else None, ) + if selected_groups: + address_book.group.set(selected_groups) + for type_, value in zip(contact_types, contact_values): if value: Contact.objects.create(type=type_, contact=value, addressbook=address_book) diff --git a/osinaweb/osinacore/edit/views.py b/osinaweb/osinacore/edit/views.py index 13af6839..51e0179b 100644 --- a/osinaweb/osinacore/edit/views.py +++ b/osinaweb/osinacore/edit/views.py @@ -667,6 +667,7 @@ def mark_point_completed_task_page(request, point_id, task_id): def edit_addressbook(request, addressbook_id): address = get_object_or_404(AddressBook, id=addressbook_id) countries = Country.objects.all() + groups = Group.objects.all() if request.method == 'POST': address.first_name = request.POST.get('first_name') @@ -674,6 +675,9 @@ def edit_addressbook(request, addressbook_id): address.last_name = request.POST.get('last_name') address.country_id = request.POST.get('country') address.save() + selected_groups = request.POST.getlist('groups') + selected_groups_ids = [int(gid) for gid in selected_groups if gid.isdigit()] + address.group.set(selected_groups_ids) # Delete old contacts address.contact_set.all().delete() @@ -690,5 +694,6 @@ def edit_addressbook(request, addressbook_id): return render(request, 'edit_templates/edit-addressbook.html', { "address": address, "countries": countries, + "groups": groups, }) diff --git a/osinaweb/osinacore/templates/add_templates/add-addressbook.html b/osinaweb/osinacore/templates/add_templates/add-addressbook.html index bffe8104..89834f08 100644 --- a/osinaweb/osinacore/templates/add_templates/add-addressbook.html +++ b/osinaweb/osinacore/templates/add_templates/add-addressbook.html @@ -36,6 +36,16 @@ {% endfor %} +
+ + +

Hold down Ctrl (Windows) or Command (Mac) to select multiple groups.

+
diff --git a/osinaweb/osinacore/templates/details_templates/addressbook-details.html b/osinaweb/osinacore/templates/details_templates/addressbook-details.html index f06b1e0c..edcca914 100644 --- a/osinaweb/osinacore/templates/details_templates/addressbook-details.html +++ b/osinaweb/osinacore/templates/details_templates/addressbook-details.html @@ -21,7 +21,18 @@

Country: {{ address.country.name }}

- + {% if address.group.all %} +
+

Groups:

+ +
+ {% endif %} {% if address.contact_set.all %}

Contacts:

diff --git a/osinaweb/osinacore/templates/edit_templates/edit-addressbook.html b/osinaweb/osinacore/templates/edit_templates/edit-addressbook.html index 089c91f9..4490aaf4 100644 --- a/osinaweb/osinacore/templates/edit_templates/edit-addressbook.html +++ b/osinaweb/osinacore/templates/edit_templates/edit-addressbook.html @@ -43,7 +43,19 @@ {% endfor %}
- +
+ + +

Hold down Ctrl (Windows) or Cmd (Mac) to select multiple groups.

+
diff --git a/osinaweb/osinacore/templates/listing_pages/adressbooks.html b/osinaweb/osinacore/templates/listing_pages/adressbooks.html index 4399587d..8691b2f8 100644 --- a/osinaweb/osinacore/templates/listing_pages/adressbooks.html +++ b/osinaweb/osinacore/templates/listing_pages/adressbooks.html @@ -48,6 +48,10 @@ class="px-6 py-3 text-sm font-medium text-gray-500 uppercase border-r border-gray-300 whitespace-nowrap"> Contact + + Groups + Actions @@ -76,8 +80,11 @@ {% endfor %} - - + + {% for g in address.group.all %} +

{{g.name}}

+ {% endfor %} +
diff --git a/osinaweb/osinacore/views.py b/osinaweb/osinacore/views.py index 1b1ee5a2..3a47cc8d 100644 --- a/osinaweb/osinacore/views.py +++ b/osinaweb/osinacore/views.py @@ -1,6 +1,6 @@ from django.shortcuts import render, redirect, get_object_or_404 -from addressbook.models import AddressBook, Country +from addressbook.models import AddressBook, Country, Group from .models import * from django.contrib.auth import authenticate, login, logout from django.contrib.auth import login as auth_login @@ -860,7 +860,13 @@ def fetch_projects_by_status(request, status=None): @staff_login_required def addressbook(request): Country.objects.get_or_create(name='Lebanon') + Group.objects.get_or_create(name='Test Group 1') + Group.objects.get_or_create(name='Test Group 2') + Group.objects.get_or_create(name='Test Group 3') + Group.objects.get_or_create(name='Test Group 4') + addresses = AddressBook.objects.all() + context = { 'addresses' : addresses,