text: # Generated by Django 2.0.7 on 2018-07-31 05:45
  
  import conservation.models
  import django.db.models.deletion
  import django_fsm
  from django.conf import settings
  from django.db import migrations, models
  
  
  class Migration(migrations.Migration):
  
      replaces = [('conservation', '0001_initial'), ('conservation', '0002_auto_20180404_1327'), ('conservation', '0003_auto_20180404_1512'), ('conservation', '0004_auto_20180404_1515'), ('conservation', '0005_auto_20180404_1532'), ('conservation', '0006_auto_20180405_0928'), ('conservation', '0007_auto_20180405_0934'), ('conservation', '0008_auto_20180405_1008'), ('conservation', '0009_auto_20180405_1009'), ('conservation', '0010_auto_20180405_1039'), ('conservation', '0011_auto_20180410_1504'), ('conservation', '0012_auto_20180411_1008'), ('conservation', '0013_auto_20180411_1314'), ('conservation', '0014_auto_20180411_1314'),
                  ('conservation', '0015_auto_20180411_1324'), ('conservation', '0016_auto_20180411_1416'), ('conservation', '0017_auto_20180411_2121'), ('conservation', '0018_auto_20180411_2131'), ('conservation', '0019_auto_20180411_2204'), ('conservation', '0020_auto_20180413_2031'), ('conservation', '0021_auto_20180413_2122'), ('conservation', '0022_auto_20180413_2123'), ('conservation', '0023_auto_20180417_1650'), ('conservation', '0024_auto_20180420_1140'), ('conservation', '0025_conservationcategory_current'), ('conservation', '0026_document_last_reviewed_on'), ('conservation', '0027_auto_20180509_1048')]
  
      initial = True
  
      dependencies = [
          ('taxonomy', '0001_squashed_0078_auto_20180717_1601'),
          ('contenttypes', '0002_remove_content_type_name'),
          #('taxonomy', '0040_auto_20180404_1113'),
          migrations.swappable_dependency(settings.AUTH_USER_MODEL),
      ]
  
      operations = [
          migrations.CreateModel(
              name='CommunityGazettal',
              fields=[
                  ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                  ('is_s5', models.BooleanField(db_index=True, default=False,
                                                help_text='Whether this Gazettal includes Conservation Category S5 (Migratory Bird).', verbose_name='Cons Category S5')),
                  ('is_m1', models.BooleanField(db_index=True, default=False,
                                                help_text='Whether this Gazettal includes Conservation Category M1.', verbose_name='Cons Category M1')),
                  ('is_m2', models.BooleanField(db_index=True, default=False,
                                                help_text='Whether this Gazettal includes Conservation Category M2.', verbose_name='Cons Category M2')),
                  ('is_m3', models.BooleanField(db_index=True, default=False,
                                                help_text='Whether this Gazettal includes Conservation Category M3.', verbose_name='Cons Category M3')),
                  ('is_m4', models.BooleanField(db_index=True, default=False,
                                                help_text='Whether this Gazettal includes Conservation Category M4.', verbose_name='Cons Category M4')),
                  ('status', django_fsm.FSMField(choices=[(0, 'Proposed'), (10, 'In review with experts'), (20, 'In review with public'), (30, 'In review with panel'), (40, 'In review with Branch Manager'), (50, 'In review with Division Director'), (
                      60, 'In review with Director General'), (70, 'In review with Minister'), (80, 'Gazetted'), (90, 'Inactive')], db_index=True, default=0, help_text='The approval status of the Gazettal.', max_length=50, verbose_name='Approval status')),
                  ('proposed_on', models.DateTimeField(blank=True,
                                                       help_text='The date and time this Gazettal was proposed on.', null=True, verbose_name='Proposed on')),
                  ('gazetted_on', models.DateTimeField(blank=True,
                                                       help_text='The date and time this Gazettal was gazetted on.', null=True, verbose_name='Gazetted on')),
                  ('deactivated_on', models.DateTimeField(
                      blank=True, help_text='The date and time this Gazettal was deactivated on, most likely superseded by another Gazettal.', null=True, verbose_name='Deactivated on')),
                  ('review_due', models.DateTimeField(
                      blank=True, help_text='The date and time this Gazettal should be reviewed.', null=True, verbose_name='Review due date')),
                  ('comments', models.TextField(help_text='Append comments on approval process as appropriate.', verbose_name='Comments')),
                  ('community', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='taxonomy.Community')),
              ],
              options={
                  'verbose_name': 'Community Gazettal',
                  'verbose_name_plural': 'Community Gazettals',
              },
          ),
          migrations.CreateModel(
              name='ConservationCategory',
              fields=[
                  ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                  ('code', models.CharField(help_text='A category code, unique within its conservation list.',
                                            max_length=500, verbose_name='Code')),
                  ('label', models.CharField(help_text='An explanatory label.', max_length=500, verbose_name='Label')),
                  ('description', models.TextField(help_text='A comprehensive description.', verbose_name='Description')),
              ],
              options={
                  'verbose_name': 'Conservation Category',
                  'verbose_name_plural': 'Conservation Categories',
              },
          ),
          migrations.CreateModel(
              name='ConservationCriterion',
              fields=[
                  ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                  ('code', models.CharField(help_text='A criterion code, unique within its conservation list.',
                                            max_length=500, verbose_name='Code')),
                  ('label', models.CharField(help_text='An explanatory label.', max_length=500, verbose_name='Label')),
                  ('description', models.TextField(help_text='A comprehensive description.', verbose_name='Description')),
              ],
              options={
                  'verbose_name': 'Conservation Criterion',
                  'verbose_name_plural': 'Conservation Criteria',
              },
          ),
          migrations.CreateModel(
              name='ConservationList',
              fields=[
                  ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                  ('scope_wa', models.BooleanField(db_index=True, default=False,
                                                   help_text='Whether this list is applicable state-wide.', verbose_name='Applies to WA')),
                  ('scope_cmw', models.BooleanField(db_index=True, default=False,
                                                    help_text='Whether this list is applicable nation-wide.', verbose_name='Applies to Commonwealth')),
                  ('scope_intl', models.BooleanField(db_index=True, default=False,
                                                     help_text='Whether this list is applicable internationally.', verbose_name='Applies Internationally')),
                  ('code', models.CharField(help_text='A Conservation List code.', max_length=500, unique=True, verbose_name='Code')),
                  ('label', models.CharField(blank=True, help_text='An explanatory label.',
                                             max_length=500, null=True, verbose_name='Label')),
                  ('description', models.TextField(blank=True,
                                                   help_text='A comprehensive description.', null=True, verbose_name='Description')),
                  ('active_from', models.DateTimeField(blank=True,
                                                       help_text='The date and time from which this list is current.', null=True, verbose_name='Active from')),
                  ('active_to', models.DateTimeField(
                      blank=True, help_text='The date and time from which this list is non-current.', null=True, verbose_name='Active to')),
                  ('scope_communities', models.BooleanField(db_index=True, default=False,
                                                            help_text='Whether this list is applicable to ecological communities.', verbose_name='Applies to Communities')),
                  ('scope_species', models.BooleanField(db_index=True, default=False,
                                                        help_text='Whether this list is applicable to individual species.', verbose_name='Applies to Species')),
                  ('approval_level', models.PositiveIntegerField(choices=[(10, 'Immediate'), (20, 'Panel'), (25, 'Director'), (
                      30, 'Minister')], default=30, help_text='What is the highest required approval instance for this list?', verbose_name='Approval Level')),
              ],
              options={
                  'verbose_name': 'Conservation List',
                  'verbose_name_plural': 'Conservation Lists',
                  'ordering': ['-active_from'],
              },
          ),
          migrations.CreateModel(
              name='TaxonGazettal',
              fields=[
                  ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                  ('status', django_fsm.FSMField(choices=[(0, 'Proposed'), (10, 'In review with experts'), (20, 'In review with public'), (30, 'In review with panel'), (40, 'In review with Branch Manager'), (50, 'In review with Division Director'), (
                      60, 'In review with Director General'), (70, 'In review with Minister'), (80, 'Gazetted'), (90, 'Inactive')], db_index=True, default=0, help_text='The approval status of the Gazettal.', max_length=50, verbose_name='Approval status')),
                  ('proposed_on', models.DateTimeField(blank=True,
                                                       help_text='The date and time this Gazettal was proposed on.', null=True, verbose_name='Proposed on')),
                  ('gazetted_on', models.DateTimeField(blank=True,
                                                       help_text='The date and time this Gazettal was gazetted on.', null=True, verbose_name='Gazetted on')),
                  ('deactivated_on', models.DateTimeField(
                      blank=True, help_text='The date and time this Gazettal was deactivated on, most likely superseded by another Gazettal.', null=True, verbose_name='Deactivated on')),
                  ('review_due', models.DateTimeField(
                      blank=True, help_text='The date and time this Gazettal should be reviewed.', null=True, verbose_name='Review due date')),
                  ('comments', models.TextField(blank=True,
                                                help_text='Append comments on approval process as appropriate.', null=True, verbose_name='Comments')),
                  ('criteria', models.ManyToManyField(help_text='The Conservation Criteria form the reason for the choice of conservation category.',
                                                      to='conservation.ConservationCriterion', verbose_name='Conservation Criteria')),
                  ('taxon', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='taxonomy.Taxon')),
              ],
              options={
                  'verbose_name': 'Taxon Gazettal',
                  'verbose_name_plural': 'Taxon Gazettals',
              },
          ),
          migrations.AddField(
              model_name='conservationcriterion',
              name='conservation_list',
              field=models.ForeignKey(help_text='The conservation list this code is described in.',
                                      on_delete=django.db.models.deletion.CASCADE, to='conservation.ConservationList', verbose_name='Conservation List'),
          ),
          migrations.AddField(
              model_name='conservationcategory',
              name='conservation_list',
              field=models.ForeignKey(help_text='The conservation list this code is described in.',
                                      on_delete=django.db.models.deletion.CASCADE, to='conservation.ConservationList', verbose_name='Conservation List'),
          ),
          migrations.AddField(
              model_name='communitygazettal',
              name='criteria',
              field=models.ManyToManyField(blank=True, help_text='The Conservation Criteria form the reason for the choice of conservation categories.',
                                           to='conservation.ConservationCriterion', verbose_name='Conservation Criteria'),
          ),
          migrations.AlterField(
              model_name='conservationcriterion',
              name='description',
              field=models.TextField(blank=True, help_text='A comprehensive description.',
                                     null=True, verbose_name='Description'),
          ),
          migrations.AlterField(
              model_name='conservationcriterion',
              name='label',
              field=models.CharField(blank=True, help_text='An explanatory label.',
                                     max_length=500, null=True, verbose_name='Label'),
          ),
          migrations.AlterUniqueTogether(
              name='conservationcriterion',
              unique_together={('conservation_list', 'code')},
          ),
          migrations.AlterField(
              model_name='conservationcategory',
              name='description',
              field=models.TextField(blank=True, help_text='A comprehensive description.',
                                     null=True, verbose_name='Description'),
          ),
          migrations.AlterField(
              model_name='conservationcategory',
              name='label',
              field=models.CharField(blank=True, help_text='An explanatory label.',
                                     max_length=500, null=True, verbose_name='Label'),
          ),
          migrations.AlterUniqueTogether(
              name='conservationcategory',
              unique_together={('conservation_list', 'code')},
          ),
          migrations.RemoveField(
              model_name='communitygazettal',
              name='is_m1',
          ),
          migrations.RemoveField(
              model_name='communitygazettal',
              name='is_m2',
          ),
          migrations.RemoveField(
              model_name='communitygazettal',
              name='is_m3',
          ),
          migrations.RemoveField(
              model_name='communitygazettal',
              name='is_m4',
          ),
          migrations.RemoveField(
              model_name='communitygazettal',
              name='is_s5',
          ),
          migrations.AlterField(
              model_name='communitygazettal',
              name='comments',
              field=models.TextField(
                  blank=True, help_text='Append comments on approval process as appropriate.', null=True, verbose_name='Comments'),
          ),
          migrations.AddField(
              model_name='communitygazettal',
              name='category',
              field=models.ManyToManyField(blank=True, help_text='The Conservation Categories can change during the approval process. Some combinations are valid, some are not.',
                                           to='conservation.ConservationCategory', verbose_name='Conservation Categories'),
          ),
          migrations.AddField(
              model_name='taxongazettal',
              name='category',
              field=models.ManyToManyField(blank=True, help_text='The Conservation Categories can change during the approval process. Some combinations are valid, some are not.',
                                           to='conservation.ConservationCategory', verbose_name='Conservation Categories'),
          ),
          migrations.AlterField(
              model_name='taxongazettal',
              name='criteria',
              field=models.ManyToManyField(blank=True, help_text='The Conservation Criteria form the reason for the choice of conservation category.',
                                           null=True, to='conservation.ConservationCriterion', verbose_name='Conservation Criteria'),
          ),
          migrations.AddField(
              model_name='communitygazettal',
              name='category_cache',
              field=models.TextField(
                  blank=True, help_text='An auto-generated list of conservation categories.', null=True, verbose_name='Category list'),
          ),
          migrations.AddField(
              model_name='communitygazettal',
              name='criteria_cache',
              field=models.TextField(
                  blank=True, help_text='An auto-generated list of conservation criteria.', null=True, verbose_name='Criteria list'),
          ),
          migrations.AddField(
              model_name='taxongazettal',
              name='category_cache',
              field=models.TextField(
                  blank=True, help_text='An auto-generated list of conservation categories.', null=True, verbose_name='Category list'),
          ),
          migrations.AddField(
              model_name='taxongazettal',
              name='criteria_cache',
              field=models.TextField(
                  blank=True, help_text='An auto-generated list of conservation criteria.', null=True, verbose_name='Criteria list'),
          ),
          migrations.AlterField(
              model_name='taxongazettal',
              name='criteria',
              field=models.ManyToManyField(blank=True, help_text='The Conservation Criteria form the reason for the choice of conservation category.',
                                           to='conservation.ConservationCriterion', verbose_name='Conservation Criteria'),
          ),
          migrations.AddField(
              model_name='communitygazettal',
              name='label_cache',
              field=models.TextField(
                  blank=True, help_text='An auto-generated label for the Gazettal minus the Taxon.', null=True, verbose_name='Gazettal label'),
          ),
          migrations.AddField(
              model_name='taxongazettal',
              name='label_cache',
              field=models.TextField(
                  blank=True, help_text='An auto-generated label for the Gazettal minus the Taxon.', null=True, verbose_name='Gazettal label'),
          ),
          migrations.AlterField(
              model_name='communitygazettal',
              name='community',
              field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
                                      related_name='community_gazettal', to='taxonomy.Community'),
          ),
          migrations.AlterField(
              model_name='taxongazettal',
              name='criteria',
              field=models.ManyToManyField(blank=True, help_text='The Conservation Criteria form the reason for the choice of conservation categories.',
                                           to='conservation.ConservationCriterion', verbose_name='Conservation Criteria'),
          ),
          migrations.AlterField(
              model_name='taxongazettal',
              name='taxon',
              field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
                                      related_name='taxon_gazettal', to='taxonomy.Taxon'),
          ),
          migrations.RemoveField(
              model_name='communitygazettal',
              name='status',
          ),
          migrations.RemoveField(
              model_name='taxongazettal',
              name='status',
          ),
          migrations.AddField(
              model_name='communitygazettal',
              name='status',
              field=django_fsm.FSMIntegerField(choices=[(0, 'Proposed'), (10, 'In review with experts'), (20, 'In review with public'), (30, 'In review with panel'), (40, 'In review with Branch Manager'), (50, 'In review with Division Director'), (
                  60, 'In review with Director General'), (70, 'In review with Minister'), (80, 'Gazetted'), (90, 'De-listed')], db_index=True, default=0, help_text='The approval status of the Gazettal.', verbose_name='Approval status'),
          ),
          migrations.AddField(
              model_name='taxongazettal',
              name='status',
              field=django_fsm.FSMIntegerField(choices=[(0, 'Proposed'), (10, 'In review with experts'), (20, 'In review with public'), (30, 'In review with panel'), (40, 'In review with Branch Manager'), (50, 'In review with Division Director'), (
                  60, 'In review with Director General'), (70, 'In review with Minister'), (80, 'Gazetted'), (90, 'De-listed')], db_index=True, default=0, help_text='The approval status of the Gazettal.', verbose_name='Approval status'),
          ),
          migrations.CreateModel(
              name='FileAttachment',
              fields=[
                  ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                  ('attachment', models.FileField(upload_to=conservation.models.fileattachment_media)),
                  ('object_id', models.PositiveIntegerField()),
                  ('title', models.CharField(blank=True, help_text='A self-explanatory title for the file attachment.',
                                             max_length=500, null=True, verbose_name='Title')),
                  ('author', models.ForeignKey(blank=True, help_text='The person who authored and endorsed this file.',
                                               null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Author')),
                  ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')),
                  ('confidential', models.BooleanField(db_index=True, default=True,
                                                       help_text='Whether this file is confidential or can be released to the public.', verbose_name='Is confidential')),
                  ('current', models.BooleanField(db_index=True, default=True,
                                                  help_text='Whether this file is current or an archived version.', verbose_name='Is current')),
              ],
          ),
          migrations.AlterModelOptions(
              name='conservationcategory',
              options={'ordering': ['conservation_list', 'rank'], 'verbose_name': 'Conservation Category',
                       'verbose_name_plural': 'Conservation Categories'},
          ),
          migrations.AlterModelOptions(
              name='conservationcriterion',
              options={'ordering': ['conservation_list', 'rank'],
                       'verbose_name': 'Conservation Criterion', 'verbose_name_plural': 'Conservation Criteria'},
          ),
          migrations.AddField(
              model_name='communitygazettal',
              name='scope',
              field=models.PositiveIntegerField(choices=[(0, 'WA'), (1, 'CMW'), (2, 'INT'), (
                  3, 'AP')], default=0, help_text='In which legislation does this Gazettal apply?', verbose_name='Scope'),
          ),
          migrations.AddField(
              model_name='communitygazettal',
              name='source',
              field=models.PositiveIntegerField(choices=[(0, 'Manual entry'), (1, 'Threatened Fauna'), (2, 'Threatened Flora'), (
                  3, 'Threatened Communities')], default=0, help_text='Where was this record captured initially?', verbose_name='Data Source'),
          ),
          migrations.AddField(
              model_name='communitygazettal',
              name='source_id',
              field=models.CharField(blank=True, help_text='The ID of the record in the original source, if available.',
                                     max_length=1000, null=True, verbose_name='Source ID'),
          ),
          migrations.AddField(
              model_name='taxongazettal',
              name='scope',
              field=models.PositiveIntegerField(choices=[(0, 'WA'), (1, 'CMW'), (2, 'INT'), (
                  3, 'AP')], default=0, help_text='In which legislation does this Gazettal apply?', verbose_name='Scope'),
          ),
          migrations.AddField(
              model_name='taxongazettal',
              name='source',
              field=models.PositiveIntegerField(choices=[(0, 'Manual entry'), (1, 'Threatened Fauna'), (2, 'Threatened Flora'), (
                  3, 'Threatened Communities')], default=0, help_text='Where was this record captured initially?', verbose_name='Data Source'),
          ),
          migrations.AddField(
              model_name='taxongazettal',
              name='source_id',
              field=models.CharField(blank=True, help_text='The ID of the record in the original source, if available.',
                                     max_length=1000, null=True, verbose_name='Source ID'),
          ),
          migrations.AddField(
              model_name='conservationcategory',
              name='rank',
              field=models.PositiveIntegerField(
                  blank=True, help_text='Display order, lowest number goes first.', null=True, verbose_name='Rank'),
          ),
          migrations.AddField(
              model_name='conservationcriterion',
              name='rank',
              field=models.PositiveIntegerField(
                  blank=True, help_text='Display order, lowest number goes first.', null=True, verbose_name='Rank'),
          ),
          migrations.RemoveField(
              model_name='communitygazettal',
              name='deactivated_on',
          ),
          migrations.RemoveField(
              model_name='taxongazettal',
              name='deactivated_on',
          ),
          migrations.AddField(
              model_name='communitygazettal',
              name='delisted_on',
              field=models.DateTimeField(
                  blank=True, help_text='The date and time this Gazettal was de-listed, most likely superseded by another Gazettal.', null=True, verbose_name='De-listed on'),
          ),
          migrations.AddField(
              model_name='taxongazettal',
              name='delisted_on',
              field=models.DateTimeField(
                  blank=True, help_text='The date and time this Gazettal was de-listed, most likely superseded by another Gazettal.', null=True, verbose_name='De-listed on'),
          ),
          migrations.CreateModel(
              name='Document',
              fields=[
                  ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                  ('document_type', models.PositiveIntegerField(choices=[(0, 'Recovery Plan'), (5, 'Interim Recovery Plan'), (10, 'Management Plan'), (20, 'Animal Ethics Application'), (
                      30, 'Fauna Translocation Proposal'), (40, 'Standard Operating Procedure')], default=0, help_text='The document type governs the approval process.', verbose_name='Document Type')),
                  ('status', django_fsm.FSMIntegerField(choices=[(0, 'Proposed'), (40, 'In review with Branch Manager'), (45, 'In review with Regional Manager'), (50, 'In review with Division Director'), (20, 'In review with public'), (
                      60, 'In review with Director General'), (70, 'In review with Minister'), (80, 'Active'), (90, 'Closed'), (100, 'Rejected')], db_index=True, default=0, help_text='The approval status of the Gazettal.', verbose_name='Approval status')),
                  ('effective_from', models.DateTimeField(
                      blank=True, help_text='The date from which this document is effective from.', null=True, verbose_name='Effective from')),
                  ('effective_to', models.DateTimeField(blank=True,
                                                        help_text='The date to which this document is effective to.', null=True, verbose_name='Effective to')),
                  ('effective_from_commonwealth', models.DateTimeField(
                      blank=True, help_text='The date from which this document was adopted by the Commonwealth.', null=True, verbose_name='Adopted by Commonwealth on')),
                  ('effective_to_commonwealth', models.DateTimeField(
                      blank=True, help_text='The date on which this document was retired by the Commonwealth.', null=True, verbose_name='Retired by Commonwealth on')),
                  ('review_due', models.DateTimeField(
                      blank=True, help_text='The date and time this Document should be reviewed.', null=True, verbose_name='Review due date')),
                  ('title', models.CharField(help_text='A concise document title.', max_length=1000, verbose_name='Title')),
                  ('comments', models.TextField(
                      blank=True, help_text='Optional comments on document approval and provenance.', null=True, verbose_name='Comments')),
                  ('communities', models.ManyToManyField(blank=True, help_text='All communities this document applies to.',
                                                         to='taxonomy.Community', verbose_name='Communities')),
                  ('taxa', models.ManyToManyField(blank=True, help_text='All taxa this document applies to.',
                                                  to='taxonomy.Taxon', verbose_name='Taxa')),
                  ('team', models.ManyToManyField(blank=True, to=settings.AUTH_USER_MODEL,
                                                  verbose_name='Staff involved in the writing, approval, or publication of this document.')),
                  ('source', models.PositiveIntegerField(choices=[(0, 'Manual entry'), (1, 'Threatened Fauna'), (2, 'Threatened Flora'), (
                      3, 'Threatened Communities')], default=0, help_text='Where was this record captured initially?', verbose_name='Data Source')),
                  ('source_id', models.CharField(blank=True, help_text='The ID of the record in the original source, if available.',
                                                 max_length=1000, null=True, verbose_name='Source ID')),
                  ('last_reviewed_on', models.DateTimeField(
                      blank=True, help_text='The date and time this Conservation Listing was last reviewed.', null=True, verbose_name='Last reviewed on')),
              ],
              options={
                  'ordering': ['document_type', 'title'],
                  'verbose_name': 'Document',
                  'verbose_name_plural': 'Documents',
              },
          ),
          migrations.AlterModelOptions(
              name='communitygazettal',
              options={'verbose_name': 'Community Conservation Listing',
                       'verbose_name_plural': 'Community Conservation Listings'},
          ),
          migrations.AlterModelOptions(
              name='taxongazettal',
              options={'verbose_name': 'Taxon Conservation Listing',
                       'verbose_name_plural': 'Taxon Conservation Listings'},
          ),
          migrations.RemoveField(
              model_name='communitygazettal',
              name='delisted_on',
          ),
          migrations.RemoveField(
              model_name='communitygazettal',
              name='gazetted_on',
          ),
          migrations.RemoveField(
              model_name='taxongazettal',
              name='delisted_on',
          ),
          migrations.RemoveField(
              model_name='taxongazettal',
              name='gazetted_on',
          ),
          migrations.AddField(
              model_name='communitygazettal',
              name='effective_from',
              field=models.DateTimeField(
                  blank=True, help_text='The date printed on the Departmental Gazettal notice containing this Conservation Listing.', null=True, verbose_name='Effective from'),
          ),
          migrations.AddField(
              model_name='communitygazettal',
              name='effective_to',
              field=models.DateTimeField(
                  blank=True, help_text='The date and time this Conservation Listing was de-listed or otherwise ceased to be in effect.', null=True, verbose_name='Effective to'),
          ),
          migrations.AddField(
              model_name='taxongazettal',
              name='effective_from',
              field=models.DateTimeField(
                  blank=True, help_text='The date printed on the Departmental Gazettal notice containing this Conservation Listing.', null=True, verbose_name='Effective from'),
          ),
          migrations.AddField(
              model_name='taxongazettal',
              name='effective_to',
              field=models.DateTimeField(
                  blank=True, help_text='The date and time this Conservation Listing was de-listed or otherwise ceased to be in effect.', null=True, verbose_name='Effective to'),
          ),
          migrations.AlterField(
              model_name='communitygazettal',
              name='label_cache',
              field=models.TextField(
                  blank=True, help_text='An auto-generated label for the Conservation Listing.', null=True, verbose_name='Gazettal label'),
          ),
          migrations.AlterField(
              model_name='communitygazettal',
              name='proposed_on',
              field=models.DateTimeField(
                  blank=True, help_text='The date and time this Conservation Listing was proposed on.', null=True, verbose_name='Proposed on'),
          ),
          migrations.AlterField(
              model_name='communitygazettal',
              name='review_due',
              field=models.DateTimeField(
                  blank=True, help_text='The date and time this Conservation Listing should be reviewed.', null=True, verbose_name='Review due date'),
          ),
          migrations.AlterField(
              model_name='communitygazettal',
              name='status',
              field=django_fsm.FSMIntegerField(choices=[(0, 'Proposed'), (10, 'In review with experts'), (20, 'In review with public'), (30, 'In review with panel'), (40, 'In review with Branch Manager'), (50, 'In review with Division Director'), (
                  60, 'In review with Director General'), (70, 'In review with Minister'), (80, 'Published'), (90, 'De-listed'), (100, 'Rejected')], db_index=True, default=0, help_text='The approval status of the Conservation Listing.', verbose_name='Approval status'),
          ),
          migrations.AlterField(
              model_name='taxongazettal',
              name='label_cache',
              field=models.TextField(
                  blank=True, help_text='An auto-generated label for the Conservation Listing.', null=True, verbose_name='Gazettal label'),
          ),
          migrations.AlterField(
              model_name='taxongazettal',
              name='proposed_on',
              field=models.DateTimeField(
                  blank=True, help_text='The date and time this Conservation Listing was proposed on.', null=True, verbose_name='Proposed on'),
          ),
          migrations.AlterField(
              model_name='taxongazettal',
              name='review_due',
              field=models.DateTimeField(
                  blank=True, help_text='The date and time this Conservation Listing should be reviewed.', null=True, verbose_name='Review due date'),
          ),
          migrations.AlterField(
              model_name='taxongazettal',
              name='status',
              field=django_fsm.FSMIntegerField(choices=[(0, 'Proposed'), (10, 'In review with experts'), (20, 'In review with public'), (30, 'In review with panel'), (40, 'In review with Branch Manager'), (50, 'In review with Division Director'), (
                  60, 'In review with Director General'), (70, 'In review with Minister'), (80, 'Published'), (90, 'De-listed'), (100, 'Rejected')], db_index=True, default=0, help_text='The approval status of the Conservation Listing.', verbose_name='Approval status'),
          ),
          migrations.AlterField(
              model_name='communitygazettal',
              name='scope',
              field=models.PositiveIntegerField(choices=[(0, 'WA'), (1, 'CWTH'), (2, 'IUCN'), (
                  3, 'AP')], default=0, help_text='In which legislation does this Gazettal apply?', verbose_name='Scope'),
          ),
          migrations.AlterField(
              model_name='taxongazettal',
              name='scope',
              field=models.PositiveIntegerField(choices=[(0, 'WA'), (1, 'CWTH'), (2, 'IUCN'), (
                  3, 'AP')], default=0, help_text='In which legislation does this Gazettal apply?', verbose_name='Scope'),
          ),
          migrations.AddField(
              model_name='communitygazettal',
              name='last_reviewed_on',
              field=models.DateTimeField(
                  blank=True, help_text='The date and time this Conservation Listing was last reviewed.', null=True, verbose_name='Last reviewed on'),
          ),
          migrations.AddField(
              model_name='taxongazettal',
              name='last_reviewed_on',
              field=models.DateTimeField(
                  blank=True, help_text='The date and time this Conservation Listing was last reviewed.', null=True, verbose_name='Last reviewed on'),
          ),
          migrations.AddField(
              model_name='conservationcategory',
              name='current',
              field=models.BooleanField(
                  db_index=True, default=True, help_text='Whether this category should be shown for new conservatin listings.', verbose_name='Is current'),
          ),
          migrations.AlterField(
              model_name='communitygazettal',
              name='status',
              field=django_fsm.FSMIntegerField(choices=[(0, 'Proposed'), (10, 'In review with experts'), (20, 'In review with public'), (30, 'In review with panel'), (40, 'In review with Branch Manager'), (50, 'In review with Division Director'), (
                  60, 'In review with Director General'), (70, 'In review with Minister'), (80, 'Listed'), (90, 'De-listed'), (100, 'Rejected')], db_index=True, default=0, help_text='The approval status of the Conservation Listing.', verbose_name='Approval status'),
          ),
          migrations.AlterField(
              model_name='taxongazettal',
              name='status',
              field=django_fsm.FSMIntegerField(choices=[(0, 'Proposed'), (10, 'In review with experts'), (20, 'In review with public'), (30, 'In review with panel'), (40, 'In review with Branch Manager'), (50, 'In review with Division Director'), (
                  60, 'In review with Director General'), (70, 'In review with Minister'), (80, 'Listed'), (90, 'De-listed'), (100, 'Rejected')], db_index=True, default=0, help_text='The approval status of the Conservation Listing.', verbose_name='Approval status'),
          ),
      ]
  