emile 3 weeks ago
parent ce99bc2774
commit a6150cc91c

Binary file not shown.

@ -909,6 +909,7 @@ def add_addressbook(request):
country_id = request.POST.get('country') # Optional for now country_id = request.POST.get('country') # Optional for now
contact_types = request.POST.getlist('contact_type[]') contact_types = request.POST.getlist('contact_type[]')
contact_values = request.POST.getlist('contact_value[]') contact_values = request.POST.getlist('contact_value[]')
selected_groups = request.POST.getlist('groups')
# Create AddressBook instance # Create AddressBook instance
address_book = AddressBook.objects.create( address_book = AddressBook.objects.create(
@ -918,6 +919,9 @@ def add_addressbook(request):
country_id=country_id if country_id else None, 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): for type_, value in zip(contact_types, contact_values):
if value: if value:
Contact.objects.create(type=type_, contact=value, addressbook=address_book) Contact.objects.create(type=type_, contact=value, addressbook=address_book)

@ -667,6 +667,7 @@ def mark_point_completed_task_page(request, point_id, task_id):
def edit_addressbook(request, addressbook_id): def edit_addressbook(request, addressbook_id):
address = get_object_or_404(AddressBook, id=addressbook_id) address = get_object_or_404(AddressBook, id=addressbook_id)
countries = Country.objects.all() countries = Country.objects.all()
groups = Group.objects.all()
if request.method == 'POST': if request.method == 'POST':
address.first_name = request.POST.get('first_name') 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.last_name = request.POST.get('last_name')
address.country_id = request.POST.get('country') address.country_id = request.POST.get('country')
address.save() 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 # Delete old contacts
address.contact_set.all().delete() address.contact_set.all().delete()
@ -690,5 +694,6 @@ def edit_addressbook(request, addressbook_id):
return render(request, 'edit_templates/edit-addressbook.html', { return render(request, 'edit_templates/edit-addressbook.html', {
"address": address, "address": address,
"countries": countries, "countries": countries,
"groups": groups,
}) })

@ -36,6 +36,16 @@
{% endfor %} {% endfor %}
</select> </select>
</div> </div>
<div class="w-full">
<label class="text-gray-500">Groups:</label>
<select name="groups" multiple
class="w-full h-[150px] py-1 px-3 border border-gray-300 outline-none rounded-md mt-1">
{% for group in groups %}
<option value="{{ group.id }}">{{ group.name }}</option>
{% endfor %}
</select>
<p class="text-sm text-gray-400 mt-1">Hold down Ctrl (Windows) or Command (Mac) to select multiple groups.</p>
</div>
<div class="w-full"> <div class="w-full">
<label class="text-gray-500">Contacts:</label> <label class="text-gray-500">Contacts:</label>

@ -21,7 +21,18 @@
<p class="text-gray-500 text-xl">Country: <span <p class="text-gray-500 text-xl">Country: <span
class="text-slate-800 text-xl font-semibold">{{ address.country.name }}</span></p> class="text-slate-800 text-xl font-semibold">{{ address.country.name }}</span></p>
</div> </div>
{% if address.group.all %}
<div>
<p class="text-gray-500 text-xl mb-2">Groups:</p>
<ul class="list-disc pl-5">
{% for group in address.group.all %}
<li class="text-slate-800 text-lg">
{{ group.name }}
</li>
{% endfor %}
</ul>
</div>
{% endif %}
{% if address.contact_set.all %} {% if address.contact_set.all %}
<div> <div>
<p class="text-gray-500 text-xl mb-2">Contacts:</p> <p class="text-gray-500 text-xl mb-2">Contacts:</p>

@ -43,7 +43,19 @@
{% endfor %} {% endfor %}
</select> </select>
</div> </div>
<div class="w-full">
<label class="text-gray-500">Groups:</label>
<select name="groups" multiple
class="w-full h-[150px] py-1 px-3 border border-gray-300 outline-none rounded-md mt-1">
{% for group in groups %}
<option value="{{ group.id }}"
{% if group in address.group.all %}selected{% endif %}>
{{ group.name }}
</option>
{% endfor %}
</select>
<p class="text-sm text-gray-400 mt-1">Hold down Ctrl (Windows) or Cmd (Mac) to select multiple groups.</p>
</div>
<!-- Contacts --> <!-- Contacts -->
<div class="w-full"> <div class="w-full">
<label class="text-gray-500">Contacts:</label> <label class="text-gray-500">Contacts:</label>

@ -48,6 +48,10 @@
class="px-6 py-3 text-sm font-medium text-gray-500 uppercase border-r border-gray-300 whitespace-nowrap"> class="px-6 py-3 text-sm font-medium text-gray-500 uppercase border-r border-gray-300 whitespace-nowrap">
Contact Contact
</th> </th>
<th scope="col"
class="px-6 py-3 text-sm font-medium text-gray-500 uppercase border-r border-gray-300 whitespace-nowrap">
Groups
</th>
<th scope="col" class="px-6 py-3 text-sm font-medium text-gray-500 uppercase whitespace-nowrap"> <th scope="col" class="px-6 py-3 text-sm font-medium text-gray-500 uppercase whitespace-nowrap">
Actions Actions
</th> </th>
@ -76,8 +80,11 @@
{% endfor %} {% endfor %}
</td> </td>
<td class="px-6 py-4 text-center text-sm border-r border-gray-300">
{% for g in address.group.all %}
<p class="text-secondosiblue">{{g.name}}</p>
{% endfor %}
</td>
<td class="px-6 py-4 text-center text-sm"> <td class="px-6 py-4 text-center text-sm">
<div class="flex justify-center items-center gap-3"> <div class="flex justify-center items-center gap-3">

@ -1,6 +1,6 @@
from django.shortcuts import render, redirect, get_object_or_404 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 .models import *
from django.contrib.auth import authenticate, login, logout from django.contrib.auth import authenticate, login, logout
from django.contrib.auth import login as auth_login from django.contrib.auth import login as auth_login
@ -860,7 +860,13 @@ def fetch_projects_by_status(request, status=None):
@staff_login_required @staff_login_required
def addressbook(request): def addressbook(request):
Country.objects.get_or_create(name='Lebanon') 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() addresses = AddressBook.objects.all()
context = { context = {
'addresses' : addresses, 'addresses' : addresses,

Loading…
Cancel
Save