Exemplo n.º 1
0
 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())
Exemplo n.º 2
0
 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())
Exemplo n.º 3
0
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]
    )
Exemplo n.º 4
0
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
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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,
    )
Exemplo n.º 8
0
 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)
Exemplo n.º 9
0
def group_by_domain(domain):
    from corehq.apps.groups.models import Group
    return get_docs_in_domain_by_class(domain, Group)
Exemplo n.º 10
0
def hq_group_export_configs_by_domain(domain):
    from corehq.apps.reports.models import HQGroupExportConfiguration
    return get_docs_in_domain_by_class(domain, HQGroupExportConfiguration)
Exemplo n.º 11
0
def hq_group_export_configs_by_domain(domain):
    from corehq.apps.reports.models import HQGroupExportConfiguration
    return get_docs_in_domain_by_class(domain, HQGroupExportConfiguration)
Exemplo n.º 12
0
    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)
Exemplo n.º 13
0
 def for_domain(cls, domain):
     res = get_docs_in_domain_by_class(domain, cls)
     return res[0] if res else cls.default_config(domain)
Exemplo n.º 14
0
def group_by_domain(domain):
    from corehq.apps.groups.models import Group
    return get_docs_in_domain_by_class(domain, Group)
Exemplo n.º 15
0
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
Exemplo n.º 16
0
def by_domain(domain):
    return get_docs_in_domain_by_class(domain, PerformanceConfiguration)
Exemplo n.º 17
0
 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)
Exemplo n.º 18
0
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
Exemplo n.º 19
0
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 '',
    )
Exemplo n.º 20
0
 def for_domain(cls, domain):
     result = get_docs_in_domain_by_class(domain, cls)
     try:
         return result[0]
     except IndexError:
         return None
Exemplo n.º 21
0
 def _get_case_groups_generator(domain_name):
     for case_group in get_docs_in_domain_by_class(domain_name, CommCareCaseGroup):
         yield case_group
Exemplo n.º 22
0
 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.')
Exemplo n.º 23
0
def by_domain(domain):
    return get_docs_in_domain_by_class(domain, PerformanceConfiguration)