diff --git a/scipost/templates/scipost/about.html b/scipost/templates/scipost/about.html index 3dc00b19359f5f4017fc58d8a5f6e1d21f3bdf5f..46a9a7261958ec234939d77cbfc8b6f70f5d3b03 100644 --- a/scipost/templates/scipost/about.html +++ b/scipost/templates/scipost/about.html @@ -146,15 +146,17 @@ <hr> -{% for college, codes in object_list %} +{% if request.user.is_staff %} + {% for college, codes in object_list %} - <div class="row"> - <div class="col-12"> - <div class="panel"> - <h2 id="editorial_college_{{ college|lower }}">Editorial College ({{ college }})</h2> + <div class="row"> + <div class="col-12"> + <div class="panel"> + <h2 id="editorial_college_{{ college|lower }}">Editorial College ({{ college }})</h2> + </div> </div> </div> - </div> + {% if codes %} <div class="row"> @@ -166,20 +168,89 @@ {% endfor %} </div> </div> - </div> - {% endif %} + {% endif %} - <div class="row search-contributors" data-contributors="{{ college|lower }}"> - {% for fellowship in college.current_fellows|reorder_list_three %} - <div class="col-md-4 contributor-col"> - <div class="contributor"> - {% include 'scipost/_contributor_short.html' with contributor=fellowship.contributor %} + <div class="row search-contributors" data-contributors="{{ college|lower }}"> + {% for fellowship in college.current_fellows|reorder_list_three %} + <div class="col-md-4 contributor-col"> + <div class="contributor"> + {% include 'scipost/_contributor_short.html' with contributor=fellowship.contributor %} + </div> </div> - </div> - {% endfor %} + {% endfor %} + </div> + + {% endfor %} +{% else %} + <div class="row"> + <div class="col-12"> + <h2 class="highlight" id="editorial_college_physics">Editorial College (Physics)</h2> + </div> </div> -{% endfor %} + <div class="row"> + <div class="col-md-4"> + <ul> + <li>Prof. <a href="https://www.uni-tuebingen.de/en/faculties/faculty-of-science/departments/physics/institutes/institute-for-theoretical-physics/research-groups/andergassen-group.html">Sabine Andergassen</a><br/>(Tübingen)</li> + <li>Prof. <a href="http://www.physik.uni-wuerzburg.de/~assaad/">Fakher Assaad</a><br/>(Würzbrug)</li> + <li>Dr <a href="http://www.attaccalite.com">Claudio Attaccalite</a><br/>(Marseille)</li> + <li>Prof. <a href="https://denis114.wordpress.com">Denis Bartolo</a><br/>(ENS Lyon)</li> + <li>Prof. <a href="http://www.physik.unizh.ch/~lbaudis/index.html">Laura Baudis</a><br/>(Zurich)</li> + <li>Prof. <a href="http://www.lorentz.leidenuniv.nl/beenakker/">Carlo Beenakker</a><br/>(Leiden)</li> + <li>Prof. <a href="https://www.coulomb.univ-montp2.fr/perso/ludovic.berthier/">Ludovic Berthier</a><br/>(Montpellier)</li> + <li>Prof. <a href="http://ipht.cea.fr/Pisp/giulio.biroli/index_en.php">Giulio Biroli</a><br/>(CEA Saclay)</li> + <li>Prof. <a href="http://www.en.physik.uni-muenchen.de/personen/professoren/bloch/index.html">Immanuel Bloch</a><br/>(LMU Munich)</li> + <li>Prof. <a href="https://staff.fnwi.uva.nl/j.deboer/">Jan de Boer</a><br/>(U. van Amsterdam)</li> + <li>Prof. <a href="http://www.uva.nl/en/about-the-uva/organisation/staff-members/content/b/o/d.bonn/d.bonn.html">Daniel Bonn</a><br/>(U. van Amsterdam)</li> + <li>Prof. <a href="http://www.statphys.sissa.it/wordpress/?page_id=1731">Pasquale Calabrese</a><br/>(SISSA)</li> + <li>Prof. <a href="http://personalpages.to.infn.it/~caselle/index_en.html">Michele Caselle</a><br/>(Torino)</li> + <li>Prof. <a href="http://www.saha.ac.in/cmp/bikask.chakrabarti/bikas.html">Bikas Chakrabarti</a><br/>(Kolkata)</li> + <li>Prof. <a href="http://www.tcm.phy.cam.ac.uk/~nrc25/">Nigel Cooper</a><br/>(Cambridge)</li> + </ul> + </div> + <div class="col-md-4"> + <ul> + <li>Prof. <a href="http://physics.cornell.edu/csaba-csaki">Csaba Csaki</a><br/>(Cornell)</li> + <li>Prof. <a href="http://theory.tifr.res.in/~kedar/">Kedar Damle</a><br/>(TIFR Mumbai)</li> + <li>Prof. <a href="http://researchers.uq.edu.au/researcher/1134">Matthew Davis</a><br/>(U. of Queensland)</li> + <li>Prof. <a href="http://www-thphys.physics.ox.ac.uk/people/FabianEssler/">Fabian Essler</a><br/>(U. of Oxford)</li> + <li>Prof. <a href="http://www.pd.infn.it/~feruglio/">Ferruccio Feruglio</a><br/>(Padova, INFN)</li> + <li>Prof. <a href="http://www.ms.unimelb.edu.au/~jdgier@unimelb/">Jan de Gier</a><br/>(U. of Melbourne)</li> + <li>Prof. <a href="http://www.desy.de/about_desy/leading_scientists/beate_heinemann/index_eng.html">Beate Heinemann</a><br/>(DESY; Freiburg)</li> + <li>Prof. <a href="http://katzgraber.org">Helmut Katzgraber</a><br/>(Texas A&M)</li> + <li>Prof. <a href="https://web.physik.rwth-aachen.de/~mkraemer/">Michael Krämer</a><br/>(RWTH Aachen)</li> + <li>Prof. <a href="https://www.pmmh.espci.fr/~jorge/">Jorge Kurchan</a><br/>(<a href="https://www.pmmh.espci.fr/?-Home-">PMMH</a> Paris, CNRS)</li> + <li>Prof. <a href="https://vivo.brown.edu/display/glandsbe">Greg Landsberg</a><br/>(Brown Univ.)</li> + <li>Prof. <a href="https://www.mpg.de/6812374/chem_physik_fester_stoffe_mackenzie">Andrew P. MacKenzie</a><br/>(MPICPS Dresden, St-Andrews)</li> + <li>Prof. <a href="http://www.ens-lyon.fr/PHYSIQUE/presentation/annuaire/maillet-jean-michel">Jean Michel Maillet</a><br/>(ENS Lyon)</li> + <li>Prof. <a href="https://www.mpg.de/343435/physik_komplexer_systeme_wissM28">Roderich Moessner</a><br/>(MPIPKS Dresden)</li> + <li>Prof. <a href="https://www.uibk.ac.at/exphys/ultracold/people/christoph.naegerl/">Hanns-Christoph Nägerl</a><br/>(Innsbruck)</li> + <li>Prof. <a href="http://www.physics.miami.edu/~nepomechie/">Rafael Nepomechie</a><br/>(U. of Miami)</li> + </ul> + </div> + <div class="col-md-4"> + <ul> + <li>Prof. <a href="https://staff.fnwi.uva.nl/b.nienhuis/">Bernard Nienhuis</a><br/>(U. van Amsterdam)</li> + <!--<li>Prof. <a href="http://www.kip.uni-heidelberg.de/people/index.php?num=552">Markus Oberthaler</a><br/>(U. Heidelberg)</li>--> + <li>Prof. <a href="http://www.lpthe.jussieu.fr/~pioline/">Boris Pioline</a><br/>(LPTHE Jussieu)</li> + <li>Prof. <a href="https://www.uu.nl/staff/RHHGvanRoij/0">René van Roij</a><br/>(Utrecht)</li> + <li>Prof. <a href="http://www.thp.uni-koeln.de/rosch">Achim Rosch</a><br/>(U. of Cologne)</li> + <li>Prof. <a href="http://saleur.sandvox.net">Hubert Saleur</a><br/>(CEA Saclay/USC)</li> + <li>Prof. <a href="http://www.phy.ohiou.edu/people/faculty/sandler.html">Nancy Sandler</a><br/>(Ohio)</li> + <li>Dr. <a href="http://www.sussex.ac.uk/profiles/320359">Veronica Sanz</a><br/>(Sussex)</li> + <li>Prof. <a href="http://www-thphys.physics.ox.ac.uk/people/SubirSarkar/">Subir Sarkar</a><br/>(Oxford; Niels Bohr Institute)</li> + <li>Prof. <a href="https://staff.fnwi.uva.nl/c.j.m.schoutens/">Kareljan Schoutens</a><br/>(U. van Amsterdam)</li> + <li>Dr <a href="http://www.phys.ens.fr/~guilhem/">Guilhem Semerjian</a><br/>(ENS Paris)</li> + <li>Prof. <a href="http://www-thphys.physics.ox.ac.uk/people/SteveSimon/">Steve Simon</a><br/>(U. of Oxford)</li> + <li>Prof. <a href="http://bec.science.unitn.it/infm-bec/people/stringari.html">Sandro Stringari</a><br/>(Trento)</li> + <li>Prof. <a href="http://www.damtp.cam.ac.uk/user/tong/">David Tong</a><br/>(Cambridge)</li> + <li>Prof. <a href="http://www.physique.usherbrooke.ca/pages/en/node/3412">André-Marie Tremblay</a><br/>(Sherbrooke)</li> + <li>Prof. <a href="http://trivediresearch.org.ohio-state.edu">Nandini Trivedi</a><br/>(Ohio State U.)</li> + <li>Prof. <a href="http://vergassolalab.ucsd.edu">Massimo Vergassola</a><br/>(UC Sand Diego)</li> + </ul> + </div> + </div> +{% endif %} <br/> <div class="row"> diff --git a/submissions/views.py b/submissions/views.py index c0fc5b703691ef0174d41d696a6dd48258efe2fa..5717506fd3ca8e0398f031b5d6d197d02511b03e 100644 --- a/submissions/views.py +++ b/submissions/views.py @@ -302,7 +302,8 @@ def submission_detail(request, arxiv_identifier_w_vn_nr): is_author = False is_author_unchecked = False try: - recommendation = EICRecommendation.objects.get(submission=submission) + recommendation = (EICRecommendation.objects.get_for_user_in_pool(request.user) + .get(submission=submission)) except EICRecommendation.DoesNotExist: recommendation = None comments = submission.comment_set.all() @@ -383,6 +384,7 @@ def submissions_by_status(request, status): return render(request, 'scipost/error.html', {'errormessage': errormessage}) submissions_of_status = (Submission.objects.get_pool(request.user) .filter(status=status).order_by('-submission_date')) + context = { 'submissions_of_status': submissions_of_status, 'remark_form': RemarkForm() @@ -397,7 +399,7 @@ def add_remark(request, arxiv_identifier_w_vn_nr): With this method, an Editorial Fellow or Board Member is adding a remark on a Submission. """ - submission = get_object_or_404(Submission, + submission = get_object_or_404(Submission.objects.get_pool(request.user), arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) if request.method == 'POST': remark_form = RemarkForm(request.POST) @@ -419,7 +421,7 @@ def add_remark(request, arxiv_identifier_w_vn_nr): @login_required @permission_required('scipost.can_assign_submissions', raise_exception=True) def assign_submission(request, arxiv_identifier_w_vn_nr): - submission_to_assign = get_object_or_404(Submission, + submission_to_assign = get_object_or_404(Submission.objects.get_pool(request.user), arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) form = AssignSubmissionForm(discipline=submission_to_assign.discipline) context = {'submission_to_assign': submission_to_assign, @@ -430,7 +432,7 @@ def assign_submission(request, arxiv_identifier_w_vn_nr): @login_required @permission_required('scipost.can_assign_submissions', raise_exception=True) def assign_submission_ack(request, arxiv_identifier_w_vn_nr): - submission = get_object_or_404(Submission, + submission = get_object_or_404(Submission.objects.get_pool(request.user), arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) if request.method == 'POST': form = AssignSubmissionForm(request.POST, discipline=submission.discipline) @@ -515,7 +517,8 @@ def volunteer_as_EIC(request, arxiv_identifier_w_vn_nr): Called when a Fellow volunteers while perusing the submissions pool. This is an adapted version of the accept_or_decline_assignment_ack method. """ - submission = get_object_or_404(Submission, arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) + submission = get_object_or_404(Submission.objects.get_pool(request.user), + arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) errormessage = None if submission.status == 'assignment_failed': errormessage = 'This Submission has failed pre-screening and has been rejected.' @@ -566,7 +569,8 @@ def assignment_failed(request, arxiv_identifier_w_vn_nr): The submission is rejected. This method is called from pool.html by an Editorial Administrator. """ - submission = get_object_or_404(Submission, arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) + submission = get_object_or_404(Submission.objects.get_pool(request.user), + arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) if request.method == 'POST': form = ModifyPersonalMessageForm(request.POST) if form.is_valid(): @@ -618,10 +622,11 @@ def assignments(request): @permission_required_or_403('can_take_editorial_actions', (Submission, 'arxiv_identifier_w_vn_nr', 'arxiv_identifier_w_vn_nr')) def editorial_page(request, arxiv_identifier_w_vn_nr): - submission = get_object_or_404(Submission, arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) - other_versions = Submission.objects.filter( - arxiv_identifier_wo_vn_nr=submission.arxiv_identifier_wo_vn_nr - ).exclude(pk=submission.id) + submission = get_object_or_404(Submission.objects.get_pool(request.user), + arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) + other_versions = (Submission.objects + .filter(arxiv_identifier_wo_vn_nr=submission.arxiv_identifier_wo_vn_nr) + .exclude(pk=submission.id)) ref_invitations = RefereeInvitation.objects.filter(submission=submission) nr_reports_to_vet = (Report.objects .filter(status=0, submission__editor_in_charge=request.user.contributor) @@ -629,7 +634,8 @@ def editorial_page(request, arxiv_identifier_w_vn_nr): communications = (EditorialCommunication.objects .filter(submission=submission).order_by('timestamp')) try: - recommendation = EICRecommendation.objects.get(submission=submission) + recommendation = (EICRecommendation.objects.get_for_user_in_pool(request.user) + .get(submission=submission)) except EICRecommendation.DoesNotExist: recommendation = None context = {'submission': submission, @@ -646,7 +652,8 @@ def editorial_page(request, arxiv_identifier_w_vn_nr): @permission_required_or_403('can_take_editorial_actions', (Submission, 'arxiv_identifier_w_vn_nr', 'arxiv_identifier_w_vn_nr')) def select_referee(request, arxiv_identifier_w_vn_nr): - submission = get_object_or_404(Submission, arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) + submission = get_object_or_404(Submission.objects.get_pool(request.user), + arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) queryresults = '' if request.method == 'POST': ref_search_form = RefereeSelectForm(request.POST) @@ -691,7 +698,8 @@ def recruit_referee(request, arxiv_identifier_w_vn_nr): The pending refereeing invitation is then recognized upon registration, using the invitation token. """ - submission = get_object_or_404(Submission, arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) + submission = get_object_or_404(Submission.objects.get_pool(request.user), + arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) if request.method == 'POST': ref_recruit_form = RefereeRecruitmentForm(request.POST) if ref_recruit_form.is_valid(): @@ -747,7 +755,8 @@ def send_refereeing_invitation(request, arxiv_identifier_w_vn_nr, contributor_id For a referee who isn't a Contributor yet, the method recruit_referee above is called instead. """ - submission = get_object_or_404(Submission, arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) + submission = get_object_or_404(Submission.objects.get_pool(request.user), + arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) contributor = get_object_or_404(Contributor, pk=contributor_id) if not contributor.is_currently_available(): errormessage = ('This Contributor is marked as currently unavailable. ' @@ -843,7 +852,8 @@ def cancel_ref_invitation(request, arxiv_identifier_w_vn_nr, invitation_id): @permission_required_or_403('can_take_editorial_actions', (Submission, 'arxiv_identifier_w_vn_nr', 'arxiv_identifier_w_vn_nr')) def extend_refereeing_deadline(request, arxiv_identifier_w_vn_nr, days): - submission = get_object_or_404(Submission, arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) + submission = get_object_or_404(Submission.objects.get_pool(request.user), + arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) submission.reporting_deadline += datetime.timedelta(days=int(days)) submission.open_for_reporting = True submission.open_for_commenting = True @@ -858,7 +868,8 @@ def extend_refereeing_deadline(request, arxiv_identifier_w_vn_nr, days): @permission_required_or_403('can_take_editorial_actions', (Submission, 'arxiv_identifier_w_vn_nr', 'arxiv_identifier_w_vn_nr')) def set_refereeing_deadline(request, arxiv_identifier_w_vn_nr): - submission = get_object_or_404(Submission, arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) + submission = get_object_or_404(Submission.objects.get_pool(request.user), + arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) if request.method == 'POST': form = SetRefereeingDeadlineForm(request.POST) if form.is_valid(): @@ -894,7 +905,8 @@ def close_refereeing_round(request, arxiv_identifier_w_vn_nr): round off any replies to reports or comments before the editorial recommendation is formulated. """ - submission = get_object_or_404(Submission, arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) + submission = get_object_or_404(Submission.objects.get_pool(request.user), + arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) submission.open_for_reporting = False submission.open_for_commenting = False if submission.status == 'EICassigned': # only close if currently undergoing refereeing @@ -965,7 +977,8 @@ def communication(request, arxiv_identifier_w_vn_nr, comtype, referee_id=None): (Submission, 'arxiv_identifier_w_vn_nr', 'arxiv_identifier_w_vn_nr')) @transaction.atomic def eic_recommendation(request, arxiv_identifier_w_vn_nr): - submission = get_object_or_404(Submission, arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) + submission = get_object_or_404(Submission.objects.get_pool(request.user), + arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) if submission.status not in ['EICassigned', 'review_closed']: errormessage = ('This submission\'s current status is: ' + submission.get_status_display + '. ' @@ -1024,7 +1037,8 @@ def eic_recommendation(request, arxiv_identifier_w_vn_nr): @permission_required('scipost.can_referee', raise_exception=True) @transaction.atomic def submit_report(request, arxiv_identifier_w_vn_nr): - submission = get_object_or_404(Submission, arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) + submission = get_object_or_404(Submission.objects.get_pool(request.user), + arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) # Check whether the user can submit a report: is_author = request.user.contributor in submission.authors.all() is_author_unchecked = (not is_author and not @@ -1139,7 +1153,8 @@ def vet_submitted_report_ack(request, report_id): @permission_required('scipost.can_prepare_recommendations_for_voting', raise_exception=True) @transaction.atomic def prepare_for_voting(request, rec_id): - recommendation = get_object_or_404(EICRecommendation, id=rec_id) + recommendation = get_object_or_404((EICRecommendation.objects + .get_for_user_in_pool(request.user)), id=rec_id) Fellows_with_expertise = Contributor.objects.filter( user__groups__name__in=['Editorial College'], expertises__contains=[recommendation.submission.subject_area]) @@ -1194,7 +1209,8 @@ def prepare_for_voting(request, rec_id): @transaction.atomic def vote_on_rec(request, rec_id): if request.method == 'POST': - recommendation = get_object_or_404(EICRecommendation, id=rec_id) + recommendation = get_object_or_404((EICRecommendation.objects + .get_for_user_in_pool(request.user)), id=rec_id) form = RecommendationVoteForm(request.POST) if form.is_valid(): if form.cleaned_data['vote'] == 'agree': @@ -1227,8 +1243,9 @@ def remind_Fellows_to_vote(request): This method sends an email to all Fellow with pending voting duties. It must be called by and Editorial Administrator. """ - recommendations_undergoing_voting = (EICRecommendation.objects.filter( - submission__status__in=['put_to_EC_voting'])) + recommendations_undergoing_voting = (EICRecommendation.objects + .get_for_user_in_pool(request.user) + .filter(submission__status__in=['put_to_EC_voting'])) Fellow_emails = [] Fellow_names = [] for rec in recommendations_undergoing_voting: @@ -1259,7 +1276,8 @@ def fix_College_decision(request, rec_id): Terminates the voting on a Recommendation. Called by an Editorial Administrator. """ - recommendation = get_object_or_404(EICRecommendation, pk=rec_id) + recommendation = get_object_or_404((EICRecommendation.objects + .get_for_user_in_pool(request.user)), pk=rec_id) if recommendation.recommendation == 1: # Publish as Tier I (top 10%) recommendation.submission.status = 'accepted'