diff --git a/colleges/admin.py b/colleges/admin.py index 0f182f45acab68882237d3e132fca8bdf74b29dd..8ff31a1391e86982716866e6e4d0ea2ead5d25d2 100644 --- a/colleges/admin.py +++ b/colleges/admin.py @@ -12,7 +12,7 @@ def fellowhip_is_active(fellowship): class FellowshipAdmin(admin.ModelAdmin): - search_fields = ['contributor__last_name', 'contributor__first_name'] + search_fields = ['contributor__user__last_name', 'contributor__user__first_name'] list_display = ('__str__', 'guest', fellowhip_is_active, ) list_filter = ('guest',) fellowhip_is_active.boolean = True diff --git a/journals/constants.py b/journals/constants.py index c98733fee0caad1c76a0ef162e7d9d498e92e375..529c204ef05a223473c915cee4cca47717b6fc6f 100644 --- a/journals/constants.py +++ b/journals/constants.py @@ -85,8 +85,7 @@ CC_LICENSES = ( CC_LICENSES_URI = ( (CCBY4, 'https://creativecommons.org/licenses/by/4.0'), (CCBYSA4, 'https://creativecommons.org/licenses/by-sa/4.0'), - (CCBYNC4, 'https://creativecommons.org/licenses/by-nc/4.0'), - ) + (CCBYNC4, 'https://creativecommons.org/licenses/by-nc/4.0')) ISSUES_AND_VOLUMES = 'IV' diff --git a/requirements.txt b/requirements.txt index f67521b8a6c1e53e16da6b4672cce3d358c778d0..deadb319e957f1d164df2ee829dcdc71531fc965 100644 --- a/requirements.txt +++ b/requirements.txt @@ -42,7 +42,7 @@ Whoosh==2.7.4 # Directly related to Haystack. # Python Utils -ithenticate-api-python==0.7 +ithenticate-api-python==0.8 mailchimp3==2.0.15 python-dateutil==2.6.0 # Doesn't Django have this functionality built-in? -- JdW Pillow==3.4.2 # Latest version is v4.2.1; need to know about usage before upgrade. -- JdW diff --git a/scipost/models.py b/scipost/models.py index d5bc608c42a3a3d4eca6b37aab37128958c259d9..e6c4d4df197a5f898c4cceca183489a401404724 100644 --- a/scipost/models.py +++ b/scipost/models.py @@ -285,7 +285,10 @@ class PrecookedEmail(models.Model): ###################### class EditorialCollege(models.Model): - '''A SciPost Editorial College for a specific discipline.''' + """A SciPost Editorial College for a specific discipline. + + DEPRECATED. To be removed. + """ discipline = models.CharField(max_length=255, unique=True) def __str__(self): @@ -296,6 +299,8 @@ class EditorialCollegeFellowship(TimeStampedModel): """ Editorial College Fellowship connecting Editorial College and Contributors, maybe with a limiting start/until date. + + DEPRECATED. To be removed. """ contributor = models.ForeignKey('scipost.Contributor', on_delete=models.CASCADE, related_name='+') diff --git a/scipost/templates/scipost/_contributor_short.html b/scipost/templates/scipost/_contributor_short.html index 153b4f8e545069c85318e73dbb023e82858af5bf..3b517c051b840e66ddf509ca76337de78d7260f9 100644 --- a/scipost/templates/scipost/_contributor_short.html +++ b/scipost/templates/scipost/_contributor_short.html @@ -12,8 +12,8 @@ {% endif %} </p> -{% if fellowship.affiliation %} - <span class="text-muted">({{fellowship.affiliation}})</span> +{% if fellowship.contributor.affiliations.active.first %} + <span class="text-muted">({{ fellowship.contributor.affiliations.active.first.institution.name }})</span> {% endif %} <div> {% for expertise in fellowship.contributor.expertises %} diff --git a/scipost/templates/scipost/about.html b/scipost/templates/scipost/about.html index 240f766f7476fcdf8a2006b71fd915ac8ecb9dc2..13813ae321965013f1b041fe7aa439b8cdc30f06 100644 --- a/scipost/templates/scipost/about.html +++ b/scipost/templates/scipost/about.html @@ -125,22 +125,21 @@ <hr> -{% for college, codes in object_list %} - <h2 class="highlight" id="editorial_college_{{ college|lower }}">Editorial College ({{ college }})</h2> +{% for discipline,fellowships in disciplines.items %} + <h2 class="highlight" id="editorial_college_{{ discipline|lower }}">Editorial College ({{ discipline }})</h2> - {% if codes %} <div class="row"> <div class="col-12"> - <a href="#editorial_college_{{ college|lower }}" class="mx-2" data-toggle="toggle-show" data-target="#specializations-{{college|lower}}">Show Fellows by specialization</a> - <a href="#editorial_college_{{ college|lower }}" class="mx-2" style="display: none;" data-toggle="toggle-show" data-target="#specializations-{{college|lower}}">Show full list of Fellows</a> - <div id="specializations-{{college|lower}}" class="card bg-white border-default all-specializations mt-2" style="display: none"> + <a href="#editorial_college_{{ discipline|lower }}" class="mx-2" data-toggle="toggle-show" data-target="#specializations-{{discipline|lower}}">Show Fellows by specialization</a> + <a href="#editorial_college_{{ discipline|lower }}" class="mx-2" style="display: none;" data-toggle="toggle-show" data-target="#specializations-{{discipline|lower}}">Show full list of Fellows</a> + <div id="specializations-{{ discipline|lower }}" class="card bg-white border-default all-specializations mt-2" style="display: none"> <div class="card-body"> <p class="text-muted mt-2">Hover to highlight or click to select</p> <div class="row"> <div class="col-md-6"> - {% with total_count=codes|length %} - {% for code in codes %} + {% with total_count=fellowships.1|length %} + {% for code in fellowships.1 %} <div class="specialization" data-specialization="{{code.0|lower}}">{{code.0}} - {{code.1}}</div> {% if forloop.counter|is_modulo_one_half:total_count %} </div> @@ -154,14 +153,13 @@ </div> </div> </div> - {% endif %} - <div class="row search-contributors" data-contributors="{{ college|lower }}"> + <div class="row search-contributors" data-contributors="{{ discipline|lower }}"> <div class="col-12"> <div class="card-columns"> - {% for fellowship in college.current_fellows %} + {% for fellowship in fellowships.0 %} <div class="card bg-white contributor mb-1"> - {% include 'scipost/_contributor_short.html' with contributor=fellowship.contributor %} + {% include 'scipost/_contributor_short.html' with fellowship=fellowship %} </div> {% endfor %} </div> diff --git a/scipost/views.py b/scipost/views.py index e3deafc3aa89f902b7b1becffec3d7e753f333cf..b58d42b0cc5b6b1b82cb6c1fbe27c0d33d3c5a09 100644 --- a/scipost/views.py +++ b/scipost/views.py @@ -30,7 +30,8 @@ from guardian.decorators import permission_required from haystack.generic_views import SearchView from .constants import ( - SCIPOST_SUBJECT_AREAS, subject_areas_raw_dict, SciPost_from_addresses_dict, NORMAL_CONTRIBUTOR) + SCIPOST_DISCIPLINES, SCIPOST_SUBJECT_AREAS, subject_areas_raw_dict, + SciPost_from_addresses_dict, NORMAL_CONTRIBUTOR) from .decorators import has_contributor, is_contributor_user from .models import ( Contributor, UnavailabilityPeriod, AuthorshipClaim, EditorialCollege, @@ -43,6 +44,7 @@ from .utils import Utils, EMAIL_FOOTER, SCIPOST_SUMMARY_FOOTER, SCIPOST_SUMMARY_ from affiliations.forms import AffiliationsFormset from colleges.permissions import fellowship_or_admin_required +from colleges.models import Fellowship from commentaries.models import Commentary from comments.models import Comment from invitations.constants import STATUS_REGISTERED @@ -1060,34 +1062,26 @@ def Fellow_activity_overview(request): class AboutView(ListView): + """Basic information page with stream of current regular Fellows.""" + model = EditorialCollege template_name = 'scipost/about.html' - queryset = EditorialCollege.objects.prefetch_related( - Prefetch('fellowships', - queryset=EditorialCollegeFellowship.objects.active().select_related( - 'contributor__user').order_by('contributor__user__last_name'), - to_attr='current_fellows')) + queryset = Fellowship.objects.none() def get_context_data(self, *args, **kwargs): + """Save Fellowships per discipline to the context.""" context = super().get_context_data(*args, **kwargs) - object_list = [] - for college in context['object_list']: - try: - spec_list = subject_areas_raw_dict[str(college)] - except KeyError: - spec_list = None - object_list.append(( - college, - spec_list, - )) - context['object_list'] = object_list + context['disciplines'] = {} + for discipline in SCIPOST_DISCIPLINES: + qs = Fellowship.objects.active().regular().filter( + contributor__discipline=discipline[0]) + if qs: + context['disciplines'][discipline[1]] = (qs, subject_areas_raw_dict[discipline[1]]) return context -def csrf_failure(request, reason=""): - """ - Custom CSRF Failure. Informing admins via email as well. - """ +def csrf_failure(request, reason=''): + """CSRF Failure page with an admin mailing action.""" # Filter out privacy data post_data = {} for key in request.POST.keys(): diff --git a/submissions/admin.py b/submissions/admin.py index 3c75469a628f126e2eecd6123930f95864f9177d..3ef477feb6a21bfebe79c41fce837fd9a2c7a1d0 100644 --- a/submissions/admin.py +++ b/submissions/admin.py @@ -53,8 +53,8 @@ class SubmissionAdminForm(forms.ModelForm): class SubmissionAdmin(GuardedModelAdmin): date_hierarchy = 'submission_date' form = SubmissionAdminForm - list_display = ('title', 'author_list', 'status', 'submission_date', 'publication',) - list_filter = ('status', 'discipline', 'submission_type',) + list_display = ('title', 'author_list', 'status', 'submission_date', 'publication') + list_filter = ('status', 'discipline', 'submission_type', 'submitted_to_journal') search_fields = ['submitted_by__user__last_name', 'title', 'author_list', 'abstract'] raw_id_fields = ('editor_in_charge', 'submitted_by') readonly_fields = ('arxiv_identifier_w_vn_nr', 'publication') diff --git a/templates/email/referees/invite_unregistered_to_referee_reminder1.json b/templates/email/referees/invite_unregistered_to_referee_reminder1.json index 1d88048515b7c423572100119857c0f08a3ad8a1..e0d6bfffa6be7af2bf038ffd9b989072062bb518 100644 --- a/templates/email/referees/invite_unregistered_to_referee_reminder1.json +++ b/templates/email/referees/invite_unregistered_to_referee_reminder1.json @@ -1,9 +1,9 @@ { "subject": "SciPost: refereeing and registration invitation reminder", - "to_address_bup": "J.S.Caux@uva.nl", - "bcc_to_bup": "J.S.Caux@uva.nl", - "to_address": "email_address", - "bcc_to": "invited_by.email,admin@scipost.org", + "to_address_bup": "email_address", + "bcc_to_bup": "invited_by.email,admin@scipost.org", + "to_address": "J.S.Caux@uva.nl", + "bcc_to": "J.S.Caux@uva.nl", "from_address_name": "SciPost Refereeing", "from_address": "refereeing@scipost.org", "context_object": "invitation" diff --git a/templates/email/referees/invite_unregistered_to_referee_reminder2.json b/templates/email/referees/invite_unregistered_to_referee_reminder2.json index 7619266b69008d1d395deea9a98f2b495502f923..f8a1db32f0c48bb3218609779cc0dc57ee13e0d0 100644 --- a/templates/email/referees/invite_unregistered_to_referee_reminder2.json +++ b/templates/email/referees/invite_unregistered_to_referee_reminder2.json @@ -2,8 +2,8 @@ "subject": "SciPost: refereeing and registration invitation reminder", "to_address_bup": "email_address", "bcc_to_bup": "invited_by.email,admin@scipost.org", - "to_address": "email_address", - "bcc_to": "invited_by.email,admin@scipost.org", + "to_address": "J.S.Caux@uva.nl", + "bcc_to": "admin@scipost.org", "from_address_name": "SciPost Refereeing", "from_address": "refereeing@scipost.org", "context_object": "invitation"