SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit 09c3c237 authored by Jean-Sébastien Caux's avatar Jean-Sébastien Caux
Browse files

Improve org dashboard, add OrgContacts group

parent 90dc13ee
No related branches found
No related tags found
No related merge requests found
...@@ -106,7 +106,9 @@ class NewContactForm(ContactForm): ...@@ -106,7 +106,9 @@ class NewContactForm(ContactForm):
) )
user.save() user.save()
assign_perm('can_view_org_contacts', user, self.organization) assign_perm('can_view_org_contacts', user, self.organization)
user.user_permissions.add('scipost.can_add_contactperson') orgcontacts = Group.objects.get(name='OrgContacts')
user.groups.add(orgcontacts)
contact = Contact( contact = Contact(
user=user, user=user,
title=self.cleaned_data['title'] title=self.cleaned_data['title']
......
...@@ -14,28 +14,66 @@ ...@@ -14,28 +14,66 @@
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h3>Your Organizations-related roles:</h3> <div class="tab-nav-container">
<table class="table"> <div class="tab-nav-inner">
<tr> <ul class="nav btn-group personal-page-nav" role="tablist">
<th>Organization</th> <li class="nav-item btn btn-outline-secondary">
<th>Role kind</th> <a href="#account" class="nav-link" data-toggle="tab">Account</a>
<th>Date from</th> </li>
<th>Date until</th> <li class="nav-item btn btn-outline-secondary">
</tr> <a href="#own_roles" class="nav-link active" data-toggle="tab">Your roles</a>
{% for role in roles %} </li>
<tr> </ul>
<td><a href="{{ role.organization.get_absolute_url }}">{{ role.organization }}</a></td> </div>
<td>{{ role.get_kind_display }}</td> </div>
<td>{{ role.date_from|date:"Y-m-d" }}</td>
<td>{{ role.date_until|date:"Y-m-d" }}</td>
</tr>
{% empty %}
<tr>
<td>No role has been defined</td>
</tr>
{% endfor %}
</table>
</div> </div>
</div> </div>
<div class="tab-content">
<div class="tab-pane" id="account" role="tabpanel">
<div class="row">
<div class="col-12">
<h2 class="highlight">Your account</h2>
</div>
</div>
<div class="row">
<div class="col-12">
<p>{{ request.user.org_contact }}</p>
</div>
</div>
</div>
<div class="tab-pane active" id="own_roles" role="tabpanel">
<div class="row">
<div class="col-12">
<h2 class="highlight">Your Organizations-related roles</h2>
<table class="table">
<tr>
<th>Organization</th>
<th>Role kind</th>
<th>Date from</th>
<th>Date until</th>
<th>Actions</th>
</tr>
{% for role in own_roles %}
<tr>
<td><a href="{{ role.organization.get_absolute_url }}">{{ role.organization }}</a></td>
<td>{{ role.get_kind_display }}</td>
<td>{{ role.date_from|date:"Y-m-d" }}</td>
<td>{{ role.date_until|date:"Y-m-d" }}</td>
<td><a href="{% url 'organizations:contactrole_update' pk=role.id %}"><span class="text-warning">Update</span></a></td>
</tr>
{% empty %}
<tr>
<td>No role has been defined</td>
</tr>
{% endfor %}
</table>
</div>
</div>
</div>
</div>
{% endblock content %} {% endblock content %}
...@@ -26,7 +26,7 @@ from mails.utils import DirectMailUtil ...@@ -26,7 +26,7 @@ from mails.utils import DirectMailUtil
from organizations.decorators import has_contact from organizations.decorators import has_contact
from partners.models import ProspectivePartner, Partner from partners.models import ProspectivePartner, Partner
from scipost.mixins import PermissionsMixin from scipost.mixins import PermissionsMixin, PaginationMixin
class OrganizationCreateView(PermissionsMixin, CreateView): class OrganizationCreateView(PermissionsMixin, CreateView):
...@@ -218,7 +218,7 @@ def dashboard(request): ...@@ -218,7 +218,7 @@ def dashboard(request):
raise PermissionDenied raise PermissionDenied
context = { context = {
'roles': request.user.org_contact.roles.all() 'own_roles': request.user.org_contact.roles.all()
} }
return render(request, 'organizations/dashboard.html', context) return render(request, 'organizations/dashboard.html', context)
......
...@@ -34,6 +34,8 @@ class Command(BaseCommand): ...@@ -34,6 +34,8 @@ class Command(BaseCommand):
ProductionSupervisors, created = Group.objects.get_or_create(name='Production Supervisor') ProductionSupervisors, created = Group.objects.get_or_create(name='Production Supervisor')
ProductionOfficers, created = Group.objects.get_or_create(name='Production Officers') ProductionOfficers, created = Group.objects.get_or_create(name='Production Officers')
OrgContacts, created = Group.objects.get_or_create(name='Organization Contacts')
PartnersAdmin, created = Group.objects.get_or_create(name='Partners Administrators') PartnersAdmin, created = Group.objects.get_or_create(name='Partners Administrators')
PartnersOfficers, created = Group.objects.get_or_create(name='Partners Officers') PartnersOfficers, created = Group.objects.get_or_create(name='Partners Officers')
PartnerAccounts, created = Group.objects.get_or_create(name='Partners Accounts') PartnerAccounts, created = Group.objects.get_or_create(name='Partners Accounts')
...@@ -50,6 +52,10 @@ class Command(BaseCommand): ...@@ -50,6 +52,10 @@ class Command(BaseCommand):
codename='can_add_contactperson', codename='can_add_contactperson',
name='Can add ContactPerson', name='Can add ContactPerson',
content_type=content_type) content_type=content_type)
can_view_contactrole_list, created = Permission.objects.get_or_create(
codename='can_view_contactrole_list',
name='Can view ContactRole list',
content_type=content_type)
# Supporting Partners # Supporting Partners
can_manage_SPB, created = Permission.objects.get_or_create( can_manage_SPB, created = Permission.objects.get_or_create(
...@@ -480,6 +486,11 @@ class Command(BaseCommand): ...@@ -480,6 +486,11 @@ class Command(BaseCommand):
can_upload_proofs, can_upload_proofs,
]) ])
OrgContacts.permissions.set([
can_add_contactperson,
can_view_contactrole_list,
])
PartnersAdmin.permissions.set([ PartnersAdmin.permissions.set([
can_manage_organizations, can_manage_organizations,
can_read_partner_page, can_read_partner_page,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment