diff --git a/confirmation/migrations/0004_remove_confirmationmanager.py b/confirmation/migrations/0004_remove_confirmationmanager.py new file mode 100644 index 0000000000..62ed622ed2 --- /dev/null +++ b/confirmation/migrations/0004_remove_confirmationmanager.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.2 on 2017-07-08 04:23 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('confirmation', '0003_emailchangeconfirmation'), + ] + + operations = [ + migrations.DeleteModel( + name='EmailChangeConfirmation', + ), + migrations.AlterModelOptions( + name='confirmation', + options={}, + ), + migrations.AddField( + model_name='confirmation', + name='type', + field=models.PositiveSmallIntegerField(default=1), + preserve_default=False, + ), + migrations.AlterField( + model_name='confirmation', + name='confirmation_key', + field=models.CharField(max_length=40), + ), + migrations.AlterField( + model_name='confirmation', + name='date_sent', + field=models.DateTimeField(), + ), + ] diff --git a/confirmation/models.py b/confirmation/models.py index 53eec412be..251871d5df 100644 --- a/confirmation/models.py +++ b/confirmation/models.py @@ -4,6 +4,7 @@ __revision__ = '$Id: models.py 28 2009-10-22 15:03:02Z jarek.zgoda $' +import datetime import re from django.db import models @@ -46,7 +47,8 @@ def get_object_from_key(confirmation_key): def create_confirmation_link(obj, host, confirmation_type): # type: (Union[ContentType, int], str, int) -> str key = generate_key() - Confirmation.objects.create(content_object=obj, date_sent=timezone_now(), confirmation_key=key) + Confirmation.objects.create(content_object=obj, date_sent=timezone_now(), confirmation_key=key, + type=confirmation_type) return confirmation_url(key, host, confirmation_type) def confirmation_url(confirmation_key, host, confirmation_type): @@ -56,40 +58,24 @@ def confirmation_url(confirmation_key, host, confirmation_type): reverse(_properties[confirmation_type].url_name, kwargs={'confirmation_key': confirmation_key})) -class ConfirmationManager(models.Manager): - pass - -class EmailChangeConfirmationManager(ConfirmationManager): - pass - class Confirmation(models.Model): content_type = models.ForeignKey(ContentType) - object_id = models.PositiveIntegerField() + object_id = models.PositiveIntegerField() # type: int content_object = GenericForeignKey('content_type', 'object_id') - date_sent = models.DateTimeField('sent') - confirmation_key = models.CharField('activation key', max_length=40) + date_sent = models.DateTimeField() # type: datetime.datetime + confirmation_key = models.CharField(max_length=40) # type: str + # The following list is the set of valid types USER_REGISTRATION = 1 INVITATION = 2 EMAIL_CHANGE = 3 UNSUBSCRIBE = 4 SERVER_REGISTRATION = 5 - - objects = ConfirmationManager() - - class Meta(object): - verbose_name = 'confirmation email' - verbose_name_plural = 'confirmation emails' + type = models.PositiveSmallIntegerField() # type: int def __unicode__(self): # type: () -> Text - return 'confirmation email for %s' % (self.content_object,) - -class EmailChangeConfirmation(Confirmation): - class Meta(object): - proxy = True - - objects = EmailChangeConfirmationManager() + return '' % (self.content_object,) class ConfirmationType(object): def __init__(self, url_name): diff --git a/zerver/tests/test_email_change.py b/zerver/tests/test_email_change.py index 07e5073ed5..8bb5b58194 100644 --- a/zerver/tests/test_email_change.py +++ b/zerver/tests/test_email_change.py @@ -59,7 +59,8 @@ class EmailChangeTestCase(ZulipTestCase): date_sent = now() - datetime.timedelta(days=2) Confirmation.objects.create(content_object=obj, date_sent=date_sent, - confirmation_key=key) + confirmation_key=key, + type=Confirmation.EMAIL_CHANGE) url = confirmation_url(key, user_profile.realm.host, Confirmation.EMAIL_CHANGE) response = self.client_get(url) self.assert_in_success_response(["Whoops"], response) @@ -78,7 +79,8 @@ class EmailChangeTestCase(ZulipTestCase): key = generate_key() Confirmation.objects.create(content_object=obj, date_sent=now(), - confirmation_key=key) + confirmation_key=key, + type=Confirmation.EMAIL_CHANGE) url = confirmation_url(key, user_profile.realm.host, Confirmation.EMAIL_CHANGE) response = self.client_get(url) diff --git a/zerver/views/user_settings.py b/zerver/views/user_settings.py index 05390dc4f5..4a9bdab542 100644 --- a/zerver/views/user_settings.py +++ b/zerver/views/user_settings.py @@ -26,7 +26,7 @@ from zerver.lib.users import check_change_full_name from zerver.lib.timezone import get_all_timezones from zerver.models import UserProfile, Realm, name_changes_disabled, \ EmailChangeStatus -from confirmation.models import EmailChangeConfirmation, get_object_from_key +from confirmation.models import get_object_from_key @zulip_login_required def confirm_email_change(request, confirmation_key):