From bd3775de968bc069c0fab9d46e2d8715c5fb7b48 Mon Sep 17 00:00:00 2001 From: "J.-S. Caux" <J.S.Caux@uva.nl> Date: Sat, 26 Sep 2020 19:51:23 +0200 Subject: [PATCH] Work on removing profile.discipline --- profiles/templates/profiles/profile_list.html | 76 +++++++++++++------ profiles/views.py | 10 +-- 2 files changed, 55 insertions(+), 31 deletions(-) diff --git a/profiles/templates/profiles/profile_list.html b/profiles/templates/profiles/profile_list.html index d0b027554..f5353c5b3 100644 --- a/profiles/templates/profiles/profile_list.html +++ b/profiles/templates/profiles/profile_list.html @@ -63,26 +63,52 @@ <div class="row"> <div class="col-12"> - <h4>Specialize the list:</h4> + <table class="table table-bordered table-secondary"> + <thead class="thead-dark"> + <tr> + <th><h3 class="mb-0">Branch</h3></th> + <th><h3 class="mb-0">Fields</h3></th> + </tr> + </thead> + <tbody> + {% for branch in branches %} + <tr> + <td class="align-middle"> + <small>{{ branch.name }}</small> + </td> + <td> + <ul class="list-inline m-0"> + {% for acad_field in branch.academic_fields.all %} + <li class="list-inline-item"> + {% if acad_field.profiles.all|length > 0 %} + <div class="dropdown"> + <button class="btn btn-sm btn-primary dropdown-toggle" type="button" id="dropdownMenuButton{{ acad_field.slug }}" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><small>{{ acad_field }}</small></button> + <div class="dropdown-menu" aria-labelledby="dropdownMenuButton{{ acad_field.slug }}"> + <a class="dropdown-item" href="{% add_get_parameters field=acad_field.slug specialty='' %}">View all in {{ acad_field }}</a> + {% for specialty in acad_field.specialties.all %} + <a class="dropdown-item" href="{% add_get_parameters field=acad_field.slug specialty=specialty.slug %}">{{ specialty }}</a> + {% endfor %} + </div> + </div> + {% else %} + <button type="button" class="btn btn-sm btn-outline-secondary m-1"><small><em>{{ acad_field.name }}</em></small></button> + {% endif %} + </li> + {% endfor %} + </td> + </tr> + {% endfor %} + </tbody> + </table> + + + <h4>Specialize the list by selecting from the table above, or:</h4> <ul> <li> <ul class="list-inline"> <li class="list-inline-item"> - <a href="{% url 'profiles:profiles' %}">View all</a> or view by discipline/subject area: + <a href="{% url 'profiles:profiles' %}">View all</a> </li> - {% for discipline in subject_areas %} - <li class="list-inline-item"> - <div class="dropdown"> - <button class="btn btn-primary dropdown-toggle" type="button" id="dropdownMenuButton{{ discipline.0|cut:" " }}" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{ discipline.0 }}</button> - <div class="dropdown-menu" aria-labelledby="dropdownMenuButton{{ discipline.0|cut:" " }}"> - <a class="dropdown-item" href="{% add_get_parameters discipline=discipline.0|cut:' ' %}">View all in {{ discipline.0 }}</a> - {% for area in discipline.1 %} - <a class="dropdown-item" href="{% add_get_parameters discipline=discipline.0|cut:' ' expertise=area.0 %}">{{ area.0 }}</a> - {% endfor %} - </div> - </div> - </li> - {% endfor %} </ul> </li> <li>View only Profiles <a href="{% add_get_parameters contributor=True %}">with</a> or <a href="{% add_get_parameters contributor=False %}">without</a> an associated Contributor</li> @@ -91,10 +117,10 @@ <li class="list-inline-item">Last name startswith:</li> <li class="list-inline-item"> <form action="" method="get">{{ searchform }} - {% if request.GET.discipline %} - <input type="hidden" name="discipline" value="{{ request.GET.discipline }}"> - {% if request.GET.expertise %} - <input type="hidden" name="expertise" value="{{ request.GET.expertise }}"> + {% if request.GET.field %} + <input type="hidden" name="field" value="{{ request.GET.field }}"> + {% if request.GET.specialty %} + <input type="hidden" name="specialty" value="{{ request.GET.specialty }}"> {% endif %} {% endif %} {% if request.GET.contributor %} @@ -111,15 +137,15 @@ <div class="row"> <div class="col-12"> - <h3>Profiles {% if request.GET.text %}with last name starting with {{ request.GET.text }}{% endif %} {% if request.GET.discipline %}in {{ request.GET.discipline }}{% if request.GET.expertise %}, {{ request.GET.expertise }}{% endif %}{% endif %} ({% if request.GET.contributor == "True" %}registered Contributors{% elif request.GET.contributor == "False" %}unregistered as Contributors{% else %}all registered/unregistered{% endif %}): {{ page_obj.paginator.count }} found</h3> + <h3>Profiles {% if request.GET.text %}with last name starting with {{ request.GET.text }}{% endif %} {% if request.GET.field %}in {{ request.GET.field }}{% if request.GET.specialty %}, {{ request.GET.specialty }}{% endif %}{% endif %} ({% if request.GET.contributor == "True" %}registered Contributors{% elif request.GET.contributor == "False" %}unregistered as Contributors{% else %}all registered/unregistered{% endif %}): {{ page_obj.paginator.count }} found</h3> <br/> <table class="table table-hover mb-5"> <thead class="thead-default"> <tr> <th>Name</th> - <th>Discipline</th> - <th>Expertises</th> + <th>Academic field</th> + <th>Specialties</th> <th>Contributor?</th> </tr> </thead> @@ -127,10 +153,10 @@ {% for profile in object_list %} <tr class="table-row" data-href="{% url 'profiles:profile_detail' pk=profile.id %}" target="_blank" style="cursor: pointer;"> <td>{{ profile }}</td> - <td>{{ profile.get_discipline_display }}</td> + <td>{{ profile.acad_field }}</td> <td> - {% for expertise in profile.expertises %} - <div class="single d-inline" data-specialization="{{expertise|lower}}" data-toggle="tooltip" data-placement="bottom" title="{{expertise|get_specialization_display}}">{{expertise|get_specialization_code}}</div> + {% for specialty in profile.specialties.all %} + <div class="single d-inline" data-specialty="{{ specialty.code }}" data-toggle="tooltip" data-placement="bottom" title="{{ specialty }}">{{ specialty.code }}</div> {% endfor %} </td> <td>{% if profile.has_active_contributor %}<i class="fa fa-check-circle text-success"></i>{% else %}<i class="fa fa-times-circle text-danger"></i>{% endif %}</td> diff --git a/profiles/views.py b/profiles/views.py index ddd83454b..efad548f0 100644 --- a/profiles/views.py +++ b/profiles/views.py @@ -110,8 +110,6 @@ class ProfileCreateView(PermissionsMixin, CreateView): 'first_name': contributor.user.first_name, 'last_name': contributor.user.last_name, 'email': contributor.user.email, - 'discipline': contributor.discipline, - 'expertises': contributor.expertises, 'orcid_id': contributor.orcid_id, 'webpage': contributor.personalwebpage, 'accepts_SciPost_emails': contributor.accepts_SciPost_emails, @@ -234,10 +232,10 @@ class ProfileListView(PermissionsMixin, PaginationMixin, ListView): Return a queryset of Profiles using optional GET data. """ queryset = Profile.objects.all() - if self.request.GET.get('discipline'): - queryset = queryset.filter(discipline=self.request.GET['discipline'].lower()) - if self.request.GET.get('expertise'): - queryset = queryset.filter(expertises__contains=[self.request.GET['expertise']]) + if self.request.GET.get('field'): + queryset = queryset.filter(acad_field__slug=self.request.GET['field']) + if self.request.GET.get('specialty'): + queryset = queryset.filter(specialties__slug__in=[self.request.GET['specialty']]) if self.request.GET.get('contributor') == 'False': queryset = queryset.filter(contributor__isnull=True) elif self.request.GET.get('contributor') == 'True': -- GitLab