now nominee has a nomcom field, it's necessary to separate nominees for distinct nomcom when two nomcom are active
when a nomcom is deleted, templates and files of nomcom are deleted too change publick key file path in settings See #976 - Legacy-Id: 5580
This commit is contained in:
parent
3a03cb0505
commit
bd335e3a7b
|
@ -345,7 +345,7 @@ class NominateForm(BaseNomcomForm, forms.ModelForm):
|
|||
email.save()
|
||||
|
||||
# Add the nomination for a particular position
|
||||
nominee, created = Nominee.objects.get_or_create(email=email)
|
||||
nominee, created = Nominee.objects.get_or_create(email=email, nomcom=self.nomcom)
|
||||
nominee_position, nominee_position_created = NomineePosition.objects.get_or_create(position=position, nominee=nominee)
|
||||
|
||||
# Complete nomination data
|
||||
|
|
|
@ -38,7 +38,7 @@ class NomineePositionManager(models.Manager, MixinManager):
|
|||
|
||||
class NomineeManager(models.Manager):
|
||||
def get_by_nomcom(self, nomcom):
|
||||
return self.filter(nominee_position__nomcom=nomcom)
|
||||
return self.filter(nomcom=nomcom)
|
||||
|
||||
|
||||
class PositionQuerySet(QuerySet):
|
||||
|
|
|
@ -37,9 +37,13 @@ class Migration(SchemaMigration):
|
|||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('email', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['person.Email'])),
|
||||
('duplicated', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['nomcom.Nominee'], null=True, blank=True)),
|
||||
('nomcom', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['nomcom.NomCom'])),
|
||||
))
|
||||
db.send_create_signal('nomcom', ['Nominee'])
|
||||
|
||||
# Adding unique constraint on 'Nominee', fields ['email', 'nomcom']
|
||||
db.create_unique('nomcom_nominee', ['email_id', 'nomcom_id'])
|
||||
|
||||
# Adding model 'NomineePosition'
|
||||
db.create_table('nomcom_nomineeposition', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
|
@ -94,6 +98,9 @@ class Migration(SchemaMigration):
|
|||
# Removing unique constraint on 'NomineePosition', fields ['position', 'nominee']
|
||||
db.delete_unique('nomcom_nomineeposition', ['position_id', 'nominee_id'])
|
||||
|
||||
# Removing unique constraint on 'Nominee', fields ['email', 'nomcom']
|
||||
db.delete_unique('nomcom_nominee', ['email_id', 'nomcom_id'])
|
||||
|
||||
# Deleting model 'NomCom'
|
||||
db.delete_table('nomcom_nomcom')
|
||||
|
||||
|
@ -364,10 +371,11 @@ class Migration(SchemaMigration):
|
|||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
|
||||
},
|
||||
'nomcom.nominee': {
|
||||
'Meta': {'object_name': 'Nominee'},
|
||||
'Meta': {'unique_together': "(('email', 'nomcom'),)", 'object_name': 'Nominee'},
|
||||
'duplicated': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['nomcom.Nominee']", 'null': 'True', 'blank': 'True'}),
|
||||
'email': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Email']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'nomcom': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['nomcom.NomCom']"}),
|
||||
'nominee_position': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['nomcom.Position']", 'through': "orm['nomcom.NomineePosition']", 'symmetrical': 'False'})
|
||||
},
|
||||
'nomcom.nomineeposition': {
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
|
||||
from django.db import models
|
||||
from django.db.models.signals import post_delete
|
||||
from django.conf import settings
|
||||
from django.core.files.storage import FileSystemStorage
|
||||
from django.contrib.auth.models import User
|
||||
|
@ -17,7 +19,8 @@ from ietf.nomcom.managers import NomineePositionManager, NomineeManager, \
|
|||
PositionManager, FeedbackManager
|
||||
from ietf.nomcom.utils import (initialize_templates_for_group,
|
||||
initialize_questionnaire_for_position,
|
||||
initialize_requirements_for_position)
|
||||
initialize_requirements_for_position,
|
||||
delete_nomcom_templates)
|
||||
|
||||
|
||||
def upload_path_handler(instance, filename):
|
||||
|
@ -46,6 +49,14 @@ class NomCom(models.Model):
|
|||
initialize_templates_for_group(self)
|
||||
|
||||
|
||||
def delete_nomcom(sender, **kwargs):
|
||||
nomcom = kwargs.get('instance', None)
|
||||
delete_nomcom_templates(nomcom)
|
||||
storage, path = nomcom.public_key.storage, nomcom.public_key.path
|
||||
storage.delete(path)
|
||||
post_delete.connect(delete_nomcom, sender=NomCom)
|
||||
|
||||
|
||||
class Nomination(models.Model):
|
||||
position = models.ForeignKey('Position')
|
||||
candidate_name = models.CharField(verbose_name='Candidate name', max_length=255)
|
||||
|
@ -69,11 +80,13 @@ class Nominee(models.Model):
|
|||
email = models.ForeignKey(Email)
|
||||
nominee_position = models.ManyToManyField('Position', through='NomineePosition')
|
||||
duplicated = models.ForeignKey('Nominee', blank=True, null=True)
|
||||
nomcom = models.ForeignKey('NomCom')
|
||||
|
||||
objects = NomineeManager()
|
||||
|
||||
class Meta:
|
||||
verbose_name_plural = 'Nominees'
|
||||
unique_together = ('email', 'nomcom')
|
||||
|
||||
def __unicode__(self):
|
||||
return u'%s' % self.email
|
||||
|
|
|
@ -150,7 +150,7 @@ def nomcom_test_data():
|
|||
email=email)
|
||||
# nominee
|
||||
email = Email.objects.get(person__name=COMMUNITY_USER)
|
||||
nominee, created = Nominee.objects.get_or_create(email=email)
|
||||
nominee, created = Nominee.objects.get_or_create(email=email, nomcom=nomcom)
|
||||
|
||||
# positions
|
||||
for name, description in POSITIONS.iteritems():
|
||||
|
|
|
@ -112,6 +112,11 @@ def initialize_requirements_for_position(position):
|
|||
content=template.content)
|
||||
|
||||
|
||||
def delete_nomcom_templates(nomcom):
|
||||
nomcom_template_path = '/nomcom/' + nomcom.group.acronym
|
||||
DBTemplate.objects.filter(path__contains=nomcom_template_path).delete()
|
||||
|
||||
|
||||
def retrieve_nomcom_private_key(request, year):
|
||||
private_key = request.session.get('NOMCOM_PRIVATE_KEY_%s' % year, None)
|
||||
|
||||
|
|
|
@ -261,10 +261,11 @@ IDSUBMIT_ANNOUNCE_LIST_EMAIL = 'i-d-announce@ietf.org'
|
|||
|
||||
# NomCom Tool settings
|
||||
ROLODEX_URL = ""
|
||||
PUBLIC_KEYS_URL = BASE_DIR + '/public_keys/'
|
||||
PUBLIC_KEYS_URL = BASE_DIR + '/nomcom/public_keys/'
|
||||
NOMCOM_FROM_EMAIL = DEFAULT_FROM_EMAIL
|
||||
NOMCOM_ADMIN_EMAIL = DEFAULT_FROM_EMAIL
|
||||
OPENSSL_COMMAND = '/usr/bin/openssl'
|
||||
DAYS_TO_EXPIRE_NOMINATION_LINK = ''
|
||||
|
||||
# Days from meeting to cut off dates on submit
|
||||
FIRST_CUTOFF_DAYS = 19
|
||||
|
|
Loading…
Reference in a new issue