def test_get_slug(self): """Генерация не уникального slug """ # Создаем первый объект miner = Miner(name='Miner', version='1.0.b') miner.slug = get_unique_slug( miner, 'slug', 'name', 'version', unique=False, ) miner.save() # Создаем второй объект с таким же slug other_miner = Miner(name='MineR', version='1.0.b') other_miner.slug = get_unique_slug( other_miner, 'slug', 'name', 'version', unique=False, ) # Поля slug должны быть равны self.assertEqual(miner.slug, other_miner.slug)
def test_get_unique_together_slug(self): """Гнереация уникального slug для поля """ # Slug должен быть уникальным для значения поля miner miner = Miner(name='Miner', version='1.0.b') miner.save() other_miner = Miner(name='OtherMiner', version='1.0.b') other_miner.save() # Создаем первый объект first_request = Request( name='Status', request='{"a": 1}', miner=miner, ) first_request.slug = get_unique_slug( first_request, 'slug', 'name', unique=('miner', ), ) first_request.save() # Создаем второй объект, с таким же полем miner second_request = Request( name='Status', request='{"a": 1}', miner=miner, ) second_request.slug = get_unique_slug( second_request, 'slug', 'name', unique=('miner', ), ) # Поля slug не должны совпадать self.assertNotEqual(first_request.slug, second_request.slug) second_request.save() # Создаем третий объект, с другим полем miner third_request = Request( name='Status', request='{"a": 1}', miner=other_miner, ) third_request.slug = get_unique_slug( third_request, 'slug', 'name', unique=('miner', ), ) # Поля slug должны совпадать self.assertEqual(third_request.slug, first_request.slug)
def save(self, *args, **kwargs): self.slug = get_unique_slug( self, 'slug', *('last_name', 'first_name', 'middle_name'), unique=True, ) super(Employee, self).save(*args, **kwargs)
def test_get_slug_conflict(self): """Генерация не уникального slug недопустимого значения """ miner = Miner(name='Miner', version='1.0.b') miner.save() # Создаем объект, чей slug недопустимым server = Server( name='Create', host='192.168.1.1', port=80, miner=miner, ) server.slug = get_unique_slug( server, 'slug', 'name', unique=False, ) # Slug не должен быть недопустимого значения self.assertNotEqual(server.slug, 'create') server.save() # Создаем второй объект, чей slug недопустимым other_server = Server( name='CreatE', host='192.168.1.1', port=80, miner=miner, ) other_server.slug = get_unique_slug( other_server, 'slug', 'name', unique=False, ) # Slug не должен быть недопустимого значения self.assertNotEqual(other_server.slug, 'create') # Поля slug должны быть равны self.assertEqual(server.slug, other_server.slug)
def add_miner_data(apps, schema_editor): Miner = apps.get_model('miner', 'Miner') for miner in MINERS: new_miner = Miner( name=miner['name'], version=miner['version'], description=miner['description'], ) new_miner.slug = get_unique_slug( new_miner, 'slug', 'name', 'version', ) new_miner.save()
def test_get_unique_slug(self): """Генерация уникального slug """ # Создаем первый объект miner = Miner(name='Miner', version='1.0.b') miner.slug = get_unique_slug( miner, 'slug', 'name', 'version', ) miner.save() # Создаем второй объект с таким же slug other_miner = Miner(name='MineR', version='1.0.b') other_miner.slug = get_unique_slug( other_miner, 'slug', 'name', 'version', ) # Поля slug не должны совпадать self.assertNotEqual(miner.slug, other_miner.slug)
def add_request_data(apps, schema_editor): Request = apps.get_model('miner', 'Request') Miner = apps.get_model('miner', 'Miner') for request in REQUESTS: new_request = Request( name=request['name'], request=request['request'], response=request['response'], miner=Miner.objects.get(slug=request['miner']), description=request['description'], ) new_request.slug = get_unique_slug(new_request, 'slug', 'name', unique=('miner', )) new_request.save()
def add_server_data(apps, schema_editor): Server = apps.get_model('miner', 'Server') Miner = apps.get_model('miner', 'Miner') for server in SERVERS: new_server = Server( name=server['name'], host=server['host'], port=server['port'], miner=Miner.objects.get(slug=server['miner']), description=server['description'], ) new_server.slug = get_unique_slug( new_server, 'slug', 'name', ) new_server.save()
def add_config_data(apps, schema_editor): Config = apps.get_model('task', 'Config') for config in CONFIGS: new_config = Config( name=config['name'], zabbix_server=config['zabbix_server'], zabbix_send=config['zabbix_send'], enabled=config['enabled'], log=config['log'], description=config['description'], ) new_config.slug = get_unique_slug( new_config, 'slug', 'name', ) new_config.save()
def slug_create(sender, instance, *args, **kwargs): """Создает slug при сохранении объекта в БД """ # Аргументы вызова функции создания slug args = { 'miner': { 'Miner': ('slug', 'name', 'version', True), 'Request': ('slug', 'name', ('miner', )), 'Server': ('slug', 'name', True), }, 'task': { 'Config': ('slug', 'name', True), }, } model_name = sender.__name__ instance_app = instance._meta.app_label try: # Извлекаем аргументы для модели slug_field, *slugable_fields, unique = args[instance_app][model_name] # Создаем slug только если он еще не задан if getattr(instance, slug_field): return None except KeyError: return None else: # Создаем slug slug = get_unique_slug(instance, slug_field, *slugable_fields, unique=unique) setattr(instance, slug_field, slug)
def save(self, *args, **kwargs): self.slug = get_unique_slug(self, 'slug', 'name', unique=True) super(Project, self).save(*args, **kwargs)
def save(self, *args, **kwargs): self.slug = get_unique_slug(self, 'slug', 'date', unique=True) super(Day, self).save(*args, **kwargs)
def save(self, *args, **kwargs): if not self.slug: self.slug = get_unique_slug(self, 'titulo', 'slug') super().save(*args, **kwargs)
def save(self, *args, **kwargs): if not self.slug: self.slug = get_unique_slug(self, 'nombre', 'slug') self.nombre = self.nombre.lower() super().save(*args, **kwargs)