Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
idabblewith committed May 17, 2024
1 parent 9e7b5fe commit 548e069
Show file tree
Hide file tree
Showing 5 changed files with 141 additions and 6 deletions.
13 changes: 13 additions & 0 deletions documents/prince_project_document_styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,19 @@ th, td, tr {
margin-right: 0px;
}

.project_document_service_h1 {
color: rgb(0, 0, 0);
font-size: 16px;
font-weight: 700;
text-align: center;
padding: 0px;
margin-top: 0.5rem;
/* margin-bottom: 30px; */
margin-left: 0px;
margin-right: 0px;
}


.project_document_team_container {
justify-content: center;
}
Expand Down
7 changes: 6 additions & 1 deletion documents/templates/project_document.html
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,12 @@ <h1 class="project_document_tag_h1">
{{ project_tag }}
</h1>


<!-- Dept. Service -->
<h1 class="project_document_service_h1">
{{ departmental_service_name }}
</h1>

<!-- BUSINESS AREA -->
<h1 class="project_document_business_area_h1">
{{ business_area_name }}
Expand All @@ -109,7 +115,6 @@ <h1 class="project_document_team_member_text">
</h1>
</div>


<!-- APPROVALS -->
<div class="project_document_approvals_container">
<div class="project_document_approvals_subcontainer">
Expand Down
67 changes: 65 additions & 2 deletions documents/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import time
from bs4 import BeautifulSoup
from django.shortcuts import render
from agencies.models import BusinessArea
from agencies.models import BusinessArea, DepartmentalService
from communications.models import Comment
from communications.serializers import (
TinyCommentCreateSerializer,
Expand All @@ -16,7 +16,7 @@
from django.core.exceptions import ObjectDoesNotExist

# from config.tasks import generate_pdf
from projects.models import Project, ProjectMember
from projects.models import Project, ProjectDetail, ProjectMember
from django.template.loader import render_to_string
import html2text
import base64
Expand Down Expand Up @@ -1125,6 +1125,13 @@ def return_document_type_url(document, data_document=None):
# print(f"DOC KIND: {kind}\nDOC STRING: {kind_dict[kind]}")
return kind_dict[kind]

def get_associated_service(pk):
print("projects pk:", pk)
details = ProjectDetail.objects.get(project=pk)
print(details.__dict__)
service = details.service
return service

# Concept Plan
def get_concept_plan_data():
print("Gettin CP DATA")
Expand All @@ -1144,6 +1151,13 @@ def get_concept_plan_data():
project_status = concept_plan_data.project.status
business_area_name = concept_plan_data.project.business_area.name


service = get_associated_service(pk=concept_plan_data.project.pk)
if service:
departmental_service_name = service.name
else:
departmental_service_name = "No Dept. Service"

project_team = get_project_team(concept_plan_data.project.pk)

project_image_data = TinyProjectPhotoSerializer(
Expand Down Expand Up @@ -1191,6 +1205,7 @@ def get_concept_plan_data():
"project_title": project_title,
"project_status": project_status,
"business_area_name": business_area_name,
"departmental_service_name": departmental_service_name,
"project_team": tuple(project_team),
"project_image": project_image,
"now": now,
Expand Down Expand Up @@ -1224,6 +1239,14 @@ def get_project_plan_data():
)
project_status = project_plan_data.project.status
business_area_name = project_plan_data.project.business_area.name
service = get_associated_service(pk=project_plan_data.project.pk)
if service:
departmental_service_name = service.name
else:
departmental_service_name = "No Dept. Service"




project_team = get_project_team(project_plan_data.project.pk)

Expand Down Expand Up @@ -1288,7 +1311,11 @@ def get_project_plan_data():
main_document_pk = project_plan_data.document.pk
project_pk = project_plan_data.project.pk




return {
"departmental_service_name": departmental_service_name,
"project_kind": project_kind,
"document_kind_url": doc_kind_url,
"document_kind_string": doc_kind_str,
Expand Down Expand Up @@ -1383,7 +1410,14 @@ def get_progress_report_data():
main_document_pk = progress_report_data.document.pk
project_pk = progress_report_data.project.pk

service = get_associated_service(pk=project_pk)
if service:
departmental_service_name = service.name
else:
departmental_service_name = "No Dept. Service"

return {
"departmental_service_name": departmental_service_name,
"project_kind": project_kind,
"document_kind_url": doc_kind_url,
"document_kind_string": doc_kind_str,
Expand Down Expand Up @@ -1412,7 +1446,9 @@ def get_progress_report_data():

# Student Report
def get_student_report_data():
# doc pk is used (document=pk)
student_report_data = self.get_student_report(pk=pk)
print(student_report_data.__dict__)
project_kind, project_kind_tag = return_proj_type_tag(
document=student_report_data.document
)
Expand All @@ -1430,6 +1466,17 @@ def get_student_report_data():
project_status = student_report_data.project.status
business_area_name = student_report_data.project.business_area.name

project_id = student_report_data.document.project_id
service = get_associated_service(pk=project_id)

if service:
departmental_service_name = service.name
else:
departmental_service_name = "No Dept. Service"
# print(f"SERVICE: {departmental_service_name}")



project_team = get_project_team(student_report_data.project.pk)

project_image_data = TinyProjectPhotoSerializer(
Expand Down Expand Up @@ -1466,7 +1513,10 @@ def get_student_report_data():
main_document_pk = student_report_data.document.pk
project_pk = student_report_data.project.pk



return {
"departmental_service_name": departmental_service_name,
"project_kind": project_kind,
"document_kind_url": doc_kind_url,
"document_kind_string": doc_kind_str,
Expand Down Expand Up @@ -1550,7 +1600,15 @@ def get_project_closure_data():
main_document_pk = project_closure_data.document.pk
project_pk = project_closure_data.project.pk

service = get_associated_service(pk=project_pk)
if service:
departmental_service_name = service.name
else:
departmental_service_name = "No Dept. Service"


return {
"departmental_service_name": departmental_service_name,
"project_kind": project_kind,
"document_kind_url": doc_kind_url,
"document_kind_string": doc_kind_str,
Expand Down Expand Up @@ -1655,6 +1713,7 @@ def get_inner_html(html_content, html_tag):
"project_title": get_inner_html(doc_data["project_title"], "h1"),
"project_tag": doc_data["document_tag"],
"business_area_name": doc_data["business_area_name"],
"departmental_service_name": doc_data["departmental_service_name"],
"project_status": doc_data["project_status"],
"team_as_string": ", ".join(map(str, doc_data["project_team"])),
"project_lead_approval": doc_data["project_lead_approval_granted"],
Expand Down Expand Up @@ -1710,6 +1769,7 @@ def get_inner_html(html_content, html_tag):
# HTML content for the PDF
html_content = get_template("project_document.html").render(
{
"departmental_service_name": doc_data["departmental_service_name"],
# Styles & url
"rte_css_path": rte_css_path,
"prince_css_path": prince_css_path,
Expand Down Expand Up @@ -1813,6 +1873,7 @@ def get_inner_html(html_content, html_tag):
# HTML content for the PDF
html_content = get_template("project_document.html").render(
{
"departmental_service_name": doc_data["departmental_service_name"],
"financial_year_string": doc_data["financial_year_string"],
# Styles & url
"rte_css_path": rte_css_path,
Expand Down Expand Up @@ -1880,6 +1941,7 @@ def get_inner_html(html_content, html_tag):
# HTML content for the PDF
html_content = get_template("project_document.html").render(
{
"departmental_service_name": doc_data["departmental_service_name"],
"financial_year_string": doc_data["financial_year_string"],
# Styles & url
"rte_css_path": rte_css_path,
Expand Down Expand Up @@ -1931,6 +1993,7 @@ def get_inner_html(html_content, html_tag):
# HTML content for the PDF
html_content = get_template("project_document.html").render(
{
"departmental_service_name": doc_data["departmental_service_name"],
# Styles & url
"rte_css_path": rte_css_path,
"prince_css_path": prince_css_path,
Expand Down
6 changes: 3 additions & 3 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

54 changes: 54 additions & 0 deletions users/admin.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import csv
import os
from django.db.models import Q
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
Expand All @@ -10,6 +11,7 @@
TinyAgencySerializer,
)

from projects.models import ProjectMember
from users.serializers import TinyUserSerializer
from .models import User, UserWork, UserProfile

Expand All @@ -33,10 +35,62 @@ def export_selected_users_to_csv(model_admin, req, selected):
return response


# A function to output the project leaders of active projects for latest report
@admin.action(description="Export Active Project Leaders")
def export_current_active_project_leads(model_admin, req, selected):
if len(selected) > 1:
print("PLEASE SELECT ONLY ONE")
return
active_project_leaders = ProjectMember.objects.filter(
is_leader=True, project__status="active"
).all()
unique_active_project_leads = list(
set(
lead_member_object.user
for lead_member_object in active_project_leaders
if lead_member_object.user.is_active
)
)
file_location = os.path.dirname(os.path.realpath(__file__)) + "/pls.txt"

with open(file_location, "w+") as file:
dbca_users = []
other_users = []
for leader in unique_active_project_leads:
print(
f"handling leader {leader.email} | {leader.first_name} {leader.last_name}"
)
if leader.email.endswith("dbca.wa.gov.au"):
dbca_users.append(leader)

else:
other_users.append(leader)

file.write(
"-----------------------------------------------------------\nUnique DBCA Project Leads (Active Projects)\n-----------------------------------------------------------\n"
)
for user in dbca_users:
file.write(f"{user.email}\n")

file.write(
"\n\n-----------------------------------------------------------\nUnique Non-DBCA Emails of Project Leads (Active Projects)\n-----------------------------------------------------------\n"
)
for other in other_users:
projmembers = active_project_leaders.filter(user=other).all()
file.write(f"User: {other.email} | {other.first_name} {other.last_name}\n")
for p in projmembers:
file.write(f"\t-Project: {p.project.title}\n")
file.write(
f"\t\tLink: https://scienceprojects.dbca.wa.gov.au/projects/{p.project.pk}\n"
)
file.write("\n")


@admin.register(User)
class CustomUserAdmin(UserAdmin):
actions = [
export_selected_users_to_csv,
export_current_active_project_leads,
]
fieldsets = (
(
Expand Down

0 comments on commit 548e069

Please sign in to comment.