def search_result(request, financial_year_id): slug = "search-result" context = { "financial_years": [], "selected_financial_year": financial_year_id, "selected_tab": None, "slug": slug, "title": "Search Results - vulekamali", "description": COMMON_DESCRIPTION + COMMON_DESCRIPTION_ENDING, "url_path": "/%s/%s" % (financial_year_id, slug), } for year in FinancialYear.get_available_years(): is_selected = year.slug == financial_year_id context["financial_years"].append({ "id": year.slug, "is_selected": is_selected, "closest_match": { "is_exact_match": True, "url_path": "/%s/%s" % (year.slug, slug), }, }) context["navbar"] = nav_bar.get_items(FinancialYear.get_latest_year().slug) context["latest_year"] = FinancialYear.get_latest_year().slug return render(request, "search-result.html", context)
def homepage(request): year = FinancialYear.get_latest_year() titles = { "whyBudgetIsImportant", "howCanTheBudgetPortalHelpYou", "theBudgetProcess", } videos = Video.objects.filter(title_id__in=titles) page_data = Homepage.objects.first() latest_provincial_year = (FinancialYear.objects.filter( spheres__slug="provincial").annotate( num_depts=Count("spheres__governments__departments")).filter( num_depts__gt=0).first()) context = { "selected_financial_year": None, "financial_years": [], "selected_tab": "homepage", "slug": year.slug, "title": "South African Government Budgets %s - vulekamali" % year.slug, "description": COMMON_DESCRIPTION + COMMON_DESCRIPTION_ENDING, "url_path": year.get_url_path(), "navbar": nav_bar.get_items(FinancialYear.get_latest_year().slug), "videos": videos, "latest_year": year.slug, "latest_provincial_year": latest_provincial_year and latest_provincial_year.slug, "main_heading": page_data.main_heading, "sub_heading": page_data.sub_heading, "primary_button_label": page_data.primary_button_label, "primary_button_url": page_data.primary_button_url, "secondary_button_label": page_data.secondary_button_label, "secondary_button_url": page_data.secondary_button_url, "call_to_action_sub_heading": page_data.call_to_action_sub_heading, "call_to_action_heading": page_data.call_to_action_heading, "call_to_action_link_label": page_data.call_to_action_link_label, "call_to_action_link_url": page_data.call_to_action_link_url, } return render(request, "homepage.html", context)
def dataset_category_page(request, category_slug): context = dataset_category_context(category_slug) context["navbar"] = nav_bar.get_items(FinancialYear.get_latest_year().slug) context["latest_year"] = FinancialYear.get_latest_year().slug context["guide"] = guide_data.get(category_guides.get(category_slug, None), None) return render(request, "government_dataset_category.html", context)
def terms_and_conditions(request): context = { "title": "Terms of use - vulekamali", "description": COMMON_DESCRIPTION + COMMON_DESCRIPTION_ENDING, "navbar": nav_bar.get_items(FinancialYear.get_latest_year().slug), "latest_year": FinancialYear.get_latest_year().slug, } return render(request, "terms-and-conditions.html", context)
def contributed_dataset(request, dataset_slug): context = dataset_context("contributed", dataset_slug) context["navbar"] = nav_bar.get_items(FinancialYear.get_latest_year().slug) context["latest_year"] = FinancialYear.get_latest_year().slug context["created"] = datetime.strptime(context["created"], "%Y-%m-%dT%H:%M:%S.%f") context["last_updated"] = datetime.strptime(context["last_updated"], "%Y-%m-%dT%H:%M:%S.%f") context["comments_enabled"] = settings.COMMENTS_ENABLED return render(request, "contributed_dataset.html", context)
def glossary(request): context = { "navbar": nav_bar.get_items(FinancialYear.get_latest_year().slug), "selected_tab": "learning-centre", "selected_sidebar": "glossary", "title": "Glossary - vulekamali", "description": COMMON_DESCRIPTION + COMMON_DESCRIPTION_ENDING, "latest_year": FinancialYear.get_latest_year().slug, "selected_financial_year": None, "financial_years": [], } return render(request, "glossary.html", context)
def about(request): context = { "title": "About - vulekamali", "description": COMMON_DESCRIPTION + COMMON_DESCRIPTION_ENDING, "selected_tab": "about", "selected_financial_year": None, "financial_years": [], "video": Video.objects.get(title_id="onlineBudgetPortal"), "navbar": nav_bar.get_items(FinancialYear.get_latest_year().slug), "latest_year": FinancialYear.get_latest_year().slug, } return render(request, "about.html", context)
def videos(request): context = { "title": "Videos - vulekamali", "description": COMMON_DESCRIPTION + COMMON_DESCRIPTION_ENDING, "selected_tab": "learning-centre", "selected_sidebar": "videos", "videos": Video.objects.all(), "navbar": nav_bar.get_items(FinancialYear.get_latest_year().slug), "latest_year": FinancialYear.get_latest_year().slug, "admin_url": reverse("admin:budgetportal_video_changelist"), } return render(request, "videos.html", context)
def dataset_category_list_page(request): context = { "categories": [category_fields(c) for c in Category.get_all()], "selected_tab": "datasets", "slug": "datasets", "name": "Datasets and Analysis", "title": "Datasets and Analysis - vulekamali", "url_path": "/datasets", "navbar": nav_bar.get_items(FinancialYear.get_latest_year().slug), "latest_year": FinancialYear.get_latest_year().slug, } return render(request, "datasets.html", context)
def resources(request): titles = {"theBudgetProcess", "participate"} context = { "navbar": nav_bar.get_items(FinancialYear.get_latest_year().slug), "videos": Video.objects.filter(title_id__in=titles), "latest_year": FinancialYear.get_latest_year().slug, "title": "Resources - vulekamali", "description": COMMON_DESCRIPTION + COMMON_DESCRIPTION_ENDING, "selected_tab": "learning-centre", "selected_sidebar": "resources", } return render(request, "resources.html", context)
def faq(request): faq_list = FAQ.objects.all() context = { "navbar": nav_bar.get_items(FinancialYear.get_latest_year().slug), "title": "FAQ - vulekamali", "description": COMMON_DESCRIPTION + COMMON_DESCRIPTION_ENDING, "selected_tab": "faq", "latest_year": FinancialYear.get_latest_year().slug, "selected_financial_year": None, "financial_years": [], "faq_list": faq_list, } return render(request, "faq.html", context)
def focus_area_preview(request, financial_year_id, focus_slug): selected_financial_year = get_object_or_404(FinancialYear, slug=financial_year_id) context = { "focus_area_slug": focus_slug, "selected_financial_year": selected_financial_year.slug, "page": { "layout": "focus_page", "data_key": "" }, "navbar": nav_bar.get_items(FinancialYear.get_latest_year().slug), "latest_year": FinancialYear.get_latest_year().slug, } return render(request, "focus_page.html", context)
def department_preview(request, financial_year_id, sphere_slug, government_slug, department_slug): selected_financial_year = get_object_or_404(FinancialYear, slug=financial_year_id) context = { "department_slug": department_slug, "sphere_slug": sphere_slug, "government_slug": government_slug, "selected_financial_year": selected_financial_year.slug, "page": { "layout": "department_preview", "data_key": "" }, "navbar": nav_bar.get_items(FinancialYear.get_latest_year().slug), "latest_year": FinancialYear.get_latest_year().slug, "debug": settings.DEBUG, } return render(request, "department_preview.html", context)
def dataset_page(request, category_slug, dataset_slug): context = dataset_context(category_slug, dataset_slug) context["navbar"] = nav_bar.get_items(FinancialYear.get_latest_year().slug) context["latest_year"] = FinancialYear.get_latest_year().slug context["created"] = datetime.strptime(context["created"], "%Y-%m-%dT%H:%M:%S.%f") context["last_updated"] = datetime.strptime(context["last_updated"], "%Y-%m-%dT%H:%M:%S.%f") external_resource_slugs = [ "socio-economic-data", "performance-resources", "procurement-portals-and-resources", ] context["guide"] = guide_data.get(category_guides.get(category_slug, None), None) context[ "external_resource_page"] = category_slug in external_resource_slugs context["comments_enabled"] = settings.COMMENTS_ENABLED return render(request, "government_dataset.html", context)
def guides(request, slug): if slug not in guide_data: return HttpResponse(status=404) context = guide_data[slug] context.update({ "content_template": "guide-{}.html".format(slug), "navbar": nav_bar.get_items(FinancialYear.get_latest_year().slug), "guides": guide_data, "latest_year": FinancialYear.get_latest_year().slug, "selected_financial_year": None, "financial_years": [], }) template = "guides.html" if slug == "index" else "guide_item.html" return render(request, template, context)
def infrastructure_project_detail(request, project_slug): dataset_response = infrastructure_project_detail_data(project_slug) # For 404 - not sure why not raising a 404 exception. if isinstance(dataset_response, HttpResponse): return dataset_response latest_year_slug = FinancialYear.get_latest_year().slug context = { "page": { "layout": "infrastructure_project", "data_key": "dataset" }, "site": { "data": { "navbar": nav_bar.get_items(latest_year_slug), "dataset": dataset_response, }, "latest_year": latest_year_slug, }, "debug": settings.DEBUG, } return render(request, "infrastructure_project.html", context)
def events(request): upcoming_events = Event.objects.filter(status="upcoming") past_events = Event.objects.filter(status="past") context = { "page": { "layout": "events", "data_key": "events" }, "site": { "data": { "events": { "upcoming": upcoming_events, "past": past_events }, "navbar": nav_bar.get_items(FinancialYear.get_latest_year().slug), }, "latest_year": FinancialYear.get_latest_year().slug, }, "debug": settings.DEBUG, } return render(request, "events.html", context)
def contributed_datasets_list(request): context = dataset_category_context("contributed") context["navbar"] = nav_bar.get_items(FinancialYear.get_latest_year().slug) context["latest_year"] = FinancialYear.get_latest_year().slug return render(request, "contributed_data_category.html", context)
def department_list(request, financial_year_id): context = department_list_data(financial_year_id) context["navbar"] = nav_bar.get_items(FinancialYear.get_latest_year().slug) context["latest_year"] = FinancialYear.get_latest_year().slug return render(request, "department_list.html", context)
def department_page(request, financial_year_id, sphere_slug, government_slug, department_slug): department = None selected_year = get_object_or_404(FinancialYear, slug=financial_year_id) years = FinancialYear.get_available_years() for year in years: if year.slug == financial_year_id: selected_year = year sphere = selected_year.spheres.filter(slug=sphere_slug).first() government = sphere.governments.filter( slug=government_slug).first() department = government.departments.filter( slug=department_slug).first() financial_years_context = [] for year in years: closest_match, closest_is_exact = year.get_closest_match(department) financial_years_context.append({ "id": year.slug, "is_selected": year.slug == financial_year_id, "closest_match": { "url_path": closest_match.get_url_path(), "is_exact_match": closest_is_exact, }, }) contributed_datasets = [] for dataset in department.get_contributed_datasets(): contributed_datasets.append({ "name": dataset.name, "contributor": dataset.get_organization()["name"], "url_path": dataset.get_url_path(), }) # ======= main budget docs ========================= budget_dataset = department.get_dataset(group_name="budget-vote-documents") if budget_dataset: document_resource = budget_dataset.get_resource(format="PDF") if document_resource: document_resource = resource_fields(document_resource) tables_resource = budget_dataset.get_resource( format="XLS") or budget_dataset.get_resource(format="XLSX") if tables_resource: tables_resource = resource_fields(tables_resource) department_budget = { "name": budget_dataset.name, "document": document_resource, "tables": tables_resource, } else: department_budget = None # ======= adjusted budget docs ========================= adjusted_budget_dataset = department.get_dataset( group_name="adjusted-budget-vote-documents") if adjusted_budget_dataset: document_resource = adjusted_budget_dataset.get_resource(format="PDF") if document_resource: document_resource = resource_fields(document_resource) tables_resource = adjusted_budget_dataset.get_resource( format="XLS") or adjusted_budget_dataset.get_resource( format="XLSX") if tables_resource: tables_resource = resource_fields(tables_resource) department_adjusted_budget = { "name": adjusted_budget_dataset.name, "document": document_resource, "tables": tables_resource, } else: department_adjusted_budget = None primary_department = department.get_primary_department() if department.government.sphere.slug == "national": description_govt = "National" elif department.government.sphere.slug == "provincial": description_govt = department.government.name context = { "comments_enabled": settings.COMMENTS_ENABLED, "subprogramme_viz_data": DepartmentSubprogrammes(department), "subprog_treemap_url": get_viz_url(department, "department-viz-subprog-treemap"), "prog_econ4_circles_data": DepartmentProgrammesEcon4(department), "prog_econ4_circles_url": get_viz_url(department, "department-viz-subprog-econ4-circles"), "subprog_econ4_bars_data": DepartmentSubprogEcon4(department), "subprog_econ4_bars_url": get_viz_url(department, "department-viz-subprog-econ4-bars"), "expenditure_over_time": department.get_expenditure_over_time(), "budget_actual": department.get_expenditure_time_series_summary(), "budget_actual_programmes": department.get_expenditure_time_series_by_programme(), "adjusted_budget_summary": department.get_adjusted_budget_summary(), "contributed_datasets": contributed_datasets if contributed_datasets else None, "financial_years": financial_years_context, "government": { "name": department.government.name, "slug": str(department.government.slug), }, "government_functions": [f.name for f in department.get_govt_functions()], "intro": department.intro, "infra_enabled": department.government.sphere.slug == "provincial" and IRMSnapshot.objects.count(), "is_vote_primary": department.is_vote_primary, "name": department.name, "projects": get_department_project_summary(department), "slug": str(department.slug), "sphere": { "name": department.government.sphere.name, "slug": department.government.sphere.slug, }, "selected_financial_year": financial_year_id, "selected_tab": "departments", "title": "%s budget %s - vulekamali" % (department.name, selected_year.slug), "description": "%s department: %s budget data for the %s financial year %s" % ( description_govt, department.name, selected_year.slug, COMMON_DESCRIPTION_ENDING, ), "department_budget": department_budget, "department_adjusted_budget": department_adjusted_budget, "vote_number": department.vote_number, "vote_primary": { "url_path": primary_department.get_url_path(), "name": primary_department.name, "slug": primary_department.slug, }, "website_url": department.get_latest_website_url(), } context["navbar"] = nav_bar.get_items(FinancialYear.get_latest_year().slug) context["latest_year"] = FinancialYear.get_latest_year().slug context["global_values"] = read_object_from_yaml( str(settings.ROOT_DIR.path("_data/global_values.yaml"))) context["admin_url"] = reverse("admin:budgetportal_department_change", args=(department.pk, )) return render(request, "department.html", context)