def district(request): districts = [] for district in Zone.objects.filter(category=5).order_by("name"): if has_access(request, zone=district): districts.append(district) return as_html(request, "district.html", {"districts": districts})
def hsa_edit(request, object_id): provider = Provider.objects.get(id=object_id) context = {} if request.POST: provider_form = ProviderForm(request.POST, instance=provider) user_form = UserForm(request.POST, instance=provider.user) if provider_form.is_valid() and user_form.is_valid(): user_form.save() provider_form.save() return HttpResponseRedirect("/hsa/") else: provider_form = ProviderForm(instance=provider) user_form = UserForm(instance=provider.user) context["provider_form"] = provider_form context["user_form"] = user_form context["message_form"] = MessageForm(request.POST or None) try: context["mobile"] = request.user.provider.mobile except ObjectDoesNotExist: context["mobile"] = False context["object"] = provider return as_html(request, "user_edit_form.html", context)
def gmc(request): gmcs = [] for gmc in Facility.objects.filter().order_by("name"): if has_access(request, facility=gmc): gmcs.append(gmc) return as_html(request, "gmc.html", {"facilities": gmcs})
def login(request): context = {} context["msg"] = messages.get(request.GET.get("msg", None)) if request.method == "POST": form = LoginForm(request.POST) if not request.user.is_authenticated(): if form.is_valid(): user = auth.authenticate( username=form.cleaned_data["username"], password=form.cleaned_data["password"]) if user: if user.is_active: auth.login(request, user) if has_roles(user, ["gmc",]): try: facility = user.get_profile().facility.id return HttpResponseRedirect("/facility/%s/" % facility) except (ObjectDoesNotExist, AttributeError): pass return HttpResponseRedirect("/") return HttpResponseRedirect("/accounts/login/?msg=login_failed") else: form = LoginForm() context["form"] = form return as_html(request, "login.html", context)
def provider_list(request): nonhtml, tables = get(request, (["provider", Q()],)) if nonhtml: return nonhtml context = { "provider": tables[0], } return as_html(request, "providerlist.html", context)
def view(request): term = request.GET.get("q") query = Q(ref_id__icontains=term) nonhtml, tables = get(request, [ ["case", query], ]) if nonhtml: return nonhtml return as_html(request, "searchview.html", { "search": tables[0], })
def district_view(request): district = request.GET.get("d") context = { "districts": Zone.objects.all(), } if district: nonhtml, tables = get(request, (["case", Q(zone=district)],)) if nonhtml: return nonhtml context["cases"] = tables[0] return as_html(request, "districtview.html", context)
def child_view(request, object_id): case = Case.objects.get(id=object_id) nonhtml, tables = get_dict(request, [ ["reports", Q(case=case)], ]) if nonhtml: return nonhtml context = {} context.update(tables) context["object"] = case context["object_fields"] = [ {"key": f.verbose_name, "value": getattr(case, f.name)} for f in case._meta.fields ] return as_html(request, "child_view.html", context)
def hsa(request): q = Q() if not has_roles(request.user, "partner"): q = Q(id__in=get_providers(request.user)) nonhtml, tables = get_dict(request, [ ["providers", q], ]) if nonhtml: return nonhtml context = {} context.update(tables) return as_html(request, "hsa.html", context)
def provider_view(request, object_id): provider = get_object_or_404(Provider, id=object_id) nonhtml, tables = get(request, ( ["case", Q(provider=provider)], ["message", Q(sent_by=provider.user)], ["event", Q(content_type="provider", object_id=provider.pk)] )) if nonhtml: return nonhtml context = { "object": provider, "cases": tables[0], "messages": tables[1], "event": tables[2] } return as_html(request, "providerview.html", context)
def child_list(request): q = Q() if not has_roles(request.user, "partner"): q = Q(provider__in=get_providers(request.user)) nonhtml, tables = get(request, [ ["case", q & Q(active=True)], ["reports", q], ["case", q & Q(active=False)] ]) if nonhtml: return nonhtml context = {} context["active"] = tables[0] context["reports"] = tables[1] context["inactive"] = tables[2] return as_html(request, "child_list.html", context)
def hsa_add(request): context = {} if request.POST: provider_form = ProviderForm(request.POST) user_form = UserForm(request.POST) if provider_form.is_valid() and user_form.is_valid(): user = user_form.save() provider = provider_form.save(commit=False) provider.user = user provider.save() return HttpResponseRedirect("/hsa/") else: provider_form = ProviderForm() user_form = UserForm() context["provider_form"] = provider_form context["user_form"] = user_form return as_html(request, "user_add_form.html", context)
def setup(request): nonhtml, tables = get(request, [ ["facilities", Q()], ["zones", Q(category=5)], ["zones", Q(category=4)], ["message", Q(form_error=False)], ["message", Q(form_error=True)], ]) if nonhtml: return nonhtml context = { "facilities": tables[0], "regions": tables[1], "districts": tables[2], "message_pass": tables[3], "message_fail": tables[4] } return as_html(request, "setup.html", context)
def case_view(request, object_id): case = get_object_or_404(Case, id=object_id) nonhtml, tables = get(request, [ ["malnutrition", Q(case=case)], ["diagnosis", Q(case=case)], ["malaria", Q(case=case)], ["event", Q(content_type="case", object_id=object_id)], ]) if nonhtml: return nonhtml context = { "object": case, "malnutrition": tables[0], "diagnosis": tables[1], "malaria": tables[2], "event": tables[3], } return as_html(request, "caseview.html", context)
def _view(request, graphs, root): """ Assemble the graphs and bits the user wants """ context = {} context["message"] = graphs.render(name="message", type=graphs.count, args=[]) context["severe"] = graphs.render(name="severe", type=graphs.percentage_status, args=[2,3]) context["moderate"] = graphs.render(name="moderate", type=graphs.percentage_status, args=[1,]) context["oedema"] = graphs.render(name="oedema", type=graphs.percentage_observation, args=[1,]) context["diarrhea"] = graphs.render(name="diarrhea", type=graphs.percentage_observation, args=[3,]) context["stunting"] = graphs.render(name="stunting", type=graphs.percentage_stunting, args=[]) export = request.GET.get("export", None) if export: return _csv_export(context, export) context["lastmonth"] = _setup_last_month(context) context["filter"], context["zones"] = _setup_zones_filter(request, graphs.zones_unfiltered) context["facilities"] = _setup_facility_filter(graphs.facilities) context["breadcrumbs"] = _add_breadcrumbs(root) return as_html(request, "dashboard.html", context)
def _view(request, graphs, root): """ Assemble the graphs and bits the user wants """ context = {} nonhtml, tables = _setup_tables(request, graphs) context["tables"] = tables if nonhtml: return nonhtml context["message"] = graphs.render(name="message", type=graphs.count, args=[]) context["severe"] = graphs.render(name="severe", type=graphs.percentage_status, args=[2, 3]) context["moderate"] = graphs.render(name="moderate", type=graphs.percentage_status, args=[1]) context["oedema"] = graphs.render(name="oedema", type=graphs.percentage_observation, args=[1]) context["diarrhea"] = graphs.render(name="diarrhea", type=graphs.percentage_observation, args=[3]) context["stunting"] = graphs.render(name="stunting", type=graphs.percentage_stunting, args=[]) context["lastmonth"] = _setup_last_month(context) context["filter"], context["zones"] = _setup_zones_filter(request, graphs.zones_unfiltered) context["facilities"] = _setup_facility_filter(graphs.facilities) context["breadcrumbs"] = _add_breadcrumbs(root) return as_html(request, "dashboard.html", context)
def dashboard(request): nonhtml, tables = get(request, [ ["case", Q()], ["event", Q()], ["message", Q()], ]) if nonhtml: return nonhtml has_provider = True context = { "case_table": tables[0], "event_table": tables[1], "message_table": tables[2] } try: mobile = request.user.provider.mobile if request.method == "POST": messageform = MessageForm(request.POST) if messageform.is_valid(): result = message_users(mobile, **messageform.cleaned_data) context["msg"] = result else: messageform = MessageForm() except ObjectDoesNotExist: has_provider = False messageform = None context.update({ "message_form": messageform, "has_provider": has_provider, "summary": get_summary(), "graph": get_graph() }) return as_html(request, "dashboard.html", context)
def view(request, zone_id=None, facility_id=None): """ This is the main view that is a pretty magic view it figures out if you are looking for a facility, a zone or none at all. It then sets up the graph and passess on to a view to do the real work""" dct = { "classes": { "ReportMalnutrition": ReportMalnutrition, "Zone": Zone, "Case": Case }, "limit": "", } access = False if not zone_id and not facility_id: # right so here are at the root of the site access = has_access(request) if not access: # according to the docs, district has access to the national page access = has_roles(request.user, ["district",]) # we are at the root, so we set the root to non root = None # this is malawi specific, give us the districts zones = Q(category=4) facilities = None # to setup the SQL, use the _zones method sql_setup = _zones elif facility_id: # here we are looking at a facility root = Facility.objects.get(id=facility_id) access = has_access(request, facility=root) zones = None facilities = Q(id=facility_id) # use the right sql method for the setup sql_setup = _facilities elif zone_id: # this gets a little more complicated # because the sub zones could be zones or facilites root = Zone.objects.get(id=zone_id) access = has_access(request, zone=root) facilities = Q(zone=root) if not root.get_child_ids(): # then we need to look for facilities sql_setup = _facilities else: sql_setup = _zones zones = Q(head=root) # do we need to filter filter_zone = request.GET.get("filter_zone") # this is used to show the filters on the right of the screen dct["zones_unfiltered"] = zones if filter_zone: zones = Q(id=filter_zone) dct["zones"] = zones dct["sql_setup"] = sql_setup dct["root"] = root dct["facilities"] = facilities graphs = Graphs(**dct) if access: return _view(request, graphs, root) else: return as_html(request, "no_access.html", {})