예제 #1
0
파일: views.py 프로젝트: soitun/commcare-hq
def data_registries(request, domain):
    owned, invited = [], []
    permission_check = RegistryPermissionCheck(domain, request.couch_user)
    for registry in DataRegistry.objects.visible_to_domain(domain):
        if not permission_check.can_manage_registry(registry.slug):
            continue
        if registry.domain == domain:
            owned.append(_registry_list_context(domain, registry))
        else:
            invited.append(_registry_list_context(domain, registry))

    context = {
        'domain': domain,
        'allow_create': permission_check.can_manage_all,
        'owned_registries': owned,
        'invited_registries': invited,
        'available_case_types': list(get_data_dict_case_types(domain)),
        'current_page': {
            'title': _('Data Registries'),
            'page_name': _('Data Registries'),
        },
        'section': {
            'page_name': _('Project Settings'),
            'url': reverse("domain_settings_default", args=[domain]),
        },
    }
    return render(request, "registry/registry_list.html", context)
예제 #2
0
def get_case_types_for_domain(domain):
    """
    Returns case types for which there is at least one existing case and any
    defined in the data dictionary, which includes those referenced in an app
    and those added manually.
    """
    es_types = get_case_types_for_domain_es(domain)
    data_dict_types = get_data_dict_case_types(domain)
    return es_types | data_dict_types
예제 #3
0
파일: views.py 프로젝트: soitun/commcare-hq
def manage_registry(request, domain, registry_slug):
    registry = _get_registry_or_404(domain, registry_slug)
    if not RegistryPermissionCheck(
            domain, request.couch_user).can_manage_registry(registry.slug):
        return HttpResponseForbidden()

    is_owner = registry.domain == domain
    all_invitations = list(registry.invitations.all())
    domain_invitation = [
        invitation for invitation in all_invitations
        if invitation.domain == domain
    ][0]
    if is_owner:
        invitations = all_invitations
        grants = registry.grants.all()
        available_domains = BillingAccount.get_account_by_domain(
            domain).get_domains()
    else:
        invitations, available_domains = [], []
        grants = registry.grants.filter(
            Q(from_domain=domain) | Q(to_domains__contains=[domain]))
    context = {
        "domain": domain,
        "is_owner": is_owner,
        "registry": {
            "domain":
            registry.domain,
            "current_domain":
            domain,
            "is_owner":
            is_owner,
            "name":
            registry.name,
            "description":
            registry.description or '',
            "slug":
            registry.slug,
            "is_active":
            registry.is_active,
            "schema":
            registry.wrapped_schema.case_types,
            "invitations": [
                invitation.to_json() for invitation in invitations
                if invitation.domain != domain
            ],
            "domain_invitation":
            domain_invitation,
            "grants": [grant.to_json() for grant in grants]
        },
        "available_case_types":
        list(get_data_dict_case_types(registry.domain)),
        "available_domains": available_domains,
        "invited_domains":
        [invitation.domain for invitation in all_invitations],
        "log_action_types":
        DataRegistryAuditViewHelper.action_options(is_owner),
        "user_timezone": get_timezone_for_user(request.couch_user, domain),
        "current_page": {
            "title":
            _("Manage Registry"),
            "page_name":
            _("Manage Registry"),
            "parents": [
                {
                    "title": _("Data Registries"),
                    "page_name": _("Data Registries"),
                    "url": reverse("data_registries", args=[domain]),
                },
            ],
        },
        'section': {
            'page_name': _('Project Settings'),
            'url': reverse("domain_settings_default", args=[domain]),
        },
    }
    return render(request, "registry/registry_edit.html", context)