def get_model(self, cache=True, data_table=None): # TODO: the current dynamic model registry is handled by Brasil.IO's # code but it needs to be delegated to dynamic_models. data_table = data_table or self.data_table db_table = data_table.db_table_name # TODO: limit the max number of items in DYNAMIC_MODEL_REGISTRY cache_key = (self.id, db_table) if cache and cache_key in DYNAMIC_MODEL_REGISTRY: return DYNAMIC_MODEL_REGISTRY[cache_key] # TODO: unregister the model in Django if already registered (cache_key # in DYNAMIC_MODEL_REGISTRY and not cache) fields = {field.name: field.field_class for field in self.fields} fields["search_data"] = SearchVectorField(null=True) ordering = self.ordering or [] filtering = self.filtering or [] search = self.search or [] indexes = [] # TODO: add has_choices fields also if ordering: indexes.append( django_indexes.Index( name=make_index_name(db_table, "order", ordering), fields=ordering, )) if filtering: for field_name in filtering: if ordering == [field_name]: continue indexes.append( django_indexes.Index(name=make_index_name( db_table, "filter", [field_name]), fields=[field_name])) if search: indexes.append( pg_indexes.GinIndex(name=make_index_name( db_table, "search", ["search_data"]), fields=["search_data"])) managers = self.get_dynamic_model_managers() mixins = self.get_dynamic_model_mixins() meta = {"ordering": ordering, "indexes": indexes, "db_table": db_table} Model = dynamic_models.create_model_class( name=self.model_name, module="core.models", fields=fields, mixins=mixins, meta=meta, managers=managers, ) Model.extra = { "filtering": filtering, "ordering": ordering, "search": search, } DYNAMIC_MODEL_REGISTRY[cache_key] = Model return Model
class Meta: indexes = ( models.Index(fields=['created_at']), models.Index(fields=['updated_at']), models.Index(fields=['deleted_at']), pgindexes.GinIndex(fields=['text_search_vector']), )
class Meta: unique_together = [ ('namespace', 'repository', 'name', 'content_type') ] ordering = ['namespace', 'repository', 'name', 'content_type'] indexes = [ psql_indexes.GinIndex(fields=['search_vector']) ]
class Meta: unique_together = ( 'namespace', 'name', ) indexes = [ psql_indexes.GinIndex(fields=['search_vector']) ]
class Meta: permissions = (('download_mediaitem', 'Can download media associated with a media item'), ) indexes = ( models.Index(fields=['created_at']), models.Index(fields=['updated_at']), models.Index(fields=['published_at']), models.Index(fields=['deleted_at']), pgindexes.GinIndex(fields=['text_search_vector']), )
class Migration(migrations.Migration): dependencies = [("proposal", "0026_event_importer")] operations = [ operations.BtreeGinExtension(), migrations.AddField(model_name="Proposal", name="case_numbers", field=fields.ArrayField( base_field=models.CharField(max_length=64), default=[])), migrations.AddIndex(model_name="Proposal", index=indexes.GinIndex(fields=["case_numbers"], name="case_numbers_idx")), migrations.RunPython(set_case_numbers), ]
class Migration(migrations.Migration): dependencies = [ ('main', '0082_apb_content_type'), ] operations = [ migrations.AddField( model_name='content', name='search_vector', field=psql_search.SearchVectorField(default=''), preserve_default=False, ), migrations.AddIndex( model_name='content', index=psql_indexes.GinIndex(fields=['search_vector'], name='main_conten_search__47815a_gin'), ), migrations.RunSQL(sql=(SET_SEARCH_VECTOR, CREATE_SEARCH_VECTOR_UPDATE_TRIGGER), reverse_sql=DROP_SEARCH_VECTOR_UPDATE_TRIGGER), ]
def get_model(self, cache=True): if cache and self.id in DYNAMIC_MODEL_REGISTRY: return DYNAMIC_MODEL_REGISTRY[self.id] # TODO: unregister the model in Django if already registered (self.id # in DYNAMIC_MODEL_REGISTRY and not cache) # TODO: may use Django's internal registry instead of # DYNAMIC_MODEL_REGISTRY name = self.dataset.slug + "-" + self.name.replace("_", "-") model_name = "".join([word.capitalize() for word in name.split("-")]) fields = {field.name: field.field_class for field in self.fields} fields["search_data"] = SearchVectorField(null=True) ordering = self.ordering or [] filtering = self.filtering or [] search = self.search or [] indexes = [] # TODO: add has_choices fields also if ordering: indexes.append( django_indexes.Index( name=make_index_name(name, "order", ordering), fields=ordering, )) if filtering: for field_name in filtering: if ordering == [field_name]: continue indexes.append( django_indexes.Index(name=make_index_name( name, "filter", [field_name]), fields=[field_name])) if search: indexes.append( pg_indexes.GinIndex(name=make_index_name( name, "search", ["search_data"]), fields=["search_data"])) Options = type( "Meta", (object, ), { "ordering": ordering, "indexes": indexes, "db_table": self.db_table, }, ) Model = type( model_name, ( DynamicModelMixin, models.Model, ), { "__module__": "core.models", "Meta": Options, "objects": DynamicModelQuerySet.as_manager(), **fields, }, ) Model.extra = { "filtering": filtering, "ordering": ordering, "search": search, } DYNAMIC_MODEL_REGISTRY[self.id] = Model return Model
def get_model(self, cache=True): if cache and self.id in DYNAMIC_MODEL_REGISTRY: return DYNAMIC_MODEL_REGISTRY[self.id] # TODO: unregister the model in Django if already registered (self.id # in DYNAMIC_MODEL_REGISTRY and not cache) # TODO: may use Django's internal registry instead of # DYNAMIC_MODEL_REGISTRY name = self.dataset.slug + '-' + self.name.replace('_', '-') model_name = ''.join([word.capitalize() for word in name.split('-')]) fields = {field.name: field.field_class for field in self.fields} fields['search_data'] = SearchVectorField(null=True) ordering = self.ordering or [] filtering = self.filtering or [] search = self.search or [] indexes = [] # TODO: add has_choices fields also if ordering: indexes.append( django_indexes.Index( name=make_index_name(name, 'order', ordering), fields=ordering, )) if filtering: for field_name in filtering: if ordering == [field_name]: continue indexes.append( django_indexes.Index(name=make_index_name( name, 'filter', [field_name]), fields=[field_name])) if search: indexes.append( pg_indexes.GinIndex(name=make_index_name( name, 'search', ['search_data']), fields=['search_data'])) Options = type( 'Meta', (object, ), { 'ordering': ordering, 'indexes': indexes, 'db_table': self.db_table, }, ) Model = type( model_name, ( DynamicModelMixin, models.Model, ), { '__module__': 'core.models', 'Meta': Options, 'objects': DynamicModelQuerySet.as_manager(), **fields, }, ) Model.extra = { 'filtering': filtering, 'ordering': ordering, 'search': search, } DYNAMIC_MODEL_REGISTRY[self.id] = Model return Model
class Meta: indexes = [ indexes.GinIndex(fields=['data']), ]
class Meta: indexes = [ indexes.GinIndex(fields=["case_numbers"], name="case_numbers_idx") ]
class Meta: unique_together = (('customer', 'slug'), ) ordering = ['-id'] indexes = [ indexes.GinIndex(fields=['search_vector'], name='title_index') ]
def get_model(self, cache=True, data_table=None): # TODO: the current dynamic model registry is handled by Brasil.IO's # code but it needs to be delegated to dynamic_models. data_table = data_table or self.data_table db_table = data_table.db_table_name # TODO: limit the max number of items in DYNAMIC_MODEL_REGISTRY cache_key = (self.id, db_table) if cache and cache_key in DYNAMIC_MODEL_REGISTRY: return DYNAMIC_MODEL_REGISTRY[cache_key] # TODO: unregister the model in Django if already registered (cache_key # in DYNAMIC_MODEL_REGISTRY and not cache) fields = {field.name: field.field_class for field in self.fields} fields["search_data"] = SearchVectorField(null=True) ordering = self.ordering or [] filtering = self.filtering or [] search = self.search or [] indexes = [] if ordering and ordering != ["id"]: indexes.append( django_indexes.Index( name=make_index_name(db_table, "order", ordering), fields=ordering, )) if filtering: for field_name in filtering: if ordering and field_name == ordering[0]: # This index is not needed, since it's covered by compound # index from `ordering`. More info at: # <https://github.com/gregnavis/active_record_doctor#removing-extraneous-indexes> continue indexes.append( django_indexes.Index(name=make_index_name( db_table, "filter", [field_name]), fields=[field_name])) if search: indexes.append( pg_indexes.GinIndex(name=make_index_name( db_table, "search", ["search_data"]), fields=["search_data"])) managers = self.get_dynamic_model_managers() mixins = self.get_dynamic_model_mixins() meta = {"ordering": ordering, "indexes": indexes, "db_table": db_table} Model = dynamic_models.create_model_class( name=self.model_name, module="core.models", fields=fields, mixins=mixins, meta=meta, managers=managers, ) Model.extra = { "filtering": filtering, "ordering": ordering, "search": search, "table": self, } DYNAMIC_MODEL_REGISTRY[cache_key] = Model return Model
class Migration(migrations.Migration): dependencies = [ ('pulp_app', '0001_initial'), ('main', '0127_drop_categories'), ] operations = [ migrations.CreateModel( name='Collection', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=64)), ('deprecated', models.BooleanField(default=False)), ('download_count', models.IntegerField(default=0.0)), ('community_score', models.FloatField(default=0.0)), ('quality_score', models.FloatField(default=0.0)), ('search_vector', psql_search.SearchVectorField(default='')), ('created', models.DateTimeField(auto_now_add=True)), ('modified', models.DateTimeField(auto_now=True)), ('namespace', models.ForeignKey(on_delete=models.PROTECT, to='main.Namespace')), ('tags', models.ManyToManyField(to='main.Tag')), ], ), migrations.CreateModel( name='CollectionVersion', fields=[ ('version', models.CharField(max_length=64)), ('hidden', models.BooleanField(default=False)), ('metadata', psql_fields.JSONField(default=dict)), ('contents', psql_fields.JSONField(default=dict)), ('created', models.DateTimeField(auto_now_add=True)), ('modified', models.DateTimeField(auto_now=True)), ('_parent_ref', models.OneToOneField(db_column='id', on_delete=models.CASCADE, parent_link=True, primary_key=True, serialize=False, to='pulp_app.Content')), ('collection', models.ForeignKey(on_delete=models.PROTECT, related_name='versions', to='main.Collection')), ], bases=('pulp_app.content', ), ), migrations.AlterUniqueTogether( name='collectionversion', unique_together={('collection', 'version')}, ), migrations.AlterUniqueTogether( name='collection', unique_together={('namespace', 'name')}, ), migrations.AddIndex( model_name='collection', index=psql_indexes.GinIndex(fields=['search_vector'], name='main_collec_search__7ca832_gin'), ), migrations.RunPython(code=create_galaxy_repository, reverse_code=delete_galaxy_repository) ]
class Meta: indexes = (postgres_indexes.GinIndex(fields=["word"], name='words_idx', fastupdate=False), )
class Meta: indexes = (postgres_indexes.GinIndex(fields=["description"], name='decription_fts_gin_idx'), )