changes
This commit is contained in:
171
app.py
171
app.py
@@ -135,175 +135,11 @@ def fetch_all_projects():
|
||||
|
||||
# Fetch details for each
|
||||
detailed_rows = []
|
||||
# for p in projects:
|
||||
# pid = (p.get("projectId") or {}).get("native")
|
||||
# c = fetch_client(bearer, (p.get("clientId") or {}).get("native"))
|
||||
# cs = fetch_contacts(bearer, pid)
|
||||
|
||||
# if pid is None:
|
||||
# continue
|
||||
# try:
|
||||
# detail = fetch_project_detail(bearer, pid)
|
||||
# except Exception as e:
|
||||
# print(f"[WARN] detail fetch failed for {pid}: {e}")
|
||||
# detail = {}
|
||||
# from pprint import pprint
|
||||
# defendant_one = next((c.get('orgContact', {}) for c in cs if "Defendant" in c.get('orgContact', {}).get('personTypes', [])), {})
|
||||
# new_file_review = fetch_form(bearer, pid, "newFileReview") or {}
|
||||
# dates_and_deadlines = fetch_form(bearer, pid, "datesAndDeadlines") or {}
|
||||
# service_info = fetch_collection(bearer, pid, "serviceInfo") or []
|
||||
# property_info = fetch_form(bearer, pid, "propertyInfo")
|
||||
# matter_overview = fetch_form(bearer, pid, "matterOverview")
|
||||
# fees_and_costs = fetch_form(bearer, pid, "feesAndCosts") or {}
|
||||
# property_contacts = fetch_form(bearer, pid, "propertyContacts") or {}
|
||||
# pprint(property_contacts)
|
||||
# lease_info_np = fetch_form(bearer, pid, "leaseInfoNP") or {}
|
||||
|
||||
# completed_tasks = [{"description": x.get("body") ,
|
||||
# "completed": convert_to_pacific_time(x.get("completedDate"))}
|
||||
# for x in fetch_project_tasks(bearer, pid).get("items")
|
||||
# if x.get("isCompleted")]
|
||||
# pending_tasks = [{"description": x.get("body") ,
|
||||
# "completed": convert_to_pacific_time(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 = convert_to_pacific_time(new_file_review.get("noticeServiceDate")) or ''
|
||||
# notice_expiration_date = convert_to_pacific_time(new_file_review.get("noticeExpirationDate")) or ''
|
||||
|
||||
# # Extract daily rent damages
|
||||
# daily_rent_damages = lease_info_np.get("dailyRentDamages") or dates_and_deadlines.get("dailyRentDamages") or ''
|
||||
|
||||
# # Extract default date
|
||||
# default_date = convert_to_pacific_time(dates_and_deadlines.get("defaultDate")) or ''
|
||||
# case_filed_date = convert_to_pacific_time(dates_and_deadlines.get("dateCaseFiled")) or ''
|
||||
|
||||
# # Extract motion hearing dates
|
||||
# demurrer_hearing_date = convert_to_pacific_time(dates_and_deadlines.get("demurrerHearingDate")) or ''
|
||||
# motion_to_strike_hearing_date = convert_to_pacific_time(dates_and_deadlines.get("mTSHearingDate")) or ''
|
||||
# motion_to_quash_hearing_date = convert_to_pacific_time(dates_and_deadlines.get("mTQHearingDate")) or ''
|
||||
# other_motion_hearing_date = convert_to_pacific_time(dates_and_deadlines.get("otherMotion1HearingDate")) or ''
|
||||
|
||||
# # Extract MSC details
|
||||
# msc_date = convert_to_pacific_time(dates_and_deadlines.get("mSCDate")) or ''
|
||||
# msc_time = dates_and_deadlines.get("mSCTime") or '' # Time field, not converting
|
||||
# msc_address = dates_and_deadlines.get("mSCAddress") or ''
|
||||
# msc_div_dept_room = dates_and_deadlines.get("mSCDeptDiv") or ''
|
||||
|
||||
# # Extract trial details
|
||||
# trial_date = convert_to_pacific_time(dates_and_deadlines.get("trialDate")) or ''
|
||||
# trial_time = dates_and_deadlines.get("trialTime") or '' # Time field, not converting
|
||||
# trial_address = dates_and_deadlines.get("trialAddress") or ''
|
||||
# trial_div_dept_room = dates_and_deadlines.get("trialDeptDivRoom") or ''
|
||||
|
||||
# # Extract final result of trial/MSC
|
||||
# final_result = dates_and_deadlines.get("finalResultOfTrialMSCCa") or ''
|
||||
|
||||
# # Extract settlement details
|
||||
# date_of_settlement = convert_to_pacific_time(dates_and_deadlines.get("dateOfStipulation")) or ''
|
||||
# final_obligation = dates_and_deadlines.get("finalObligationUnderTheStip") or ''
|
||||
# def_comply_stip = dates_and_deadlines.get("defendantsComplyWithStip") or ''
|
||||
|
||||
# # Extract judgment and writ details
|
||||
# judgment_date = convert_to_pacific_time(dates_and_deadlines.get("dateOfJudgment")) or ''
|
||||
# writ_issued_date = convert_to_pacific_time(dates_and_deadlines.get("writIssuedDate")) or ''
|
||||
|
||||
# # Extract lockout and stay details
|
||||
# scheduled_lockout = convert_to_pacific_time(dates_and_deadlines.get("sheriffScheduledDate")) or ''
|
||||
# oppose_stays = dates_and_deadlines.get("opposeStays") or ''
|
||||
|
||||
# # Extract premises safety and entry code
|
||||
# premises_safety = new_file_review.get("lockoutSafetyIssuesOrSpecialCareIssues") or ''
|
||||
# matter_gate_code = property_info.get("propertyEntryCodeOrInstructions") or ''
|
||||
|
||||
# # Extract possession recovered date
|
||||
# date_possession_recovered = convert_to_pacific_time(dates_and_deadlines.get("datePossessionRecovered")) or ''
|
||||
|
||||
# # Extract attorney fees and costs
|
||||
# attorney_fees = fees_and_costs.get("totalAttorneysFees") or ''
|
||||
# costs = fees_and_costs.get("totalCosts") or ''
|
||||
|
||||
# row = {
|
||||
# "client": c.get("firstName"),
|
||||
# "matter_description": p.get("projectName"),
|
||||
# "defendant_1": defendant_one.get('fullName', 'Unknown'),
|
||||
# "matter_open": convert_to_pacific_time(dates_and_deadlines.get("dateCaseFiled") or p.get("createdDate")),
|
||||
# "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("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,
|
||||
# "motion_to_strike_hearing_date": motion_to_strike_hearing_date,
|
||||
# "motion_to_quash_hearing_date": motion_to_quash_hearing_date,
|
||||
# "other_motion_hearing_date": other_motion_hearing_date,
|
||||
# "msc_date": msc_date,
|
||||
# "msc_time": msc_time,
|
||||
# "msc_address": msc_address,
|
||||
# "msc_div_dept_room": msc_div_dept_room,
|
||||
# "trial_date": trial_date,
|
||||
# "trial_time": trial_time,
|
||||
# "trial_address": trial_address,
|
||||
# "trial_div_dept_room": trial_div_dept_room,
|
||||
# "final_result": final_result,
|
||||
# "date_of_settlement": date_of_settlement,
|
||||
# "final_obligation": final_obligation,
|
||||
# "def_comply_stip": def_comply_stip,
|
||||
# "judgment_date": judgment_date,
|
||||
# "writ_issued_date": writ_issued_date,
|
||||
# "scheduled_lockout": scheduled_lockout,
|
||||
# "oppose_stays": oppose_stays,
|
||||
# "premises_safety": premises_safety,
|
||||
# "matter_gate_code": matter_gate_code,
|
||||
# "date_possession_recovered": date_possession_recovered,
|
||||
# "attorney_fees": attorney_fees,
|
||||
# "costs": costs,
|
||||
# "documents_url": matter_overview.get('documentShareFolderURL') or '',
|
||||
# "service_attempt_date_1": convert_to_pacific_time(next(iter(service_info), {}).get('serviceDate')),
|
||||
# "contacts": cs,
|
||||
# "ProjectEmailAddress": p.get("projectEmailAddress"),
|
||||
# "Number": p.get("number"),
|
||||
# "IncidentDate": convert_to_pacific_time(p.get("incidentDate") or detail.get("incidentDate")),
|
||||
# "ProjectId": pid,
|
||||
# "ProjectName": p.get("projectName") or detail.get("projectName"),
|
||||
# "ProjectUrl": p.get("projectUrl") or detail.get("projectUrl"),
|
||||
# }
|
||||
# detailed_rows.append(row)
|
||||
|
||||
|
||||
import worker_pool
|
||||
detailed_rows = worker_pool.process_projects_parallel(projects, bearer, 9)
|
||||
# Store the results in Firestore
|
||||
projects_ref = db.collection("projects")
|
||||
# Clear existing projects
|
||||
projects_ref.stream()
|
||||
for doc in projects_ref.stream():
|
||||
doc.reference.delete()
|
||||
|
||||
# Add new projects
|
||||
for row in detailed_rows:
|
||||
@@ -314,9 +150,6 @@ def fetch_all_projects():
|
||||
print(f"Stored {len(detailed_rows)} projects in Firestore")
|
||||
return detailed_rows
|
||||
|
||||
# No longer using cache - projects are stored in Firestore
|
||||
|
||||
# --- Routes ---
|
||||
@app.route("/")
|
||||
def index():
|
||||
uid = session.get("uid")
|
||||
@@ -395,7 +228,7 @@ def get_filevine_bearer():
|
||||
|
||||
|
||||
def list_all_projects(bearer: str):
|
||||
base = "https://api.filevineapp.com/fv-app/v2/Projects"
|
||||
base = "https://api.filevineapp.com/fv-app/v2/Projects?limit=500"
|
||||
headers = {
|
||||
"Accept": "application/json",
|
||||
"Authorization": f"Bearer {bearer}",
|
||||
@@ -408,7 +241,7 @@ def list_all_projects(bearer: str):
|
||||
offset = 0
|
||||
# TODO we probably need to sync the data with fierbase
|
||||
cnt = 0
|
||||
while len(results) < 200:
|
||||
while True:
|
||||
cnt = len(results)
|
||||
print(f"list try {tries}, starting at {offset}, previous count {last_count}, currently at {cnt}")
|
||||
tries += 1
|
||||
|
||||
@@ -196,6 +196,7 @@ def process_project(index: int, total: int, project_data: dict, bearer_token: st
|
||||
"ProjectId": pid,
|
||||
"ProjectName": p.get("projectName") or detail.get("projectName"),
|
||||
"ProjectUrl": p.get("projectUrl") or detail.get("projectUrl"),
|
||||
"property_contacts": property_contacts
|
||||
}
|
||||
print(f"Finished on {pid} ({index}/{total})")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user