Example #1
0
def udf_create(params, instance):
    data = _parse_params(params)
    name, model_type, datatype = (data['name'], data['model_type'],
                                  data['datatype'])

    udf = UserDefinedFieldDefinition(name=name,
                                     model_type=model_type,
                                     iscollection=False,
                                     instance=instance,
                                     datatype=datatype)
    udf.save()

    field_name = udf.canonical_name

    # Add a restrictive permission for this UDF to all roles in the
    # instance
    for role in Role.objects.filter(instance=instance):
        FieldPermission.objects.get_or_create(
            model_name=model_type,
            field_name=field_name,
            permission_level=FieldPermission.NONE,
            role=role,
            instance=role.instance)

    return udf
Example #2
0
def udf_create(params, instance):
    data = _parse_params(params)
    name, model_type, datatype = (data['name'], data['model_type'],
                                  data['datatype'])

    udf = UserDefinedFieldDefinition(
        name=name,
        model_type=model_type,
        iscollection=False,
        instance=instance,
        datatype=datatype)
    udf.save()

    field_name = udf.canonical_name

    # Add the default permission for this UDF to all roles in the instance
    for role in Role.objects.filter(instance=instance):
        FieldPermission.objects.get_or_create(
            model_name=model_type,
            field_name=field_name,
            permission_level=role.default_permission_level,
            role=role,
            instance=role.instance)

    _add_scalar_udf_to_field_configs(udf, instance)

    return udf
Example #3
0
def udf_create(params, instance):
    data = _parse_params(params)
    name, model_type, datatype = (data['name'], data['model_type'],
                                  data['datatype'])

    udf = UserDefinedFieldDefinition(
        name=name,
        model_type=model_type,
        iscollection=False,
        instance=instance,
        datatype=datatype)
    udf.save()

    field_name = udf.canonical_name

    # Add a restrictive permission for this UDF to all roles in the
    # instance
    for role in Role.objects.filter(instance=instance):
        FieldPermission.objects.get_or_create(
            model_name=model_type,
            field_name=field_name,
            permission_level=FieldPermission.NONE,
            role=role,
            instance=role.instance)

    return udf
Example #4
0
def udf_create(params, instance):
    data = _parse_params(params)
    name, model_type, datatype = (data['name'], data['model_type'],
                                  data['datatype'])

    udfs = UserDefinedFieldDefinition.objects.filter(instance=instance,
                                                     model_type=model_type,
                                                     name=name)

    if udfs.exists():
        raise ValidationError({
            'udf.name': [
                _("A user defined field with name "
                  "'%(udf_name)s' already exists on "
                  "model '%(model_type)s'") % {
                      'udf_name': name,
                      'model_type': model_type
                  }
            ]
        })

    if model_type not in {
            cls.__name__
            for cls in instance.editable_udf_models()['all']
    }:
        raise ValidationError({
            'udf.model':
            [_("Invalid model '%(model_type)s'") % {
                'model_type': model_type
            }]
        })

    udf = UserDefinedFieldDefinition(name=name,
                                     model_type=model_type,
                                     iscollection=False,
                                     instance=instance,
                                     datatype=datatype)
    udf.save()

    field_name = udf.canonical_name

    # Add a restrictive permission for this UDF to all roles in the
    # instance
    for role in Role.objects.filter(instance=instance):
        FieldPermission.objects.get_or_create(
            model_name=model_type,
            field_name=field_name,
            permission_level=FieldPermission.NONE,
            role=role,
            instance=role.instance)

    return udf
Example #5
0
def udf_create(params, instance):
    data = _parse_params(params)
    name, model_type, datatype = (data['name'], data['model_type'],
                                  data['datatype'])

    udfs = UserDefinedFieldDefinition.objects.filter(
        instance=instance,
        model_type=model_type,
        name=name)

    if udfs.exists():
        raise ValidationError(
            {'udf.name':
             [_("A user defined field with name "
                "'%(udf_name)s' already exists on "
                "model '%(model_type)s'") % {'udf_name': name,
                                             'model_type': model_type}]})

    if model_type not in {cls.__name__ for cls
                          in instance.editable_udf_models()['all']}:
        raise ValidationError(
            {'udf.model': [_("Invalid model '%(model_type)s'")
                           % {'model_type': model_type}]})

    udf = UserDefinedFieldDefinition(
        name=name,
        model_type=model_type,
        iscollection=False,
        instance=instance,
        datatype=datatype)
    udf.save()

    field_name = udf.canonical_name

    # Add a restrictive permission for this UDF to all roles in the
    # instance
    for role in Role.objects.filter(instance=instance):
        FieldPermission.objects.get_or_create(
            model_name=model_type,
            field_name=field_name,
            permission_level=FieldPermission.NONE,
            role=role,
            instance=role.instance)

    return udf
Example #6
0
def udf_create(params, instance):
    data = _parse_params(params)
    name, model_type, datatype = (data['name'], data['model_type'],
                                  data['datatype'])

    udfs = UserDefinedFieldDefinition.objects.filter(
        instance=instance,
        # TODO: why isn't this also checking model name
        # is there some reason the same name can't appear
        # on more than one model?
        # Too scared to change this.
        name=name)

    if udfs.exists():
        raise ValidationError(
            {'udf.name':
             [_("A user defined field with name "
                "'%(udf_name)s' already exists") % {'udf_name': name}]})

    if model_type not in {cls.__name__ for cls
                          in instance.editable_udf_models()}:
        raise ValidationError(
            {'udf.model': [_('Invalid model')]})

    udf = UserDefinedFieldDefinition(
        name=name,
        model_type=model_type,
        iscollection=False,
        instance=instance,
        datatype=datatype)
    udf.save()

    field_name = udf.canonical_name

    # Add a restrictive permission for this UDF to all roles in the
    # instance
    for role in Role.objects.filter(instance=instance):
        FieldPermission.objects.get_or_create(
            model_name=model_type,
            field_name=field_name,
            permission_level=FieldPermission.NONE,
            role=role,
            instance=role.instance)

    return udf
Example #7
0
    def test_delete_udf_deletes_perms_value(self):
        set_write_permissions(self.instance, self.commander_user, "Plot", ["udf:Test string"])

        udf_def = UserDefinedFieldDefinition(
            instance=self.instance,
            model_type="Plot",
            datatype=json.dumps({"type": "string"}),
            iscollection=False,
            name="Test string",
        )

        udf_def.save()

        qs = FieldPermission.objects.filter(field_name="udf:Test string", model_name="Plot")

        self.assertTrue(qs.exists())
        udf_def.delete()
        self.assertFalse(qs.exists())
Example #8
0
def udf_create(params, instance):
    data = _parse_params(params)
    name, model_type, datatype = (data['name'], data['model_type'],
                                  data['datatype'])

    udfs = UserDefinedFieldDefinition.objects.filter(
        instance=instance,
        # TODO: why isn't this also checking model name
        # is there some reason the same name can't appear
        # on more than one model?
        # Too scared to change this.
        name=name)

    if udfs.exists():
        raise ValidationError(
            {'udf.name':
             [trans("A user defined field with name "
                    "'%(udf_name)s' already exists") % {'udf_name': name}]})

    if model_type not in ['Tree', 'Plot']:
        raise ValidationError(
            {'udf.model': [trans('Invalid model')]})

    udf = UserDefinedFieldDefinition(
        name=name,
        model_type=model_type,
        iscollection=False,
        instance=instance,
        datatype=datatype)
    udf.save()

    field_name = udf.canonical_name

    # Add a restrictive permission for this UDF to all roles in the
    # instance
    for role in Role.objects.filter(instance=instance):
        FieldPermission.objects.get_or_create(
            model_name=model_type,
            field_name=field_name,
            permission_level=FieldPermission.NONE,
            role=role,
            instance=role.instance)

    return udf
Example #9
0
    def test_delete_udf_deletes_mobile_api_field(self):
        udf_def = UserDefinedFieldDefinition(
            instance=self.instance,
            model_type="Plot",
            datatype=json.dumps({"type": "string"}),
            iscollection=False,
            name="Test string",
        )
        udf_def.save()

        self.instance.mobile_api_fields = [
            {"header": "fields", "model": "plot", "field_keys": ["plot.udf:Test string"]}
        ]
        self.instance.save()

        udf_def.delete()

        updated_instance = Instance.objects.get(pk=self.instance.pk)
        self.assertEquals(0, len(updated_instance.mobile_api_fields[0]["field_keys"]))
Example #10
0
File: udfs.py Project: atogle/OTM2
    def test_delete_udf_deletes_perms_value(self):
        set_write_permissions(self.instance, self.commander_user,
                              'Plot', ['udf:Test string'])

        udf_def = UserDefinedFieldDefinition(
            instance=self.instance,
            model_type='Plot',
            datatype=json.dumps({'type': 'string'}),
            iscollection=False,
            name='Test string')

        udf_def.save()

        qs = FieldPermission.objects.filter(
            field_name='udf:Test string',
            model_name='Plot')

        self.assertTrue(qs.exists())
        udf_def.delete()
        self.assertFalse(qs.exists())
Example #11
0
    def test_delete_udf_deletes_perms_collection(self):
        set_write_permissions(self.instance, self.commander_user, "Plot", ["udf:Test choice"])

        udf_def = UserDefinedFieldDefinition(
            instance=self.instance,
            model_type="Plot",
            datatype=json.dumps(
                [{"name": "pick", "type": "choice", "choices": ["a", "b", "c"]}, {"type": "int", "name": "height"}]
            ),
            iscollection=True,
            name="Test choice",
        )

        udf_def.save()

        qs = FieldPermission.objects.filter(field_name="udf:Test choice", model_name="Plot")

        self.assertTrue(qs.exists())
        udf_def.delete()
        self.assertFalse(qs.exists())
Example #12
0
    def test_delete_udf_deletes_perms_collection(self):
        set_write_permissions(self.instance, self.commander_user, 'Plot',
                              ['udf:Test choice'])

        udf_def = UserDefinedFieldDefinition(instance=self.instance,
                                             model_type='Plot',
                                             datatype=json.dumps([{
                                                 'name':
                                                 'pick',
                                                 'type':
                                                 'choice',
                                                 'choices': ['a', 'b', 'c']
                                             }, {
                                                 'type':
                                                 'int',
                                                 'name':
                                                 'height'
                                             }]),
                                             iscollection=True,
                                             name='Test choice')

        udf_def.save()

        qs = FieldPermission.objects.filter(field_name='udf:Test choice',
                                            model_name='Plot')

        self.assertTrue(qs.exists())
        udf_def.delete()
        self.assertFalse(qs.exists())
Example #13
0
    def test_delete_cudf_deletes_mobile_api_field_group(self):
        tree_udf_def = UserDefinedFieldDefinition(
            instance=self.instance,
            model_type="Plot",
            datatype=json.dumps(
                [{"name": "pick", "type": "choice", "choices": ["a", "b", "c"]}, {"type": "int", "name": "height"}]
            ),
            iscollection=True,
            name="Choices",
        )
        tree_udf_def.save()
        plot_udf_def = UserDefinedFieldDefinition(
            instance=self.instance,
            model_type="Tree",
            datatype=json.dumps(
                [{"name": "pick", "type": "choice", "choices": ["1", "2", "3"]}, {"type": "int", "name": "times"}]
            ),
            iscollection=True,
            name="Choices",
        )
        plot_udf_def.save()

        self.instance.mobile_api_fields = [
            {"header": "plot", "model": "plot", "field_keys": ["plot.width"]},
            {"header": "Choices", "sort_key": "pick", "collection_udf_keys": ["plot.udf:Choices", "tree.udf:Choices"]},
        ]
        self.instance.save()

        tree_udf_def.delete()

        updated_instance = Instance.objects.get(pk=self.instance.pk)
        self.assertEquals(1, len(updated_instance.mobile_api_fields[1]["collection_udf_keys"]))

        plot_udf_def.delete()

        updated_instance = Instance.objects.get(pk=self.instance.pk)
        self.assertEquals(1, len(updated_instance.mobile_api_fields))
Example #14
0
File: udfs.py Project: atogle/OTM2
    def test_delete_udf_deletes_perms_collection(self):
        set_write_permissions(self.instance, self.commander_user,
                              'Plot', ['udf:Test choice'])

        udf_def = UserDefinedFieldDefinition(
            instance=self.instance,
            model_type='Plot',
            datatype=json.dumps([{'name': 'pick',
                                  'type': 'choice',
                                  'choices': ['a', 'b', 'c']},
                                 {'type': 'int',
                                  'name': 'height'}]),
            iscollection=True,
            name='Test choice')

        udf_def.save()

        qs = FieldPermission.objects.filter(
            field_name='udf:Test choice',
            model_name='Plot')

        self.assertTrue(qs.exists())
        udf_def.delete()
        self.assertFalse(qs.exists())
Example #15
0
    def test_delete_udf_deletes_perms_value(self):
        set_write_permissions(self.instance, self.commander_user, 'Plot',
                              ['udf:Test string'])

        udf_def = UserDefinedFieldDefinition(instance=self.instance,
                                             model_type='Plot',
                                             datatype=json.dumps(
                                                 {'type': 'string'}),
                                             iscollection=False,
                                             name='Test string')

        udf_def.save()

        qs = FieldPermission.objects.filter(field_name='udf:Test string',
                                            model_name='Plot')

        self.assertTrue(qs.exists())
        udf_def.delete()
        self.assertFalse(qs.exists())
Example #16
0
    def test_delete_udf_deletes_mobile_api_field(self):
        udf_def = UserDefinedFieldDefinition(
            instance=self.instance,
            model_type='Plot',
            datatype=json.dumps({'type': 'string'}),
            iscollection=False,
            name='Test string')
        udf_def.save()

        self.instance.mobile_api_fields = [
            {'header': 'fields', 'model': 'plot',
             'field_keys': ['plot.udf:Test string']}]
        self.instance.save()

        udf_def.delete()

        updated_instance = Instance.objects.get(pk=self.instance.pk)
        self.assertEquals(
            0, len(updated_instance.mobile_api_fields[0]['field_keys']))
Example #17
0
    def test_delete_cudf_deletes_mobile_api_field_group(self):
        tree_udf_def = UserDefinedFieldDefinition(
            instance=self.instance,
            model_type='Plot',
            datatype=json.dumps([{'name': 'pick',
                                  'type': 'choice',
                                  'choices': ['a', 'b', 'c']},
                                 {'type': 'int',
                                  'name': 'height'}]),
            iscollection=True,
            name='Choices')
        tree_udf_def.save()
        plot_udf_def = UserDefinedFieldDefinition(
            instance=self.instance,
            model_type='Tree',
            datatype=json.dumps([{'name': 'pick',
                                  'type': 'choice',
                                  'choices': ['1', '2', '3']},
                                 {'type': 'int',
                                  'name': 'times'}]),
            iscollection=True,
            name='Choices')
        plot_udf_def.save()

        self.instance.mobile_api_fields = [
            {'header': 'plot', 'model': 'plot', 'field_keys': ['plot.width']},
            {'header': 'Choices', 'sort_key': 'pick',
             'collection_udf_keys': ['plot.udf:Choices', 'tree.udf:Choices']}
        ]
        self.instance.save()

        tree_udf_def.delete()

        updated_instance = Instance.objects.get(pk=self.instance.pk)
        self.assertEquals(1, len(
            updated_instance.mobile_api_fields[1]['collection_udf_keys']))

        plot_udf_def.delete()

        updated_instance = Instance.objects.get(pk=self.instance.pk)
        self.assertEquals(1, len(updated_instance.mobile_api_fields))