Add refresh option for Bristol waste schedule
This commit is contained in:
		
							parent
							
								
									7456f72325
								
							
						
					
					
						commit
						199eb82bce
					
				| 
						 | 
					@ -104,7 +104,9 @@ def parse(root: lxml.html.HtmlElement) -> list[Event]:
 | 
				
			||||||
BristolSchedule = list[dict[str, typing.Any]]
 | 
					BristolSchedule = list[dict[str, typing.Any]]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async def get_bristol_data(data_dir: str, uprn: str) -> BristolSchedule:
 | 
					async def get_bristol_data(
 | 
				
			||||||
 | 
					    data_dir: str, uprn: str, refresh: bool = False
 | 
				
			||||||
 | 
					) -> BristolSchedule:
 | 
				
			||||||
    """Get Bristol Waste schedule, with cache."""
 | 
					    """Get Bristol Waste schedule, with cache."""
 | 
				
			||||||
    now = datetime.now()
 | 
					    now = datetime.now()
 | 
				
			||||||
    waste_dir = os.path.join(data_dir, "waste")
 | 
					    waste_dir = os.path.join(data_dir, "waste")
 | 
				
			||||||
| 
						 | 
					@ -122,7 +124,7 @@ async def get_bristol_data(data_dir: str, uprn: str) -> BristolSchedule:
 | 
				
			||||||
        json_data = json.load(open(os.path.join(waste_dir, recent_filename)))
 | 
					        json_data = json.load(open(os.path.join(waste_dir, recent_filename)))
 | 
				
			||||||
        return typing.cast(BristolSchedule, json_data["data"])
 | 
					        return typing.cast(BristolSchedule, json_data["data"])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if existing and delta < timedelta(hours=ttl_hours):
 | 
					    if not refresh and existing and delta < timedelta(hours=ttl_hours):
 | 
				
			||||||
        return get_from_recent()
 | 
					        return get_from_recent()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
| 
						 | 
					@ -186,9 +188,11 @@ async def get_bristol_gov_uk_data(uprn: str) -> httpx.Response:
 | 
				
			||||||
    return response
 | 
					    return response
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async def get_bristol_gov_uk(start_date: date, data_dir: str, uprn: str) -> list[Event]:
 | 
					async def get_bristol_gov_uk(
 | 
				
			||||||
 | 
					    start_date: date, data_dir: str, uprn: str, refresh: bool = False
 | 
				
			||||||
 | 
					) -> list[Event]:
 | 
				
			||||||
    """Get waste collection schedule from Bristol City Council."""
 | 
					    """Get waste collection schedule from Bristol City Council."""
 | 
				
			||||||
    data = await get_bristol_data(data_dir, uprn)
 | 
					    data = await get_bristol_data(data_dir, uprn, refresh)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    by_date: defaultdict[date, list[str]] = defaultdict(list)
 | 
					    by_date: defaultdict[date, list[str]] = defaultdict(list)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue