From cd7fa161db5661296680b5ec2e99e9829b1ec4b8 Mon Sep 17 00:00:00 2001 From: Jorran de Wit <jorrandewit@outlook.com> Date: Mon, 6 Mar 2017 08:21:03 +0100 Subject: [PATCH] Make needed changes for app moves --- scipost/admin.py | 80 +++-- scipost/feeds.py | 2 +- scipost/forms.py | 4 +- scipost/models.py | 473 ++++++++++++--------------- scipost/templates/scipost/index.html | 2 +- scipost/urls.py | 1 - scipost/views.py | 14 +- 7 files changed, 265 insertions(+), 311 deletions(-) diff --git a/scipost/admin.py b/scipost/admin.py index 799517e9b..ccb5be7f2 100644 --- a/scipost/admin.py +++ b/scipost/admin.py @@ -5,60 +5,74 @@ from django.contrib.auth.models import User, Permission from guardian.admin import GuardedModelAdmin -from scipost.models import * +from scipost.models import Contributor, Remark, List,\ + DraftInvitation, Node, Arc, Graph, Team, AffiliationObject,\ + SupportingPartner, SPBMembershipAgreement, RegistrationInvitation,\ + AuthorshipClaim, PrecookedEmail +from virtualmeetings.models import VGM, Feedback, Nomination, Motion + class ContributorInline(admin.StackedInline): model = Contributor + class UserAdmin(UserAdmin): inlines = [ ContributorInline, ] search_fields = ['last_name', 'email'] + admin.site.unregister(User) admin.site.register(User, UserAdmin) -class VGMAdmin(admin.ModelAdmin): - search_fields = ['start_date'] - -admin.site.register(VGM, VGMAdmin) - - -class FeedbackAdmin(admin.ModelAdmin): - search_fields = ['feedback', 'by'] - -admin.site.register(Feedback, FeedbackAdmin) - - -class NominationAdmin(admin.ModelAdmin): - search_fields = ['last_name', 'first_name', 'by'] - -admin.site.register(Nomination, NominationAdmin) - - -class MotionAdmin(admin.ModelAdmin): - search_fields = ['background', 'motion', 'put_forward_by'] - -admin.site.register(Motion, MotionAdmin) +# class VGMAdmin(admin.ModelAdmin): +# search_fields = ['start_date'] +# +# +# admin.site.register(VGM, VGMAdmin) +# +# +# class FeedbackAdmin(admin.ModelAdmin): +# search_fields = ['feedback', 'by'] +# +# +# admin.site.register(Feedback, FeedbackAdmin) +# +# +# class NominationAdmin(admin.ModelAdmin): +# search_fields = ['last_name', 'first_name', 'by'] +# +# +# admin.site.register(Nomination, NominationAdmin) +# +# +# class MotionAdmin(admin.ModelAdmin): +# search_fields = ['background', 'motion', 'put_forward_by'] +# +# +# admin.site.register(Motion, MotionAdmin) class RemarkAdmin(admin.ModelAdmin): search_fields = ['contributor', 'remark'] + admin.site.register(Remark, RemarkAdmin) class DraftInvitationAdmin(admin.ModelAdmin): search_fields = ['first_name', 'last_name', 'email', 'processed'] + admin.site.register(DraftInvitation, DraftInvitationAdmin) class RegistrationInvitationAdmin(admin.ModelAdmin): search_fields = ['first_name', 'last_name', 'email', 'invitation_key'] + admin.site.register(RegistrationInvitation, RegistrationInvitationAdmin) @@ -69,34 +83,26 @@ admin.site.register(Permission) class PrecookedEmailAdmin(admin.ModelAdmin): search_fields = ['email_subject', 'email_text', 'emailed_to'] -admin.site.register(PrecookedEmail, PrecookedEmailAdmin) - - -class NewsItemAdmin(admin.ModelAdmin): - search_fields = ['blurb', 'followup_link_text'] -admin.site.register(NewsItem, NewsItemAdmin) +admin.site.register(PrecookedEmail, PrecookedEmailAdmin) class ListAdmin(GuardedModelAdmin): search_fields = ['owner', 'title'] -admin.site.register(List, ListAdmin) +admin.site.register(List, ListAdmin) admin.site.register(Team) -#admin.site.register(Graph) - -#admin.site.register(Node) - -#admin.site.register(Arc) class NodeInline(admin.StackedInline): model = Node + class ArcInline(admin.StackedInline): model = Arc + class GraphAdmin(GuardedModelAdmin): inlines = [ NodeInline, @@ -104,18 +110,21 @@ class GraphAdmin(GuardedModelAdmin): ] search_fields = ['owner___user__last_name', 'title'] + admin.site.register(Graph, GraphAdmin) class AffiliationObjectAdmin(admin.ModelAdmin): search_fields = ['country', 'institution', 'subunit'] + admin.site.register(AffiliationObject, AffiliationObjectAdmin) class SPBMembershipAgreementInline(admin.StackedInline): model = SPBMembershipAgreement + class SupportingPartnerAdmin(admin.ModelAdmin): search_fields = ['institution', 'institution_acronym', 'institution_address', 'contact_person'] @@ -123,4 +132,5 @@ class SupportingPartnerAdmin(admin.ModelAdmin): SPBMembershipAgreementInline, ] + admin.site.register(SupportingPartner, SupportingPartnerAdmin) diff --git a/scipost/feeds.py b/scipost/feeds.py index 297ea1c77..29ea0a31d 100644 --- a/scipost/feeds.py +++ b/scipost/feeds.py @@ -5,10 +5,10 @@ from django.utils.feedgenerator import Atom1Feed from django.core.urlresolvers import reverse from django.db.models import Q -from scipost.models import NewsItem from scipost.models import subject_areas_dict from comments.models import Comment from journals.models import Publication +from news.models import NewsItem from submissions.models import Submission, SUBMISSION_STATUS_PUBLICLY_INVISIBLE diff --git a/scipost/forms.py b/scipost/forms.py index 7c628d2f2..04f36192d 100644 --- a/scipost/forms.py +++ b/scipost/forms.py @@ -16,8 +16,8 @@ from .models import TITLE_CHOICES, SCIPOST_FROM_ADDRESSES, ARC_LENGTHS,\ Contributor, DraftInvitation, RegistrationInvitation,\ SupportingPartner, SPBMembershipAgreement,\ UnavailabilityPeriod, PrecookedEmail,\ - List, Team, Graph, Node,\ - Feedback, Nomination, Motion + List, Team, Graph, Node +from virtualmeetings.models import Feedback, Nomination, Motion from journals.models import Publication from submissions.models import SUBMISSION_STATUS_PUBLICLY_UNLISTED diff --git a/scipost/models.py b/scipost/models.py index a29a48f14..4bde7f7af 100644 --- a/scipost/models.py +++ b/scipost/models.py @@ -251,11 +251,11 @@ class UnavailabilityPeriod(models.Model): class Remark(models.Model): contributor = models.ForeignKey(Contributor, on_delete=models.CASCADE) - feedback = models.ForeignKey('scipost.Feedback', on_delete=models.CASCADE, + feedback = models.ForeignKey('virtualmeetings.Feedback', on_delete=models.CASCADE, blank=True, null=True) - nomination = models.ForeignKey('scipost.Nomination', on_delete=models.CASCADE, + nomination = models.ForeignKey('virtualmeetings.Nomination', on_delete=models.CASCADE, blank=True, null=True) - motion = models.ForeignKey('scipost.Motion', on_delete=models.CASCADE, + motion = models.ForeignKey('virtualmeetings.Motion', on_delete=models.CASCADE, blank=True, null=True) submission = models.ForeignKey('submissions.Submission', on_delete=models.CASCADE, @@ -428,269 +428,218 @@ class PrecookedEmail(models.Model): return self.email_subject -############# -# NewsItems # -############# - -class NewsItem(models.Model): - date = models.DateField() - headline = models.CharField(max_length=300) - blurb = models.TextField() - followup_link = models.URLField(blank=True, null=True) - followup_link_text = models.CharField(max_length=300, blank=True, null=True) - - def __str__(self): - return self.date.strftime('%Y-%m-%d') + ', ' + self.headline - - def descriptor_full(self): - """ For News page. """ - descriptor = ('<div class="flex-greybox640">' - '<h3 class="NewsHeadline">{{ headline }}</h3>' - '<p>{{ date }}</p>' - '<p>{{ blurb }}</p>' - ) - context = Context({'headline': self.headline, - 'date': self.date.strftime('%Y-%m-%d'), - 'blurb': self.blurb, }) - if self.followup_link: - descriptor += '<p><a href="{{ followup_link }}">{{ followup_link_text }}</a></p>' - context['followup_link'] = self.followup_link - context['followup_link_text'] = self.followup_link_text - descriptor += '</div>' - template = Template(descriptor) - return template.render(context) - - def descriptor_small(self): - """ For index page. """ - descriptor = ('<h3 class="NewsHeadline">{{ headline }}</h3>' - '<div class="p-2">' - '<p>{{ date }}</p>' - '<p>{{ blurb }}</p>' - ) - context = Context({'headline': self.headline, - 'date': self.date.strftime('%Y-%m-%d'), - 'blurb': self.blurb, }) - if self.followup_link: - descriptor += '<p><a href="{{ followup_link }}">{{ followup_link_text }}</a></p>' - context['followup_link'] = self.followup_link - context['followup_link_text'] = self.followup_link_text - descriptor += '</div>' - template = Template(descriptor) - return template.render(context) - - ##################################### # Virtual General Meetings, Motions # ##################################### -class VGM(models.Model): - """ - Each year, a Virtual General Meeting is held during which operations at - SciPost are discussed. A VGM can be attended by Administrators, - Advisory Board members and Editorial Fellows. - """ - start_date = models.DateField() - end_date = models.DateField() - information = models.TextField(default='') - - def __str__(self): - return 'From %s to %s' % (self.start_date.strftime('%Y-%m-%d'), - self.end_date.strftime('%Y-%m-%d')) - - -class Feedback(models.Model): - """ - Feedback, suggestion or criticism on any aspect of SciPost. - """ - VGM = models.ForeignKey(VGM, blank=True, null=True) - by = models.ForeignKey(Contributor) - date = models.DateField() - feedback = models.TextField() - - def __str__(self): - return '%s: %s' % (self.by, self.feedback[:50]) - - def as_li(self): - html = ('<div class="Feedback">' - '<h3><em>by {{ by }}</em></h3>' - '<p>{{ feedback|linebreaks }}</p>' - '</div>') - context = Context({ - 'feedback': self.feedback, - 'by': '%s %s' % (self.by.user.first_name, - self.by.user.last_name)}) - template = Template(html) - return template.render(context) - - -class Nomination(models.Model): - """ - Nomination to an Editorial Fellowship. - """ - VGM = models.ForeignKey(VGM, blank=True, null=True) - by = models.ForeignKey(Contributor) - date = models.DateField() - first_name = models.CharField(max_length=30, default='') - last_name = models.CharField(max_length=30, default='') - discipline = models.CharField(max_length=20, choices=SCIPOST_DISCIPLINES, - default='physics', verbose_name='Main discipline') - expertises = ChoiceArrayField( - models.CharField(max_length=10, choices=SCIPOST_SUBJECT_AREAS), - blank=True, null=True) - webpage = models.URLField(default='') - nr_A = models.PositiveIntegerField(default=0) - in_agreement = models.ManyToManyField(Contributor, - related_name='in_agreement_with_nomination', blank=True) - nr_N = models.PositiveIntegerField(default=0) - in_notsure = models.ManyToManyField(Contributor, - related_name='in_notsure_with_nomination', blank=True) - nr_D = models.PositiveIntegerField(default=0) - in_disagreement = models.ManyToManyField(Contributor, - related_name='in_disagreement_with_nomination', - blank=True) - voting_deadline = models.DateTimeField('voting deadline', default=timezone.now) - accepted = models.NullBooleanField() - - def __str__(self): - return '%s %s (nominated by %s)' % (self.first_name, - self.last_name, - self.by) - - def as_li(self): - html = ('<div class="Nomination" id="nomination_id{{ nomination_id }}" ' - 'style="background-color: #eeeeee;">' - '<div class="row">' - '<div class="col-4">' - '<h3><em> {{ name }}</em></h3>' - '<p>Nominated by {{ proposer }}</p>' - '</div>' - '<div class="col-4">' - '<p><a href="{{ webpage }}">Webpage</a></p>' - '<p>Discipline: {{ discipline }}</p></div>' - '<div class="col-4"><p>expertise:<ul>') - for exp in self.expertises: - html += '<li>%s</li>' % subject_areas_dict[exp] - html += '</ul></div></div></div>' - context = Context({ - 'nomination_id': self.id, - 'proposer': '%s %s' % (self.by.user.first_name, - self.by.user.last_name), - 'name': self.first_name + ' ' + self.last_name, - 'discipline': disciplines_dict[self.discipline], - 'webpage': self.webpage, - }) - template = Template(html) - return template.render(context) - - def votes_as_ul(self): - template = Template(''' - <ul class="opinionsDisplay"> - <li style="background-color: #000099">Agree {{ nr_A }}</li> - <li style="background-color: #555555">Abstain {{ nr_N }}</li> - <li style="background-color: #990000">Disagree {{ nr_D }}</li> - </ul> - ''') - context = Context({'nr_A': self.nr_A, 'nr_N': self.nr_N, 'nr_D': self.nr_D}) - return template.render(context) - - def update_votes(self, contributor_id, vote): - contributor = get_object_or_404(Contributor, pk=contributor_id) - self.in_agreement.remove(contributor) - self.in_notsure.remove(contributor) - self.in_disagreement.remove(contributor) - if vote == 'A': - self.in_agreement.add(contributor) - elif vote == 'N': - self.in_notsure.add(contributor) - elif vote == 'D': - self.in_disagreement.add(contributor) - self.nr_A = self.in_agreement.count() - self.nr_N = self.in_notsure.count() - self.nr_D = self.in_disagreement.count() - self.save() - - -MOTION_CATEGORIES = ( - ('ByLawAmend', 'Amendments to by-laws'), - ('Workflow', 'Editorial workflow improvements'), - ('General', 'General'), -) -motion_categories_dict = dict(MOTION_CATEGORIES) - - -class Motion(models.Model): - """ - Motion instances are put forward to the Advisory Board and Editorial College - and detail suggested changes to rules, procedures etc. - They are meant to be voted on at the annual VGM. - """ - category = models.CharField(max_length=10, choices=MOTION_CATEGORIES, - default='General') - VGM = models.ForeignKey(VGM, blank=True, null=True) - background = models.TextField() - motion = models.TextField() - put_forward_by = models.ForeignKey(Contributor) - date = models.DateField() - nr_A = models.PositiveIntegerField(default=0) - in_agreement = models.ManyToManyField(Contributor, - related_name='in_agreement_with_motion', blank=True) - nr_N = models.PositiveIntegerField(default=0) - in_notsure = models.ManyToManyField(Contributor, - related_name='in_notsure_with_motion', blank=True) - nr_D = models.PositiveIntegerField(default=0) - in_disagreement = models.ManyToManyField(Contributor, - related_name='in_disagreement_with_motion', - blank=True) - voting_deadline = models.DateTimeField('voting deadline', default=timezone.now) - accepted = models.NullBooleanField() - - def __str__(self): - return self.motion[:32] - - def as_li(self): - html = ('<div class="Motion" id="motion_id{{ motion_id }}">' - '<h3><em>Motion {{ motion_id }}, put forward by {{ proposer }}</em></h3>' - '<h3>Background:</h3><p>{{ background|linebreaks }}</p>' - '<h3>Motion:</h3>' - '<div class="flex-container"><div class="flex-greybox">' - '<p style="background-color: #eeeeee;">{{ motion|linebreaks }}</p>' - '</div></div>' - '</div>') - context = Context({ - 'motion_id': self.id, - 'proposer': '%s %s' % (self.put_forward_by.user.first_name, - self.put_forward_by.user.last_name), - 'background': self.background, - 'motion': self.motion, }) - template = Template(html) - return template.render(context) - - def votes_as_ul(self): - template = Template(''' - <ul class="opinionsDisplay"> - <li style="background-color: #000099">Agree {{ nr_A }}</li> - <li style="background-color: #555555">Abstain {{ nr_N }}</li> - <li style="background-color: #990000">Disagree {{ nr_D }}</li> - </ul> - ''') - context = Context({'nr_A': self.nr_A, 'nr_N': self.nr_N, 'nr_D': self.nr_D}) - return template.render(context) - - def update_votes(self, contributor_id, vote): - contributor = get_object_or_404(Contributor, pk=contributor_id) - self.in_agreement.remove(contributor) - self.in_notsure.remove(contributor) - self.in_disagreement.remove(contributor) - if vote == 'A': - self.in_agreement.add(contributor) - elif vote == 'N': - self.in_notsure.add(contributor) - elif vote == 'D': - self.in_disagreement.add(contributor) - self.nr_A = self.in_agreement.count() - self.nr_N = self.in_notsure.count() - self.nr_D = self.in_disagreement.count() - self.save() +# class VGM(models.Model): +# """ +# Each year, a Virtual General Meeting is held during which operations at +# SciPost are discussed. A VGM can be attended by Administrators, +# Advisory Board members and Editorial Fellows. +# """ +# start_date = models.DateField() +# end_date = models.DateField() +# information = models.TextField(default='') +# +# def __str__(self): +# return 'From %s to %s' % (self.start_date.strftime('%Y-%m-%d'), +# self.end_date.strftime('%Y-%m-%d')) +# +# +# class Feedback(models.Model): +# """ +# Feedback, suggestion or criticism on any aspect of SciPost. +# """ +# VGM = models.ForeignKey(VGM, blank=True, null=True) +# by = models.ForeignKey(Contributor) +# date = models.DateField() +# feedback = models.TextField() +# +# def __str__(self): +# return '%s: %s' % (self.by, self.feedback[:50]) +# +# def as_li(self): +# html = ('<div class="Feedback">' +# '<h3><em>by {{ by }}</em></h3>' +# '<p>{{ feedback|linebreaks }}</p>' +# '</div>') +# context = Context({ +# 'feedback': self.feedback, +# 'by': '%s %s' % (self.by.user.first_name, +# self.by.user.last_name)}) +# template = Template(html) +# return template.render(context) +# +# +# class Nomination(models.Model): +# """ +# Nomination to an Editorial Fellowship. +# """ +# VGM = models.ForeignKey(VGM, blank=True, null=True) +# by = models.ForeignKey(Contributor) +# date = models.DateField() +# first_name = models.CharField(max_length=30, default='') +# last_name = models.CharField(max_length=30, default='') +# discipline = models.CharField(max_length=20, choices=SCIPOST_DISCIPLINES, +# default='physics', verbose_name='Main discipline') +# expertises = ChoiceArrayField( +# models.CharField(max_length=10, choices=SCIPOST_SUBJECT_AREAS), +# blank=True, null=True) +# webpage = models.URLField(default='') +# nr_A = models.PositiveIntegerField(default=0) +# in_agreement = models.ManyToManyField(Contributor, +# related_name='in_agreement_with_nomination', blank=True) +# nr_N = models.PositiveIntegerField(default=0) +# in_notsure = models.ManyToManyField(Contributor, +# related_name='in_notsure_with_nomination', blank=True) +# nr_D = models.PositiveIntegerField(default=0) +# in_disagreement = models.ManyToManyField(Contributor, +# related_name='in_disagreement_with_nomination', +# blank=True) +# voting_deadline = models.DateTimeField('voting deadline', default=timezone.now) +# accepted = models.NullBooleanField() +# +# def __str__(self): +# return '%s %s (nominated by %s)' % (self.first_name, +# self.last_name, +# self.by) +# +# def as_li(self): +# html = ('<div class="Nomination" id="nomination_id{{ nomination_id }}" ' +# 'style="background-color: #eeeeee;">' +# '<div class="row">' +# '<div class="col-4">' +# '<h3><em> {{ name }}</em></h3>' +# '<p>Nominated by {{ proposer }}</p>' +# '</div>' +# '<div class="col-4">' +# '<p><a href="{{ webpage }}">Webpage</a></p>' +# '<p>Discipline: {{ discipline }}</p></div>' +# '<div class="col-4"><p>expertise:<ul>') +# for exp in self.expertises: +# html += '<li>%s</li>' % subject_areas_dict[exp] +# html += '</ul></div></div></div>' +# context = Context({ +# 'nomination_id': self.id, +# 'proposer': '%s %s' % (self.by.user.first_name, +# self.by.user.last_name), +# 'name': self.first_name + ' ' + self.last_name, +# 'discipline': disciplines_dict[self.discipline], +# 'webpage': self.webpage, +# }) +# template = Template(html) +# return template.render(context) +# +# def votes_as_ul(self): +# template = Template(''' +# <ul class="opinionsDisplay"> +# <li style="background-color: #000099">Agree {{ nr_A }}</li> +# <li style="background-color: #555555">Abstain {{ nr_N }}</li> +# <li style="background-color: #990000">Disagree {{ nr_D }}</li> +# </ul> +# ''') +# context = Context({'nr_A': self.nr_A, 'nr_N': self.nr_N, 'nr_D': self.nr_D}) +# return template.render(context) +# +# def update_votes(self, contributor_id, vote): +# contributor = get_object_or_404(Contributor, pk=contributor_id) +# self.in_agreement.remove(contributor) +# self.in_notsure.remove(contributor) +# self.in_disagreement.remove(contributor) +# if vote == 'A': +# self.in_agreement.add(contributor) +# elif vote == 'N': +# self.in_notsure.add(contributor) +# elif vote == 'D': +# self.in_disagreement.add(contributor) +# self.nr_A = self.in_agreement.count() +# self.nr_N = self.in_notsure.count() +# self.nr_D = self.in_disagreement.count() +# self.save() +# +# +# MOTION_CATEGORIES = ( +# ('ByLawAmend', 'Amendments to by-laws'), +# ('Workflow', 'Editorial workflow improvements'), +# ('General', 'General'), +# ) +# motion_categories_dict = dict(MOTION_CATEGORIES) +# +# +# class Motion(models.Model): +# """ +# Motion instances are put forward to the Advisory Board and Editorial College +# and detail suggested changes to rules, procedures etc. +# They are meant to be voted on at the annual VGM. +# """ +# category = models.CharField(max_length=10, choices=MOTION_CATEGORIES, +# default='General') +# VGM = models.ForeignKey(VGM, blank=True, null=True) +# background = models.TextField() +# motion = models.TextField() +# put_forward_by = models.ForeignKey(Contributor) +# date = models.DateField() +# nr_A = models.PositiveIntegerField(default=0) +# in_agreement = models.ManyToManyField(Contributor, +# related_name='in_agreement_with_motion', blank=True) +# nr_N = models.PositiveIntegerField(default=0) +# in_notsure = models.ManyToManyField(Contributor, +# related_name='in_notsure_with_motion', blank=True) +# nr_D = models.PositiveIntegerField(default=0) +# in_disagreement = models.ManyToManyField(Contributor, +# related_name='in_disagreement_with_motion', +# blank=True) +# voting_deadline = models.DateTimeField('voting deadline', default=timezone.now) +# accepted = models.NullBooleanField() +# +# def __str__(self): +# return self.motion[:32] +# +# def as_li(self): +# html = ('<div class="Motion" id="motion_id{{ motion_id }}">' +# '<h3><em>Motion {{ motion_id }}, put forward by {{ proposer }}</em></h3>' +# '<h3>Background:</h3><p>{{ background|linebreaks }}</p>' +# '<h3>Motion:</h3>' +# '<div class="flex-container"><div class="flex-greybox">' +# '<p style="background-color: #eeeeee;">{{ motion|linebreaks }}</p>' +# '</div></div>' +# '</div>') +# context = Context({ +# 'motion_id': self.id, +# 'proposer': '%s %s' % (self.put_forward_by.user.first_name, +# self.put_forward_by.user.last_name), +# 'background': self.background, +# 'motion': self.motion, }) +# template = Template(html) +# return template.render(context) +# +# def votes_as_ul(self): +# template = Template(''' +# <ul class="opinionsDisplay"> +# <li style="background-color: #000099">Agree {{ nr_A }}</li> +# <li style="background-color: #555555">Abstain {{ nr_N }}</li> +# <li style="background-color: #990000">Disagree {{ nr_D }}</li> +# </ul> +# ''') +# context = Context({'nr_A': self.nr_A, 'nr_N': self.nr_N, 'nr_D': self.nr_D}) +# return template.render(context) +# +# def update_votes(self, contributor_id, vote): +# contributor = get_object_or_404(Contributor, pk=contributor_id) +# self.in_agreement.remove(contributor) +# self.in_notsure.remove(contributor) +# self.in_disagreement.remove(contributor) +# if vote == 'A': +# self.in_agreement.add(contributor) +# elif vote == 'N': +# self.in_notsure.add(contributor) +# elif vote == 'D': +# self.in_disagreement.add(contributor) +# self.nr_A = self.in_agreement.count() +# self.nr_N = self.in_notsure.count() +# self.nr_D = self.in_disagreement.count() +# self.save() ######### diff --git a/scipost/templates/scipost/index.html b/scipost/templates/scipost/index.html index 8cf87d0cd..13a32d48d 100644 --- a/scipost/templates/scipost/index.html +++ b/scipost/templates/scipost/index.html @@ -9,7 +9,7 @@ {% if latest_newsitems %} <div class="col-md-6 {% if user.is_authenticated %}col-lg-4{% else %}col-lg-3{% endif %}"> <div class="panel"> - <h1><a href="{% url 'scipost:news' %}">News</a><a style="float: right;" href="{% url 'scipost:feeds' %}"><img src="{% static 'scipost/images/feed-icon-14x14.png' %}" alt="Feed logo" width="14"></a></h1> + <h1><a href="{% url 'news:news' %}">News</a><a style="float: right;" href="{% url 'scipost:feeds' %}"><img src="{% static 'scipost/images/feed-icon-14x14.png' %}" alt="Feed logo" width="14"></a></h1> <p>Latest news and announcements.</p> {# <hr class="hr6"/>#} <ul class="NewsItemsList"> diff --git a/scipost/urls.py b/scipost/urls.py index e3b8c5731..1ed0f1b6a 100644 --- a/scipost/urls.py +++ b/scipost/urls.py @@ -17,7 +17,6 @@ urlpatterns = [ name='acknowledgement'), ## Info - url(r'^news$', views.news, name='news'), url(r'^about$', TemplateView.as_view(template_name='scipost/about.html'), name='about'), url(r'^call$', TemplateView.as_view(template_name='scipost/call.html'), name='call'), url(r'^foundation$', TemplateView.as_view(template_name='scipost/foundation.html'), diff --git a/scipost/views.py b/scipost/views.py index 78635541d..496ceb09a 100644 --- a/scipost/views.py +++ b/scipost/views.py @@ -27,11 +27,10 @@ from guardian.shortcuts import assign_perm from .constants import SCIPOST_SUBJECT_AREAS from .models import Contributor, CitationNotification, UnavailabilityPeriod,\ - DraftInvitation, RegistrationInvitation, NewsItem,\ + DraftInvitation, RegistrationInvitation, Remark,\ List, Team, Graph, Node, Arc,\ title_dict, SciPost_from_addresses_dict,\ - AuthorshipClaim, SupportingPartner, SPBMembershipAgreement,\ - VGM, Feedback, Nomination, Remark, Motion, motion_categories_dict + AuthorshipClaim, SupportingPartner, SPBMembershipAgreement from .forms import AuthenticationForm, DraftInvitationForm, UnavailabilityPeriodForm,\ RegistrationForm, RegistrationInvitationForm, AuthorshipClaimForm,\ ModifyPersonalMessageForm, SearchForm, VetRegistrationForm, reg_ref_dict,\ @@ -48,12 +47,15 @@ from commentaries.models import Commentary from commentaries.forms import CommentarySearchForm from comments.models import Comment from journals.models import Publication +from news.models import NewsItem from submissions.models import SUBMISSION_STATUS_PUBLICLY_UNLISTED from submissions.models import Submission, EditorialAssignment from submissions.models import RefereeInvitation, Report, EICRecommendation from submissions.forms import SubmissionSearchForm from theses.models import ThesisLink from theses.forms import ThesisLinkSearchForm +from virtualmeetings.models import VGM, Feedback, Nomination, Motion +from virtualmeetings.constants import motion_categories_dict ############## @@ -232,12 +234,6 @@ def base(request): return render(request, 'scipost/base.html') -def news(request): - newsitems = NewsItem.objects.all().order_by('-date') - context = {'newsitems': newsitems} - return render(request, 'scipost/news.html', context) - - def feeds(request): context = {'subject_areas_physics': SCIPOST_SUBJECT_AREAS[0][1]} return render(request, 'scipost/feeds.html', context) -- GitLab