Exemplo n.º 1
0
    def test_create_row_with_specific_fields_values(self):
        field_value_dict = {}
        for i, field in enumerate(self.fields):
            field_value_dict[field.name] = i + 50

        get_custom_table_manager(self.table.name).create(**field_value_dict)

        for i, field in enumerate(self.fields):
            rows = get_custom_table_manager(self.table.name).filter(**{field.name: i + 50})
            self.assertEqual(rows.count(), 1)

        self.assertEqual(get_custom_table_manager(self.table.name).all().count(), 2)
Exemplo n.º 2
0
 def test_update(self):
     form = get_tenant_specific_table_row_form_class(self.table.name)(instance=self.row, data=self.params)
     self.assertTrue(form.is_valid())
     form.save()
     updated_row = get_custom_table_manager(self.table.name).get(id=self.row.id)
     for key, value in self.params.items():
         self.assertEqual(
             getattr(updated_row, key),
             value
         )
Exemplo n.º 3
0
    def get_queryset(self):
        table_slug = self.kwargs['slug']
        if get_setting('CUSTOMIZABLE_TABLES_LABEL_SEPARATOR') in table_slug:
            table_slug_parts = table_slug.split(
                get_setting('CUSTOMIZABLE_TABLES_LABEL_SEPARATOR'))
            if table_slug_parts[0] == get_setting('CUSTOM_TABLES_LABEL'):
                try:
                    return get_custom_table_manager(table_slug_parts[1]).all()
                except TenantSpecificTable.DoesNotExist:
                    pass

        raise Http404()
Exemplo n.º 4
0
    def test_create(self):
        form = get_tenant_specific_table_row_form_class(self.table.name)(data=self.params)
        self.assertTrue(form.is_valid())

        instance = form.save()

        self.assertEqual(get_custom_table_manager(
            self.table.name).all().count(), 2)

        for key, value in self.params.items():
            self.assertEqual(
                getattr(instance, key),
                value
            )
Exemplo n.º 5
0
    def test_create(self):
        params = {}
        for i, field in enumerate(self.fields):
            params[field.name] = 1 + 1000

        response = self.client.post(self.list_view_url,
                                    params,
                                    format='json',
                                    HTTP_TENANT_SLUG=self.tenant.slug)

        self.assertEqual(response.status_code, 201)
        set_current_tenant(self.tenant.slug)
        self.assertEqual(
            get_custom_table_manager(self.table.name).all().count(), 2)
Exemplo n.º 6
0
    def test_update(self):
        params = {}
        for i, field in enumerate(self.fields):
            params[field.name] = 1 + 1000

        response = self.client.put(self.details_view_url,
                                   params,
                                   format='json',
                                   HTTP_TENANT_SLUG=self.tenant.slug)

        self.assertEqual(response.status_code, 200)
        set_current_tenant(self.tenant.slug)
        for key, value in params.items():
            self.assertEqual(
                getattr(
                    get_custom_table_manager(
                        self.table.name).get(id=self.row.id), key), value)
    def update_tenant_specific_fields(self, tenant_specific_fields_data):
        from shared_schema_tenants_custom_data.helpers.custom_tables_helpers import (
            get_custom_table_manager, _get_pivot_table_class_for_data_type)

        old = get_custom_table_manager(self.table.name).get(pk=self.pk)
        definitions = self.get_definitions()
        definitions_by_name = {d.name: d for d in definitions}

        with transaction.atomic():
            for field_name, definition in definitions_by_name.items():
                new_value = tenant_specific_fields_data.get(field_name, None)
                old_value = getattr(old, field_name, None)
                if new_value != old_value:
                    PivotTableClass = _get_pivot_table_class_for_data_type(
                        definition.data_type)
                    PivotTableClass.objects.filter(
                        definition__id=definition.id,
                        row_id=self.id,
                        row_content_type=ContentType.objects.get_for_model(
                            self.__class__)).update(value=new_value)
Exemplo n.º 8
0
 def update(self, instance, validated_data):
     instance = super(TenantSpecificTableRowSerializer,
                      self).update(instance, validated_data)
     return get_custom_table_manager(table_name).get(pk=instance.pk)
Exemplo n.º 9
0
 def create(self, validated_data):
     instance = get_custom_table_manager(table_name).create(
         **validated_data)
     return get_custom_table_manager(table_name).get(pk=instance.pk)
 def save(self, *args, **kwargs):
     self.instance.table_id = table_id
     new_instance = super(TenantSpecificTableRowForm, self).save(*args, **kwargs)
     return get_custom_table_manager(table_name).get(id=new_instance.id)
Exemplo n.º 11
0
 def test_filter_by_tenant_specific_field_with_lookup(self):
     for i, field in enumerate(self.fields):
         rows = get_custom_table_manager(self.table.name).filter(**{field.name + '__gte': i})
         self.assertEqual(rows.count(), 1)
Exemplo n.º 12
0
 def test_exclude_by_tenant_specific_field(self):
     for i, field in enumerate(self.fields):
         rows = get_custom_table_manager(self.table.name).exclude(**{field.name: i + 5})
         self.assertEqual(rows.count(), 0)
Exemplo n.º 13
0
    def test_can_filter_by_tenant_specific_fields(self):
        row = get_custom_table_manager(self.table.name).all().first()

        for i, field in enumerate(self.fields):
            self.assertEqual(getattr(row, field.name, None), i + 5)