vkk.migrations.0001_initial

  1# Generated by Django 4.0.4 on 2022-05-23 14:09
  2
  3from django.conf import settings
  4import django.core.validators
  5from django.db import migrations, models
  6import django.db.models.deletion
  7import django.db.models.expressions
  8
  9
 10class Migration(migrations.Migration):
 11
 12    initial = True
 13
 14    dependencies = [
 15    ]
 16
 17    operations = [
 18        migrations.CreateModel(
 19            name='User',
 20            fields=[
 21                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 22                ('password', models.CharField(max_length=128, verbose_name='password')),
 23                ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
 24                ('first_name', models.CharField(max_length=150, verbose_name='first name')),
 25                ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')),
 26                ('email', models.EmailField(max_length=254, unique=True, verbose_name='email address')),
 27                ('is_accountant', models.BooleanField(default=False, help_text='Designates whether the user can access features reserved for accounting.', verbose_name='accountant status')),
 28                ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),
 29            ],
 30            options={
 31                'verbose_name': 'user',
 32                'verbose_name_plural': 'users',
 33                'default_permissions': (),
 34            },
 35        ),
 36        migrations.CreateModel(
 37            name='Announcement',
 38            fields=[
 39                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 40                ('message', models.TextField(help_text='Long messages may negativly impact overall website usabillity.', verbose_name='message')),
 41                ('is_active', models.BooleanField(default=False, verbose_name='active')),
 42            ],
 43            options={
 44                'verbose_name': 'announcement',
 45                'verbose_name_plural': 'announcements',
 46                'default_permissions': (),
 47            },
 48        ),
 49        migrations.CreateModel(
 50            name='Department',
 51            fields=[
 52                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 53                ('name', models.CharField(max_length=255, verbose_name='name')),
 54                ('accounting_entry', models.CharField(max_length=7, unique=True, verbose_name='accounting entry')),
 55            ],
 56            options={
 57                'verbose_name': 'department',
 58                'verbose_name_plural': 'departments',
 59                'default_permissions': (),
 60            },
 61        ),
 62        migrations.CreateModel(
 63            name='NewUser',
 64            fields=[
 65                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 66                ('token', models.SlugField(unique=True, verbose_name='token')),
 67                ('expiration_date', models.DateField(help_text='Date after which the generated token will be expired.', verbose_name='expiration date')),
 68            ],
 69            options={
 70                'verbose_name': 'new user',
 71                'verbose_name_plural': 'new users',
 72                'default_permissions': (),
 73            },
 74        ),
 75        migrations.CreateModel(
 76            name='Period',
 77            fields=[
 78                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 79                ('start', models.DateField(verbose_name='start date')),
 80                ('end', models.DateField(verbose_name='end date')),
 81                ('dead_line', models.DateTimeField(verbose_name='dead line')),
 82                ('dead_line_final', models.DateTimeField(verbose_name='final dead line')),
 83            ],
 84            options={
 85                'verbose_name': 'period',
 86                'verbose_name_plural': 'periods',
 87                'get_latest_by': 'start',
 88                'default_permissions': (),
 89            },
 90        ),
 91        migrations.CreateModel(
 92            name='Project',
 93            fields=[
 94                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 95                ('invoice_number', models.IntegerField(help_text='Identifier for invoice as number between 20000000 and 39999999.', unique=True, validators=[django.core.validators.MinValueValidator(20000000), django.core.validators.MaxValueValidator(39999999)], verbose_name='invoice number')),
 96                ('name', models.CharField(max_length=255, verbose_name='name')),
 97                ('contractor', models.CharField(max_length=255, verbose_name='contractor')),
 98                ('start', models.DateField(verbose_name='start date')),
 99                ('end', models.DateField(verbose_name='end date')),
100                ('department', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='vkk.department')),
101            ],
102            options={
103                'verbose_name': 'project',
104                'verbose_name_plural': 'projects',
105                'default_permissions': (),
106            },
107        ),
108        migrations.CreateModel(
109            name='ProjectAssignment',
110            fields=[
111                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
112                ('contributor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='contributor')),
113                ('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='vkk.project', verbose_name='project')),
114            ],
115            options={
116                'verbose_name': 'project assignment',
117                'verbose_name_plural': 'project assignments',
118                'default_permissions': (),
119            },
120        ),
121        migrations.CreateModel(
122            name='SalaryLevel',
123            fields=[
124                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
125                ('salary_code', models.CharField(max_length=15, unique=True, verbose_name='salary code')),
126            ],
127            options={
128                'verbose_name': 'salary level',
129                'verbose_name_plural': 'salary levels',
130                'default_permissions': (),
131            },
132        ),
133        migrations.CreateModel(
134            name='WorkHoursCorrection',
135            fields=[
136                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
137                ('ammount', models.DecimalField(decimal_places=2, help_text='Ammount by which the total number of workhoursfor a given project assignment and period should be corrected.', max_digits=5)),
138                ('period', models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, to='vkk.period', verbose_name='period')),
139                ('project_assignment', models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, to='vkk.projectassignment', verbose_name='project assignment')),
140            ],
141            options={
142                'verbose_name': 'work hours correction',
143                'verbose_name_plural': 'work hours correction',
144                'default_permissions': (),
145            },
146        ),
147        migrations.CreateModel(
148            name='WorkHours',
149            fields=[
150                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
151                ('day', models.DateField(help_text='Date of work day.', verbose_name='work day')),
152                ('hours', models.DecimalField(decimal_places=2, help_text='Number of hours worked with precision up to two decimal places.', max_digits=4, validators=[django.core.validators.MinValueValidator(0.01), django.core.validators.MaxValueValidator(24)], verbose_name='work hours')),
153                ('period', models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, to='vkk.period', verbose_name='period')),
154                ('project_assignment', models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, to='vkk.projectassignment', verbose_name='project assignment')),
155            ],
156            options={
157                'verbose_name': 'work hours',
158                'verbose_name_plural': 'work hours',
159                'default_permissions': (),
160            },
161        ),
162        migrations.CreateModel(
163            name='ProjectManager',
164            fields=[
165                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
166                ('start', models.DateField(verbose_name='start date')),
167                ('end', models.DateField(verbose_name='end date')),
168                ('is_proxy', models.BooleanField(default=False, help_text='Designates whether management rights are given to the userfor administrative uses only.', verbose_name='proxy')),
169                ('manager', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='manager')),
170                ('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='vkk.project', verbose_name='project')),
171            ],
172            options={
173                'verbose_name': 'project manager',
174                'verbose_name_plural': 'project managers',
175                'default_permissions': (),
176            },
177        ),
178        migrations.AddField(
179            model_name='projectassignment',
180            name='salary_level',
181            field=models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, to='vkk.salarylevel', verbose_name='salary level'),
182        ),
183        migrations.CreateModel(
184            name='PeriodClosure',
185            fields=[
186                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
187                ('is_closed', models.BooleanField(default=False, verbose_name='closed')),
188                ('period', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='vkk.period', verbose_name='period')),
189                ('project_assignment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='vkk.projectassignment', verbose_name='project assignment')),
190            ],
191            options={
192                'verbose_name': 'period',
193                'verbose_name_plural': 'periods',
194                'default_permissions': (),
195            },
196        ),
197        migrations.AddConstraint(
198            model_name='period',
199            constraint=models.CheckConstraint(check=models.Q(('start__lte', django.db.models.expressions.F('end'))), name='runtime_check_period'),
200        ),
201        migrations.AddConstraint(
202            model_name='period',
203            constraint=models.CheckConstraint(check=models.Q(('end__lte', django.db.models.expressions.F('dead_line'))), name='dead_line_check_period'),
204        ),
205        migrations.AddConstraint(
206            model_name='period',
207            constraint=models.CheckConstraint(check=models.Q(('dead_line__lte', django.db.models.expressions.F('dead_line_final'))), name='dead_line_final_check_period'),
208        ),
209        migrations.AddField(
210            model_name='newuser',
211            name='user',
212            field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user'),
213        ),
214        migrations.AddConstraint(
215            model_name='workhourscorrection',
216            constraint=models.UniqueConstraint(fields=('project_assignment', 'period'), name='unique_constraint_work_hours_correction'),
217        ),
218        migrations.AddConstraint(
219            model_name='workhours',
220            constraint=models.UniqueConstraint(fields=('project_assignment', 'day'), name='unique_constraint_work_hours'),
221        ),
222        migrations.AddConstraint(
223            model_name='workhours',
224            constraint=models.CheckConstraint(check=models.Q(('hours__gt', 0.0)), name='min_work_hours'),
225        ),
226        migrations.AddConstraint(
227            model_name='workhours',
228            constraint=models.CheckConstraint(check=models.Q(('hours__lte', 24.0)), name='max_work_hours'),
229        ),
230        migrations.AddConstraint(
231            model_name='projectmanager',
232            constraint=models.CheckConstraint(check=models.Q(('start__lte', django.db.models.expressions.F('end'))), name='runtime_check_manager'),
233        ),
234        migrations.AddConstraint(
235            model_name='projectmanager',
236            constraint=models.UniqueConstraint(fields=('manager', 'project'), name='unique_constraint_project_manager'),
237        ),
238        migrations.AddConstraint(
239            model_name='projectassignment',
240            constraint=models.UniqueConstraint(fields=('contributor', 'salary_level', 'project'), name='unique_constraint_project_assignment'),
241        ),
242        migrations.AddConstraint(
243            model_name='project',
244            constraint=models.CheckConstraint(check=models.Q(('start__lte', django.db.models.expressions.F('end'))), name='runtime_check_projekt'),
245        ),
246        migrations.AddConstraint(
247            model_name='project',
248            constraint=models.CheckConstraint(check=models.Q(('invoice_number__gte', 20000000), ('invoice_number__lte', 39999999)), name='invoice_number_intervall_check'),
249        ),
250        migrations.AddConstraint(
251            model_name='periodclosure',
252            constraint=models.UniqueConstraint(fields=('period', 'project_assignment'), name='unique_constraint_period_closure'),
253        ),
254    ]
class Migration(django.db.migrations.migration.Migration):
 11class Migration(migrations.Migration):
 12
 13    initial = True
 14
 15    dependencies = [
 16    ]
 17
 18    operations = [
 19        migrations.CreateModel(
 20            name='User',
 21            fields=[
 22                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 23                ('password', models.CharField(max_length=128, verbose_name='password')),
 24                ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
 25                ('first_name', models.CharField(max_length=150, verbose_name='first name')),
 26                ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')),
 27                ('email', models.EmailField(max_length=254, unique=True, verbose_name='email address')),
 28                ('is_accountant', models.BooleanField(default=False, help_text='Designates whether the user can access features reserved for accounting.', verbose_name='accountant status')),
 29                ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),
 30            ],
 31            options={
 32                'verbose_name': 'user',
 33                'verbose_name_plural': 'users',
 34                'default_permissions': (),
 35            },
 36        ),
 37        migrations.CreateModel(
 38            name='Announcement',
 39            fields=[
 40                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 41                ('message', models.TextField(help_text='Long messages may negativly impact overall website usabillity.', verbose_name='message')),
 42                ('is_active', models.BooleanField(default=False, verbose_name='active')),
 43            ],
 44            options={
 45                'verbose_name': 'announcement',
 46                'verbose_name_plural': 'announcements',
 47                'default_permissions': (),
 48            },
 49        ),
 50        migrations.CreateModel(
 51            name='Department',
 52            fields=[
 53                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 54                ('name', models.CharField(max_length=255, verbose_name='name')),
 55                ('accounting_entry', models.CharField(max_length=7, unique=True, verbose_name='accounting entry')),
 56            ],
 57            options={
 58                'verbose_name': 'department',
 59                'verbose_name_plural': 'departments',
 60                'default_permissions': (),
 61            },
 62        ),
 63        migrations.CreateModel(
 64            name='NewUser',
 65            fields=[
 66                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 67                ('token', models.SlugField(unique=True, verbose_name='token')),
 68                ('expiration_date', models.DateField(help_text='Date after which the generated token will be expired.', verbose_name='expiration date')),
 69            ],
 70            options={
 71                'verbose_name': 'new user',
 72                'verbose_name_plural': 'new users',
 73                'default_permissions': (),
 74            },
 75        ),
 76        migrations.CreateModel(
 77            name='Period',
 78            fields=[
 79                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 80                ('start', models.DateField(verbose_name='start date')),
 81                ('end', models.DateField(verbose_name='end date')),
 82                ('dead_line', models.DateTimeField(verbose_name='dead line')),
 83                ('dead_line_final', models.DateTimeField(verbose_name='final dead line')),
 84            ],
 85            options={
 86                'verbose_name': 'period',
 87                'verbose_name_plural': 'periods',
 88                'get_latest_by': 'start',
 89                'default_permissions': (),
 90            },
 91        ),
 92        migrations.CreateModel(
 93            name='Project',
 94            fields=[
 95                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 96                ('invoice_number', models.IntegerField(help_text='Identifier for invoice as number between 20000000 and 39999999.', unique=True, validators=[django.core.validators.MinValueValidator(20000000), django.core.validators.MaxValueValidator(39999999)], verbose_name='invoice number')),
 97                ('name', models.CharField(max_length=255, verbose_name='name')),
 98                ('contractor', models.CharField(max_length=255, verbose_name='contractor')),
 99                ('start', models.DateField(verbose_name='start date')),
100                ('end', models.DateField(verbose_name='end date')),
101                ('department', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='vkk.department')),
102            ],
103            options={
104                'verbose_name': 'project',
105                'verbose_name_plural': 'projects',
106                'default_permissions': (),
107            },
108        ),
109        migrations.CreateModel(
110            name='ProjectAssignment',
111            fields=[
112                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
113                ('contributor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='contributor')),
114                ('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='vkk.project', verbose_name='project')),
115            ],
116            options={
117                'verbose_name': 'project assignment',
118                'verbose_name_plural': 'project assignments',
119                'default_permissions': (),
120            },
121        ),
122        migrations.CreateModel(
123            name='SalaryLevel',
124            fields=[
125                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
126                ('salary_code', models.CharField(max_length=15, unique=True, verbose_name='salary code')),
127            ],
128            options={
129                'verbose_name': 'salary level',
130                'verbose_name_plural': 'salary levels',
131                'default_permissions': (),
132            },
133        ),
134        migrations.CreateModel(
135            name='WorkHoursCorrection',
136            fields=[
137                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
138                ('ammount', models.DecimalField(decimal_places=2, help_text='Ammount by which the total number of workhoursfor a given project assignment and period should be corrected.', max_digits=5)),
139                ('period', models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, to='vkk.period', verbose_name='period')),
140                ('project_assignment', models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, to='vkk.projectassignment', verbose_name='project assignment')),
141            ],
142            options={
143                'verbose_name': 'work hours correction',
144                'verbose_name_plural': 'work hours correction',
145                'default_permissions': (),
146            },
147        ),
148        migrations.CreateModel(
149            name='WorkHours',
150            fields=[
151                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
152                ('day', models.DateField(help_text='Date of work day.', verbose_name='work day')),
153                ('hours', models.DecimalField(decimal_places=2, help_text='Number of hours worked with precision up to two decimal places.', max_digits=4, validators=[django.core.validators.MinValueValidator(0.01), django.core.validators.MaxValueValidator(24)], verbose_name='work hours')),
154                ('period', models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, to='vkk.period', verbose_name='period')),
155                ('project_assignment', models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, to='vkk.projectassignment', verbose_name='project assignment')),
156            ],
157            options={
158                'verbose_name': 'work hours',
159                'verbose_name_plural': 'work hours',
160                'default_permissions': (),
161            },
162        ),
163        migrations.CreateModel(
164            name='ProjectManager',
165            fields=[
166                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
167                ('start', models.DateField(verbose_name='start date')),
168                ('end', models.DateField(verbose_name='end date')),
169                ('is_proxy', models.BooleanField(default=False, help_text='Designates whether management rights are given to the userfor administrative uses only.', verbose_name='proxy')),
170                ('manager', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='manager')),
171                ('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='vkk.project', verbose_name='project')),
172            ],
173            options={
174                'verbose_name': 'project manager',
175                'verbose_name_plural': 'project managers',
176                'default_permissions': (),
177            },
178        ),
179        migrations.AddField(
180            model_name='projectassignment',
181            name='salary_level',
182            field=models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, to='vkk.salarylevel', verbose_name='salary level'),
183        ),
184        migrations.CreateModel(
185            name='PeriodClosure',
186            fields=[
187                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
188                ('is_closed', models.BooleanField(default=False, verbose_name='closed')),
189                ('period', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='vkk.period', verbose_name='period')),
190                ('project_assignment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='vkk.projectassignment', verbose_name='project assignment')),
191            ],
192            options={
193                'verbose_name': 'period',
194                'verbose_name_plural': 'periods',
195                'default_permissions': (),
196            },
197        ),
198        migrations.AddConstraint(
199            model_name='period',
200            constraint=models.CheckConstraint(check=models.Q(('start__lte', django.db.models.expressions.F('end'))), name='runtime_check_period'),
201        ),
202        migrations.AddConstraint(
203            model_name='period',
204            constraint=models.CheckConstraint(check=models.Q(('end__lte', django.db.models.expressions.F('dead_line'))), name='dead_line_check_period'),
205        ),
206        migrations.AddConstraint(
207            model_name='period',
208            constraint=models.CheckConstraint(check=models.Q(('dead_line__lte', django.db.models.expressions.F('dead_line_final'))), name='dead_line_final_check_period'),
209        ),
210        migrations.AddField(
211            model_name='newuser',
212            name='user',
213            field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user'),
214        ),
215        migrations.AddConstraint(
216            model_name='workhourscorrection',
217            constraint=models.UniqueConstraint(fields=('project_assignment', 'period'), name='unique_constraint_work_hours_correction'),
218        ),
219        migrations.AddConstraint(
220            model_name='workhours',
221            constraint=models.UniqueConstraint(fields=('project_assignment', 'day'), name='unique_constraint_work_hours'),
222        ),
223        migrations.AddConstraint(
224            model_name='workhours',
225            constraint=models.CheckConstraint(check=models.Q(('hours__gt', 0.0)), name='min_work_hours'),
226        ),
227        migrations.AddConstraint(
228            model_name='workhours',
229            constraint=models.CheckConstraint(check=models.Q(('hours__lte', 24.0)), name='max_work_hours'),
230        ),
231        migrations.AddConstraint(
232            model_name='projectmanager',
233            constraint=models.CheckConstraint(check=models.Q(('start__lte', django.db.models.expressions.F('end'))), name='runtime_check_manager'),
234        ),
235        migrations.AddConstraint(
236            model_name='projectmanager',
237            constraint=models.UniqueConstraint(fields=('manager', 'project'), name='unique_constraint_project_manager'),
238        ),
239        migrations.AddConstraint(
240            model_name='projectassignment',
241            constraint=models.UniqueConstraint(fields=('contributor', 'salary_level', 'project'), name='unique_constraint_project_assignment'),
242        ),
243        migrations.AddConstraint(
244            model_name='project',
245            constraint=models.CheckConstraint(check=models.Q(('start__lte', django.db.models.expressions.F('end'))), name='runtime_check_projekt'),
246        ),
247        migrations.AddConstraint(
248            model_name='project',
249            constraint=models.CheckConstraint(check=models.Q(('invoice_number__gte', 20000000), ('invoice_number__lte', 39999999)), name='invoice_number_intervall_check'),
250        ),
251        migrations.AddConstraint(
252            model_name='periodclosure',
253            constraint=models.UniqueConstraint(fields=('period', 'project_assignment'), name='unique_constraint_period_closure'),
254        ),
255    ]

The base class for all migrations.

Migration files will import this from django.db.migrations.Migration and subclass it as a class called Migration. It will have one or more of the following attributes:

  • operations: A list of Operation instances, probably from django.db.migrations.operations
  • dependencies: A list of tuples of (app_path, migration_name)
  • run_before: A list of tuples of (app_path, migration_name)
  • replaces: A list of migration_names

Note that all migrations come out of migrations and into the Loader or Graph as instances, having been initialized with their app label and name.

initial = True
dependencies = []
operations = [<CreateModel name='User', fields=[('id', <django.db.models.fields.BigAutoField>), ('password', <django.db.models.fields.CharField>), ('last_login', <django.db.models.fields.DateTimeField>), ('first_name', <django.db.models.fields.CharField>), ('last_name', <django.db.models.fields.CharField>), ('email', <django.db.models.fields.EmailField>), ('is_accountant', <django.db.models.fields.BooleanField>), ('is_active', <django.db.models.fields.BooleanField>)], options={'verbose_name': 'user', 'verbose_name_plural': 'users', 'default_permissions': ()}>, <CreateModel name='Announcement', fields=[('id', <django.db.models.fields.BigAutoField>), ('message', <django.db.models.fields.TextField>), ('is_active', <django.db.models.fields.BooleanField>)], options={'verbose_name': 'announcement', 'verbose_name_plural': 'announcements', 'default_permissions': ()}>, <CreateModel name='Department', fields=[('id', <django.db.models.fields.BigAutoField>), ('name', <django.db.models.fields.CharField>), ('accounting_entry', <django.db.models.fields.CharField>)], options={'verbose_name': 'department', 'verbose_name_plural': 'departments', 'default_permissions': ()}>, <CreateModel name='NewUser', fields=[('id', <django.db.models.fields.BigAutoField>), ('token', <django.db.models.fields.SlugField>), ('expiration_date', <django.db.models.fields.DateField>)], options={'verbose_name': 'new user', 'verbose_name_plural': 'new users', 'default_permissions': ()}>, <CreateModel name='Period', fields=[('id', <django.db.models.fields.BigAutoField>), ('start', <django.db.models.fields.DateField>), ('end', <django.db.models.fields.DateField>), ('dead_line', <django.db.models.fields.DateTimeField>), ('dead_line_final', <django.db.models.fields.DateTimeField>)], options={'verbose_name': 'period', 'verbose_name_plural': 'periods', 'get_latest_by': 'start', 'default_permissions': ()}>, <CreateModel name='Project', fields=[('id', <django.db.models.fields.BigAutoField>), ('invoice_number', <django.db.models.fields.IntegerField>), ('name', <django.db.models.fields.CharField>), ('contractor', <django.db.models.fields.CharField>), ('start', <django.db.models.fields.DateField>), ('end', <django.db.models.fields.DateField>), ('department', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'project', 'verbose_name_plural': 'projects', 'default_permissions': ()}>, <CreateModel name='ProjectAssignment', fields=[('id', <django.db.models.fields.BigAutoField>), ('contributor', <django.db.models.fields.related.ForeignKey>), ('project', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'project assignment', 'verbose_name_plural': 'project assignments', 'default_permissions': ()}>, <CreateModel name='SalaryLevel', fields=[('id', <django.db.models.fields.BigAutoField>), ('salary_code', <django.db.models.fields.CharField>)], options={'verbose_name': 'salary level', 'verbose_name_plural': 'salary levels', 'default_permissions': ()}>, <CreateModel name='WorkHoursCorrection', fields=[('id', <django.db.models.fields.BigAutoField>), ('ammount', <django.db.models.fields.DecimalField>), ('period', <django.db.models.fields.related.ForeignKey>), ('project_assignment', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'work hours correction', 'verbose_name_plural': 'work hours correction', 'default_permissions': ()}>, <CreateModel name='WorkHours', fields=[('id', <django.db.models.fields.BigAutoField>), ('day', <django.db.models.fields.DateField>), ('hours', <django.db.models.fields.DecimalField>), ('period', <django.db.models.fields.related.ForeignKey>), ('project_assignment', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'work hours', 'verbose_name_plural': 'work hours', 'default_permissions': ()}>, <CreateModel name='ProjectManager', fields=[('id', <django.db.models.fields.BigAutoField>), ('start', <django.db.models.fields.DateField>), ('end', <django.db.models.fields.DateField>), ('is_proxy', <django.db.models.fields.BooleanField>), ('manager', <django.db.models.fields.related.ForeignKey>), ('project', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'project manager', 'verbose_name_plural': 'project managers', 'default_permissions': ()}>, <AddField model_name='projectassignment', name='salary_level', field=<django.db.models.fields.related.ForeignKey>>, <CreateModel name='PeriodClosure', fields=[('id', <django.db.models.fields.BigAutoField>), ('is_closed', <django.db.models.fields.BooleanField>), ('period', <django.db.models.fields.related.ForeignKey>), ('project_assignment', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'period', 'verbose_name_plural': 'periods', 'default_permissions': ()}>, <AddConstraint model_name='period', constraint=<CheckConstraint: check=(AND: ('start__lte', F(end))) name='runtime_check_period'>>, <AddConstraint model_name='period', constraint=<CheckConstraint: check=(AND: ('end__lte', F(dead_line))) name='dead_line_check_period'>>, <AddConstraint model_name='period', constraint=<CheckConstraint: check=(AND: ('dead_line__lte', F(dead_line_final))) name='dead_line_final_check_period'>>, <AddField model_name='newuser', name='user', field=<django.db.models.fields.related.OneToOneField>>, <AddConstraint model_name='workhourscorrection', constraint=<UniqueConstraint: fields=('project_assignment', 'period') name='unique_constraint_work_hours_correction'>>, <AddConstraint model_name='workhours', constraint=<UniqueConstraint: fields=('project_assignment', 'day') name='unique_constraint_work_hours'>>, <AddConstraint model_name='workhours', constraint=<CheckConstraint: check=(AND: ('hours__gt', 0.0)) name='min_work_hours'>>, <AddConstraint model_name='workhours', constraint=<CheckConstraint: check=(AND: ('hours__lte', 24.0)) name='max_work_hours'>>, <AddConstraint model_name='projectmanager', constraint=<CheckConstraint: check=(AND: ('start__lte', F(end))) name='runtime_check_manager'>>, <AddConstraint model_name='projectmanager', constraint=<UniqueConstraint: fields=('manager', 'project') name='unique_constraint_project_manager'>>, <AddConstraint model_name='projectassignment', constraint=<UniqueConstraint: fields=('contributor', 'salary_level', 'project') name='unique_constraint_project_assignment'>>, <AddConstraint model_name='project', constraint=<CheckConstraint: check=(AND: ('start__lte', F(end))) name='runtime_check_projekt'>>, <AddConstraint model_name='project', constraint=<CheckConstraint: check=(AND: ('invoice_number__gte', 20000000), ('invoice_number__lte', 39999999)) name='invoice_number_intervall_check'>>, <AddConstraint model_name='periodclosure', constraint=<UniqueConstraint: fields=('period', 'project_assignment') name='unique_constraint_period_closure'>>]
Inherited Members
django.db.migrations.migration.Migration
Migration
run_before
replaces
atomic
name
app_label
mutate_state
apply
unapply
suggest_name