From e1e2eb3187df0028b6640d32943741faf5fc7435 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20M=C3=A9nager?= <herve.menager@pasteur.fr> Date: Tue, 4 Jan 2022 18:17:27 +0100 Subject: [PATCH] add contributor detail page (first draft, WIP) --- .../templates/about-contributor-card.html | 11 ++++++++ .../ippidb/templates/about-contributors.html | 2 +- ippisite/ippidb/urls.py | 3 ++- ippisite/ippidb/views/__init__.py | 6 +++-- ippisite/ippidb/views/about.py | 27 ++++++++++++++++--- 5 files changed, 41 insertions(+), 8 deletions(-) create mode 100644 ippisite/ippidb/templates/about-contributor-card.html diff --git a/ippisite/ippidb/templates/about-contributor-card.html b/ippisite/ippidb/templates/about-contributor-card.html new file mode 100644 index 00000000..5057457f --- /dev/null +++ b/ippisite/ippidb/templates/about-contributor-card.html @@ -0,0 +1,11 @@ +{% extends "about.html" %} + +{% block title %}inhibitors of Protein-Protein Interaction Database{% endblock %} + +{% block pagetitle %}Contributors{% endblock%} + +{% block view_content %} +<div class="row"> + {{ object.get_contributor_firstname | capfirst }} {{ object.get_contributor_lastname | capfirst }} || {{ object.get_orcid_url }} +</div> +{% endblock %} \ No newline at end of file diff --git a/ippisite/ippidb/templates/about-contributors.html b/ippisite/ippidb/templates/about-contributors.html index 54a12cff..4727f07a 100644 --- a/ippisite/ippidb/templates/about-contributors.html +++ b/ippisite/ippidb/templates/about-contributors.html @@ -16,7 +16,7 @@ <tbody> {% for contributor in object_list %} <tr> - <td>{{ contributor.get_contributor_firstname | capfirst }} {{ contributor.get_contributor_lastname | capfirst }}</td> + <td><a href="{{ contributor.id }}">{{ contributor.get_contributor_firstname | capfirst }} {{ contributor.get_contributor_lastname | capfirst }}</a></td> <td><a href="{{ contributor.get_orcid_url }}" target="_blank">{{ contributor.get_orcid }}</a></td> </tr> {% endfor %} diff --git a/ippisite/ippidb/urls.py b/ippisite/ippidb/urls.py index a75b1025..1ca040aa 100644 --- a/ippisite/ippidb/urls.py +++ b/ippisite/ippidb/urls.py @@ -61,7 +61,8 @@ urlpatterns = [ name="physicochemistry", ), re_path(r"^about-pca/$", views.about_pca, name="pca"), - re_path(r"^about-contributors/$", views.ContributorsListView.as_view(), name="contributors"), + re_path(r"^about-contributors/$", views.ContributorListView.as_view(), name="contributors"), + re_path(r"^about-contributors/(?P<pk>\d+)$", views.ContributorDetailView.as_view(), name="contributor_card"), re_path(r"^targetcentric/$", views.PDBView.as_view(), name="cavities"), re_path(r"^targetcentric/networks$", views.NetworkView.as_view(), name="networks"), re_path(r"^api/", include(ROUTER.urls)), diff --git a/ippisite/ippidb/views/__init__.py b/ippisite/ippidb/views/__init__.py index 7666e858..d3219a28 100644 --- a/ippisite/ippidb/views/__init__.py +++ b/ippisite/ippidb/views/__init__.py @@ -32,7 +32,8 @@ from .about import ( about_pca, about_pharmacology, about_physicochemistry, - ContributorsListView, + ContributorListView, + ContributorDetailView, ) from django.conf import settings @@ -103,7 +104,8 @@ __all__ = [ about_pca, about_pharmacology, about_physicochemistry, - ContributorsListView, + ContributorListView, + ContributorDetailView, PdbViewSet, DistanceViewSet, PDBView, diff --git a/ippisite/ippidb/views/about.py b/ippisite/ippidb/views/about.py index cc9a875f..45731cef 100644 --- a/ippisite/ippidb/views/about.py +++ b/ippisite/ippidb/views/about.py @@ -2,11 +2,11 @@ iPPI-DB global statistics views """ -import re from django.contrib.auth import get_user_model from django.db.models import F, Count, FloatField, QuerySet from django.db.models.functions import Cast, Floor from django.shortcuts import render +from django.views.generic.detail import DetailView from django.views.generic.list import ListView import json @@ -324,7 +324,7 @@ def get_contributor_firstname(self): orcid = self.get_orcid() if orcid is not None: data = self.__orcid_json - return data['first_name'] + return data["first_name"] @cached_orcid_json @@ -335,7 +335,7 @@ def get_contributor_lastname(self): orcid = self.get_orcid() if orcid is not None: data = self.__orcid_json - return data['last_name'] + return data["last_name"] User.add_to_class("get_orcid", get_orcid) @@ -345,9 +345,11 @@ User.add_to_class("get_contributor_firstname", get_contributor_firstname) User.add_to_class("get_contributor_lastname", get_contributor_lastname) -class ContributorsListView(ListView): +class ContributorListView(ListView): """ Contributors list view + + This view lists the users with at least one accepted contribution """ model = User @@ -359,3 +361,20 @@ class ContributorsListView(ListView): socialaccount__isnull=False, contributions_count__gt=0 ) return qs + + +class ContributorDetailView(DetailView): + """ + Contributor detail view + + """ + + model = User + template_name = "about-contributor-card.html" + + def get_queryset(self): + qs = super().get_queryset() + qs = qs.annotate(contributions_count=Count("contribution")).filter( + socialaccount__isnull=False, contributions_count__gt=0 + ) + return qs -- GitLab