38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
|
|
from copy import deepcopy
|
||
|
|
|
||
|
|
from .mock_data import HARVEST_PREDICTION_CARD, YIELD_PREDICTION_CARD, YIELD_PREDICTION_CHART
|
||
|
|
from .models import YieldHarvestPredictionLog
|
||
|
|
|
||
|
|
|
||
|
|
def get_yield_harvest_summary_data(farm=None):
|
||
|
|
data = {
|
||
|
|
"yield_prediction_card": deepcopy(YIELD_PREDICTION_CARD),
|
||
|
|
"yield_prediction_chart": deepcopy(YIELD_PREDICTION_CHART),
|
||
|
|
"harvest_prediction_card": deepcopy(HARVEST_PREDICTION_CARD),
|
||
|
|
}
|
||
|
|
|
||
|
|
if farm is None:
|
||
|
|
return data
|
||
|
|
|
||
|
|
log = YieldHarvestPredictionLog.objects.filter(farm=farm).first()
|
||
|
|
if log is None:
|
||
|
|
return data
|
||
|
|
|
||
|
|
if log.yield_stats:
|
||
|
|
data["yield_prediction_card"]["stats"] = log.yield_stats
|
||
|
|
if log.yield_chip_text:
|
||
|
|
data["yield_prediction_card"]["chipText"] = log.yield_chip_text
|
||
|
|
if log.chart_data:
|
||
|
|
data["yield_prediction_chart"] = deepcopy(log.chart_data)
|
||
|
|
|
||
|
|
if log.harvest_date:
|
||
|
|
data["harvest_prediction_card"]["date"] = log.harvest_date.isoformat()
|
||
|
|
if log.days_until_harvest is not None:
|
||
|
|
data["harvest_prediction_card"]["daysUntil"] = log.days_until_harvest
|
||
|
|
if log.optimal_window_start:
|
||
|
|
data["harvest_prediction_card"]["optimalWindowStart"] = log.optimal_window_start.isoformat()
|
||
|
|
if log.optimal_window_end:
|
||
|
|
data["harvest_prediction_card"]["optimalWindowEnd"] = log.optimal_window_end.isoformat()
|
||
|
|
|
||
|
|
return data
|