def test_get_docs_in_domain_by_class(self): group = Group(domain=self.domain) case_group = CommCareCaseGroup(name='a group', domain=self.domain) group.save() case_group.save() self.addCleanup(group.delete) self.addCleanup(case_group.delete) [group2] = get_docs_in_domain_by_class(self.domain, Group) self.assertEqual(group2.to_json(), group.to_json()) [case_group2] = get_docs_in_domain_by_class(self.domain, CommCareCaseGroup) self.assertEqual(case_group.to_json(), case_group2.to_json())
def test_get_docs_in_domain_by_class(self): commtrack_config = CommtrackConfig(domain=self.domain) group = Group(domain=self.domain) xform = XFormInstance(domain=self.domain) commtrack_config.save() group.save() xform.save() self.addCleanup(commtrack_config.delete) self.addCleanup(group.delete) self.addCleanup(xform.delete) [commtrack_config_2] = get_docs_in_domain_by_class(self.domain, CommtrackConfig) self.assertEqual(commtrack_config_2.to_json(), commtrack_config.to_json())
def get_case_group_meta_in_domain(domain): """ returns a list (id, name) tuples sorted by name ideal for creating a user-facing dropdown menu, etc. """ return sorted( map( lambda case_group: (case_group._id, case_group.name), get_docs_in_domain_by_class(domain, CommCareCaseGroup) ), key=lambda id_name_tuple: id_name_tuple[1] )
def _convert_web_apps_permissions(domain_link, master_results): """Mutates the master result docs to convert web app permissions. """ linked_apps_by_master = { app.master: app._id for app in get_docs_in_domain_by_class(domain_link.linked_domain, LinkedApplication) } for role_def in master_results: view_web_apps_list = [] for app_id in role_def['permissions']['view_web_apps_list']: master_app_id = get_app(domain_link.master_domain, app_id).master_id try: linked_app_id = linked_apps_by_master[master_app_id] except KeyError: continue view_web_apps_list.append(linked_app_id) role_def['permissions']['view_web_apps_list'] = view_web_apps_list
def __getitem__(self, item): if isinstance(item, slice): limit = item.stop - item.start groups = get_docs_in_domain_by_class(self.domain, Group, limit=limit, skip=item.start) else: raise ValueError( 'Invalid type of argument. Item should be an instance of slice class.' ) for group in groups: # precompute the return value of get_users_ids here # so that all the work happens here instead of in an external hidden step # Not any faster, but brings it more under our direct control for optimization group._precomputed_active_users = group.get_user_ids() group.__class__ = WrappedGroup return groups
def _convert_web_apps_permissions(domain_link, master_results): """Mutates the master result docs to convert web app permissions. """ linked_apps_by_master = { app.master: app._id for app in get_docs_in_domain_by_class(domain_link.linked_domain, LinkedApplication) } for role_def in master_results: view_web_apps_list = [] for app_id in role_def['permissions']['view_web_apps_list']: master_app_id = get_app(domain_link.master_domain, app_id).master_id try: linked_app_id = linked_apps_by_master[master_app_id] except KeyError: continue view_web_apps_list.append(linked_app_id) role_def['permissions']['view_web_apps_list'] = view_web_apps_list
def get_report_configs_for_domain(domain): from corehq.apps.userreports.models import ReportConfiguration return sorted( get_docs_in_domain_by_class(domain, ReportConfiguration), key=lambda report: report.title, )
def test_delete_commtrack_config(self): CommtrackConfig(domain=self.domain.name).save() self.domain.delete() self.assertEqual( len(get_docs_in_domain_by_class(self.domain.name, CommtrackConfig)), 0)
def group_by_domain(domain): from corehq.apps.groups.models import Group return get_docs_in_domain_by_class(domain, Group)
def hq_group_export_configs_by_domain(domain): from corehq.apps.reports.models import HQGroupExportConfiguration return get_docs_in_domain_by_class(domain, HQGroupExportConfiguration)
def hq_group_export_configs_by_domain(domain): from corehq.apps.reports.models import HQGroupExportConfiguration return get_docs_in_domain_by_class(domain, HQGroupExportConfiguration)
def _copy_all_docs_of_type(self, doc_class): from corehq.apps.domain.dbaccessors import get_docs_in_domain_by_class for doc in get_docs_in_domain_by_class(self.existing_domain, doc_class): self.save_couch_copy(doc, self.new_domain)
def for_domain(cls, domain): res = get_docs_in_domain_by_class(domain, cls) return res[0] if res else cls.default_config(domain)
def group_by_domain(domain): from corehq.apps.groups.models import Group return get_docs_in_domain_by_class(domain, Group)
def get_case_groups_in_domain(domain): groups = get_docs_in_domain_by_class(domain, CommCareCaseGroup) groups = sorted(groups, key=lambda group: group.name.lower()) return groups
def by_domain(domain): return get_docs_in_domain_by_class(domain, PerformanceConfiguration)
def _copy_all_docs_of_type(self, doc_class): from corehq.apps.domain.dbaccessors import get_docs_in_domain_by_class for doc in get_docs_in_domain_by_class(self.existing_domain, doc_class): self.save_couch_copy(doc, self.new_domain)
def get_case_groups_in_domain(domain): groups = get_docs_in_domain_by_class(domain, CommCareCaseGroup) groups = sorted(groups, key=lambda group: group.name.lower()) return groups
def get_report_configs_for_domain(domain): from corehq.apps.userreports.models import ReportConfiguration return sorted( get_docs_in_domain_by_class(domain, ReportConfiguration), key=lambda report: report.title or '', )
def for_domain(cls, domain): result = get_docs_in_domain_by_class(domain, cls) try: return result[0] except IndexError: return None
def _get_case_groups_generator(domain_name): for case_group in get_docs_in_domain_by_class(domain_name, CommCareCaseGroup): yield case_group
def __getitem__(self, item): if isinstance(item, slice): limit = item.stop - item.start return get_docs_in_domain_by_class(self.domain, Group, limit=limit, skip=item.start) raise ValueError( 'Invalid type of argument. Item should be an instance of slice class.')
def by_domain(domain): return get_docs_in_domain_by_class(domain, PerformanceConfiguration)