patch migration, made tox check for missing migrations (#35)

Add tox for missing migrations; fix verbose names in models and migration
This commit is contained in:
John Carter 2018-08-02 21:16:44 +12:00 committed by Iwo Herka
parent be0197d5f3
commit 5ba33e7e6e
4 changed files with 38 additions and 21 deletions

View file

@ -19,14 +19,14 @@ class Migration(migrations.Migration):
name='Attribute',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(help_text='User-friendly attribute name', max_length=100, verbose_name='name')),
('slug', eav.fields.EavSlugField(help_text='Short unique attribute label', unique=True, verbose_name='slug')),
('description', models.CharField(blank=True, help_text='Short description', max_length=256, null=True, verbose_name='description')),
('datatype', eav.fields.EavDatatypeField(choices=[('text', 'Text'), ('float', 'Float'), ('int', 'Integer'), ('date', 'Date'), ('bool', 'True / False'), ('object', 'Django Object'), ('enum', 'Multiple Choice')], max_length=6, verbose_name='data type')),
('created', models.DateTimeField(default=django.utils.timezone.now, editable=False, verbose_name='created')),
('modified', models.DateTimeField(auto_now=True, verbose_name='modified')),
('required', models.BooleanField(default=False, verbose_name='required')),
('display_order', models.PositiveIntegerField(default=1, verbose_name='display order')),
('name', models.CharField(help_text='User-friendly attribute name', max_length=100, verbose_name='Name')),
('slug', eav.fields.EavSlugField(help_text='Short unique attribute label', unique=True, verbose_name='Slug')),
('description', models.CharField(blank=True, help_text='Short description', max_length=256, null=True, verbose_name='Description')),
('datatype', eav.fields.EavDatatypeField(choices=[('text', 'Text'), ('date', 'Date'), ('float', 'Float'), ('int', 'Integer'), ('bool', 'True / False'), ('object', 'Django Object'), ('enum', 'Multiple Choice')], max_length=6, verbose_name='Data Type')),
('created', models.DateTimeField(default=django.utils.timezone.now, editable=False, verbose_name='Created')),
('modified', models.DateTimeField(auto_now=True, verbose_name='Modified')),
('required', models.BooleanField(default=False, verbose_name='Required')),
('display_order', models.PositiveIntegerField(default=1, verbose_name='Display order')),
],
options={
'ordering': ['name'],
@ -36,14 +36,14 @@ class Migration(migrations.Migration):
name='EnumGroup',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100, unique=True, verbose_name='name')),
('name', models.CharField(max_length=100, unique=True, verbose_name='Name')),
],
),
migrations.CreateModel(
name='EnumValue',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('value', models.CharField(db_index=True, max_length=50, unique=True, verbose_name='value')),
('value', models.CharField(db_index=True, max_length=50, unique=True, verbose_name='Value')),
],
),
migrations.CreateModel(
@ -57,9 +57,9 @@ class Migration(migrations.Migration):
('value_date', models.DateTimeField(blank=True, null=True)),
('value_bool', models.NullBooleanField()),
('generic_value_id', models.IntegerField(blank=True, null=True)),
('created', models.DateTimeField(default=django.utils.timezone.now, verbose_name='created')),
('modified', models.DateTimeField(auto_now=True, verbose_name='modified')),
('attribute', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='eav.Attribute', verbose_name='attribute')),
('created', models.DateTimeField(default=django.utils.timezone.now, verbose_name='Created')),
('modified', models.DateTimeField(auto_now=True, verbose_name='Modified')),
('attribute', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='eav.Attribute', verbose_name='Attribute')),
('entity_ct', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='value_entities', to='contenttypes.ContentType')),
('generic_value_ct', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='value_values', to='contenttypes.ContentType')),
('value_enum', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='eav_values', to='eav.EnumValue')),
@ -68,11 +68,11 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='enumgroup',
name='values',
field=models.ManyToManyField(to='eav.EnumValue', verbose_name='enum group'),
field=models.ManyToManyField(to='eav.EnumValue', verbose_name='Enum group'),
),
migrations.AddField(
model_name='attribute',
name='enum_group',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='eav.EnumGroup', verbose_name='choice group'),
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='eav.EnumGroup', verbose_name='Choice Group'),
),
]

View file

@ -51,7 +51,7 @@ class EnumValue(models.Model):
only have a total of four *EnumValues* objects, as you should have used
the same *Yes* and *No* *EnumValues* for both *EnumGroups*.
"""
value = models.CharField(_('value'), db_index=True, unique=True, max_length=50)
value = models.CharField(_('Value'), db_index=True, unique=True, max_length=50)
def __str__(self):
return '<EnumValue {}>'.format(self.value)
@ -65,8 +65,8 @@ class EnumGroup(models.Model):
See :class:`EnumValue` for an example.
"""
name = models.CharField(_('name'), unique = True, max_length = 100)
values = models.ManyToManyField(EnumValue, verbose_name = _('enum group'))
name = models.CharField(_('Name'), unique = True, max_length = 100)
values = models.ManyToManyField(EnumValue, verbose_name = _('Enum group'))
def __str__(self):
return '<EnumGroup {}>'.format(self.name)
@ -395,7 +395,7 @@ class Value(models.Model):
Attribute,
db_index = True,
on_delete = models.PROTECT,
verbose_name = _('attribute')
verbose_name = _('Attribute')
)
def save(self, *args, **kwargs):

View file

@ -18,6 +18,7 @@ INSTALLED_APPS = [
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'TEST_NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'TEST_NAME': os.path.join(BASE_DIR, 'test_db.sqlite3'),
}
}

18
tox.ini
View file

@ -4,6 +4,7 @@ envlist =
py35-django{111,20,tip},
py36-django{111,20,tip},
py37-django{111,20,tip},
migrationscheck
[testenv]
pip_pre=True
@ -13,4 +14,19 @@ deps =
django20: Django >= 2.0, <2.1
djangotip: Django
commands = ./runtests
commands =
./runtests
[testenv:migrationscheck]
pip_pre=True
deps =
Django
setenv =
DJANGO_SETTINGS_MODULE=tests.test_settings
# make test fail if missing migrations
commands =
django-admin makemigrations --check --dry-run