diff --git a/SciPost_v1/urls.py b/SciPost_v1/urls.py index 45b0ccceb5719cc0c844ada1eab1d077a36c427f..c9de03f6f38e5bdc3e56cdc88761d65cf3717e5a 100644 --- a/SciPost_v1/urls.py +++ b/SciPost_v1/urls.py @@ -31,7 +31,6 @@ urlpatterns = [ url(r'^10.21468/%s/' % JOURNAL_REGEX, include('journals.urls.journal', namespace="journal")), url(r'^%s/' % JOURNAL_REGEX, include('journals.urls.journal', namespace="journal")), url(r'^', include('scipost.urls', namespace="scipost")), - url(r'^contributor/', include('scipost.urls', namespace="scipost")), url(r'^commentaries/', include('commentaries.urls', namespace="commentaries")), url(r'^commentary/', include('commentaries.urls', namespace="commentaries")), url(r'^comments/', include('comments.urls', namespace="comments")), diff --git a/journals/templates/journals/publication_detail.html b/journals/templates/journals/publication_detail.html index 627d44a0a3c2c8fedd25916c52b7668dc18120b1..38ddbd0126458949676a818100764228b9277907 100644 --- a/journals/templates/journals/publication_detail.html +++ b/journals/templates/journals/publication_detail.html @@ -111,12 +111,12 @@ </div> </div> </li> - <li><a href="{% url 'journals:add_author' publication_id=publication.id %}">Add a missing author</a></li> + <li><a href="{% url 'journals:add_author' publication.id %}">Add a missing author</a></li> <li><a href="{% url 'journals:create_citation_list_metadata' publication.doi_label %}">Create/update citation list metadata</a></li> <li><a href="{% url 'journals:create_funding_info_metadata' publication.doi_label %}">Create/update funding info metadata</a></li> <li><a href="{% url 'journals:create_metadata_xml' publication.doi_label %}">Create/update the XML metadata</a></li> - <li><a href="{% url 'journals:metadata_xml_deposit' publication.doi_label option='test' %}">Test metadata deposit (via Crossref test server)</a></li> - <li><a href="{% url 'journals:metadata_xml_deposit' publication.doi_label option='deposit' %}">Deposit the metadata to Crossref</a></li> + <li><a href="{% url 'journals:metadata_xml_deposit' publication.doi_label 'test' %}">Test metadata deposit (via Crossref test server)</a></li> + <li><a href="{% url 'journals:metadata_xml_deposit' publication.doi_label 'deposit' %}">Deposit the metadata to Crossref</a></li> <li><a href="{% url 'journals:harvest_citedby_links' publication.doi_label %}">Update Crossref cited-by links</a></li> </ul> </div> diff --git a/journals/urls/general.py b/journals/urls/general.py index ba5227eebec603f2907e5bda74351a6533b24a77..76d8ab0b758416a861fe8b654cdd747bb3c4b7be 100644 --- a/journals/urls/general.py +++ b/journals/urls/general.py @@ -1,12 +1,13 @@ from django.conf.urls import url - -from django.views.generic import TemplateView +from django.urls import reverse_lazy +from django.views.generic import TemplateView, RedirectView from journals import views as journals_views urlpatterns = [ # Journals url(r'^$', TemplateView.as_view(template_name='journals/journals.html'), name='journals'), + url(r'scipost_physics', RedirectView.as_view(url=reverse_lazy('scipost:landing_page', args=['SciPostPhys']))), url(r'^journals_terms_and_conditions$', TemplateView.as_view(template_name='journals/journals_terms_and_conditions.html'), name='journals_terms_and_conditions'), diff --git a/journals/views.py b/journals/views.py index 959c2d4328669476d8151484682db64cc2bdd2a2..12cfe9538dc01491e980fb58a2d138c91aaf71f3 100644 --- a/journals/views.py +++ b/journals/views.py @@ -475,7 +475,7 @@ def create_metadata_xml(request, doi_label): '<body>\n' '<journal>\n' '<journal_metadata>\n' - '<full_title>' + publication.in_issue.in_volume.in_journal.name + '</full_title>\n' + '<full_title>' + publication.in_issue.in_volume.in_journal.get_name_display() + '</full_title>\n' '<abbrev_title>' + publication.in_issue.in_volume.in_journal.get_abbreviation_citation() + '</abbrev_title>\n' @@ -649,6 +649,10 @@ def harvest_citedby_links(request, doi_label): 'qdata': query_xml, 'doi': publication.doi_string, } r = requests.post(url, params=params,) + if r.status_code == 401: + messages.warning(request, ('<h3>Crossref credentials are invalid.</h3>' + 'Please contact the SciPost Admin.')) + return redirect(publication.get_absolute_url()) response_headers = r.headers response_text = r.text response_deserialized = ET.fromstring(r.text) diff --git a/scipost/management/commands/add_groups_and_permissions.py b/scipost/management/commands/add_groups_and_permissions.py index e3977e696ae23584a4b2f846d1e5a10834fe08c2..9d8d1f39b96bd9d0d7ecee776198c73c01a6fb58 100644 --- a/scipost/management/commands/add_groups_and_permissions.py +++ b/scipost/management/commands/add_groups_and_permissions.py @@ -132,6 +132,10 @@ class Command(BaseCommand): codename='can_referee', name='Can act as a referee and submit reports on Submissions', content_type=content_type) + can_oversee_refereeing, created = Permission.objects.get_or_create( + codename='can_oversee_refereeing', + name='Can oversee refereeing', + content_type=content_type) # Voting can_prepare_recommendations_for_voting, created = Permission.objects.get_or_create( @@ -178,6 +182,7 @@ class Command(BaseCommand): EditorialAdmin.permissions.add( can_view_pool, can_assign_submissions, + can_oversee_refereeing, can_prepare_recommendations_for_voting, can_fix_College_decision, can_publish_accepted_submission, diff --git a/scipost/templates/scipost/personal_page.html b/scipost/templates/scipost/personal_page.html index 8705a78593b3c7957978b87a47df21b763cf2e59..41a53da7087a1226f810800ce475a2d7140335ac 100644 --- a/scipost/templates/scipost/personal_page.html +++ b/scipost/templates/scipost/personal_page.html @@ -274,10 +274,16 @@ {% endif %} </ul> + {% if 'Editorial Administrators' in user_groups %} + <h3>Refereeing overview</h3> + <ul> + <li>View (and act on) outstanding refereeing invitations in the <a href="{% url 'submissions:refereeing_overview' %}">refereeing overview</a></li> + </ul> <h3>Voting</h3> <ul> <li>Prepare Editorial Recommendations for voting via the <a href="{% url 'submissions:pool' %}">Submissions Pool</a> ({{ nr_recommendations_to_prepare_for_voting }})</li> </ul> + {% endif %} </div> {% endif %} </div> diff --git a/scipost/urls.py b/scipost/urls.py index ebbd67e5fb89ad0a5811e49ea46fdd445b7351fe..d12d2fc75c8e25a73214656aff7faab8e44f8238 100644 --- a/scipost/urls.py +++ b/scipost/urls.py @@ -136,7 +136,7 @@ urlpatterns = [ name='mark_unavailable_period'), # Contributor info - url(r'^(?P<contributor_id>[0-9]+)$', views.contributor_info, name="contributor_info"), + url(r'^contributor/(?P<contributor_id>[0-9]+)$', views.contributor_info, name="contributor_info"), # Authorship claims url(r'^claim_authorships$', views.claim_authorships, name="claim_authorships"), diff --git a/scipost/views.py b/scipost/views.py index d3ad00c66f0084805cc474d2741a24ef3f580771..3ebfee4ad98394fa61eb6e0710b391eae1147eec 100644 --- a/scipost/views.py +++ b/scipost/views.py @@ -1075,7 +1075,7 @@ def contributor_info(request, contributor_id): Contributor's activities/contributions by clicking on the relevant name (in listing headers of Submissions, ...). """ - contributor = Contributor.objects.get(pk=contributor_id) + contributor = get_object_or_404(Contributor, pk=contributor_id) contributor_publications = Publication.objects.published().filter(authors=contributor) contributor_submissions = Submission.objects.public().filter(authors=contributor) contributor_commentaries = Commentary.objects.filter(authors=contributor) diff --git a/submissions/templates/submissions/refereeing_overview.html b/submissions/templates/submissions/refereeing_overview.html new file mode 100644 index 0000000000000000000000000000000000000000..bda7f5c3502d94e203179d0e8399c05cc5e93019 --- /dev/null +++ b/submissions/templates/submissions/refereeing_overview.html @@ -0,0 +1,49 @@ +{% extends 'submissions/_pool_base.html' %} + +{% block pagetitle %}: overview of refereeing{% endblock pagetitle %} + +{% load scipost_extras %} +{% load bootstrap %} + +{% block breadcrumb_items %} + {{block.super}} + <span class="breadcrumb-item">Refereeing overview</span> +{% endblock %} + +{% block content %} + +<div class="row"> + <div class="col-12"> + <div class="card card-grey"> + <div class="card-block"> + <h1>Refereeing overview</h1> + </div> + </div> + </div> +</div> + +{% for submission in submissions_under_refereeing %} + +<hr/> +<div class="row"> + <div class="col-12"> + <div class="card mx-1"> + <div class="card-block"> + <h3><a href="{{ submission.get_absolute_url }}">{{ submission.title }}</a></h3> + <p>{{ submission.author_list }}</p> + <h4>Refereeing deadline: {{ submission.reporting_deadline }}</h4> + <h4>Refereeing status summary:</h4> + {% include 'submissions/_submission_refereeing_status.html' with submission=submission %} + <h3 class="mb-2">Detail of refereeing invitations:</h3> + {% include 'submissions/_submission_refereeing_invitations.html' with submission=submission invitations=ref_invitations %} + <a href="{% url 'submissions:communication' arxiv_identifier_w_vn_nr=submission.arxiv_identifier_w_vn_nr comtype='StoE' %}">Send a communication to the Editor-in-charge</a> + </div> + </div> + </div> +</div> + +{% endfor %} + + + +{% endblock content %} diff --git a/submissions/urls.py b/submissions/urls.py index 042f2f393d35300d05d06f8433619dfde5aae436..48e208052b98fc264fd01f9c991d80325bd5a886 100644 --- a/submissions/urls.py +++ b/submissions/urls.py @@ -63,6 +63,7 @@ urlpatterns = [ views.set_refereeing_deadline, name='set_refereeing_deadline'), url(r'^close_refereeing_round/(?P<arxiv_identifier_w_vn_nr>[0-9]{4,}.[0-9]{5,}v[0-9]{1,2})$', views.close_refereeing_round, name='close_refereeing_round'), + url(r'^refereeing_overview$', views.refereeing_overview, name='refereeing_overview'), url(r'^communication/(?P<arxiv_identifier_w_vn_nr>[0-9]{4,}.[0-9]{5,}v[0-9]{1,2})/(?P<comtype>[a-zA-Z]{4,})$', views.communication, name='communication'), url(r'^communication/(?P<arxiv_identifier_w_vn_nr>[0-9]{4,}.[0-9]{5,}v[0-9]{1,2})/(?P<comtype>[a-zA-Z]{4,})/(?P<referee_id>[0-9]+)$', diff --git a/submissions/views.py b/submissions/views.py index 99eb79e517db0ff148d5620b5000dd9b9abb1151..81375ff8b1198c191c9a0000b1e3d64687bcdc62 100644 --- a/submissions/views.py +++ b/submissions/views.py @@ -930,6 +930,14 @@ def close_refereeing_round(request, arxiv_identifier_w_vn_nr): kwargs={'arxiv_identifier_w_vn_nr': arxiv_identifier_w_vn_nr})) +@permission_required('scipost.can_oversee_refereeing', raise_exception=True) +def refereeing_overview(request): + submissions_under_refereeing = Submission.objects.filter( + status='EICassigned').order_by('submission_date') + context= {'submissions_under_refereeing': submissions_under_refereeing,} + return render(request, 'submissions/refereeing_overview.html', context) + + @login_required def communication(request, arxiv_identifier_w_vn_nr, comtype, referee_id=None): """