most feedback applied.
This commit is contained in:
53
app.py
53
app.py
@@ -3,7 +3,7 @@ import os
|
||||
from functools import wraps
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from flask import Flask, render_template, request, redirect, url_for, session, abort, jsonify
|
||||
from flask import Flask, render_template, request, redirect, url_for, session, abort, jsonify
|
||||
from dotenv import load_dotenv
|
||||
import firebase_admin
|
||||
from firebase_admin import credentials, auth as fb_auth, firestore
|
||||
@@ -129,8 +129,28 @@ def fetch_all_projects():
|
||||
fees_and_costs = fetch_form(bearer, pid, "feesAndCosts") or {}
|
||||
lease_info_np = fetch_form(bearer, pid, "leaseInfoNP") or {}
|
||||
|
||||
completed_tasks = [x.get("body") for x in fetch_project_tasks(bearer, pid).get("items") if x.get("isCompleted")]
|
||||
pending_tasks = [x.get("body") for x in fetch_project_tasks(bearer, pid).get("items") if not x.get("isCompleted")]
|
||||
completed_tasks = [{"description": x.get("body") ,
|
||||
"completed": x.get("completedDate")}
|
||||
for x in fetch_project_tasks(bearer, pid).get("items")
|
||||
if x.get("isCompleted")]
|
||||
pending_tasks = [{"description": x.get("body") ,
|
||||
"completed": x.get("completedDate")}
|
||||
for x in fetch_project_tasks(bearer, pid).get("items")
|
||||
if not x.get("isCompleted")]
|
||||
|
||||
team = fetch_project_team(bearer, pid)
|
||||
assigned_attorney = next((m.get('fullname')
|
||||
for m in team
|
||||
if ('Assigned Attorney' in [r.get('name') for r in m.get('teamOrgRoles')])
|
||||
), '')
|
||||
primary_contact = next((m.get('fullname')
|
||||
for m in team
|
||||
if ('Primary' in [r.get('name') for r in m.get('teamOrgRoles')])
|
||||
), '')
|
||||
secondary_paralegal = next((m.get('fullname')
|
||||
for m in team
|
||||
if ('Secondary Paralegal' in [r.get('name') for r in m.get('teamOrgRoles')])
|
||||
), '')
|
||||
|
||||
# Extract notice service and expiration dates
|
||||
notice_service_date = new_file_review.get("noticeServiceDate") or ''
|
||||
@@ -141,6 +161,7 @@ def fetch_all_projects():
|
||||
|
||||
# Extract default date
|
||||
default_date = dates_and_deadlines.get("defaultDate") or ''
|
||||
case_filed_date = dates_and_deadlines.get("dateCaseFiled") or ''
|
||||
|
||||
# Extract motion hearing dates
|
||||
demurrer_hearing_date = dates_and_deadlines.get("demurrerHearingDate") or ''
|
||||
@@ -195,16 +216,16 @@ def fetch_all_projects():
|
||||
"notice_type": new_file_review.get("noticeType", '') or '',
|
||||
"case_number": dates_and_deadlines.get('caseNumber', '') or '',
|
||||
"premises_address": property_info.get("premisesAddressWithUnit") or '',
|
||||
"premises_city": property_info.get("premisisCity") or '',
|
||||
"client_email": "", # TODO
|
||||
"responsible_attorney": matter_overview.get("signingAttorney"),
|
||||
"staff_person": project_overview.get("teamLead"), # TODO
|
||||
"staff_person_2": project_overview.get("teamLead"), # TODO
|
||||
"premises_city": property_info.get("premisesCity") or '',
|
||||
"responsible_attorney": assigned_attorney,
|
||||
"staff_person": primary_contact,
|
||||
"staff_person_2": secondary_paralegal,
|
||||
"phase_name": p.get("phaseName"),
|
||||
"completed_tasks": completed_tasks,
|
||||
"pending_tasks": pending_tasks,
|
||||
"notice_service_date": notice_service_date,
|
||||
"notice_expiration_date": notice_expiration_date,
|
||||
"case_field_date": case_filed_date,
|
||||
"daily_rent_damages": daily_rent_damages,
|
||||
"default_date": default_date,
|
||||
"demurrer_hearing_date": demurrer_hearing_date,
|
||||
@@ -232,7 +253,7 @@ def fetch_all_projects():
|
||||
"date_possession_recovered": date_possession_recovered,
|
||||
"attorney_fees": attorney_fees,
|
||||
"costs": costs,
|
||||
|
||||
"documents_url": matter_overview.get('documentShareFolderURL') or '',
|
||||
"service_attempt_date_1": next(iter(service_info), {}).get('serviceDate'),
|
||||
"contacts": cs,
|
||||
"ProjectEmailAddress": p.get("projectEmailAddress"),
|
||||
@@ -395,6 +416,20 @@ def fetch_project_detail(bearer: str, project_id_native: int):
|
||||
r.raise_for_status()
|
||||
return r.json()
|
||||
|
||||
def fetch_project_team(bearer: str, project_id_native: int):
|
||||
url = f"https://api.filevineapp.com/fv-app/v2/Projects/{project_id_native}/team?limit=1000"
|
||||
headers = {
|
||||
"Accept": "application/json",
|
||||
"Authorization": f"Bearer {bearer}",
|
||||
"x-fv-orgid": str(FV_ORG_ID),
|
||||
"x-fv-userid": str(FV_USER_ID),
|
||||
}
|
||||
r = requests.get(url, headers=headers, timeout=30)
|
||||
r.raise_for_status()
|
||||
from pprint import pprint
|
||||
pprint( r.json().get('items') or [])
|
||||
return r.json().get('items') or []
|
||||
|
||||
def fetch_project_tasks(bearer: str, project_id_native: int):
|
||||
url = f"https://api.filevineapp.com/fv-app/v2/Projects/{project_id_native}/tasks"
|
||||
headers = {
|
||||
|
||||
Reference in New Issue
Block a user