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
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
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
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())
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
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
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
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())
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
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())
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']))
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"]))
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())
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())
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))
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))
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())