class Migration(migrations.Migration): dependencies = [ ('desecapi', '0012_volatile_donations'), ] operations = [ migrations.AddField( model_name='token', name='last_used', field=models.DateTimeField(blank=True, null=True), ), migrations.AlterField( model_name='token', name='name', field=models.CharField(blank=True, max_length=64, verbose_name='Name'), ), migrations.AlterField( model_name='domain', name='name', field=models.CharField(max_length=191, unique=True, validators=[desecapi.models.validate_lower, django.core.validators.RegexValidator(code='invalid_domain_name', message='Invalid value (not a DNS name).', regex='^([a-z0-9_-]{1,63}\\.)*[a-z]{1,63}$')]), ), migrations.AlterField( model_name='rr', name='content', field=models.CharField(max_length=500), ), migrations.RunPython(migrate_data, migrations.RunPython.noop), ]
class Migration(migrations.Migration): dependencies = [ ('desecapi', '0001_initial_squashed'), ] operations = [ migrations.AlterField( model_name='domain', name='name', field=models.CharField(max_length=191, unique=True, validators=[ desecapi.models.validate_lower, django.core.validators.RegexValidator( code='invalid_domain_name', message='Domain name malformed.', regex='^[a-z0-9_.-]+$') ]), ), migrations.AlterField( model_name='domain', name='published', field=models.DateTimeField(blank=True, null=True), ), migrations.AlterField( model_name='rrset', name='subname', field=models.CharField(blank=True, max_length=178, validators=[ desecapi.models.validate_lower, django.core.validators.RegexValidator( code='invalid_subname', message='Subname malformed.', regex='^[*]?[a-z0-9_.-]*$') ]), ), migrations.AlterField( model_name='rrset', name='type', field=models.CharField(max_length=10, validators=[ desecapi.models.validate_upper, django.core.validators.RegexValidator( code='invalid_type', message='Type malformed.', regex='^[A-Z][A-Z0-9]*$') ]), ), migrations.RunPython(lowercase_names, reverse_code=migrations.RunPython.noop), ]
class Migration(migrations.Migration): dependencies = [ ('desecapi', '0002_lowercase_domains_and_subnames'), ] operations = [ migrations.AlterField( model_name='domain', name='name', field=models.CharField( max_length=191, unique=True, validators=[ desecapi.models.validate_lower, django.core.validators.RegexValidator( code='invalid_domain_name', message='Invalid value (not a DNS name).', regex='^[a-z0-9_.-]*[a-z]$') ]), ), migrations.AlterField( model_name='rrset', name='subname', field=models.CharField( blank=True, max_length=178, validators=[ desecapi.models.validate_lower, django.core.validators.RegexValidator( code='invalid_subname', message= "Subname can only use (lowercase) a-z, 0-9, ., -, and _, may start with a '*.', or just be '*'.", regex='^([*]|(([*][.])?[a-z0-9_.-]*))$') ]), ), migrations.AlterField( model_name='rrset', name='type', field=models.CharField( max_length=10, validators=[ desecapi.models.validate_upper, django.core.validators.RegexValidator( code='invalid_type', message= 'Type must be uppercase alphanumeric and start with a letter.', regex='^[A-Z][A-Z0-9]*$') ]), ), ]
class Migration(migrations.Migration): dependencies = [ ('desecapi', '0004_immortal_domains'), ] operations = [ migrations.AlterField( model_name='rrset', name='subname', field=models.CharField(blank=True, max_length=178, validators=[desecapi.models.validate_lower, django.core.validators.RegexValidator(code='invalid_subname', message="Subname can only use (lowercase) a-z, 0-9, ., -, and _, may start with a '*.', or just be '*'.", regex='^([*]|(([*][.])?([a-z0-9_-]+[.])*[a-z0-9_-]+))$')]), ), ]
class Migration(migrations.Migration): dependencies = [ ('desecapi', '0011_captcha_kind'), ] operations = [ migrations.AlterField( model_name='rrset', name='subname', field=models.CharField(blank=True, max_length=178, validators=[desecapi.models.validate_lower, django.core.validators.RegexValidator(code='invalid_subname', message="Subname can only use (lowercase) a-z, 0-9, ., -, and _, may start with a '*.', or just be '*'. Components may not exceed 63 characters.", regex='^([*]|(([*][.])?([a-z0-9_-]{1,63}[.])*[a-z0-9_-]{1,63}))$')]), ), ]
class Migration(migrations.Migration): dependencies = [ ('desecapi', '0001_initial'), ] operations = [ migrations.AlterField( model_name='user', name='id', field=models.CharField(default=desecapi.models.uuid_hex, editable=False, max_length=32, primary_key=True, serialize=False), ), ]
class Migration(migrations.Migration): dependencies = [ ('desecapi', '0007_remove_user_registration_remote_ip'), ] operations = [ migrations.CreateModel( name='Captcha', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('created', models.DateTimeField(auto_now_add=True)), ('content', models.CharField( default=desecapi.models.captcha_default_content, max_length=24)), ], ), ]
class Migration(migrations.Migration): replaces = [('desecapi', '0001_initial'), ('desecapi', '0002_donation'), ('desecapi', '0003_auto_20151008_1023'), ('desecapi', '0004_remove_donation_rip'), ('desecapi', '0005_auto_20151008_1042'), ('desecapi', '0006_auto_20151018_1234'), ('desecapi', '0007_domain_updated'), ('desecapi', '0008_django_update_1-10'), ('desecapi', '0009_auto_20161201_1548'), ('desecapi', '0010_auto_20161219_1242'), ('desecapi', '0011_user_limit_domains'), ('desecapi', '0012_move_dyn_flag'), ('desecapi', '0013_acme_challenge'), ('desecapi', '0014_ip_validation'), ('desecapi', '0015_rrset'), ('desecapi', '0016_dyn_flag_default'), ('desecapi', '0017_rr_model'), ('desecapi', '0018_prune_domain_fields'), ('desecapi', '0019_rrset_uuid'), ('desecapi', '0020_user_locked'), ('desecapi', '0021_tokens'), ('desecapi', '0022_domain_published')] initial = True dependencies = [] operations = [ migrations.CreateModel( name='User', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('password', models.CharField(max_length=128, verbose_name='password')), ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), ('email', models.EmailField(max_length=191, unique=True, verbose_name='email address')), ('is_active', models.BooleanField(default=True)), ('is_admin', models.BooleanField(default=False)), ('registration_remote_ip', models.CharField(blank=True, max_length=1024)), ('created', models.DateTimeField(auto_now_add=True)), ('limit_domains', models.IntegerField(blank=True, default=5, null=True)), ('dyn', models.BooleanField(default=False)), ('locked', models.DateTimeField(blank=True, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='Donation', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created', models.DateTimeField( default=desecapi.models.get_default_value_created)), ('name', models.CharField(max_length=255)), ('iban', models.CharField(max_length=34)), ('bic', models.CharField(max_length=11)), ('amount', models.DecimalField(decimal_places=2, max_digits=8)), ('message', models.CharField(blank=True, max_length=255)), ('due', models.DateTimeField( default=desecapi.models.get_default_value_due)), ('mref', models.CharField( default=desecapi.models.get_default_value_mref, max_length=32)), ('email', models.EmailField(blank=True, max_length=255)), ], options={ 'ordering': ('created', ), }, ), migrations.CreateModel( name='Domain', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created', models.DateTimeField(auto_now_add=True)), ('name', models.CharField(max_length=191, unique=True)), ('owner', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='domains', to=settings.AUTH_USER_MODEL)), ('published', models.DateTimeField(null=True)), ], options={ 'ordering': ('created', ), }, ), migrations.CreateModel( name='RRset', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('created', models.DateTimeField(auto_now_add=True)), ('updated', models.DateTimeField(null=True)), ('subname', models.CharField(blank=True, max_length=178)), ('type', models.CharField(max_length=10, validators=[desecapi.models.validate_upper ])), ('ttl', models.PositiveIntegerField( validators=[django.core.validators.MinValueValidator(1)]) ), ('domain', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='desecapi.Domain')), ], options={ 'unique_together': {('domain', 'subname', 'type')}, }, ), migrations.CreateModel( name='RR', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created', models.DateTimeField(auto_now_add=True)), ('content', models.CharField(max_length=4092)), ('rrset', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='records', to='desecapi.RRset')), ], ), migrations.CreateModel( name='Token', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created', models.DateTimeField(auto_now_add=True, verbose_name='Created')), ('key', models.CharField(db_index=True, max_length=40, unique=True, verbose_name='Key')), ('name', models.CharField(default='', max_length=64, verbose_name='Name')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='auth_tokens', to=settings.AUTH_USER_MODEL, verbose_name='User')), ('user_specific_id', models.BigIntegerField(verbose_name='User-Specific ID')), ], options={ 'unique_together': {('user', 'user_specific_id')}, }, ), ]
class Migration(migrations.Migration): initial = True dependencies = [] operations = [ migrations.CreateModel( name='User', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('password', models.CharField(max_length=128, verbose_name='password')), ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), ('email', models.EmailField(max_length=191, unique=True, verbose_name='email address')), ('is_active', models.BooleanField(default=True)), ('is_admin', models.BooleanField(default=False)), ('created', models.DateTimeField(auto_now_add=True)), ('limit_domains', models.IntegerField( blank=True, default=desecapi.models.User._limit_domains_default, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='Domain', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created', models.DateTimeField(auto_now_add=True)), ('name', models.CharField( max_length=191, unique=True, validators=[ desecapi.models.validate_lower, django.core.validators.RegexValidator( code='invalid_domain_name', flags=re.RegexFlag['IGNORECASE'], message= 'Domain names must be labels separated by dots. Labels may consist of up to 63 letters, digits, hyphens, and underscores. The last label may not contain an underscore.', regex='^(([a-z0-9_-]{1,63})\\.)*[a-z0-9-]{1,63}$') ])), ('owner', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='domains', to=settings.AUTH_USER_MODEL)), ('published', models.DateTimeField(blank=True, null=True)), ('minimum_ttl', models.PositiveIntegerField( default=desecapi.models.Domain._minimum_ttl_default)), ('renewal_changed', models.DateTimeField(auto_now_add=True)), ('renewal_state', models.IntegerField(choices=[(1, 'Fresh'), (2, 'Notified'), (3, 'Warned')], default=1)), ], options={ 'ordering': ('created', ), }, ), migrations.CreateModel( name='RRset', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('created', models.DateTimeField(auto_now_add=True)), ('touched', models.DateTimeField(auto_now=True)), ('subname', models.CharField( blank=True, max_length=178, validators=[ desecapi.models.validate_lower, django.core.validators.RegexValidator( code='invalid_subname', message= "Subname can only use (lowercase) a-z, 0-9, ., -, and _, may start with a '*.', or just be '*'.", regex='^([*]|(([*][.])?[a-z0-9_.-]*))$') ])), ('type', models.CharField( max_length=10, validators=[ desecapi.models.validate_upper, django.core.validators.RegexValidator( code='invalid_type', message= 'Type must be uppercase alphanumeric and start with a letter.', regex='^[A-Z][A-Z0-9]*$') ])), ('ttl', models.PositiveIntegerField()), ('domain', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='desecapi.domain')), ], options={ 'unique_together': {('domain', 'subname', 'type')}, }, ), migrations.CreateModel( name='AuthenticatedAction', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ], options={ 'managed': False, }, ), migrations.CreateModel( name='AuthenticatedUserAction', fields=[ ('authenticatedaction_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='desecapi.authenticatedaction')), ], options={ 'managed': False, }, bases=('desecapi.authenticatedaction', ), ), migrations.CreateModel( name='AuthenticatedDeleteUserAction', fields=[ ('authenticateduseraction_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='desecapi.authenticateduseraction')), ], options={ 'managed': False, }, bases=('desecapi.authenticateduseraction', ), ), migrations.CreateModel( name='AuthenticatedResetPasswordUserAction', fields=[ ('authenticateduseraction_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='desecapi.authenticateduseraction')), ('new_password', models.CharField(max_length=128)), ], options={ 'managed': False, }, bases=('desecapi.authenticateduseraction', ), ), migrations.CreateModel( name='Captcha', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('created', models.DateTimeField(auto_now_add=True)), ('content', models.CharField( default=desecapi.models.captcha_default_content, max_length=24)), ], ), migrations.CreateModel( name='Token', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('created', models.DateTimeField(auto_now_add=True, verbose_name='Created')), ('key', models.CharField(db_index=True, max_length=128, unique=True, verbose_name='Key')), ('name', models.CharField(blank=True, max_length=64, verbose_name='Name')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='auth_tokens', to=settings.AUTH_USER_MODEL, verbose_name='User')), ('last_used', models.DateTimeField(blank=True, null=True)), ], options={ 'verbose_name': 'Token', 'verbose_name_plural': 'Tokens', }, ), migrations.CreateModel( name='RR', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created', models.DateTimeField(auto_now_add=True)), ('content', models.CharField(max_length=500)), ('rrset', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='records', to='desecapi.rrset')), ], ), migrations.CreateModel( name='AuthenticatedActivateUserAction', fields=[ ('authenticateduseraction_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='desecapi.authenticateduseraction')), ('domain', models.CharField(max_length=191)), ], options={ 'managed': False, }, bases=('desecapi.authenticateduseraction', ), ), migrations.CreateModel( name='AuthenticatedChangeEmailUserAction', fields=[ ('authenticateduseraction_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='desecapi.authenticateduseraction')), ('new_email', models.EmailField(max_length=254)), ], options={ 'managed': False, }, bases=('desecapi.authenticateduseraction', ), ), migrations.CreateModel( name='AuthenticatedBasicUserAction', fields=[ ('authenticatedaction_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='desecapi.authenticatedaction')), ], options={ 'managed': False, }, bases=('desecapi.authenticatedaction', ), ), migrations.CreateModel( name='AuthenticatedDomainBasicUserAction', fields=[ ('authenticatedbasicuseraction_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='desecapi.authenticatedbasicuseraction')), ], options={ 'managed': False, }, bases=('desecapi.authenticatedbasicuseraction', ), ), migrations.CreateModel( name='AuthenticatedRenewDomainBasicUserAction', fields=[ ('authenticateddomainbasicuseraction_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='desecapi.authenticateddomainbasicuseraction')), ], options={ 'managed': False, }, bases=('desecapi.authenticateddomainbasicuseraction', ), ), migrations.CreateModel( name='Donation', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created', models.DateTimeField( default=desecapi.models.Donation._created_default)), ('name', models.CharField(max_length=255)), ('iban', models.CharField(max_length=34)), ('bic', models.CharField(max_length=11)), ('amount', models.DecimalField(decimal_places=2, max_digits=8)), ('message', models.CharField(blank=True, max_length=255)), ('due', models.DateTimeField( default=desecapi.models.Donation._due_default)), ('mref', models.CharField( default=desecapi.models.Donation._mref_default, max_length=32)), ('email', models.EmailField(blank=True, max_length=255)), ], options={ 'ordering': ('created', ), 'managed': False, }, ), ]