示例#1
0
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)
示例#2
0
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)
示例#3
0
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)
示例#4
0
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)
示例#5
0
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)
示例#6
0
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)
示例#7
0
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)
示例#8
0
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)
示例#9
0
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)
示例#10
0
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)
示例#11
0
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)
示例#12
0
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)
示例#13
0
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)
示例#14
0
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)
示例#15
0
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)
示例#16
0
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)
示例#17
0
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)
示例#18
0
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)
示例#19
0
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)
示例#20
0
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)