def get_user_permission(self, user, expectedCount, model_name='Plot', field_name='owner_orig_id'): perms = field_permissions(user, self.instance, model_name) return self.get_permission(perms, field_name, expectedCount)
def test_empty_model_name(self): perms = field_permissions(self.user, self.instance) self.assertEqual( len(perms), FieldPermission.objects.filter(instance=self.instance, role=self.user.get_role( self.instance)).count())
def _values_for_model(instance, job, table, model, select, select_params, prefix=None): if prefix: prefix += "__" else: prefix = "" prefixed_names = [] model_class = safe_get_model_class(model) dummy_instance = model_class() for field_name in ( perm.field_name for perm in field_permissions(job.user, instance, model) if perm.permission_level >= FieldPermission.READ_ONLY ): prefixed_name = prefix + field_name if field_name.startswith("udf:"): name = field_name[4:] if name in model_class.collection_udf_settings.keys(): field_definition_id = None for udfd in udf_defs(instance, model): if udfd.iscollection and udfd.name == name: field_definition_id = udfd.id if field_definition_id is None: continue select[ prefixed_name ] = """ WITH formatted_data AS ( SELECT concat('(', data, ')') as fdata FROM %s WHERE field_definition_id = %s and model_id = %s.id ) SELECT array_to_string(array_agg(fdata), ', ', '*') FROM formatted_data """ % ( UserDefinedCollectionValue._meta.db_table, field_definition_id, table, ) else: select[prefixed_name] = "{0}.udfs->%s".format(table) select_params.append(name) else: if not model_hasattr(dummy_instance, field_name): # Exception will be raised downstream if you look for # a field on a model that no longer exists but still # has a stale permission record. Here we check for that # case and don't include the field if it does not exist. continue prefixed_names.append(prefixed_name) return prefixed_names
def test_empty_model_name(self): perms = field_permissions(self.user, self.instance) self.assertEqual(len(perms), FieldPermission.objects.filter( instance=self.instance, role=self.user.get_role(self.instance)) .count())