def check_end_date(form): err = None s_date = form['start_date'] e_date = form['end_date'] #Check valid daterange error if e_date.lower() == 'por': if 'station_id' in form.keys(): return err else: return '%s is not a valid Start Date for a multi-station or grid request!' %str(form['end_date']) s_date = WRCCUtils.date_to_eight(s_date) e_date = WRCCUtils.date_to_eight(e_date) if len(e_date)!=8: return '%s is not a valid date.' %str(form['end_date']) try: int(e_date) except: return '%s is not a valid date.' %str(form['end_date']) #Check month if int(e_date[4:6]) < 1 or int(e_date[4:6]) > 12: return '%s is not a valid date.' %str(form['end_date']) #Check day if int(e_date[6:8]) < 1 or int(e_date[4:6]) > 31: return '%s is not a valid date.' %str(form['end_date']) #Ceck for month length ml = WRCCData.MONTH_LENGTHS[int(e_date[4:6]) - 1] if int(e_date[6:8]) > ml: if str(e_date[4:6]) == '02' or str(e_date[4:6]) == '2': if int(e_date[6:8]) == 29 and WRCCUtils.is_leap_year(e_date[0:4]): return None #return '%s only has %s days. You entered: %s' %(WRCCData.NUMBER_TO_MONTH_NAME[str(e_date[4:6])],'29',str(e_date[6:8])) else: return '%s only has %s days. You entered: %s' %(WRCCData.NUMBER_TO_MONTH_NAME[str(e_date[4:6])],str(ml),str(e_date[6:8])) else: return '%s only has %s days. You entered: %s' %(WRCCData.NUMBER_TO_MONTH_NAME[str(e_date[4:6])],str(ml),str(e_date[6:8])) #Check that start date is ealier than end date if s_date.lower() == 'por': return err try: sd = datetime.datetime(int(s_date[0:4]), int(s_date[4:6].lstrip('0')), int(s_date[6:8].lstrip('0'))) except: pass try: ed = datetime.datetime(int(e_date[0:4]), int(e_date[4:6].lstrip('0')), int(e_date[6:8].lstrip('0'))) except: return '%s is not a valid date.' %form['end_date'] try: if ed < sd: return 'Start Date is later then End Year.' except:pass #Check grid data dates if 'location' in form.keys() or ('data_type' in form.keys() and form['data_type'] == 'grid'): flag = False #Set grid date range #Set grid date range if int(form['grid']) in range(22,42): grid_dr = [['19500101','20991231']] else: grid_dr = WRCCData.GRID_CHOICES[str(form['grid'])][3] #For Prism we need to check if monthy/yearly resolution #and pick proper daterange if 'temporal_resolution' in form.keys() and form['temporal_resolution'] in ['mly','yly'] and str(form['grid']) == '21': grid_dr = WRCCData.PRISM_MLY_YLY[str(form['grid'])][3] for dr in grid_dr: grid_s = WRCCUtils.date_to_datetime(dr[0]) grid_e = WRCCUtils.date_to_datetime(dr[1]) if grid_s <= sd and ed <= grid_e: flag = False break else: if str(dr[1]) == str(grid_dr[-1][1]): flag = True continue if flag: grid_s = WRCCUtils.datetime_to_date(grid_s,'-') grid_e = WRCCUtils.datetime_to_date(grid_e,'-') return 'Valid date range for this grid is: ' + grid_s + ' - ' + grid_e ''' #Limit grid requests to max 10 years for multi point requests if not 'location' in form.keys() and (ed - sd).days > 10 * 366: err = 'Request for more than one grid point are limited to ten years or less! ' +\ 'Please adjust your dates accordingly.' return err ''' #Check for unreasonable start and end dates #for station data requests data_type = WRCCUtils.get_data_type(form) unreasonable = False if data_type == 'station' and form['app_name'] == 'multi_lister': #Limit multi station requests to 75 years if not 'station_id' in form.keys() and (ed - sd).days > 75 * 366: err = 'Request for more than one station are limited to 75 years or less! ' +\ 'Please adjust your dates accordingly.' #Check that station data end date is today or earlier if 'station_id' in form.keys() or ('data_type' in form.keys() and form['data_type'] == 'station'): if e_date.lower() != 'por': today = WRCCUtils.format_date_string(WRCCUtils.set_back_date(0),'-') if WRCCUtils.date_to_datetime(e_date) > WRCCUtils.date_to_datetime(today): return 'Not a valid End Date. Date should be ' + today +' or ealier.' return err
from django.conf import settings import WRCCUtils, WRCCData, AcisWS import copy today = WRCCUtils.set_back_date(0) today_year = today[0:4] today_month = today[5:7] today_day = today[8:10] begin_10yr = WRCCUtils.set_back_date(3660) yesterday = WRCCUtils.set_back_date(1) fourtnight = WRCCUtils.set_back_date(14) def create_kml_file(area_type, overlay_state): kml_file_name = overlay_state + '_' + area_type + '.kml' kml_file_path = settings.TMP_URL + kml_file_name status = WRCCUtils.generate_kml_file(area_type, overlay_state, kml_file_name, settings.TEMP_DIR) if status != 'Success': return 'ERROR: ' + status return kml_file_path def set_GET(request): try: rm = request.method except: def Get(key, default): if key in request.keys(): return request[key] else: return default