Skip to content

Commit 6b42501

Browse files
author
Francia Csaba
committed
Carpool event hooks
1 parent 7db9706 commit 6b42501

File tree

3 files changed

+35
-24
lines changed

3 files changed

+35
-24
lines changed

amarillo/routers/carpool.py

+8-19
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from amarillo.models.Carpool import Carpool
1313
from amarillo.routers.agencyconf import verify_api_key, verify_permission_for_same_agency_or_admin
1414
from amarillo.tests.sampledata import examples
15-
15+
from amarillo.services.hooks import run_on_create, run_on_delete
1616
from amarillo.services.config import config
1717
from amarillo.utils.utils import assert_folder_exists
1818

@@ -51,6 +51,8 @@ async def post_carpool(background_tasks: BackgroundTasks, carpool: Carpool = Bod
5151
requesting_agency_id: str = Depends(verify_api_key)) -> Carpool:
5252
await verify_permission_for_same_agency_or_admin(carpool.agency, requesting_agency_id)
5353

54+
background_tasks.add_task(run_on_create, carpool)
55+
5456
logger.info(f"POST trip {carpool.agency}:{carpool.id}.")
5557
await assert_agency_exists(carpool.agency)
5658

@@ -90,12 +92,14 @@ async def get_carpool(agency_id: str, carpool_id: str, api_key: str = Depends(ve
9092
"description": "Carpool or agency not found"},
9193
},
9294
)
93-
async def delete_carpool(agency_id: str, carpool_id: str, requesting_agency_id: str = Depends(verify_api_key)):
95+
async def delete_carpool(background_tasks: BackgroundTasks, agency_id: str, carpool_id: str, requesting_agency_id: str = Depends(verify_api_key)):
9496
await verify_permission_for_same_agency_or_admin(agency_id, requesting_agency_id)
9597

9698
logger.info(f"Delete trip {agency_id}:{carpool_id}.")
9799
await assert_agency_exists(agency_id)
98100
await assert_carpool_exists(agency_id, carpool_id)
101+
cp = await load_carpool(agency_id, carpool_id)
102+
background_tasks.add_task(run_on_delete, cp)
99103

100104
return await _delete_carpool(agency_id, carpool_id)
101105

@@ -111,12 +115,6 @@ async def _delete_carpool(agency_id: str, carpool_id: str):
111115
os.remove(f"data/enhanced/{agency_id}/{carpool_id}.json", )
112116
except FileNotFoundError:
113117
pass
114-
115-
try:
116-
from amarillo.plugins.metrics import trips_deleted_counter
117-
trips_deleted_counter.inc()
118-
except ImportError:
119-
pass
120118

121119

122120
async def store_carpool(carpool: Carpool) -> Carpool:
@@ -125,17 +123,6 @@ async def store_carpool(carpool: Carpool) -> Carpool:
125123
await set_lastUpdated_if_unset(carpool)
126124
await save_carpool(carpool)
127125

128-
try:
129-
from amarillo.plugins.metrics import trips_created_counter, trips_updated_counter
130-
if(carpool_exists):
131-
# logger.info("Incrementing trips updated")
132-
trips_updated_counter.inc()
133-
else:
134-
# logger.info("Incrementing trips created")
135-
trips_created_counter.inc()
136-
except ImportError:
137-
pass
138-
139126
return carpool
140127

141128
async def set_lastUpdated_if_unset(carpool):
@@ -176,4 +163,6 @@ async def delete_agency_carpools_older_than(agency_id, timestamp):
176163
if os.path.getmtime(carpool_file_name) < timestamp:
177164
m = re.search(r'([a-zA-Z0-9_-]+)\.json$', carpool_file_name)
178165
# TODO log deletion
166+
cp = await load_carpool(agency_id, m[1])
167+
run_on_delete(cp)
179168
await _delete_carpool(agency_id, m[1])

amarillo/services/carpools.py

-5
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,6 @@ def purge_outdated_offers(self):
3737
if cp and self.is_outdated(cp):
3838
logger.info("Purge outdated offer %s", key)
3939
self.delete(cp.agency, cp.id)
40-
try:
41-
from amarillo.plugins.metrics import trips_deleted_counter
42-
trips_deleted_counter.inc()
43-
except ImportError:
44-
pass
4540

4641
def get(self, agency_id: str, carpool_id: str):
4742
return self.carpools.get(f"{agency_id}:{carpool_id}")

amarillo/services/hooks.py

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from typing import List
2+
from amarillo.models.Carpool import Carpool
3+
4+
class CarpoolEvents:
5+
def on_create(cp : Carpool):
6+
pass
7+
def on_update(cp : Carpool):
8+
pass
9+
def on_delete(cp : Carpool):
10+
pass
11+
12+
carpool_event_listeners : List[CarpoolEvents] = []
13+
14+
def register_carpool_event_listener(cpe : CarpoolEvents):
15+
carpool_event_listeners.append(cpe)
16+
17+
def run_on_create(cp: Carpool):
18+
for cpe in carpool_event_listeners:
19+
cpe.on_create(cp)
20+
21+
def run_on_update(cp: Carpool):
22+
for cpe in carpool_event_listeners:
23+
cpe.on_update(cp)
24+
25+
def run_on_delete(cp: Carpool):
26+
for cpe in carpool_event_listeners:
27+
cpe.on_delete(cp)

0 commit comments

Comments
 (0)