예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
파일: models.py 프로젝트: crowmurk/mallenom
 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)
예제 #4
0
    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)
예제 #5
0
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()
예제 #6
0
    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)
예제 #7
0
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()
예제 #8
0
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()
예제 #9
0
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()
예제 #10
0
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)
예제 #11
0
 def save(self, *args, **kwargs):
     self.slug = get_unique_slug(self, 'slug', 'name', unique=True)
     super(Project, self).save(*args, **kwargs)
예제 #12
0
 def save(self, *args, **kwargs):
     self.slug = get_unique_slug(self, 'slug', 'date', unique=True)
     super(Day, self).save(*args, **kwargs)
예제 #13
0
파일: models.py 프로젝트: jtatan/portafolio
 def save(self, *args, **kwargs):
     if not self.slug:
         self.slug = get_unique_slug(self, 'titulo', 'slug')
     super().save(*args, **kwargs)
예제 #14
0
파일: models.py 프로젝트: jtatan/portafolio
 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)