diff --git a/partners/migrations/0032_auto_20170829_0727.py b/partners/migrations/0032_auto_20170829_0727.py new file mode 100644 index 0000000000000000000000000000000000000000..375d21ed46289761e9d4a99156c40bd8196a359e --- /dev/null +++ b/partners/migrations/0032_auto_20170829_0727.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.4 on 2017-08-29 05:27 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('partners', '0031_auto_20170815_0901'), + ] + + operations = [ + migrations.RenameField( + model_name='contact', + old_name='_activation_key', + new_name='activation_key', + ), + ] diff --git a/partners/models.py b/partners/models.py index 0de3ca51149e6749c58fdece4c2a300e25be5779..1d7f39a882f9a0ba0d2aa4c2ae123cc1ccecbe33 100644 --- a/partners/models.py +++ b/partners/models.py @@ -157,7 +157,7 @@ class Contact(models.Model): consortia = models.ManyToManyField('partners.Consortium', blank=True, help_text=('All Consortia for which the Contact has' ' explicit permission to view/edit its data.')) - _activation_key = models.CharField(max_length=40, blank=True) + activation_key = models.CharField(max_length=40, blank=True) key_expires = models.DateTimeField(default=timezone.now) def __str__(self): @@ -171,15 +171,13 @@ class Contact(models.Model): feed += random.choice(string.ascii_letters) feed = feed.encode('utf8') salt = self.user.username.encode('utf8') - self._activation_key = hashlib.sha1(salt+salt).hexdigest() + self.activation_key = hashlib.sha1(salt+salt).hexdigest() self.key_expires = datetime.datetime.now() + datetime.timedelta(days=2) - def get_activation_key(self): - if not self._activation_key: + def save(self, *args, **kwargs): + if not self.activation_key: self.generate_key() - return self._activation_key - - activation_key = property(get_activation_key, _activation_key) + super().save(*args, **kwargs) def delete_or_remove_partner(self, partner, *args, **kwargs): """ diff --git a/scipost/migrations/0063_auto_20170829_0727.py b/scipost/migrations/0063_auto_20170829_0727.py new file mode 100644 index 0000000000000000000000000000000000000000..aef6bd439b40ca1780a1c1944cd01bd26c5b43ea --- /dev/null +++ b/scipost/migrations/0063_auto_20170829_0727.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.4 on 2017-08-29 05:27 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('scipost', '0062_auto_20170815_0857'), + ] + + operations = [ + migrations.RenameField( + model_name='contributor', + old_name='_activation_key', + new_name='activation_key', + ), + migrations.AlterField( + model_name='remark', + name='contributor', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='remarks', to='scipost.Contributor'), + ), + migrations.AlterField( + model_name='remark', + name='feedback', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='remarks', to='virtualmeetings.Feedback'), + ), + migrations.AlterField( + model_name='remark', + name='motion', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='remarks', to='virtualmeetings.Motion'), + ), + migrations.AlterField( + model_name='remark', + name='nomination', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='remarks', to='virtualmeetings.Nomination'), + ), + migrations.AlterField( + model_name='remark', + name='recommendation', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='remarks', to='submissions.EICRecommendation'), + ), + migrations.AlterField( + model_name='remark', + name='submission', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='remarks', to='submissions.Submission'), + ), + migrations.AlterField( + model_name='unavailabilityperiod', + name='contributor', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='unavailability_periods', to='scipost.Contributor'), + ), + ] diff --git a/scipost/models.py b/scipost/models.py index 99c0619355ba7fdb0902a8a57a435a067d359f12..d6cac15fd9be45affe5c0bfbe9e9ba47ace74861 100644 --- a/scipost/models.py +++ b/scipost/models.py @@ -41,7 +41,7 @@ class Contributor(models.Model): """ user = models.OneToOneField(User, on_delete=models.PROTECT, unique=True) invitation_key = models.CharField(max_length=40, blank=True) - _activation_key = models.CharField(max_length=40, blank=True) + activation_key = models.CharField(max_length=40, blank=True) key_expires = models.DateTimeField(default=timezone.now) status = models.SmallIntegerField(default=0, choices=CONTRIBUTOR_STATUS) title = models.CharField(max_length=4, choices=TITLE_CHOICES) @@ -70,6 +70,11 @@ class Contributor(models.Model): def __str__(self): return '%s, %s' % (self.user.last_name, self.user.first_name) + def save(self, *args, **kwargs): + if not self.activation_key: + self.generate_key() + super().save(*args, **kwargs) + def get_absolute_url(self): return reverse('scipost:contributor_info', args=(self.id,)) @@ -90,13 +95,6 @@ class Contributor(models.Model): def is_VE(self): return self.user.groups.filter(name='Vetting Editors').exists() - def get_activation_key(self): - if not self._activation_key: - self.generate_key() - return self._activation_key - - activation_key = property(get_activation_key, _activation_key) - def generate_key(self, feed=''): """ Generate and save a new activation_key for the contributor, given a certain feed. @@ -105,7 +103,7 @@ class Contributor(models.Model): feed += random.choice(string.ascii_letters) feed = feed.encode('utf8') salt = self.user.username.encode('utf8') - self._activation_key = hashlib.sha1(salt+salt).hexdigest() + self.activation_key = hashlib.sha1(salt+salt).hexdigest() self.key_expires = datetime.datetime.now() + datetime.timedelta(days=2) def expertises_as_string(self): diff --git a/submissions/migrations/0065_auto_20170829_0727.py b/submissions/migrations/0065_auto_20170829_0727.py new file mode 100644 index 0000000000000000000000000000000000000000..f185ec8b7990c1c9def136b892b772391bb4e31a --- /dev/null +++ b/submissions/migrations/0065_auto_20170829_0727.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.4 on 2017-08-29 05:27 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('submissions', '0064_auto_20170815_0826'), + ] + + operations = [ + migrations.AlterModelOptions( + name='editorialassignment', + options={'ordering': ['-date_created']}, + ), + migrations.AlterField( + model_name='editorialassignment', + name='submission', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='editorial_assignments', to='submissions.Submission'), + ), + migrations.AlterField( + model_name='editorialassignment', + name='to', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='editorial_assignments', to='scipost.Contributor'), + ), + ] diff --git a/theses/migrations/0007_auto_20170829_0727.py b/theses/migrations/0007_auto_20170829_0727.py new file mode 100644 index 0000000000000000000000000000000000000000..a6c696068375c047a4a721c31bc1206972ab42d2 --- /dev/null +++ b/theses/migrations/0007_auto_20170829_0727.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.4 on 2017-08-29 05:27 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('theses', '0006_auto_20161219_2012'), + ] + + operations = [ + migrations.AlterField( + model_name='thesislink', + name='supervisor', + field=models.CharField(max_length=1000), + ), + ]