From e2ac321a8fce388904f00ebd49c56f6eb9354127 Mon Sep 17 00:00:00 2001 From: "J.-S. Caux" <J.S.Caux@uva.nl> Date: Fri, 5 Apr 2019 21:04:03 +0200 Subject: [PATCH] Remove app virtualmeetings, step 1: remove models, views etc --- scipost/forms.py | 4 - scipost/migrations/0024_auto_20190405_2102.py | 27 ++ scipost/models.py | 6 - virtualmeetings/admin.py | 106 ++--- virtualmeetings/apps.py | 6 +- virtualmeetings/forms.py | 54 +-- .../commands/transfer_old_motion_to_new.py | 64 +-- .../migrations/0003_auto_20190405_2102.py | 76 ++++ virtualmeetings/models.py | 266 ++++++------ virtualmeetings/urls.py | 32 +- virtualmeetings/views.py | 378 +++++++++--------- 11 files changed, 556 insertions(+), 463 deletions(-) create mode 100644 scipost/migrations/0024_auto_20190405_2102.py create mode 100644 virtualmeetings/migrations/0003_auto_20190405_2102.py diff --git a/scipost/forms.py b/scipost/forms.py index 19d089529..ab756afd3 100644 --- a/scipost/forms.py +++ b/scipost/forms.py @@ -45,7 +45,6 @@ from profiles.models import Profile, ProfileEmail, Affiliation from submissions.models import Submission, EditorialAssignment, RefereeInvitation, Report, \ EditorialCommunication, EICRecommendation from theses.models import ThesisLink -from virtualmeetings.models import Feedback, Nomination, Motion REGISTRATION_REFUSAL_CHOICES = ( @@ -566,9 +565,6 @@ class ContributorMergeForm(forms.Form): referee=contrib_from).update(referee=contrib_into) ThesisLink.objects.filter(requested_by=contrib_from).update(requested_by=contrib_into) ThesisLink.objects.filter(vetted_by=contrib_from).update(vetted_by=contrib_into) - Feedback.objects.filter(by=contrib_from).update(by=contrib_into) - Nomination.objects.filter(by=contrib_from).update(by=contrib_into) - Motion.objects.filter(put_forward_by=contrib_from).update(put_forward_by=contrib_into) # Step 3: update all ManyToMany commentaries = Commentary.objects.filter(authors__in=[contrib_from,]).all() diff --git a/scipost/migrations/0024_auto_20190405_2102.py b/scipost/migrations/0024_auto_20190405_2102.py new file mode 100644 index 000000000..2d841ad2a --- /dev/null +++ b/scipost/migrations/0024_auto_20190405_2102.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.4 on 2019-04-05 19:02 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('scipost', '0023_totpdevice'), + ] + + operations = [ + migrations.RemoveField( + model_name='remark', + name='feedback', + ), + migrations.RemoveField( + model_name='remark', + name='motion', + ), + migrations.RemoveField( + model_name='remark', + name='nomination', + ), + ] diff --git a/scipost/models.py b/scipost/models.py index 9f5067f35..f814698ec 100644 --- a/scipost/models.py +++ b/scipost/models.py @@ -192,12 +192,6 @@ class Remark(models.Model): """A form of non-public communication for VGMs and/or submissions and recommendations.""" contributor = models.ForeignKey(Contributor, on_delete=models.CASCADE) - feedback = models.ForeignKey('virtualmeetings.Feedback', on_delete=models.CASCADE, - blank=True, null=True) - nomination = models.ForeignKey('virtualmeetings.Nomination', on_delete=models.CASCADE, - blank=True, null=True) - motion = models.ForeignKey('virtualmeetings.Motion', on_delete=models.CASCADE, - blank=True, null=True) submission = models.ForeignKey('submissions.Submission', on_delete=models.CASCADE, blank=True, null=True) diff --git a/virtualmeetings/admin.py b/virtualmeetings/admin.py index e093092cf..efdacfd9d 100644 --- a/virtualmeetings/admin.py +++ b/virtualmeetings/admin.py @@ -6,76 +6,76 @@ from django.contrib import admin from django import forms -from .models import VGM, Feedback, Nomination, Motion +# from .models import VGM, Feedback, Nomination, Motion from scipost.models import Contributor -class VGMAdmin(admin.ModelAdmin): - search_fields = ['start_date'] +# class VGMAdmin(admin.ModelAdmin): +# search_fields = ['start_date'] -admin.site.register(VGM, VGMAdmin) +# admin.site.register(VGM, VGMAdmin) -class FeedbackAdmin(admin.ModelAdmin): - search_fields = ['feedback', 'by'] +# class FeedbackAdmin(admin.ModelAdmin): +# search_fields = ['feedback', 'by'] -admin.site.register(Feedback, FeedbackAdmin) +# admin.site.register(Feedback, FeedbackAdmin) -class NominationAdminForm(forms.ModelForm): - in_agreement = forms.ModelMultipleChoiceField( - required=False, - queryset=Contributor.objects.filter( - user__groups__name__in=['Editorial College'], - ).order_by('user__last_name')) - in_notsure = forms.ModelMultipleChoiceField( - required=False, - queryset=Contributor.objects.filter( - user__groups__name__in=['Editorial College'], - ).order_by('user__last_name')) - in_disagreement = forms.ModelMultipleChoiceField( - required=False, - queryset=Contributor.objects.filter( - user__groups__name__in=['Editorial College'], - ).order_by('user__last_name')) +# class NominationAdminForm(forms.ModelForm): +# in_agreement = forms.ModelMultipleChoiceField( +# required=False, +# queryset=Contributor.objects.filter( +# user__groups__name__in=['Editorial College'], +# ).order_by('user__last_name')) +# in_notsure = forms.ModelMultipleChoiceField( +# required=False, +# queryset=Contributor.objects.filter( +# user__groups__name__in=['Editorial College'], +# ).order_by('user__last_name')) +# in_disagreement = forms.ModelMultipleChoiceField( +# required=False, +# queryset=Contributor.objects.filter( +# user__groups__name__in=['Editorial College'], +# ).order_by('user__last_name')) - class Meta: - model = Nomination - fields = '__all__' +# class Meta: +# model = Nomination +# fields = '__all__' -class NominationAdmin(admin.ModelAdmin): - search_fields = ['last_name', 'first_name', 'by'] - form = NominationAdminForm +# class NominationAdmin(admin.ModelAdmin): +# search_fields = ['last_name', 'first_name', 'by'] +# form = NominationAdminForm -admin.site.register(Nomination, NominationAdmin) +# admin.site.register(Nomination, NominationAdmin) -class MotionAdminForm(forms.ModelForm): - in_agreement = forms.ModelMultipleChoiceField( - required=False, - queryset=Contributor.objects.filter( - user__groups__name__in=['Editorial College'], - ).order_by('user__last_name')) - in_notsure = forms.ModelMultipleChoiceField( - required=False, - queryset=Contributor.objects.filter( - user__groups__name__in=['Editorial College'], - ).order_by('user__last_name')) - in_disagreement = forms.ModelMultipleChoiceField( - required=False, - queryset=Contributor.objects.filter( - user__groups__name__in=['Editorial College'], - ).order_by('user__last_name')) +# class MotionAdminForm(forms.ModelForm): +# in_agreement = forms.ModelMultipleChoiceField( +# required=False, +# queryset=Contributor.objects.filter( +# user__groups__name__in=['Editorial College'], +# ).order_by('user__last_name')) +# in_notsure = forms.ModelMultipleChoiceField( +# required=False, +# queryset=Contributor.objects.filter( +# user__groups__name__in=['Editorial College'], +# ).order_by('user__last_name')) +# in_disagreement = forms.ModelMultipleChoiceField( +# required=False, +# queryset=Contributor.objects.filter( +# user__groups__name__in=['Editorial College'], +# ).order_by('user__last_name')) - class Meta: - model = Motion - fields = '__all__' +# class Meta: +# model = Motion +# fields = '__all__' -class MotionAdmin(admin.ModelAdmin): - search_fields = ['background', 'motion', 'put_forward_by'] - form = MotionAdminForm +# class MotionAdmin(admin.ModelAdmin): +# search_fields = ['background', 'motion', 'put_forward_by'] +# form = MotionAdminForm -admin.site.register(Motion, MotionAdmin) +# admin.site.register(Motion, MotionAdmin) diff --git a/virtualmeetings/apps.py b/virtualmeetings/apps.py index 80b6af231..a7eb4a3e8 100644 --- a/virtualmeetings/apps.py +++ b/virtualmeetings/apps.py @@ -2,8 +2,8 @@ __copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)" __license__ = "AGPL v3" -from django.apps import AppConfig +# from django.apps import AppConfig -class VirtualmeetingsConfig(AppConfig): - name = 'virtualmeetings' +# class VirtualmeetingsConfig(AppConfig): +# name = 'virtualmeetings' diff --git a/virtualmeetings/forms.py b/virtualmeetings/forms.py index a4b52a917..b3c70e5b4 100644 --- a/virtualmeetings/forms.py +++ b/virtualmeetings/forms.py @@ -4,40 +4,40 @@ __license__ = "AGPL v3" from django import forms -from .models import Feedback, Nomination, Motion +# from .models import Feedback, Nomination, Motion from scipost.constants import SCIPOST_SUBJECT_AREAS -class FeedbackForm(forms.ModelForm): - class Meta: - model = Feedback - fields = ['feedback'] +# class FeedbackForm(forms.ModelForm): +# class Meta: +# model = Feedback +# fields = ['feedback'] -class NominationForm(forms.ModelForm): - class Meta: - model = Nomination - fields = ['first_name', 'last_name', - 'discipline', 'expertises', 'webpage'] +# class NominationForm(forms.ModelForm): +# class Meta: +# model = Nomination +# fields = ['first_name', 'last_name', +# 'discipline', 'expertises', 'webpage'] - def __init__(self, *args, **kwargs): - super(NominationForm, self).__init__(*args, **kwargs) - self.fields['expertises'].widget = forms.SelectMultiple(choices=SCIPOST_SUBJECT_AREAS) +# def __init__(self, *args, **kwargs): +# super(NominationForm, self).__init__(*args, **kwargs) +# self.fields['expertises'].widget = forms.SelectMultiple(choices=SCIPOST_SUBJECT_AREAS) -class MotionForm(forms.ModelForm): - class Meta: - model = Motion - fields = ['category', 'background', 'motion'] +# class MotionForm(forms.ModelForm): +# class Meta: +# model = Motion +# fields = ['category', 'background', 'motion'] - def __init__(self, *args, **kwargs): - super(MotionForm, self).__init__(*args, **kwargs) - self.fields['background'].label = '' - self.fields['background'].widget.attrs.update( - {'rows': 8, 'cols': 100, - 'placeholder': 'Provide useful background information on your Motion.'}) - self.fields['motion'].label = '' - self.fields['motion'].widget.attrs.update( - {'rows': 8, 'cols': 100, - 'placeholder': 'Phrase your Motion as clearly and succinctly as possible.'}) +# def __init__(self, *args, **kwargs): +# super(MotionForm, self).__init__(*args, **kwargs) +# self.fields['background'].label = '' +# self.fields['background'].widget.attrs.update( +# {'rows': 8, 'cols': 100, +# 'placeholder': 'Provide useful background information on your Motion.'}) +# self.fields['motion'].label = '' +# self.fields['motion'].widget.attrs.update( +# {'rows': 8, 'cols': 100, +# 'placeholder': 'Phrase your Motion as clearly and succinctly as possible.'}) diff --git a/virtualmeetings/management/commands/transfer_old_motion_to_new.py b/virtualmeetings/management/commands/transfer_old_motion_to_new.py index e65b27169..3b41295a3 100644 --- a/virtualmeetings/management/commands/transfer_old_motion_to_new.py +++ b/virtualmeetings/management/commands/transfer_old_motion_to_new.py @@ -2,39 +2,39 @@ __copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)" __license__ = "AGPL v3" -from django.core.management.base import BaseCommand -from django.contrib.contenttypes.models import ContentType +# from django.core.management.base import BaseCommand +# from django.contrib.contenttypes.models import ContentType -from virtualmeetings.models import Motion as deprec_Motion -from forums.models import Post, Motion +# from virtualmeetings.models import Motion as deprec_Motion +# from forums.models import Post, Motion -class Command(BaseCommand): - help = ('Temporary method to transfer old virtualmeetings.Motions ' - 'to new forums.Motion ones.') +# class Command(BaseCommand): +# help = ('Temporary method to transfer old virtualmeetings.Motions ' +# 'to new forums.Motion ones.') - def add_arguments(self, parser): - parser.add_argument( - '--old_pk', action='store', default=0, type=int, dest='old_pk', help='Old Motion id') - parser.add_argument( - '--new_pk', action='store', default=0, type=int, dest='new_pk', help='New Motion id') +# def add_arguments(self, parser): +# parser.add_argument( +# '--old_pk', action='store', default=0, type=int, dest='old_pk', help='Old Motion id') +# parser.add_argument( +# '--new_pk', action='store', default=0, type=int, dest='new_pk', help='New Motion id') - def handle(self, *args, **kwargs): - old_motion = deprec_Motion.objects.get(pk=kwargs['old_pk']) - new_motion = Motion.objects.get(pk=kwargs['new_pk']) - # Transfer the votes - for voter in old_motion.in_agreement.all(): - new_motion.in_agreement.add(voter.user) - for voter in old_motion.in_notsure.all(): - new_motion.in_doubt.add(voter.user) - for voter in old_motion.in_disagreement.all(): - new_motion.in_disagreement.add(voter.user) - # Transfer the old remarks to Post objects - type_motion = ContentType.objects.get_by_natural_key('forums', 'post') - for remark in old_motion.remarks.all(): - Post.objects.get_or_create( - posted_by=remark.contributor.user, - posted_on=remark.date, - parent_content_type=type_motion, - parent_object_id=new_motion.id, - subject='Remark', - text=remark.remark) +# def handle(self, *args, **kwargs): +# old_motion = deprec_Motion.objects.get(pk=kwargs['old_pk']) +# new_motion = Motion.objects.get(pk=kwargs['new_pk']) +# # Transfer the votes +# for voter in old_motion.in_agreement.all(): +# new_motion.in_agreement.add(voter.user) +# for voter in old_motion.in_notsure.all(): +# new_motion.in_doubt.add(voter.user) +# for voter in old_motion.in_disagreement.all(): +# new_motion.in_disagreement.add(voter.user) +# # Transfer the old remarks to Post objects +# type_motion = ContentType.objects.get_by_natural_key('forums', 'post') +# for remark in old_motion.remarks.all(): +# Post.objects.get_or_create( +# posted_by=remark.contributor.user, +# posted_on=remark.date, +# parent_content_type=type_motion, +# parent_object_id=new_motion.id, +# subject='Remark', +# text=remark.remark) diff --git a/virtualmeetings/migrations/0003_auto_20190405_2102.py b/virtualmeetings/migrations/0003_auto_20190405_2102.py new file mode 100644 index 000000000..2163d83ca --- /dev/null +++ b/virtualmeetings/migrations/0003_auto_20190405_2102.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.4 on 2019-04-05 19:02 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('scipost', '0024_auto_20190405_2102'), + ('virtualmeetings', '0002_auto_20190126_2058'), + ] + + operations = [ + migrations.RemoveField( + model_name='feedback', + name='VGM', + ), + migrations.RemoveField( + model_name='feedback', + name='by', + ), + migrations.RemoveField( + model_name='motion', + name='VGM', + ), + migrations.RemoveField( + model_name='motion', + name='in_agreement', + ), + migrations.RemoveField( + model_name='motion', + name='in_disagreement', + ), + migrations.RemoveField( + model_name='motion', + name='in_notsure', + ), + migrations.RemoveField( + model_name='motion', + name='put_forward_by', + ), + migrations.RemoveField( + model_name='nomination', + name='VGM', + ), + migrations.RemoveField( + model_name='nomination', + name='by', + ), + migrations.RemoveField( + model_name='nomination', + name='in_agreement', + ), + migrations.RemoveField( + model_name='nomination', + name='in_disagreement', + ), + migrations.RemoveField( + model_name='nomination', + name='in_notsure', + ), + migrations.DeleteModel( + name='Feedback', + ), + migrations.DeleteModel( + name='Motion', + ), + migrations.DeleteModel( + name='Nomination', + ), + migrations.DeleteModel( + name='VGM', + ), + ] diff --git a/virtualmeetings/models.py b/virtualmeetings/models.py index 5a69d9f05..52f3cc296 100644 --- a/virtualmeetings/models.py +++ b/virtualmeetings/models.py @@ -14,136 +14,136 @@ from scipost.fields import ChoiceArrayField from scipost.models import Contributor -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')) - - def get_absolute_url(self): - return reverse('virtualmeetings:VGM_detail', args=(self.id,)) - - -class Feedback(models.Model): - """ - Feedback, suggestion or criticism on any aspect of SciPost. - """ - VGM = models.ForeignKey('virtualmeetings.VGM', blank=True, null=True) - by = models.ForeignKey('scipost.Contributor') - date = models.DateField() - feedback = models.TextField() - - def __str__(self): - return '%s: %s' % (self.by, self.feedback[:50]) - - def get_absolute_url(self): - return self.VGM.get_absolute_url() + '#feedback' + str(self.id) - - -class Nomination(models.Model): - """ - Nomination to an Editorial Fellowship. - """ - VGM = models.ForeignKey('virtualmeetings.VGM', blank=True, null=True) - by = models.ForeignKey('scipost.Contributor') - date = models.DateField(auto_now_add=True) - first_name = models.CharField(max_length=30) - last_name = models.CharField(max_length=30) - 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() - nr_A = models.PositiveIntegerField(default=0) - in_agreement = models.ManyToManyField('scipost.Contributor', - related_name='in_agreement_with_nomination', blank=True) - nr_N = models.PositiveIntegerField(default=0) - in_notsure = models.ManyToManyField('scipost.Contributor', - related_name='in_notsure_with_nomination', blank=True) - nr_D = models.PositiveIntegerField(default=0) - in_disagreement = models.ManyToManyField('scipost.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 get_absolute_url(self): - return self.VGM.get_absolute_url() + '#nomination_' + str(self.id) - - 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 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('virtualmeetings.VGM', blank=True, null=True) - background = models.TextField() - motion = models.TextField() - put_forward_by = models.ForeignKey('scipost.Contributor') - date = models.DateField(auto_now_add=True) - nr_A = models.PositiveIntegerField(default=0) - in_agreement = models.ManyToManyField('scipost.Contributor', - related_name='in_agreement_with_motion', blank=True) - nr_N = models.PositiveIntegerField(default=0) - in_notsure = models.ManyToManyField('scipost.Contributor', - related_name='in_notsure_with_motion', blank=True) - nr_D = models.PositiveIntegerField(default=0) - in_disagreement = models.ManyToManyField('scipost.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 get_absolute_url(self): - return self.VGM.get_absolute_url() + '#motion_' + str(self.id) - - 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')) + +# def get_absolute_url(self): +# return reverse('virtualmeetings:VGM_detail', args=(self.id,)) + + +# class Feedback(models.Model): +# """ +# Feedback, suggestion or criticism on any aspect of SciPost. +# """ +# VGM = models.ForeignKey('virtualmeetings.VGM', blank=True, null=True) +# by = models.ForeignKey('scipost.Contributor') +# date = models.DateField() +# feedback = models.TextField() + +# def __str__(self): +# return '%s: %s' % (self.by, self.feedback[:50]) + +# def get_absolute_url(self): +# return self.VGM.get_absolute_url() + '#feedback' + str(self.id) + + +# class Nomination(models.Model): +# """ +# Nomination to an Editorial Fellowship. +# """ +# VGM = models.ForeignKey('virtualmeetings.VGM', blank=True, null=True) +# by = models.ForeignKey('scipost.Contributor') +# date = models.DateField(auto_now_add=True) +# first_name = models.CharField(max_length=30) +# last_name = models.CharField(max_length=30) +# 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() +# nr_A = models.PositiveIntegerField(default=0) +# in_agreement = models.ManyToManyField('scipost.Contributor', +# related_name='in_agreement_with_nomination', blank=True) +# nr_N = models.PositiveIntegerField(default=0) +# in_notsure = models.ManyToManyField('scipost.Contributor', +# related_name='in_notsure_with_nomination', blank=True) +# nr_D = models.PositiveIntegerField(default=0) +# in_disagreement = models.ManyToManyField('scipost.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 get_absolute_url(self): +# return self.VGM.get_absolute_url() + '#nomination_' + str(self.id) + +# 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 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('virtualmeetings.VGM', blank=True, null=True) +# background = models.TextField() +# motion = models.TextField() +# put_forward_by = models.ForeignKey('scipost.Contributor') +# date = models.DateField(auto_now_add=True) +# nr_A = models.PositiveIntegerField(default=0) +# in_agreement = models.ManyToManyField('scipost.Contributor', +# related_name='in_agreement_with_motion', blank=True) +# nr_N = models.PositiveIntegerField(default=0) +# in_notsure = models.ManyToManyField('scipost.Contributor', +# related_name='in_notsure_with_motion', blank=True) +# nr_D = models.PositiveIntegerField(default=0) +# in_disagreement = models.ManyToManyField('scipost.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 get_absolute_url(self): +# return self.VGM.get_absolute_url() + '#motion_' + str(self.id) + +# 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/virtualmeetings/urls.py b/virtualmeetings/urls.py index 5591f1b91..f1b29bf14 100644 --- a/virtualmeetings/urls.py +++ b/virtualmeetings/urls.py @@ -7,20 +7,20 @@ from django.conf.urls import url from . import views urlpatterns = [ - url(r'^$', views.VGMs, name='VGMs'), - url(r'^VGM/(?P<VGM_id>[0-9]+)/$', views.VGM_detail, name='VGM_detail'), - url(r'^feedback/(?P<VGM_id>[0-9]+)$', views.feedback, name='feedback'), - url(r'^add_remark_on_feedback/(?P<VGM_id>[0-9]+)/(?P<feedback_id>[0-9]+)$', - views.add_remark_on_feedback, name='add_remark_on_feedback'), - url(r'^nominate_Fellow/(?P<VGM_id>[0-9]+)$', views.nominate_Fellow, name='nominate_Fellow'), - url(r'^add_remark_on_nomination/(?P<VGM_id>[0-9]+)/(?P<nomination_id>[0-9]+)$', - views.add_remark_on_nomination, name='add_remark_on_nomination'), - url(r'^vote_on_nomination/(?P<nomination_id>[0-9]+)/(?P<vote>[AND])$', - views.vote_on_nomination, name='vote_on_nomination'), - url(r'^put_motion_forward/(?P<VGM_id>[0-9]+)$', - views.put_motion_forward, name='put_motion_forward'), - url(r'^add_remark_on_motion/(?P<motion_id>[0-9]+)$', - views.add_remark_on_motion, name='add_remark_on_motion'), - url(r'^vote_on_motion/(?P<motion_id>[0-9]+)/(?P<vote>[AND])$', - views.vote_on_motion, name='vote_on_motion'), + # url(r'^$', views.VGMs, name='VGMs'), + # url(r'^VGM/(?P<VGM_id>[0-9]+)/$', views.VGM_detail, name='VGM_detail'), + # url(r'^feedback/(?P<VGM_id>[0-9]+)$', views.feedback, name='feedback'), + # url(r'^add_remark_on_feedback/(?P<VGM_id>[0-9]+)/(?P<feedback_id>[0-9]+)$', + # views.add_remark_on_feedback, name='add_remark_on_feedback'), + # url(r'^nominate_Fellow/(?P<VGM_id>[0-9]+)$', views.nominate_Fellow, name='nominate_Fellow'), + # url(r'^add_remark_on_nomination/(?P<VGM_id>[0-9]+)/(?P<nomination_id>[0-9]+)$', + # views.add_remark_on_nomination, name='add_remark_on_nomination'), + # url(r'^vote_on_nomination/(?P<nomination_id>[0-9]+)/(?P<vote>[AND])$', + # views.vote_on_nomination, name='vote_on_nomination'), + # url(r'^put_motion_forward/(?P<VGM_id>[0-9]+)$', + # views.put_motion_forward, name='put_motion_forward'), + # url(r'^add_remark_on_motion/(?P<motion_id>[0-9]+)$', + # views.add_remark_on_motion, name='add_remark_on_motion'), + # url(r'^vote_on_motion/(?P<motion_id>[0-9]+)/(?P<vote>[AND])$', + # views.vote_on_motion, name='vote_on_motion'), ] diff --git a/virtualmeetings/views.py b/virtualmeetings/views.py index b2d145047..e316c2c08 100644 --- a/virtualmeetings/views.py +++ b/virtualmeetings/views.py @@ -12,8 +12,8 @@ from django.template import Context, Template from django.utils import timezone from .constants import motion_categories_dict -from .forms import FeedbackForm, NominationForm, MotionForm -from .models import VGM, Feedback, Nomination, Motion +# from .forms import FeedbackForm, NominationForm, MotionForm +# from .models import VGM, Feedback, Nomination, Motion from scipost.constants import SCIPOST_SUBJECT_AREAS from scipost.forms import RemarkForm @@ -21,190 +21,190 @@ from scipost.models import Contributor, Remark from invitations.models import RegistrationInvitation -@login_required -@permission_required('scipost.can_attend_VGMs') -def VGMs(request): - VGM_list = VGM.objects.all().order_by('start_date') - context = {'VGM_list': VGM_list} - return render(request, 'virtualmeetings/VGMs.html', context) - - -@login_required -@permission_required('scipost.can_attend_VGMs') -def VGM_detail(request, VGM_id): - VGM_instance = get_object_or_404(VGM, id=VGM_id) - VGM_information = Template(VGM_instance.information).render(Context({})) - feedback_received = Feedback.objects.filter(VGM=VGM_instance).order_by('date') - feedback_form = FeedbackForm() - current_Fellows = Contributor.objects.filter( - user__groups__name='Editorial College').order_by('user__last_name') - - pending_inv_Fellows = RegistrationInvitation.objects.for_fellows().no_response() - declined_inv_Fellows = RegistrationInvitation.objects.for_fellows().declined() - spec_list = SCIPOST_SUBJECT_AREAS # subject_areas_dict - nomination_form = NominationForm() - nominations = Nomination.objects.filter(VGM=VGM_instance, accepted=None).order_by('last_name') - motion_form = MotionForm() - remark_form = RemarkForm() - context = { - 'VGM': VGM_instance, - 'VGM_information': VGM_information, - 'feedback_received': feedback_received, - 'feedback_form': feedback_form, - 'current_Fellows': current_Fellows, - 'pending_inv_Fellows': pending_inv_Fellows, - 'declined_inv_Fellows': declined_inv_Fellows, - 'spec_list': spec_list, - 'nominations': nominations, - 'nomination_form': nomination_form, - 'motion_categories_dict': motion_categories_dict, - 'motion_form': motion_form, - 'remark_form': remark_form, - } - return render(request, 'virtualmeetings/VGM_detail.html', context) - - -@login_required -@permission_required('scipost.can_attend_VGMs') -def feedback(request, VGM_id=None): - if request.method == 'POST': - feedback_form = FeedbackForm(request.POST) - if feedback_form.is_valid(): - feedback = Feedback(by=request.user.contributor, - date=timezone.now().date(), - feedback=feedback_form.cleaned_data['feedback'],) - if VGM_id: - VGM_instance = get_object_or_404(VGM, id=VGM_id) - feedback.VGM = VGM_instance - feedback.save() - ack_message = 'Your feedback has been received.' - context = {'ack_message': ack_message} - if VGM_id: - context['followup_message'] = 'Return to the ' - context['followup_link'] = reverse('virtualmeetings:VGM_detail', - kwargs={'VGM_id': VGM_id}) - context['followup_link_label'] = 'VGM page' - return render(request, 'scipost/acknowledgement.html', context) - else: - errormessage = 'The form was not filled properly.' - return render(request, 'scipost/error.html', {'errormessage': errormessage}) - else: - errormessage = 'This view can only be posted to.' - return render(request, 'scipost/error.html', {'errormessage': errormessage}) - - -@login_required -@permission_required('scipost.can_attend_VGMs', raise_exception=True) -def add_remark_on_feedback(request, VGM_id, feedback_id): - feedback = get_object_or_404(Feedback, pk=feedback_id) - remark_form = RemarkForm(request.POST) - if remark_form.is_valid(): - remark = Remark(contributor=request.user.contributor, - feedback=feedback, - remark=remark_form.cleaned_data['remark']) - remark.save() - else: - messages.danger(request, 'The form was invalidly filled.') - return redirect(feedback.get_absolute_url()) - - -@login_required -@permission_required('scipost.can_attend_VGMs') -def nominate_Fellow(request, VGM_id): - VGM_instance = get_object_or_404(VGM, id=VGM_id) - nomination_form = NominationForm(request.POST) - - if nomination_form.is_valid(): - nomination = nomination_form.save(commit=False) - nomination.VGM = VGM_instance - nomination.by = request.user.contributor - nomination.voting_deadline = VGM_instance.end_date + datetime.timedelta(days=7) - nomination.save() - nomination.update_votes(request.user.contributor.id, 'A') - messages.success(request, 'The nomination has been registered.') - else: - messages.warning(request, 'The form was not filled properly.') - return redirect(VGM_instance.get_absolute_url()) - - -@login_required -@permission_required('scipost.can_attend_VGMs', raise_exception=True) -def add_remark_on_nomination(request, VGM_id, nomination_id): - # contributor = request.user.contributor - nomination = get_object_or_404(Nomination, pk=nomination_id) - remark_form = RemarkForm(request.POST) - if remark_form.is_valid(): - remark = Remark(contributor=request.user.contributor, - nomination=nomination, - remark=remark_form.cleaned_data['remark']) - remark.save() - else: - messages.danger(request, 'The form was invalidly filled.') - return redirect(nomination.get_absolute_url()) - - -@login_required -@permission_required('scipost.can_attend_VGMs', raise_exception=True) -def vote_on_nomination(request, nomination_id, vote): - contributor = request.user.contributor - nomination = get_object_or_404(Nomination, pk=nomination_id) - if timezone.now() > nomination.voting_deadline: - messages.warning(request, 'The voting deadline on this nomination has passed.') - else: - nomination.update_votes(contributor.id, vote) - messages.success(request, 'You have successfully voted on nomination %i' % nomination.id) - return redirect(nomination.get_absolute_url()) - - -@login_required -@permission_required('scipost.can_attend_VGMs') -def put_motion_forward(request, VGM_id): - VGM_instance = get_object_or_404(VGM, id=VGM_id) - if timezone.now().date() > VGM_instance.end_date: - messages.warning(request, 'This VGM has ended. No new motions can be put forward.') - return redirect(VGM_instance.get_absolute_url()) - - motion_form = MotionForm(request.POST) - if motion_form.is_valid(): - motion = Motion( - category=motion_form.cleaned_data['category'], - VGM=VGM_instance, - background=motion_form.cleaned_data['background'], - motion=motion_form.cleaned_data['motion'], - put_forward_by=request.user.contributor, - voting_deadline=VGM_instance.end_date + datetime.timedelta(days=7), - ) - motion.save() - motion.update_votes(request.user.contributor.id, 'A') - messages.success(request, 'Your vote has been registered.') - else: - messages.danger(request, 'The form was not filled properly.') - return redirect(motion.get_absolute_url()) - - -@login_required -@permission_required('scipost.can_attend_VGMs', raise_exception=True) -def add_remark_on_motion(request, motion_id): - motion = get_object_or_404(Motion, pk=motion_id) - remark_form = RemarkForm(request.POST) - if remark_form.is_valid(): - remark = Remark(contributor=request.user.contributor, - motion=motion, - remark=remark_form.cleaned_data['remark']) - remark.save() - else: - messages.danger(request, 'The form was not filled properly.') - return redirect(motion.get_absolute_url()) - - -@login_required -@permission_required('scipost.can_attend_VGMs', raise_exception=True) -def vote_on_motion(request, motion_id, vote): - contributor = request.user.contributor - motion = get_object_or_404(Motion, pk=motion_id) - if timezone.now() > motion.voting_deadline: - messages.warning(request, 'The voting deadline on this motion has passed.') - else: - motion.update_votes(contributor.id, vote) - messages.success(request, 'You have successfully voted on motion %i' % motion.id) - return redirect(motion.get_absolute_url()) +# @login_required +# @permission_required('scipost.can_attend_VGMs') +# def VGMs(request): +# VGM_list = VGM.objects.all().order_by('start_date') +# context = {'VGM_list': VGM_list} +# return render(request, 'virtualmeetings/VGMs.html', context) + + +# @login_required +# @permission_required('scipost.can_attend_VGMs') +# def VGM_detail(request, VGM_id): +# VGM_instance = get_object_or_404(VGM, id=VGM_id) +# VGM_information = Template(VGM_instance.information).render(Context({})) +# feedback_received = Feedback.objects.filter(VGM=VGM_instance).order_by('date') +# feedback_form = FeedbackForm() +# current_Fellows = Contributor.objects.filter( +# user__groups__name='Editorial College').order_by('user__last_name') + +# pending_inv_Fellows = RegistrationInvitation.objects.for_fellows().no_response() +# declined_inv_Fellows = RegistrationInvitation.objects.for_fellows().declined() +# spec_list = SCIPOST_SUBJECT_AREAS # subject_areas_dict +# nomination_form = NominationForm() +# nominations = Nomination.objects.filter(VGM=VGM_instance, accepted=None).order_by('last_name') +# motion_form = MotionForm() +# remark_form = RemarkForm() +# context = { +# 'VGM': VGM_instance, +# 'VGM_information': VGM_information, +# 'feedback_received': feedback_received, +# 'feedback_form': feedback_form, +# 'current_Fellows': current_Fellows, +# 'pending_inv_Fellows': pending_inv_Fellows, +# 'declined_inv_Fellows': declined_inv_Fellows, +# 'spec_list': spec_list, +# 'nominations': nominations, +# 'nomination_form': nomination_form, +# 'motion_categories_dict': motion_categories_dict, +# 'motion_form': motion_form, +# 'remark_form': remark_form, +# } +# return render(request, 'virtualmeetings/VGM_detail.html', context) + + +# @login_required +# @permission_required('scipost.can_attend_VGMs') +# def feedback(request, VGM_id=None): +# if request.method == 'POST': +# feedback_form = FeedbackForm(request.POST) +# if feedback_form.is_valid(): +# feedback = Feedback(by=request.user.contributor, +# date=timezone.now().date(), +# feedback=feedback_form.cleaned_data['feedback'],) +# if VGM_id: +# VGM_instance = get_object_or_404(VGM, id=VGM_id) +# feedback.VGM = VGM_instance +# feedback.save() +# ack_message = 'Your feedback has been received.' +# context = {'ack_message': ack_message} +# if VGM_id: +# context['followup_message'] = 'Return to the ' +# context['followup_link'] = reverse('virtualmeetings:VGM_detail', +# kwargs={'VGM_id': VGM_id}) +# context['followup_link_label'] = 'VGM page' +# return render(request, 'scipost/acknowledgement.html', context) +# else: +# errormessage = 'The form was not filled properly.' +# return render(request, 'scipost/error.html', {'errormessage': errormessage}) +# else: +# errormessage = 'This view can only be posted to.' +# return render(request, 'scipost/error.html', {'errormessage': errormessage}) + + +# @login_required +# @permission_required('scipost.can_attend_VGMs', raise_exception=True) +# def add_remark_on_feedback(request, VGM_id, feedback_id): +# feedback = get_object_or_404(Feedback, pk=feedback_id) +# remark_form = RemarkForm(request.POST) +# if remark_form.is_valid(): +# remark = Remark(contributor=request.user.contributor, +# feedback=feedback, +# remark=remark_form.cleaned_data['remark']) +# remark.save() +# else: +# messages.danger(request, 'The form was invalidly filled.') +# return redirect(feedback.get_absolute_url()) + + +# @login_required +# @permission_required('scipost.can_attend_VGMs') +# def nominate_Fellow(request, VGM_id): +# VGM_instance = get_object_or_404(VGM, id=VGM_id) +# nomination_form = NominationForm(request.POST) + +# if nomination_form.is_valid(): +# nomination = nomination_form.save(commit=False) +# nomination.VGM = VGM_instance +# nomination.by = request.user.contributor +# nomination.voting_deadline = VGM_instance.end_date + datetime.timedelta(days=7) +# nomination.save() +# nomination.update_votes(request.user.contributor.id, 'A') +# messages.success(request, 'The nomination has been registered.') +# else: +# messages.warning(request, 'The form was not filled properly.') +# return redirect(VGM_instance.get_absolute_url()) + + +# @login_required +# @permission_required('scipost.can_attend_VGMs', raise_exception=True) +# def add_remark_on_nomination(request, VGM_id, nomination_id): +# # contributor = request.user.contributor +# nomination = get_object_or_404(Nomination, pk=nomination_id) +# remark_form = RemarkForm(request.POST) +# if remark_form.is_valid(): +# remark = Remark(contributor=request.user.contributor, +# nomination=nomination, +# remark=remark_form.cleaned_data['remark']) +# remark.save() +# else: +# messages.danger(request, 'The form was invalidly filled.') +# return redirect(nomination.get_absolute_url()) + + +# @login_required +# @permission_required('scipost.can_attend_VGMs', raise_exception=True) +# def vote_on_nomination(request, nomination_id, vote): +# contributor = request.user.contributor +# nomination = get_object_or_404(Nomination, pk=nomination_id) +# if timezone.now() > nomination.voting_deadline: +# messages.warning(request, 'The voting deadline on this nomination has passed.') +# else: +# nomination.update_votes(contributor.id, vote) +# messages.success(request, 'You have successfully voted on nomination %i' % nomination.id) +# return redirect(nomination.get_absolute_url()) + + +# @login_required +# @permission_required('scipost.can_attend_VGMs') +# def put_motion_forward(request, VGM_id): +# VGM_instance = get_object_or_404(VGM, id=VGM_id) +# if timezone.now().date() > VGM_instance.end_date: +# messages.warning(request, 'This VGM has ended. No new motions can be put forward.') +# return redirect(VGM_instance.get_absolute_url()) + +# motion_form = MotionForm(request.POST) +# if motion_form.is_valid(): +# motion = Motion( +# category=motion_form.cleaned_data['category'], +# VGM=VGM_instance, +# background=motion_form.cleaned_data['background'], +# motion=motion_form.cleaned_data['motion'], +# put_forward_by=request.user.contributor, +# voting_deadline=VGM_instance.end_date + datetime.timedelta(days=7), +# ) +# motion.save() +# motion.update_votes(request.user.contributor.id, 'A') +# messages.success(request, 'Your vote has been registered.') +# else: +# messages.danger(request, 'The form was not filled properly.') +# return redirect(motion.get_absolute_url()) + + +# @login_required +# @permission_required('scipost.can_attend_VGMs', raise_exception=True) +# def add_remark_on_motion(request, motion_id): +# motion = get_object_or_404(Motion, pk=motion_id) +# remark_form = RemarkForm(request.POST) +# if remark_form.is_valid(): +# remark = Remark(contributor=request.user.contributor, +# motion=motion, +# remark=remark_form.cleaned_data['remark']) +# remark.save() +# else: +# messages.danger(request, 'The form was not filled properly.') +# return redirect(motion.get_absolute_url()) + + +# @login_required +# @permission_required('scipost.can_attend_VGMs', raise_exception=True) +# def vote_on_motion(request, motion_id, vote): +# contributor = request.user.contributor +# motion = get_object_or_404(Motion, pk=motion_id) +# if timezone.now() > motion.voting_deadline: +# messages.warning(request, 'The voting deadline on this motion has passed.') +# else: +# motion.update_votes(contributor.id, vote) +# messages.success(request, 'You have successfully voted on motion %i' % motion.id) +# return redirect(motion.get_absolute_url()) -- GitLab