diff --git a/.requirements.txt.swp b/.requirements.txt.swp new file mode 100644 index 0000000000000000000000000000000000000000..7821de9575fbb907b4cb5724c45ebc672ea14624 Binary files /dev/null and b/.requirements.txt.swp differ diff --git a/apimail/management/commands/mailgun_validate_address.py b/apimail/management/commands/mailgun_validate_address.py new file mode 100644 index 0000000000000000000000000000000000000000..82f1687ddb218b4d45943f59e478b615b519c4f1 --- /dev/null +++ b/apimail/management/commands/mailgun_validate_address.py @@ -0,0 +1,30 @@ +__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)" +__license__ = "AGPL v3" + + +import requests + +from django.conf import settings +from django.core.management import BaseCommand + + +def validate_address(address=None): + if address: + response = requests.get( + "https://api.mailgun.net/v4/address/validate", + auth=("api", settings.MAILGUN_API_KEY), + params={"address": address} + ).json() + return response + + +class Command(BaseCommand): + + def add_arguments(self, parser): + parser.add_argument( + '--address', type=str, required=False, + help='email address to validate') + + def handle(self, *args, **options): + result = validate_address(options.get('address')) + print(result) diff --git a/journals/migrations/0103_journal_submission_insert.py b/journals/migrations/0103_journal_submission_insert.py new file mode 100644 index 0000000000000000000000000000000000000000..5c0683001d095645bb2882752e3b19f263f75e35 --- /dev/null +++ b/journals/migrations/0103_journal_submission_insert.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.16 on 2020-10-26 20:17 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0102_auto_20200930_0602'), + ] + + operations = [ + migrations.AddField( + model_name='journal', + name='submission_insert', + field=models.TextField(blank=True, default='[Optional; you can use markup]', null=True), + ), + ] diff --git a/journals/migrations/0104_auto_20201026_2144.py b/journals/migrations/0104_auto_20201026_2144.py new file mode 100644 index 0000000000000000000000000000000000000000..daaa7e9d6a46b9e1cb9be38b795e11b34003882f --- /dev/null +++ b/journals/migrations/0104_auto_20201026_2144.py @@ -0,0 +1,34 @@ +# Generated by Django 2.2.16 on 2020-10-26 20:44 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0103_journal_submission_insert'), + ] + + operations = [ + migrations.AlterField( + model_name='issue', + name='doi_label', + field=models.CharField(db_index=True, max_length=200, unique=True, validators=[django.core.validators.RegexValidator('^((SciPost)[a-zA-Z]+|(MigPol))\\.\\w+(\\.[0-9]+)?$', 'Only expressions with regex ((SciPost)[a-zA-Z]+|(MigPol))\\.\\w+(\\.[0-9]+)? are allowed.')]), + ), + migrations.AlterField( + model_name='journal', + name='doi_label', + field=models.CharField(db_index=True, max_length=200, unique=True, validators=[django.core.validators.RegexValidator('^(SciPost)[a-zA-Z]+|(MigPol)$', 'Only expressions with regex (SciPost)[a-zA-Z]+|(MigPol) are allowed.')]), + ), + migrations.AlterField( + model_name='publication', + name='doi_label', + field=models.CharField(db_index=True, max_length=200, unique=True, validators=[django.core.validators.RegexValidator('^((SciPost)[a-zA-Z]+|(MigPol))(\\.\\w+(\\.[0-9]+(\\.[0-9]{3,})?)?)?$', 'Only expressions with regex ((SciPost)[a-zA-Z]+|(MigPol))(\\.\\w+(\\.[0-9]+(\\.[0-9]{3,})?)?)? are allowed.')]), + ), + migrations.AlterField( + model_name='volume', + name='doi_label', + field=models.CharField(db_index=True, max_length=200, unique=True, validators=[django.core.validators.RegexValidator('^((SciPost)[a-zA-Z]+|(MigPol)\\.\\w)$', 'Only expressions with regex ((SciPost)[a-zA-Z]+|(MigPol)\\.\\w) are allowed.')]), + ), + ] diff --git a/journals/models/journal.py b/journals/models/journal.py index 5a4ab120a71059e1f3c7b797624f3b6a8a455d1c..8f0cc16202de3a35d05d90e7b87241c1339f8c12 100644 --- a/journals/models/journal.py +++ b/journals/models/journal.py @@ -70,6 +70,8 @@ class Journal(models.Model): scope = models.TextField(default='[To be filled in; you can use markup]') content = models.TextField(default='[To be filled in; you can use markup]') acceptance_criteria = models.TextField(default='[To be filled in; you can use markup]') + submission_insert = models.TextField(blank=True, null=True, + default='[Optional; you can use markup]') minimal_nr_of_reports = models.PositiveSmallIntegerField( help_text=('Minimal number of substantial Reports required ' 'before an acceptance motion can be formulated'), diff --git a/journals/regexes.py b/journals/regexes.py index 33580dbb5611b152ae9ecfc162c663fbdb2016c9..299c6f619c5c2cd96df16815e54a312427f22efe 100644 --- a/journals/regexes.py +++ b/journals/regexes.py @@ -2,7 +2,7 @@ __copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)" __license__ = "AGPL v3" -JOURNAL_DOI_LABEL_REGEX = r'(SciPost|MigPol)[a-zA-Z]+' +JOURNAL_DOI_LABEL_REGEX = r'(SciPost)[a-zA-Z]+|(MigPol)' VOLUME_DOI_LABEL_REGEX = r'({}\.\w)'.format(JOURNAL_DOI_LABEL_REGEX) diff --git a/journals/templates/journals/about.html b/journals/templates/journals/about.html index eb3f82fb2e31d941fce03beb59bde868b6b78740..6c37e274f8d18748d24d67c1790d31b640cfdda0 100644 --- a/journals/templates/journals/about.html +++ b/journals/templates/journals/about.html @@ -84,7 +84,8 @@ <h2 class="highlight" id="sub_and_ed"> Submission and Editorial Process </h2> - <p>Authors should follow the <a href="{% url 'journal:authoring' doi_label=journal.doi_label %}">authoring guidelines</a> to ensure seamless processing of their manuscript. The <a href="{% url 'journals:journals_terms_and_conditions' %}">SciPost Journals Terms and Conditions</a> apply to all Submissions to SciPost Physics.</p> + {{ journal.submission_insert|automarkup }} + <p>Authors should follow the <a href="{% url 'journal:authoring' doi_label=journal.doi_label %}">authoring guidelines</a> to ensure seamless processing of their manuscript. The <a href="{% url 'journals:journals_terms_and_conditions' %}">SciPost Journals Terms and Conditions</a> apply to all Submissions to {{ journal }}.</p> <p>All incoming Submissions are thoroughly checked for plagiarism, and follow the peer-witnessed refereeing procedures outlined in <a href="{% url 'submissions:sub_and_ref_procedure' %}">Submission and Refereeing procedure</a>.</p> {% if journal.minimal_nr_of_reports > 0 %} <p><strong>Minimal number of reports</strong>: at least {{ journal.minimal_nr_of_reports }} substantial report{{ journal.minimal_nr_of_reports|pluralize }} must have been received; all points raised must have been addressed either in resubmissions or in author replies before a recommendation for publication can be formulated.</p> diff --git a/journals/templates/journals/shoji.html b/journals/templates/journals/shoji.html new file mode 100644 index 0000000000000000000000000000000000000000..37eefe4387f752a39abccfc5eae4163e36b0d2ed --- /dev/null +++ b/journals/templates/journals/shoji.html @@ -0,0 +1,26 @@ +{% extends 'scipost/base.html' %} + +{% block meta_description %}{{ block.super }} SHOJI{% endblock meta_description %} +{% block pagetitle %}: SHOJI{% endblock pagetitle %} + +{% block breadcrumb %} + <div class="breadcrumb-container"> + <div class="container"> + <nav class="breadcrumb hidden-sm-down"> + {% block breadcrumb_items %} + <a href="{% url 'journals:journals' %}" class="breadcrumb-item">Journals</a> + <span class="breadcrumb-item">SHOJI</span> + {% endblock %} + </nav> + </div> + </div> +{% endblock %} + +{% block content %} + <h1 class="highlight">SciPost-Hosted Open Journals Infrastructure</h1> + + <div class="row"> + <div class="col-12"> + </div> + </div> +{% endblock content %} diff --git a/ontology/context_processors.py b/ontology/context_processors.py new file mode 100644 index 0000000000000000000000000000000000000000..99a1a6dfbf2367bb7655f63355d0c828cbe0bdeb --- /dev/null +++ b/ontology/context_processors.py @@ -0,0 +1,22 @@ +__copyright__ = "Copyright 2016-2018, Stichting SciPost (SciPost Foundation)" +__license__ = "AGPL v3" + +from .models import Branch, AcademicField, Specialty + + +def ontology_processor(request): + """ + Append branches and acad_fields to the context of all views, + and acad_field if session sets it. + """ + context = { + 'branches': Branch.objects.all(), + 'acad_fields': AcademicField.objects.all(), + } + if request.session.get('acad_field_slug', None): + context['session_acad_field'] = AcademicField.objects.get( + slug=request.session.get('acad_field_slug')) + if request.session.get('specialty_slug', None): + context['session_specialty'] = Specialty.objects.get( + slug=request.session.get('specialty_slug')) + return context diff --git a/scipost/templates/scipost/FAQ_for_scientists.html b/scipost/templates/scipost/FAQ_for_scientists.html new file mode 100644 index 0000000000000000000000000000000000000000..9f30f348be9d7772ed128e5a9b578082fc87a052 --- /dev/null +++ b/scipost/templates/scipost/FAQ_for_scientists.html @@ -0,0 +1,15 @@ +{% extends 'scipost/base.html' %} + +{% block meta_description %}{{ block.super }} FAQ for scientists{% endblock meta_description %} +{% block pagetitle %}: Reasons to switch{% endblock pagetitle %} + +{% block breadcrumb_items %} + <span class="breadcrumb-item">Reasons to switch</span> +{% endblock %} + + +{% block content %} + + + +{% endblock %} diff --git a/scipost/templates/scipost/about.html b/scipost/templates/scipost/about.html index e161bc84f19044fee02cb2bcdbd82b9e6a0cef45..e5c6bde432897e9bd1c49d2d80a82d28c2b2dec3 100644 --- a/scipost/templates/scipost/about.html +++ b/scipost/templates/scipost/about.html @@ -105,47 +105,69 @@ <p>These principles are an extension and sharpening up of the <a href="https://www.fairopenaccess.org/" target="_blank" rel="noopener">Fair Open Access Principles</a>, the most important difference being the insistence on the non profit business model.</p> </div> - <hr> + <div class="row"> <div class="col-12"> <h2 class="highlight" id="team">The SciPost Team</h2> </div> </div> - <div class="row justify-content-center"> - <div class="col-md-4 col-lg-3"> - <h3><a href="{% url 'scipost:foundation' %}">The SciPost Foundation</a></h3> - <ul> - <li>Chairman: Prof. <a href="https://jscaux.org" target="_blank" rel="noopener">J.-S. Caux</a></li> - <li>Secretary: Dr J. van Mameren</li> - <li>Treasurer: Dr J. van Wezel</li> - </ul> - </div> - <div class="col-md-7 col-lg-6"> - <h3>Code Development and Server Maintenance</h3> - <ul> - <li>J.-S. Caux</li> - <li>J. de Wit</li> - </ul> - </div> - </div> - <div class="row justify-content-center"> - <div class="col-md-4 col-lg-3"> - <h3>Editorial and Partners Admin</h3> - <ul> - <li>P. Perez</li> - <li>S. E. Tapias Arze</li> - </ul> - </div> - <div class="col-md-7 col-lg-6"> - <h3>Production</h3> - <ul> - <li>L. Ligthart</li> - <li>S. Vitouladitis</li> - <li>L. Tokic</li> - <li>L. van Manen</li> - </ul> + <div class="card m-2 border-0"> + <div class="card-body"> + <div class="row justify-content-center"> + <div class="col-lg-4"> + <ul> + <li class="mb-1"> + <strong>Prof. <a href="https://jscaux.org" target="_blank" rel="noopener">J.-S. Caux</a></strong> + <ul class="list-unstyled"> + <li class="list-unstyled-item"><em>Chairman <a href="{% url 'scipost:foundation' %}">SciPost Foundation</a></em></li> + <li class="list-unstyled-item"><em>Coding, Infrastructure</em></li> + </ul> + </li> + <li class="mb-1"> + <strong>Dr J. van Mameren</strong> + <ul class="list-unstyled"> + <li class="list-unstyled-item"><em>Secretary SciPost</em></li> + </ul> + </li> + <li class="mb-1"> + <strong>Dr J. van Wezel</strong> + <ul class="list-unstyled"> + <li class="list-unstyled-item"><em>Treasurer SciPost</em></li> + </ul> + </li> + </ul> + </div> + <div class="col-lg-4"> + <ul> + <li class="mb-1"> + <strong>Dr P. Perez</strong> + <ul class="list-unstyled"> + <li class="list-unstyled-item"><em>Editorial Admin</em></li> + </ul> + </li> + <li class="mb-1"> + <strong>S. E. Tapias Arze</strong> + <ul class="list-unstyled"> + <li class="list-unstyled-item"><em>Editorial and Sponsors Admin</em></li> + </ul> + </li> + <li class="mb-1"> + <strong>Dr J. W. Wijnen</strong> + <ul class="list-unstyled"> + <li class="list-unstyled-item"><em>Strategy Officer</em></li> + </ul> + </li> + <li class="mb-1"> + <strong>Teun Zwart</strong> + <ul class="list-unstyled"> + <li class="list-unstyled-item"><em>Developer</em></li> + </ul> + </li> + </ul> + </div> + </div> </div> </div> @@ -223,6 +245,39 @@ </div> </div> + <div class="card m-2"> + <div class="card-header text-center">Migration Politics</div> + <div class="card-body"> + <div class="row justify-content-center"> + <div class="col-lg-3 col-md-4"> + <ul> + <li>Prof. Christina Boswell</a><br/><em>Dean of Research, College of Arts, Humanities & Social Sciences</em><br/>(U. of Edinburgh)</li> + </ul> + </div> + <div class="col-lg-3 col-md-4"> + <ul> + <li>Prof. <a target="_blank" rel="noopener" href="https://www.migrationinstitute.org/people/hein">Hein de Haas</a><br/><em>Professor of Sociology</em><br/>(U. of Amsterdam)</li> + </ul> + </div> + <div class="col-lg-3 col-md-4"> + <ul> + <li>Prof. <a target="_blank" rel="noopener" href="www.cds.edu/people/irudaya-rajan-s/qualification.html">Irudaya Rajan</a><br/><em>Centre for Development Studies</em></li> + </ul> + </div> + <div class="col-lg-3 col-md-4"> + <ul> + <li>Prof. <a target="_blank" rel="noopener" href="https://www.faculty.uci.edu/profile.cfm?faculty_id=4965">Kamal Sadiq</a><br/>(UC Irvine)</li> + </ul> + </div> + <div class="col-lg-3 col-md-4"> + <ul> + <li>Prof. <a target="_blank" rel="noopener" href="https://www.mmg.mpg.de/steven-vertovec">Steven Vertovec</a><br/>Founding Director,<br/><em>Max Planck Institute for the Study of Religious and Ethnic Diversity</em></li> + </ul> + </div> + </div> + </div> + </div> + <hr> <div class="row"> <div class="col"> diff --git a/scipost/templates/scipost/acad_field_portal.html b/scipost/templates/scipost/acad_field_portal.html new file mode 100644 index 0000000000000000000000000000000000000000..d793672a7135e044bd1dc71e0b9ddf1169a4467f --- /dev/null +++ b/scipost/templates/scipost/acad_field_portal.html @@ -0,0 +1,14 @@ +{% extends 'scipost/base.html' %} + +{% load render_bundle from webpack_loader %} + + +{% block content %} + + <h1>{{ acad_field.name }} portal</h1> + +{% endblock content %} + + +{% block footer_script %} +{% endblock footer_script %} diff --git a/scipost/templates/scipost/impact_factor.html b/scipost/templates/scipost/impact_factor.html new file mode 100644 index 0000000000000000000000000000000000000000..0827faf4a00c21b4cea3c66c98a7b537699ced26 --- /dev/null +++ b/scipost/templates/scipost/impact_factor.html @@ -0,0 +1,36 @@ +{% extends 'scipost/base.html' %} + +{% block meta_description %}{{ block.super }} Impact Factor{% endblock meta_description %} +{% block pagetitle %}: Impact Factor{% endblock pagetitle %} + +{% block breadcrumb_items %} + <span class="breadcrumb-item">Impact Factor</span> +{% endblock %} + + +{% block content %} + + <h1 class="highlight">SciPost and the Impact Factor</h1> + + <ul> + <li> + <strong>It greatly disfavours emerging publishing venues</strong> + <li> + <strong>Any feature it reflects is already outdated, at least for emerging Journals</strong>. + </li> + </ul> + + + <h3>Do not be misled by incorrect information from Google</h3> + <p> + A simple search for <em>"SciPost Physics impact factor"</em> (as of 2020-08-01) on Google brings + about a <em>"featured snippet"</em> with journal details + stating that the impact factor is 1.067. <strong>This is false information</strong>. + We have contacted Google about this, but have not received any acknowledgement from them, + let alone a proposal for a solution.</p> + <p> + This false information from Google is of course very damaging to our initiative, since most + people will use this search engine and not think twice about whether the info is correct or not. + </p> + +{% endblock %} diff --git a/scipost/templates/scipost/why.html b/scipost/templates/scipost/why.html new file mode 100644 index 0000000000000000000000000000000000000000..147d1452c0fbaa08583707c44ad23c693b0968d1 --- /dev/null +++ b/scipost/templates/scipost/why.html @@ -0,0 +1,45 @@ +{% extends 'scipost/base.html' %} + +{% block pagetitle %}: Why SciPost{% endblock pagetitle %} + +{% block breadcrumb_items %} + <span class="breadcrumb-item">Why SciPost</span> +{% endblock %} + + +{% block content %} + + <h1 class="highlight">Why SciPost?</h1> + + <ul> + <li>Info for scientists</li> + <li>Info for librarians/Open Access officers of universities and funding agencies</li> + </ul> + + <h2 class="highlight">TL;DR</h2> + <p> + There are plenty of reasons to switch to SciPost for your scientific publishing needs. + Here are a few. + </p> + <ul> + <li>SciPost is by-and-for scientists</li> + <li>We offer a fully-featured professional publishing infrastructure</li> + <li>All publications at SciPost carry open licenses (CC-BY by default)</li> + <li>Authors maintain copyright of their work</li> + <li>Our operations are entirely not-for-profit</li> + <li>SciPost does not charge any subscription or author fees (APCs)</li> + <li>We implement an industry-transforming, cost-slashing business model</li> + <li>SciPost has a resolutely international outlook</li> + <li>We offer a quality-focused family of Journals</li> + <li>Our open refereeing system provides robust and utility-focused pre-publication review</li> + <li>Referees get credit for their work through citable reports</li> + <li>All editorial decisions at all levels are taken by professionally active scientists</li> + <li>Decisions are based exclusively on scientific quality</li> + <li>SciPost is entirely free of undue business/profit-making secondary interests</li> + <li>Our infrastructure is built on Free(d) and Open Source Software</li> + <li>Our production facilities are "top of the class"</li> + <li>All publications are professionally archived for long-term posterity</li> + <li>SciPost is pushing for modernization of impact evaluation</li> + </ul> + +{% endblock %} diff --git a/series/templates/series/collection_detail.html b/series/templates/series/collection_detail.html index f5bfe8e51f5cddb20f72269c90ba41df2998051b..5f173a9ba2c3a6e4b1ca951f5288bfb91ee3faf0 100644 --- a/series/templates/series/collection_detail.html +++ b/series/templates/series/collection_detail.html @@ -63,17 +63,17 @@ <div class="col-12"> <h3 class="highlight">Submissions to this Collection</h3> <ul> - {% for submission in collection.submissions.accepted %} + {% for submission in active_submissions.accepted %} <li><strong class="text-success">accepted:</strong> <a href="{{ submission.get_absolute_url }}" target="_blank">{{ submission }}</a> </li> {% endfor %} - {% for submission in collection.submissions.revision_requested %} + {% for submission in active_submissions.revision_requested %} <li><strong class="text-primary">awaiting resubmission:</strong> <a href="{{ submission.get_absolute_url }}" target="_blank">{{ submission }}</a> </li> {% endfor %} - {% for submission in collection.submissions.actively_refereeing %} + {% for submission in active_submissions.actively_refereeing %} <li><strong class="text-warning">under refereeing:</strong> <a href="{{ submission.get_absolute_url }}" target="_blank">{{ submission }}</a> </li> diff --git a/start_celery_localJSC.sh b/start_celery_localJSC.sh new file mode 100755 index 0000000000000000000000000000000000000000..e58fcd810e1af9a18339ca76058d1496959a7b82 --- /dev/null +++ b/start_celery_localJSC.sh @@ -0,0 +1,11 @@ +#!/bin/bash +pkill -f bin/celery + +mkdir -p ./local_files/logs +touch ./local_files/logs/celery_worker.log +touch ./local_files/logs/celery_beat.log +touch ./local_files/logs/rabbitmq.log + +nohup rabbitmq-server > ./local_files/logs/rabbitmq.log 2>&1 & +nohup celery -A SciPost_v1 worker --loglevel=info -E > ./local_files/logs/celery_worker.log 2>&1 & +nohup celery -A SciPost_v1 beat --loglevel=info --scheduler django_celery_beat.schedulers:DatabaseScheduler > ./local_files/logs/celery_beat.log 2>&1 &