diff --git a/organizations/templates/organizations/contact_detail.html b/organizations/templates/organizations/contact_detail.html new file mode 100644 index 0000000000000000000000000000000000000000..a52811e18246fd8acd395f55a7c6ba06c5710227 --- /dev/null +++ b/organizations/templates/organizations/contact_detail.html @@ -0,0 +1,70 @@ +{% extends 'organizations/base.html' %} + +{% load bootstrap %} + +{% block pagetitle %}: Contact details{% endblock pagetitle %} + +{% block breadcrumb_items %} +{{ block.super }} +<span class="breadcrumb-item">Contacts</span> +<span class="breadcrumb-item">{{ contact }}</span> +{% endblock %} + +{% block content %} + +<div class="row"> + <div class="col-12"> + <h3 class="highlight">Contact details</h3> + <table class="table"> + <tr> + <td>Name</td> + <td>{{ contact.user.last_name }}, {{ contact.get_title_display }} {{ contact.user.first_name }}</td> + </tr> + <tr> + <td>Email</td> + <td>{{ contact.user.email }}</td> + </tr> + <tr> + <td>Account active?</td> + <td>{% if contact.user.is_active %}<i class="fa fa-check-circle text-success"></i>{% else %}<i class="fa fa-times-circle text-danger"></i>{% endif %}</td> + </tr> + <tr> + <td>Account created</td> + <td>{{ contact.user.date_joined }}</td> + </tr> + <tr> + <td>Last login</td> + <td>{{ contact.user.last_login }}</td> + </tr> + </table> + + <h4>Roles:</h4> + <table class="table"> + <tr> + <th>Organization</th> + <th>Kind</th> + <th>Date from</th> + <th>Date until</th> + <th>Actions</th> + </tr> + {% for contactrole in contact.roles.all %} + <tr> + <td><a href="{{ contactrole.organization.get_absolute_url }}">{{ contactrole.organization }}</a></td> + <td>{{ contactrole.get_kind_display }}</td> + <td>{{ contactrole.date_from|date:"Y-m-d" }}</td> + <td>{{ contactrole.date_until|date:"Y-m-d" }}</td> + <td> + <ul class="list-unstyled"> + {% if perms.scipost.can_manage_organizations %} + <li><a href="{% url 'organizations:contactrole_update' pk=contactrole.id %}"><span class="text-warning">Update</span></a></li> + <li><a href="{% url 'organizations:contactrole_delete' pk=contactrole.id %}"><span class="text-danger">Delete</span></a></li> + {% endif %} + </ul> + </td> + </tr> + {% endfor %} + </table> + </div> +</div> + +{% endblock content %} diff --git a/organizations/templates/organizations/dashboard.html b/organizations/templates/organizations/dashboard.html index 002c8ce725edf1d1fe8eeb64d1448139fae3c40b..50201f2bc1a5cbdd2a222a361ad23c5bb0a98507 100644 --- a/organizations/templates/organizations/dashboard.html +++ b/organizations/templates/organizations/dashboard.html @@ -189,7 +189,7 @@ $(document).ready(function($) { <tbody> {% for contact in contacts %} <tr> - <td>{{ contact }}</td> + <td><a href="{% url 'organizations:contact_details' pk=contact.id %}">{{ contact }}</a></td> <td> <ul class="list-group list-group-flush"> {% for role in contact.roles.all %} diff --git a/organizations/urls.py b/organizations/urls.py index d12d9d3a45c4f3f508735df89831908fad52c0ab..b3f5802083ecca92580f3d4c363ed24ec6a6a73e 100644 --- a/organizations/urls.py +++ b/organizations/urls.py @@ -98,6 +98,10 @@ urlpatterns = [ views.dashboard, name='dashboard' ), + url(r'^contact/(?P<pk>[0-9]+)/$', + views.ContactDetailView.as_view(), + name='contact_details' + ), url( r'^contactrole/(?P<pk>[0-9]+)/update/$', views.ContactRoleUpdateView.as_view(), diff --git a/organizations/views.py b/organizations/views.py index d9508050768f7dbbe10cb571a367ae66bce03a72..6c42297b809218358504dfdd9f794cc9238f6109 100644 --- a/organizations/views.py +++ b/organizations/views.py @@ -330,6 +330,14 @@ def dashboard(request): return render(request, 'organizations/dashboard.html', context) +class ContactDetailView(PermissionsMixin, DetailView): + """ + View details of a Contact. Accessible to Admin. + """ + permission_required = 'scipost.can_manage_organizations' + model = Contact + + class ContactRoleUpdateView(UserPassesTestMixin, UpdateView): """ Update a ContactRole.