Exemple #1
0
 def test_name_auto_generation(self):
     """
     A name longer than 30 characters (since len(BrinIndex.suffix) is 4
     rather than usual limit of 3) is okay for PostgreSQL. For this test,
     the name of the field ('datetimes') must be at least 7 characters to
     generate a name longer than 30 characters.
     """
     index = BrinIndex(fields=['datetimes'])
     index.set_name_with_model(DateTimeArrayModel)
     self.assertEqual(index.name, 'postgres_te_datetim_abf104_brin')
Exemple #2
0
 def test_deconstruction(self):
     index = BrinIndex(fields=['title'], name='test_title_brin', autosummarize=True, pages_per_range=16)
     path, args, kwargs = index.deconstruct()
     self.assertEqual(path, 'django.contrib.postgres.indexes.BrinIndex')
     self.assertEqual(args, ())
     self.assertEqual(kwargs, {
         'fields': ['title'],
         'name': 'test_title_brin',
         'autosummarize': True,
         'pages_per_range': 16,
     })
Exemple #3
0
 def test_brin_index_not_supported(self):
     index_name = 'brin_index_exception'
     index = BrinIndex(fields=['field'], name=index_name)
     with self.assertRaisesMessage(NotSupportedError,
                                   'BRIN indexes require PostgreSQL 9.5+.'):
         with mock.patch(
                 'django.db.connection.features.has_brin_index_support',
                 False):
             with connection.schema_editor() as editor:
                 editor.add_index(CharFieldModel, index)
     self.assertNotIn(index_name,
                      self.get_constraints(CharFieldModel._meta.db_table))
Exemple #4
0
 class Meta:
     verbose_name = _("Report")
     verbose_name_plural = _("Reports")
     ordering = ['-created_at']
     get_latest_by = 'created_at'
     permissions = (
         # ("view_report", "Can see all report"),
         # ("add_report", "Can add a new report"),
         # ("change_report", "Can edit the report"),
         # ("delete_report", "Can delete the report"),
     )
     indexes = [BrinIndex(fields=['created_at'], pages_per_range=16)]
Exemple #5
0
 def test_brin_index(self):
     index_name = 'char_field_model_field_brin'
     index = BrinIndex(fields=['field'], name=index_name, pages_per_range=4)
     with connection.schema_editor() as editor:
         editor.add_index(CharFieldModel, index)
     constraints = self.get_constraints(CharFieldModel._meta.db_table)
     self.assertEqual(constraints[index_name]['type'], BrinIndex.suffix)
     self.assertEqual(constraints[index_name]['options'],
                      ['pages_per_range=4'])
     with connection.schema_editor() as editor:
         editor.remove_index(CharFieldModel, index)
     self.assertNotIn(index_name,
                      self.get_constraints(CharFieldModel._meta.db_table))
Exemple #6
0
 def test_brin_parameters(self):
     index_name = "char_field_brin_params"
     index = BrinIndex(fields=["field"], name=index_name, autosummarize=True)
     with connection.schema_editor() as editor:
         editor.add_index(CharFieldModel, index)
     constraints = self.get_constraints(CharFieldModel._meta.db_table)
     self.assertEqual(constraints[index_name]["type"], BrinIndex.suffix)
     self.assertEqual(constraints[index_name]["options"], ["autosummarize=on"])
     with connection.schema_editor() as editor:
         editor.remove_index(CharFieldModel, index)
     self.assertNotIn(
         index_name, self.get_constraints(CharFieldModel._meta.db_table)
     )
Exemple #7
0
 class Meta:
     constraints = [
         UniqueConstraint(
             fields=["team", "challenge"],
             condition=Q(correct=True, team__isnull=False),
             name="unique_team_challenge_correct",
         ),
         UniqueConstraint(
             fields=["solved_by", "challenge"],
             condition=Q(correct=True),
             name="unique_member_challenge_correct",
         ),
     ]
     indexes = [BrinIndex(fields=["challenge"], autosummarize=True)]
 class Meta:
     app_label = 'shared_foundation'
     db_table = 'nwapp_shared_organizations'
     verbose_name = _('Shared Organization')
     verbose_name_plural = _('Shared Organizations')
     default_permissions = ()
     permissions = ()
     indexes = (BrinIndex(
         fields=[
             'created_at',
             'last_modified_at',
         ],
         autosummarize=True,
     ), )
Exemple #9
0
 def test_brin_autosummarize_not_supported(self):
     index_name = 'brin_options_exception'
     index = BrinIndex(fields=['field'],
                       name=index_name,
                       autosummarize=True)
     with self.assertRaisesMessage(
             NotSupportedError,
             'BRIN option autosummarize requires PostgreSQL 10+.'):
         with mock.patch(
                 'django.db.backends.postgresql.features.DatabaseFeatures.has_brin_autosummarize',
                 False):
             with connection.schema_editor() as editor:
                 editor.add_index(CharFieldModel, index)
     self.assertNotIn(index_name,
                      self.get_constraints(CharFieldModel._meta.db_table))
    def __init__(self, *args, **kwargs):
        super(Migration, self).__init__(*args, **kwargs)

        # The assignment of operations can be moved to the class definition
        # when support for Django 1.8 is dropped.
        if django.VERSION >= (1, 11, 0):
            self.operations = [
                migrations.AddField(model_name='DummyModel',
                                    name='indexed',
                                    field=models.CharField(max_length=100)),
                migrations.AlterField(
                    model_name='DummyModel',
                    name='indexed',
                    field=models.CharField(
                        max_length=100,
                        db_index=True,
                    ),
                ),
                migrations.AlterField(
                    model_name='DummyModel',
                    name='indexed',
                    field=models.CharField(
                        max_length=100,
                        db_index=True,
                        unique=True,
                    ),
                ),
                migrations.AlterField(
                    model_name='DummyModel',
                    name='indexed',
                    field=models.CharField(max_length=100),
                ),
                migrations.AddIndex(
                    model_name='dummymodel',
                    index=BrinIndex(
                        fields=['indexed'],
                        name='indexed_brin',
                    ),
                ),
                migrations.RemoveIndex(
                    model_name='dummymodel',
                    name='indexed_brin',
                ),
                migrations.RemoveField(
                    model_name='DummyModel',
                    name='indexed',
                ),
            ]
 class Meta:
     app_label = 'foundation'
     db_table = 'mika_alarm_items'
     verbose_name = _('Alert Item')
     verbose_name_plural = _('Alert Items')
     default_permissions = ()
     permissions = ()
     indexes = (
         BrinIndex(
             fields=['created_at'],
             autosummarize=True,
         ),
     )
     index_together = (
         ('user', 'type_of', 'state', 'created_at', ),
     )
Exemple #12
0
 class Meta:
     app_label = 'foundation'
     db_table = 'mika_production_inspections'
     verbose_name = _('Production Inspection')
     verbose_name_plural = _('Production Inspections')
     default_permissions = ()
     permissions = (
         # ("can_get_opening_hours_specifications", "Can get opening hours specifications"),
         # ("can_get_opening_hours_specification", "Can get opening hours specifications"),
         # ("can_post_opening_hours_specification", "Can create opening hours specifications"),
         # ("can_put_opening_hours_specification", "Can update opening hours specifications"),
         # ("can_delete_opening_hours_specification", "Can delete opening hours specifications"),
     )
     indexes = (BrinIndex(
         fields=['created_at', 'last_modified_at'],
         autosummarize=True,
     ), )
Exemple #13
0
 class Meta:
     app_label = 'foundation'
     db_table = 'mika_task_items'
     ordering = ['due_date']
     verbose_name = _('Task Item')
     verbose_name_plural = _('Task Items')
     default_permissions = ()
     permissions = ()
     indexes = (BrinIndex(
         fields=[
             'due_date',
             'created_at',
             'last_modified_at',
         ],
         autosummarize=True,
     ), )
     index_together = (('user', 'created_at', 'is_closed'), )
Exemple #14
0
 class Meta:
     app_label = 'foundation'
     db_table = 'mika_device_reports'
     verbose_name = _('Device Report')
     verbose_name_plural = _('Device Reports')
     unique_together = ("device", "label", "start_dt", "finish_dt")
     default_permissions = ()
     permissions = (
         # ("can_get_opening_hours_specifications", "Can get opening hours specifications"),
         # ("can_get_opening_hours_specification", "Can get opening hours specifications"),
         # ("can_post_opening_hours_specification", "Can create opening hours specifications"),
         # ("can_put_opening_hours_specification", "Can update opening hours specifications"),
         # ("can_delete_opening_hours_specification", "Can delete opening hours specifications"),
     )
     indexes = (BrinIndex(
         fields=['created_at', 'last_modified_at'],
         autosummarize=True,
     ), )
Exemple #15
0
 class Meta:
     app_label = 'foundation'
     db_table = 'mika_time_series_json_data'
     verbose_name = _('Time-Series JSON Datum')
     verbose_name_plural = _('Time-Series JSON Data')
     default_permissions = ()
     unique_together = ("instrument", "timestamp")
     permissions = (
         # ("can_get_opening_hours_specifications", "Can get opening hours specifications"),
         # ("can_get_opening_hours_specification", "Can get opening hours specifications"),
         # ("can_post_opening_hours_specification", "Can create opening hours specifications"),
         # ("can_put_opening_hours_specification", "Can update opening hours specifications"),
         # ("can_delete_opening_hours_specification", "Can delete opening hours specifications"),
     )
     indexes = (BrinIndex(
         fields=['timestamp'],
         autosummarize=True,
     ), )
Exemple #16
0
 def test_add_other_index_type(self):
     project_state = self.set_up_test_model(self.app_label, index=False)
     table_name = '%s_pony' % self.app_label
     new_state = project_state.clone()
     operation = AddIndexConcurrently(
         'Pony',
         BrinIndex(fields=['pink'], name='pony_pink_brin_idx'),
     )
     self.assertIndexNotExists(table_name, ['pink'])
     # Add index.
     with connection.schema_editor(atomic=False) as editor:
         operation.database_forwards(self.app_label, editor, project_state,
                                     new_state)
     self.assertIndexExists(table_name, ['pink'], index_type='brin')
     # Reversal.
     with connection.schema_editor(atomic=False) as editor:
         operation.database_backwards(self.app_label, editor, new_state,
                                      project_state)
     self.assertIndexNotExists(table_name, ['pink'])
Exemple #17
0
 class Meta:
     indexes = (BrinIndex(fields=['created']), )
     verbose_name = "Лог менеджера сообществ"
     verbose_name_plural = "Логи менеджеров сообществ"
     ordering = ["-created"]
Exemple #18
0
 class Meta:
     indexes = (BrinIndex(fields=['created']), )
     verbose_name = "Лог менеджера пользоватетей"
     verbose_name_plural = "Логи менеджеров пользоватетей"
     ordering = ["-created"]
Exemple #19
0
 def test_repr(self):
     index = BrinIndex(fields=['title'], pages_per_range=4)
     another_index = BrinIndex(fields=['title'])
     self.assertEqual(repr(index),
                      "<BrinIndex: fields='title', pages_per_range=4>")
     self.assertEqual(repr(another_index), "<BrinIndex: fields='title'>")
Exemple #20
0
 class Meta:
     indexes = (BrinIndex(fields=['created']),)
     verbose_name = 'Опрос'
     verbose_name_plural = 'Опросы'
Exemple #21
0
 class Meta:
     unique_together = ('year', 'month', 'day')
     indexes = [BrinIndex(fields=['calculated_at'], pages_per_range=16)]
Exemple #22
0
 class Meta:
     ordering = ('-created_at', )
     verbose_name = _("bounty")
     verbose_name_plural = _("bounties")
     indexes = (BrinIndex(fields=['created_at']), )
Exemple #23
0
 class Meta:
     indexes = (BrinIndex(fields=['created']), )
     verbose_name = 'Фото'
     verbose_name_plural = 'Фото'
     ordering = ["-created"]
 class Meta:
     indexes = [BrinIndex(fields=["timestamp"])]
     unique_together = ("text", "timestamp")
     ordering = ["text"]
Exemple #25
0
 def test_deconstruction(self):
     index = BrinIndex(fields=['title'], name='test_title_brin')
     path, args, kwargs = index.deconstruct()
     self.assertEqual(path, 'django.contrib.postgres.indexes.BrinIndex')
     self.assertEqual(args, ())
     self.assertEqual(kwargs, {'fields': ['title'], 'name': 'test_title_brin'})
Exemple #26
0
 class Meta:
     verbose_name = _("weekend")
     verbose_name_plural = _("weekends")
     indexes = (BrinIndex(fields=['date']), )
Exemple #27
0
 class Meta:
     indexes = (BrinIndex(fields=['created']), )
     verbose_name = "Лог суперменеджера активностей депутатов"
     verbose_name_plural = "Логи суперменеджеров активностей депутатов"
     ordering = ["-created"]
Exemple #28
0
 class Meta:
     ordering = ('-id', )
     indexes = (BrinIndex(fields=['timestamp']), )
Exemple #29
0
 class Meta:
     indexes = (BrinIndex(fields=['search']), )
     verbose_name = 'Новость'
     verbose_name_plural = 'Новости'
Exemple #30
0
 class Meta:
     ordering = ["-created"]
     verbose_name = "Проект"
     verbose_name_plural = "Проекты"
     indexes = (BrinIndex(fields=['created']), )
Exemple #31
0
 def test_not_eq(self):
     index = BrinIndex(fields=['title'])
     index_with_page_range = BrinIndex(fields=['title'], pages_per_range=16)
     self.assertNotEqual(index, index_with_page_range)
 class Meta:
     db_tablespace = "pg_default"
     indexes = [BrinIndex(fields=["timestamp"])]
     unique_together = ("text", "timestamp")
     ordering = ["text"]
Exemple #33
0
 class Meta:
     get_latest_by = 'timestamp'
     indexes = [BrinIndex(fields=['timestamp'], pages_per_range=64)]