def get_udfc_search_fields(self, user): from treemap.models import InstanceUser from treemap.udf import UDFModel from treemap.util import to_object_name, leaf_models_of_class from treemap.lib.perms import udf_write_level, READ, WRITE try: iu = self.instanceuser_set.get(user__pk=user.pk) except InstanceUser.DoesNotExist: iu = None data = DotDict({'models': set(), 'udfc': {}}) for clz in (leaf_models_of_class(UDFModel)): model_name = clz.__name__ items = ( (k, v) for k, v in getattr(clz, 'collection_udf_settings', {}).iteritems()) for k, v in items: udfds = (u for u in udf_defs(self, model_name) if u.name == k) for udfd in udfds: if udf_write_level(iu, udfd) in (READ, WRITE): nest_path = ('udfc.%s.models.%s' % (to_object_name(k), to_object_name(model_name))) data[nest_path] = { 'udfd': udfd, 'fields': udfd.datatype_dict[0]['choices'] } p = 'udfc.%s.' % to_object_name(k) data[p + 'action_verb'] = v['action_verb'] data[p + 'range_field_key'] = v['range_field_key'] data[p + 'action_field_key'] = v['action_field_key'] data['models'] |= {clz} return data
def get_udfc_search_fields(self, user): from treemap.models import InstanceUser from treemap.udf import UDFModel from treemap.util import to_object_name, leaf_models_of_class from treemap.lib.perms import udf_write_level, READ, WRITE try: iu = self.instanceuser_set.get(user__pk=user.pk) except InstanceUser.DoesNotExist: iu = None data = DotDict({"models": set(), "udfc": {}}) for clz in leaf_models_of_class(UDFModel): model_name = clz.__name__ for k, v in clz.collection_udf_settings.items(): udfds = (u for u in udf_defs(self, model_name) if u.name == k) for udfd in udfds: if udf_write_level(iu, udfd) in (READ, WRITE): _base_nest_path = "udfc.%s." % (to_object_name(k)) ids_nest_path = "%sids.%s" % (_base_nest_path, to_object_name(model_name)) models_nest_path = "%smodels.%s" % (_base_nest_path, to_object_name(model_name)) data[ids_nest_path] = udfd.pk data[models_nest_path] = {"udfd": udfd, "fields": udfd.datatype_dict[0]["choices"]} p = "udfc.%s." % to_object_name(k) data[p + "action_verb"] = v["action_verb"] data[p + "range_field_key"] = v["range_field_key"] data[p + "action_field_key"] = v["action_field_key"] data["models"] |= {clz} return data
def get_udfc_search_fields(instance, user): from treemap.models import InstanceUser from treemap.udf import UDFModel from treemap.util import to_object_name, leaf_models_of_class from treemap.lib.perms import udf_write_level, READ, WRITE try: iu = instance.instanceuser_set.get(user__pk=user.pk) except InstanceUser.DoesNotExist: iu = None data = DotDict({'models': set(), 'udfc': {}}) for clz in leaf_models_of_class(UDFModel): model_name = clz.__name__ if model_name not in ['Tree'] + instance.map_feature_types: continue for k, v in clz.collection_udf_settings.items(): udfds = (u for u in udf_defs(instance, model_name) if u.name == k) for udfd in udfds: if udf_write_level(iu, udfd) in (READ, WRITE): _base_nest_path = 'udfc.%s.' % (to_object_name(k)) ids_nest_path = ('%sids.%s' % (_base_nest_path, to_object_name(model_name))) models_nest_path = ('%smodels.%s' % (_base_nest_path, to_object_name(model_name))) data[ids_nest_path] = udfd.pk data[models_nest_path] = { 'udfd': udfd, 'fields': udfd.datatype_dict[0]['choices'] } p = 'udfc.%s.' % to_object_name(k) data[p + 'action_verb'] = v['action_verb'] data[p + 'range_field_key'] = v['range_field_key'] data[p + 'action_field_key'] = v['action_field_key'] data['models'] |= {clz} return data
def get_udfc_search_fields(instance, user): from treemap.models import InstanceUser from treemap.udf import UDFModel from treemap.util import to_object_name, leaf_models_of_class from treemap.lib.perms import udf_write_level, READ, WRITE try: iu = instance.instanceuser_set.get(user__pk=user.pk) except InstanceUser.DoesNotExist: iu = None data = DotDict({'models': set(), 'udfc': {}}) for clz in leaf_models_of_class(UDFModel): model_name = clz.__name__ if model_name not in ['Tree'] + instance.map_feature_types: continue for k, v in clz.collection_udf_settings.items(): udfds = (u for u in udf_defs(instance, model_name) if u.name == k) for udfd in udfds: if udf_write_level(iu, udfd) in (READ, WRITE): _base_nest_path = 'udfc.%s.' % (to_object_name(k)) ids_nest_path = ( '%sids.%s' % (_base_nest_path, to_object_name(model_name))) models_nest_path = ( '%smodels.%s' % (_base_nest_path, to_object_name(model_name))) data[ids_nest_path] = udfd.pk data[models_nest_path] = { 'udfd': udfd, 'fields': udfd.datatype_dict[0]['choices'] } p = 'udfc.%s.' % to_object_name(k) data[p + 'action_verb'] = v['action_verb'] data[p + 'range_field_key'] = v['range_field_key'] data[p + 'action_field_key'] = v['action_field_key'] data['models'] |= {clz} return data