text: # Generated by Django 3.1.7 on 2021-03-22 09:29
  
  import accounts.models
  from django.conf import settings
  from django.db import migrations, models
  import django.db.models.deletion
  import simple_history.models
  import uuid
  
  
  class Migration(migrations.Migration):
  
      initial = True
  
      dependencies = [
          migrations.swappable_dependency(settings.AUTH_USER_MODEL),
      ]
  
      operations = [
          migrations.CreateModel(
              name='Epic',
              fields=[
                  ('priority', models.SmallIntegerField(choices=[(3, 'High'), (2, 'Medium'), (1, 'Low')], default=2, help_text='Priority relating to the parent object.', verbose_name='priority')),
                  ('id', models.AutoField(primary_key=True, serialize=False)),
                  ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='creation date')),
                  ('changed_at', models.DateTimeField(auto_now=True, verbose_name='update date')),
                  ('title', models.CharField(max_length=255, verbose_name='title')),
                  ('description', models.TextField(blank=True, help_text="Tip: You can use Markdown's syntax!", verbose_name='description')),
              ],
              options={
                  'verbose_name': 'epic',
                  'verbose_name_plural': 'epics',
                  'ordering': ['feature__initiative__product', 'feature__initiative__order', '-feature__priority', '-priority', 'created_at'],
                  'abstract': False,
              },
          ),
          migrations.CreateModel(
              name='Feature',
              fields=[
                  ('priority', models.SmallIntegerField(choices=[(3, 'High'), (2, 'Medium'), (1, 'Low')], default=2, help_text='Priority relating to the parent object.', verbose_name='priority')),
                  ('id', models.AutoField(primary_key=True, serialize=False)),
                  ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='creation date')),
                  ('changed_at', models.DateTimeField(auto_now=True, verbose_name='update date')),
                  ('title', models.CharField(max_length=255, verbose_name='title')),
                  ('description', models.TextField(blank=True, help_text="Tip: You can use Markdown's syntax!", verbose_name='description')),
              ],
              options={
                  'verbose_name': 'feature',
                  'verbose_name_plural': 'features',
                  'ordering': ['initiative__product', 'initiative__order', '-priority', 'created_at'],
                  'abstract': False,
              },
          ),
          migrations.CreateModel(
              name='Issue',
              fields=[
                  ('priority', models.SmallIntegerField(choices=[(3, 'High'), (2, 'Medium'), (1, 'Low')], default=2, help_text='Priority relating to the parent object.', verbose_name='priority')),
                  ('id', models.AutoField(primary_key=True, serialize=False)),
                  ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='creation date')),
                  ('changed_at', models.DateTimeField(auto_now=True, verbose_name='update date')),
                  ('description', models.TextField(blank=True, help_text="Tip: You can use Markdown's syntax!", verbose_name='description')),
                  ('title', models.TextField(help_text='As a "who", I want to "what" so that "why".', verbose_name='title')),
                  ('label', models.CharField(choices=[('STORY', 'Story'), ('BUG', 'Bug'), ('TASK', 'Task')], default='STORY', max_length=10, verbose_name='label')),
                  ('status', models.CharField(choices=[('DRAFT', 'Draft'), ('READY', 'Ready'), ('TO_DO', 'To Do'), ('IN_PROGRESS', 'In Progress'), ('IN_REVIEW', 'In Review'), ('DONE', 'Done'), ('BLOCKED', 'Blocked'), ('CANCELLED', 'Cancelled')], default='DRAFT', help_text="Draft: <br>\n            Ready: L'estimation est réaliste, les skills sont identifiées, l'issue est prête à être réalisée.<br>\n            To Do: Selectionnée pour le prochain sprint.<br>\n            In Progress: <br>\n            In Review: <br>\n            Done: <br>\n            Blocked: Un problème empêche la réalisation de l'issue.<br>\n            Cancelled: ", max_length=16, verbose_name='status')),
                  ('points', models.FloatField(blank=True, choices=[(None, '?'), (0.0, '0'), (0.5, '1/2'), (1.0, '1'), (2.0, '2'), (3.0, '3'), (5.0, '5'), (8.0, '8'), (13.0, '13'), (20.0, '20'), (40.0, '40'), (100.0, '100')], default=None, null=True, verbose_name='story points')),
                  ('trust', models.SmallIntegerField(choices=[(1, 'Low'), (2, 'Medium'), (3, 'High')], default=1, help_text='How realistic is the story point estimate?', verbose_name='trust level')),
                  ('assignee', models.ForeignKey(blank=True, help_text='Who works on this very story?', limit_choices_to={'is_active': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='assigned_issues', related_query_name='assigned_issue', to=settings.AUTH_USER_MODEL, verbose_name='assignee')),
                  ('epic', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='issues', related_query_name='issue', to='projects.epic', verbose_name='epic')),
                  ('owner', models.ForeignKey(help_text='Owner of this very object.', limit_choices_to={'is_active': True}, on_delete=models.SET(accounts.models.get_sentinel_user), related_name='projects_issues_as_owner', related_query_name='projects_issue_as_owner', to=settings.AUTH_USER_MODEL, verbose_name='owner')),
              ],
              options={
                  'verbose_name': 'issue',
                  'verbose_name_plural': 'issues',
                  'ordering': ['epic__feature__initiative__product', 'epic__feature__initiative__order', '-epic__feature__priority', '-epic__priority', '-priority', 'created_at'],
                  'abstract': False,
              },
          ),
          migrations.CreateModel(
              name='Subtask',
              fields=[
                  ('id', models.AutoField(primary_key=True, serialize=False)),
                  ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='creation date')),
                  ('changed_at', models.DateTimeField(auto_now=True, verbose_name='update date')),
                  ('title', models.CharField(max_length=255, verbose_name='title')),
                  ('description', models.TextField(blank=True, help_text="Tip: You can use Markdown's syntax!", verbose_name='description')),
                  ('order', models.PositiveIntegerField(db_index=True, editable=False, verbose_name='order')),
                  ('done', models.BooleanField(default=False, verbose_name='done')),
                  ('issue', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='subtasks', related_query_name='subtask', to='projects.issue', verbose_name='issue')),
                  ('owner', models.ForeignKey(help_text='Owner of this very object.', limit_choices_to={'is_active': True}, on_delete=models.SET(accounts.models.get_sentinel_user), related_name='projects_subtasks_as_owner', related_query_name='projects_subtask_as_owner', to=settings.AUTH_USER_MODEL, verbose_name='owner')),
              ],
              options={
                  'verbose_name': 'subtask',
                  'verbose_name_plural': 'subtasks',
                  'ordering': ['issue', 'order'],
                  'abstract': False,
              },
          ),
          migrations.CreateModel(
              name='Skill',
              fields=[
                  ('id', models.AutoField(primary_key=True, serialize=False)),
                  ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='creation date')),
                  ('changed_at', models.DateTimeField(auto_now=True, verbose_name='update date')),
                  ('title', models.CharField(max_length=255, verbose_name='title')),
                  ('description', models.TextField(blank=True, help_text="Tip: You can use Markdown's syntax!", verbose_name='description')),
                  ('owner', models.ForeignKey(help_text='Owner of this very object.', limit_choices_to={'is_active': True}, on_delete=models.SET(accounts.models.get_sentinel_user), related_name='projects_skills_as_owner', related_query_name='projects_skill_as_owner', to=settings.AUTH_USER_MODEL, verbose_name='owner')),
              ],
              options={
                  'verbose_name': 'skill',
                  'verbose_name_plural': 'skills',
                  'ordering': ['-changed_at'],
                  'abstract': False,
              },
          ),
          migrations.CreateModel(
              name='Product',
              fields=[
                  ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='creation date')),
                  ('changed_at', models.DateTimeField(auto_now=True, verbose_name='update date')),
                  ('title', models.CharField(max_length=255, verbose_name='title')),
                  ('description', models.TextField(blank=True, help_text="Tip: You can use Markdown's syntax!", verbose_name='description')),
                  ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                  ('owner', models.ForeignKey(help_text='Owner of this very object.', limit_choices_to={'is_active': True}, on_delete=models.SET(accounts.models.get_sentinel_user), related_name='projects_products_as_owner', related_query_name='projects_product_as_owner', to=settings.AUTH_USER_MODEL, verbose_name='owner')),
              ],
              options={
                  'verbose_name': 'product',
                  'verbose_name_plural': 'products',
                  'ordering': ['-changed_at'],
                  'abstract': False,
              },
          ),
          migrations.AddField(
              model_name='issue',
              name='skills',
              field=models.ManyToManyField(blank=True, help_text='Main skills required to achieve this issue.', related_name='issues', related_query_name='issue', to='projects.Skill', verbose_name='required skills'),
          ),
          migrations.CreateModel(
              name='Initiative',
              fields=[
                  ('id', models.AutoField(primary_key=True, serialize=False)),
                  ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='creation date')),
                  ('changed_at', models.DateTimeField(auto_now=True, verbose_name='update date')),
                  ('title', models.CharField(max_length=255, verbose_name='title')),
                  ('description', models.TextField(blank=True, help_text="Tip: You can use Markdown's syntax!", verbose_name='description')),
                  ('order', models.PositiveIntegerField(db_index=True, editable=False, verbose_name='order')),
                  ('owner', models.ForeignKey(help_text='Owner of this very object.', limit_choices_to={'is_active': True}, on_delete=models.SET(accounts.models.get_sentinel_user), related_name='projects_initiatives_as_owner', related_query_name='projects_initiative_as_owner', to=settings.AUTH_USER_MODEL, verbose_name='owner')),
                  ('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='initiatives', related_query_name='initiative', to='projects.product', verbose_name='product')),
              ],
              options={
                  'verbose_name': 'initiative',
                  'verbose_name_plural': 'initiatives',
                  'ordering': ['order'],
                  'abstract': False,
              },
          ),
          migrations.CreateModel(
              name='HistoricalSubtask',
              fields=[
                  ('id', models.IntegerField(blank=True, db_index=True)),
                  ('created_at', models.DateTimeField(blank=True, editable=False, verbose_name='creation date')),
                  ('changed_at', models.DateTimeField(blank=True, editable=False, verbose_name='update date')),
                  ('title', models.CharField(max_length=255, verbose_name='title')),
                  ('description', models.TextField(blank=True, help_text="Tip: You can use Markdown's syntax!", verbose_name='description')),
                  ('order', models.PositiveIntegerField(db_index=True, editable=False, verbose_name='order')),
                  ('done', models.BooleanField(default=False, verbose_name='done')),
                  ('history_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                  ('history_date', models.DateTimeField()),
                  ('history_change_reason', models.CharField(max_length=100, null=True)),
                  ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
                  ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                  ('issue', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', related_query_name='subtask', to='projects.issue', verbose_name='issue')),
                  ('owner', models.ForeignKey(blank=True, db_constraint=False, help_text='Owner of this very object.', limit_choices_to={'is_active': True}, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', related_query_name='projects_subtask_as_owner', to=settings.AUTH_USER_MODEL, verbose_name='owner')),
              ],
              options={
                  'verbose_name': 'historical subtask',
                  'ordering': ('-history_date', '-history_id'),
                  'get_latest_by': 'history_date',
              },
              bases=(simple_history.models.HistoricalChanges, models.Model),
          ),
          migrations.CreateModel(
              name='HistoricalSkill',
              fields=[
                  ('id', models.IntegerField(blank=True, db_index=True)),
                  ('created_at', models.DateTimeField(blank=True, editable=False, verbose_name='creation date')),
                  ('changed_at', models.DateTimeField(blank=True, editable=False, verbose_name='update date')),
                  ('title', models.CharField(max_length=255, verbose_name='title')),
                  ('description', models.TextField(blank=True, help_text="Tip: You can use Markdown's syntax!", verbose_name='description')),
                  ('history_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                  ('history_date', models.DateTimeField()),
                  ('history_change_reason', models.CharField(max_length=100, null=True)),
                  ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
                  ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                  ('owner', models.ForeignKey(blank=True, db_constraint=False, help_text='Owner of this very object.', limit_choices_to={'is_active': True}, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', related_query_name='projects_skill_as_owner', to=settings.AUTH_USER_MODEL, verbose_name='owner')),
              ],
              options={
                  'verbose_name': 'historical skill',
                  'ordering': ('-history_date', '-history_id'),
                  'get_latest_by': 'history_date',
              },
              bases=(simple_history.models.HistoricalChanges, models.Model),
          ),
          migrations.CreateModel(
              name='HistoricalProduct',
              fields=[
                  ('created_at', models.DateTimeField(blank=True, editable=False, verbose_name='creation date')),
                  ('changed_at', models.DateTimeField(blank=True, editable=False, verbose_name='update date')),
                  ('title', models.CharField(max_length=255, verbose_name='title')),
                  ('description', models.TextField(blank=True, help_text="Tip: You can use Markdown's syntax!", verbose_name='description')),
                  ('id', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False)),
                  ('history_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                  ('history_date', models.DateTimeField()),
                  ('history_change_reason', models.CharField(max_length=100, null=True)),
                  ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
                  ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                  ('owner', models.ForeignKey(blank=True, db_constraint=False, help_text='Owner of this very object.', limit_choices_to={'is_active': True}, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', related_query_name='projects_product_as_owner', to=settings.AUTH_USER_MODEL, verbose_name='owner')),
              ],
              options={
                  'verbose_name': 'historical product',
                  'ordering': ('-history_date', '-history_id'),
                  'get_latest_by': 'history_date',
              },
              bases=(simple_history.models.HistoricalChanges, models.Model),
          ),
          migrations.CreateModel(
              name='HistoricalIssue',
              fields=[
                  ('priority', models.SmallIntegerField(choices=[(3, 'High'), (2, 'Medium'), (1, 'Low')], default=2, help_text='Priority relating to the parent object.', verbose_name='priority')),
                  ('id', models.IntegerField(blank=True, db_index=True)),
                  ('created_at', models.DateTimeField(blank=True, editable=False, verbose_name='creation date')),
                  ('changed_at', models.DateTimeField(blank=True, editable=False, verbose_name='update date')),
                  ('description', models.TextField(blank=True, help_text="Tip: You can use Markdown's syntax!", verbose_name='description')),
                  ('title', models.TextField(help_text='As a "who", I want to "what" so that "why".', verbose_name='title')),
                  ('label', models.CharField(choices=[('STORY', 'Story'), ('BUG', 'Bug'), ('TASK', 'Task')], default='STORY', max_length=10, verbose_name='label')),
                  ('status', models.CharField(choices=[('DRAFT', 'Draft'), ('READY', 'Ready'), ('TO_DO', 'To Do'), ('IN_PROGRESS', 'In Progress'), ('IN_REVIEW', 'In Review'), ('DONE', 'Done'), ('BLOCKED', 'Blocked'), ('CANCELLED', 'Cancelled')], default='DRAFT', help_text="Draft: <br>\n            Ready: L'estimation est réaliste, les skills sont identifiées, l'issue est prête à être réalisée.<br>\n            To Do: Selectionnée pour le prochain sprint.<br>\n            In Progress: <br>\n            In Review: <br>\n            Done: <br>\n            Blocked: Un problème empêche la réalisation de l'issue.<br>\n            Cancelled: ", max_length=16, verbose_name='status')),
                  ('points', models.FloatField(blank=True, choices=[(None, '?'), (0.0, '0'), (0.5, '1/2'), (1.0, '1'), (2.0, '2'), (3.0, '3'), (5.0, '5'), (8.0, '8'), (13.0, '13'), (20.0, '20'), (40.0, '40'), (100.0, '100')], default=None, null=True, verbose_name='story points')),
                  ('trust', models.SmallIntegerField(choices=[(1, 'Low'), (2, 'Medium'), (3, 'High')], default=1, help_text='How realistic is the story point estimate?', verbose_name='trust level')),
                  ('history_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                  ('history_date', models.DateTimeField()),
                  ('history_change_reason', models.CharField(max_length=100, null=True)),
                  ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
                  ('assignee', models.ForeignKey(blank=True, db_constraint=False, help_text='Who works on this very story?', limit_choices_to={'is_active': True}, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', related_query_name='assigned_issue', to=settings.AUTH_USER_MODEL, verbose_name='assignee')),
                  ('epic', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', related_query_name='issue', to='projects.epic', verbose_name='epic')),
                  ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                  ('owner', models.ForeignKey(blank=True, db_constraint=False, help_text='Owner of this very object.', limit_choices_to={'is_active': True}, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', related_query_name='projects_issue_as_owner', to=settings.AUTH_USER_MODEL, verbose_name='owner')),
              ],
              options={
                  'verbose_name': 'historical issue',
                  'ordering': ('-history_date', '-history_id'),
                  'get_latest_by': 'history_date',
              },
              bases=(simple_history.models.HistoricalChanges, models.Model),
          ),
          migrations.CreateModel(
              name='HistoricalInitiative',
              fields=[
                  ('id', models.IntegerField(blank=True, db_index=True)),
                  ('created_at', models.DateTimeField(blank=True, editable=False, verbose_name='creation date')),
                  ('changed_at', models.DateTimeField(blank=True, editable=False, verbose_name='update date')),
                  ('title', models.CharField(max_length=255, verbose_name='title')),
                  ('description', models.TextField(blank=True, help_text="Tip: You can use Markdown's syntax!", verbose_name='description')),
                  ('order', models.PositiveIntegerField(db_index=True, editable=False, verbose_name='order')),
                  ('history_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                  ('history_date', models.DateTimeField()),
                  ('history_change_reason', models.CharField(max_length=100, null=True)),
                  ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
                  ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                  ('owner', models.ForeignKey(blank=True, db_constraint=False, help_text='Owner of this very object.', limit_choices_to={'is_active': True}, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', related_query_name='projects_initiative_as_owner', to=settings.AUTH_USER_MODEL, verbose_name='owner')),
                  ('product', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', related_query_name='initiative', to='projects.product', verbose_name='product')),
              ],
              options={
                  'verbose_name': 'historical initiative',
                  'ordering': ('-history_date', '-history_id'),
                  'get_latest_by': 'history_date',
              },
              bases=(simple_history.models.HistoricalChanges, models.Model),
          ),
          migrations.CreateModel(
              name='HistoricalFeature',
              fields=[
                  ('priority', models.SmallIntegerField(choices=[(3, 'High'), (2, 'Medium'), (1, 'Low')], default=2, help_text='Priority relating to the parent object.', verbose_name='priority')),
                  ('id', models.IntegerField(blank=True, db_index=True)),
                  ('created_at', models.DateTimeField(blank=True, editable=False, verbose_name='creation date')),
                  ('changed_at', models.DateTimeField(blank=True, editable=False, verbose_name='update date')),
                  ('title', models.CharField(max_length=255, verbose_name='title')),
                  ('description', models.TextField(blank=True, help_text="Tip: You can use Markdown's syntax!", verbose_name='description')),
                  ('history_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                  ('history_date', models.DateTimeField()),
                  ('history_change_reason', models.CharField(max_length=100, null=True)),
                  ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
                  ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                  ('initiative', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', related_query_name='feature', to='projects.initiative', verbose_name='initiative')),
                  ('owner', models.ForeignKey(blank=True, db_constraint=False, help_text='Owner of this very object.', limit_choices_to={'is_active': True}, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', related_query_name='projects_feature_as_owner', to=settings.AUTH_USER_MODEL, verbose_name='owner')),
              ],
              options={
                  'verbose_name': 'historical feature',
                  'ordering': ('-history_date', '-history_id'),
                  'get_latest_by': 'history_date',
              },
              bases=(simple_history.models.HistoricalChanges, models.Model),
          ),
          migrations.CreateModel(
              name='HistoricalEpic',
              fields=[
                  ('priority', models.SmallIntegerField(choices=[(3, 'High'), (2, 'Medium'), (1, 'Low')], default=2, help_text='Priority relating to the parent object.', verbose_name='priority')),
                  ('id', models.IntegerField(blank=True, db_index=True)),
                  ('created_at', models.DateTimeField(blank=True, editable=False, verbose_name='creation date')),
                  ('changed_at', models.DateTimeField(blank=True, editable=False, verbose_name='update date')),
                  ('title', models.CharField(max_length=255, verbose_name='title')),
                  ('description', models.TextField(blank=True, help_text="Tip: You can use Markdown's syntax!", verbose_name='description')),
                  ('history_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                  ('history_date', models.DateTimeField()),
                  ('history_change_reason', models.CharField(max_length=100, null=True)),
                  ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
                  ('feature', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', related_query_name='epic', to='projects.feature', verbose_name='feature')),
                  ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                  ('owner', models.ForeignKey(blank=True, db_constraint=False, help_text='Owner of this very object.', limit_choices_to={'is_active': True}, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', related_query_name='projects_epic_as_owner', to=settings.AUTH_USER_MODEL, verbose_name='owner')),
              ],
              options={
                  'verbose_name': 'historical epic',
                  'ordering': ('-history_date', '-history_id'),
                  'get_latest_by': 'history_date',
              },
              bases=(simple_history.models.HistoricalChanges, models.Model),
          ),
          migrations.AddField(
              model_name='feature',
              name='initiative',
              field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='features', related_query_name='feature', to='projects.initiative', verbose_name='initiative'),
          ),
          migrations.AddField(
              model_name='feature',
              name='owner',
              field=models.ForeignKey(help_text='Owner of this very object.', limit_choices_to={'is_active': True}, on_delete=models.SET(accounts.models.get_sentinel_user), related_name='projects_features_as_owner', related_query_name='projects_feature_as_owner', to=settings.AUTH_USER_MODEL, verbose_name='owner'),
          ),
          migrations.AddField(
              model_name='epic',
              name='feature',
              field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='epics', related_query_name='epic', to='projects.feature', verbose_name='feature'),
          ),
          migrations.AddField(
              model_name='epic',
              name='owner',
              field=models.ForeignKey(help_text='Owner of this very object.', limit_choices_to={'is_active': True}, on_delete=models.SET(accounts.models.get_sentinel_user), related_name='projects_epics_as_owner', related_query_name='projects_epic_as_owner', to=settings.AUTH_USER_MODEL, verbose_name='owner'),
          ),
          migrations.AddConstraint(
              model_name='skill',
              constraint=models.UniqueConstraint(fields=('title',), name='skill_title_unique_per_app'),
          ),
          migrations.AddConstraint(
              model_name='initiative',
              constraint=models.UniqueConstraint(fields=('title', 'product'), name='initiative_title_unique_per_product'),
          ),
      ]
  