diff --git a/confirmation/migrations/0007_add_indexes.py b/confirmation/migrations/0007_add_indexes.py new file mode 100644 index 0000000000..3bca041908 --- /dev/null +++ b/confirmation/migrations/0007_add_indexes.py @@ -0,0 +1,37 @@ +# Generated by Django 2.2.10 on 2020-03-27 09:02 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('confirmation', '0006_realmcreationkey_presume_email_valid'), + ] + + operations = [ + migrations.AlterField( + model_name='confirmation', + name='confirmation_key', + field=models.CharField(db_index=True, max_length=40), + ), + migrations.AlterField( + model_name='confirmation', + name='date_sent', + field=models.DateTimeField(db_index=True), + ), + migrations.AlterField( + model_name='confirmation', + name='object_id', + field=models.PositiveIntegerField(db_index=True), + ), + migrations.AlterField( + model_name='realmcreationkey', + name='creation_key', + field=models.CharField(db_index=True, max_length=40, verbose_name='activation key'), + ), + migrations.AlterUniqueTogether( + name='confirmation', + unique_together={('type', 'confirmation_key')}, + ), + ] diff --git a/confirmation/models.py b/confirmation/models.py index 66c0af92e7..2ab4fcb9a5 100644 --- a/confirmation/models.py +++ b/confirmation/models.py @@ -90,10 +90,10 @@ def confirmation_url(confirmation_key: str, host: str, class Confirmation(models.Model): content_type = models.ForeignKey(ContentType, on_delete=CASCADE) - object_id = models.PositiveIntegerField() # type: int + object_id = models.PositiveIntegerField(db_index=True) # type: int content_object = GenericForeignKey('content_type', 'object_id') - date_sent = models.DateTimeField() # type: datetime.datetime - confirmation_key = models.CharField(max_length=40) # type: str + date_sent = models.DateTimeField(db_index=True) # type: datetime.datetime + confirmation_key = models.CharField(max_length=40, db_index=True) # type: str realm = models.ForeignKey(Realm, null=True, on_delete=CASCADE) # type: Optional[Realm] # The following list is the set of valid types @@ -110,6 +110,9 @@ class Confirmation(models.Model): def __str__(self) -> str: return '' % (self.content_object,) + class Meta: + unique_together = ("type", "confirmation_key") + class ConfirmationType: def __init__(self, url_name: str, validity_in_days: int=settings.CONFIRMATION_LINK_DEFAULT_VALIDITY_DAYS) -> None: @@ -171,7 +174,7 @@ def generate_realm_creation_url(by_admin: bool=False) -> str: kwargs={'creation_key': key})) class RealmCreationKey(models.Model): - creation_key = models.CharField('activation key', max_length=40) + creation_key = models.CharField('activation key', db_index=True, max_length=40) date_created = models.DateTimeField('created', default=timezone_now) # True just if we should presume the email address the user enters