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)
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
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)