@@ -897,6 +897,9 @@ def election_list_view(request):
897897 new_filter = Q (state_code__icontains = election_search )
898898 filters .append (new_filter )
899899
900+ new_filter = Q (vote_usa_election_id__iexact = election_search )
901+ filters .append (new_filter )
902+
900903 # Add the first query
901904 if len (filters ):
902905 final_filters = filters .pop ()
@@ -911,6 +914,7 @@ def election_list_view(request):
911914 election_list_modified = []
912915 ballot_returned_list_manager = BallotReturnedListManager ()
913916 candidate_list_manager = CandidateListManager ()
917+ data_stale_if_older_than = now () - timedelta (days = 30 )
914918 for election in election_list :
915919 if positive_value_exists (election .election_day_text ):
916920 try :
@@ -1000,6 +1004,110 @@ def election_list_view(request):
10001004 # As of Aug 2018 we are no longer using PERCENT_RATING
10011005 position_query = position_query .exclude (stance__iexact = 'PERCENT_RATING' )
10021006 election .public_positions_count = position_query .count ()
1007+
1008+ # ############################
1009+ # Figure out the last dates we retrieved data
1010+ refresh_date_started = None
1011+ refresh_date_completed = None
1012+ retrieve_date_started = None
1013+ retrieve_date_completed = None
1014+ try :
1015+ batch_process_queryset = BatchProcess .objects .all ()
1016+ batch_process_queryset = \
1017+ batch_process_queryset .filter (google_civic_election_id = election .google_civic_election_id )
1018+ batch_process_queryset = batch_process_queryset .filter (date_started__isnull = False )
1019+ batch_process_queryset = batch_process_queryset .exclude (batch_process_paused = True )
1020+ ballot_item_processes = [
1021+ 'REFRESH_BALLOT_ITEMS_FROM_POLLING_LOCATIONS' ,
1022+ 'RETRIEVE_BALLOT_ITEMS_FROM_POLLING_LOCATIONS' ]
1023+ batch_process_queryset = batch_process_queryset .filter (kind_of_process__in = ballot_item_processes )
1024+ batch_process_queryset = batch_process_queryset .order_by ("-id" )
1025+
1026+ batch_process_queryset = batch_process_queryset [:3 ]
1027+ batch_process_list = list (batch_process_queryset )
1028+
1029+ if len (batch_process_list ):
1030+ for one_batch_process in batch_process_list :
1031+ if one_batch_process .kind_of_process == 'REFRESH_BALLOT_ITEMS_FROM_POLLING_LOCATIONS' :
1032+ if not refresh_date_completed and one_batch_process .date_completed :
1033+ refresh_date_completed = one_batch_process .date_completed
1034+ if not refresh_date_started and one_batch_process .date_started :
1035+ refresh_date_started = one_batch_process .date_started
1036+ elif one_batch_process .kind_of_process == 'RETRIEVE_BALLOT_ITEMS_FROM_POLLING_LOCATIONS' :
1037+ if not retrieve_date_completed and one_batch_process .date_completed :
1038+ retrieve_date_completed = one_batch_process .date_completed
1039+ if not retrieve_date_started and one_batch_process .date_started :
1040+ retrieve_date_started = one_batch_process .date_started
1041+ # if refresh_date_completed and retrieve_date_completed:
1042+ # break # Break out of this batch_process loop only
1043+ except BatchProcess .DoesNotExist :
1044+ # No offices found. Not a problem.
1045+ batch_process_list = []
1046+ except Exception as e :
1047+ pass
1048+
1049+ # Upcoming refresh date scheduled?
1050+ refresh_date_added_to_queue = None
1051+ try :
1052+ batch_process_queryset = BatchProcess .objects .all ()
1053+ batch_process_queryset = \
1054+ batch_process_queryset .filter (google_civic_election_id = election .google_civic_election_id )
1055+ batch_process_queryset = batch_process_queryset .filter (date_completed__isnull = True )
1056+ batch_process_queryset = batch_process_queryset .exclude (batch_process_paused = True )
1057+ ballot_item_processes = [
1058+ 'REFRESH_BALLOT_ITEMS_FROM_POLLING_LOCATIONS' ]
1059+ batch_process_queryset = batch_process_queryset .filter (kind_of_process__in = ballot_item_processes )
1060+ batch_process_queryset = batch_process_queryset .order_by ("-id" )
1061+
1062+ batch_process_queryset = batch_process_queryset [:3 ]
1063+ batch_process_list = list (batch_process_queryset )
1064+
1065+ if len (batch_process_list ):
1066+ for one_batch_process in batch_process_list :
1067+ if one_batch_process .kind_of_process == 'REFRESH_BALLOT_ITEMS_FROM_POLLING_LOCATIONS' :
1068+ if not refresh_date_added_to_queue and one_batch_process .date_added_to_queue :
1069+ refresh_date_added_to_queue = one_batch_process .date_added_to_queue
1070+ except BatchProcess .DoesNotExist :
1071+ # No offices found. Not a problem.
1072+ batch_process_list = []
1073+ except Exception as e :
1074+ pass
1075+
1076+ # election_for_one_state = copy.deepcopy(national_election)
1077+ election .refresh_date_completed = refresh_date_completed
1078+ election .refresh_date_started = refresh_date_started
1079+ election .refresh_date_added_to_queue = refresh_date_added_to_queue
1080+ election .retrieve_date_completed = retrieve_date_completed
1081+ election .retrieve_date_started = retrieve_date_started
1082+
1083+ if refresh_date_completed :
1084+ most_recent_time = refresh_date_completed
1085+ elif refresh_date_started :
1086+ most_recent_time = refresh_date_started
1087+ elif retrieve_date_completed :
1088+ most_recent_time = retrieve_date_completed
1089+ elif retrieve_date_started :
1090+ most_recent_time = retrieve_date_started
1091+ else :
1092+ most_recent_time = None
1093+
1094+ if most_recent_time :
1095+ if refresh_date_completed and refresh_date_completed > most_recent_time :
1096+ most_recent_time = refresh_date_completed
1097+ if refresh_date_started and refresh_date_started > most_recent_time :
1098+ most_recent_time = refresh_date_started
1099+ if retrieve_date_completed and retrieve_date_completed > most_recent_time :
1100+ most_recent_time = retrieve_date_completed
1101+ if retrieve_date_started and retrieve_date_started > most_recent_time :
1102+ most_recent_time = retrieve_date_started
1103+
1104+ if most_recent_time > data_stale_if_older_than :
1105+ election .data_getting_stale = False
1106+ else :
1107+ election .data_getting_stale = True
1108+ else :
1109+ election .data_getting_stale = True
1110+
10031111 if positive_value_exists (refresh_states ):
10041112 if election and positive_value_exists (election .google_civic_election_id ) \
10051113 and hasattr (election , 'state_code_list_raw' ):
@@ -1081,12 +1189,12 @@ def nationwide_election_list_view(request):
10811189 if not positive_value_exists (is_national_election ):
10821190 national_election = None
10831191
1192+ data_stale_if_older_than = now () - timedelta (days = 30 )
10841193 if is_national_election :
10851194 from election .models import fetch_next_election_for_state , fetch_prior_election_for_state
10861195 state_list = STATE_CODE_MAP
10871196 election_list = []
10881197 cached_national_election_list = False
1089- data_stale_if_older_than = now () - timedelta (days = 30 )
10901198 for one_state_code , one_state_name in state_list .items ():
10911199 # ############################
10921200 # Figure out the last dates we retrieved data for this state
0 commit comments