Пример #1
0
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
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)