def menu(request, **kwargs): now = datetime.utcnow() showdate = (now - timedelta(minutes=30)) year = '{:04d}'.format(showdate.year) month = '{:02d}'.format(showdate.month) day = '{:02d}'.format(showdate.day) hour = '{:02d}'.format(showdate.hour) #### define what to put on menu ############# metadata = [] for mymeta in report_measurements: meta = {} if mymeta["level"] == "*": meta["leveltxt"] = "All levels" else: meta["leveltxt"] = dballe.describe_level(*mymeta["level"]) if mymeta["trange"] == "*": meta["trangetxt"] = "All timeranges" else: meta["trangetxt"] = dballe.describe_trange(*mymeta["trange"]) if mymeta["var"] == "*": meta["vartxt"] = "All vars" else: varinfo = dballe.varinfo(mymeta["var"]) #meta["vartxt"]=varinfo.desc+" "+varinfo.unit meta["vartxt"] = varinfo.desc meta["var"] = mymeta["var"] meta["level"] = "%s,%s,%s,%s" % tuple( ("-" if v is None else str(v) for v in mymeta["level"])) meta["trange"] = "%s,%s,%s" % tuple( ("-" if v is None else str(v) for v in mymeta["trange"])) metadata.append(meta) return render( request, 'showdata/menu.html', { "ident": "*", "coords": "*", "network": "*", #"trange":trange, "level":level, "var":var, "metadata": metadata, "year": year, "month": month, "day": day, "hour": hour })
def to_dict(self): return { "ana_id": self.ana_id, "rep_memo": self.rep_memo, "level": None if self.level is None else [self.level, dballe.describe_level(*self.level)], "trange": None if self.trange is None else [self.trange, dballe.describe_trange(*self.trange)], "var": None if self.var is None else [self.var, describe_var(self.var)], "datemin": _export_datetime(self.datemin), "datemax": _export_datetime(self.datemax), "latmin": self.latmin, "latmax": self.latmax, "lonmin": self.lonmin, "lonmax": self.lonmax, }
def explorer_to_dict(self): if not self.initialized: return {"stations": [], "rep_memo": [], "level": [], "trange": [], "var": []} def level_key(l): return tuple((str(x) if x is not None else "") for x in l) def trange_key(t): return tuple((str(x) if x is not None else "") for x in t) # Dispatch stations between currently selectable and all other stations current_stations_set = frozenset(self.explorer.stations) stations = [] stations_disabled = [] for station in self.explorer.all_stations: if station in current_stations_set: stations.append(station_to_dict(station)) else: stations_disabled.append(station_to_dict(station)) stats = self.explorer.stats return { "filter": self.filter.to_dict(), "filter_cmdline": " ".join(shlex.quote("{}={}".format(k, v)) for k, v in self.filter.to_record().items()), "stations": stations, "stations_disabled": stations_disabled, "rep_memo": self.explorer.reports, "level": [(tuple(x), dballe.describe_level(*x)) for x in self.explorer.levels], "trange": [(tuple(x), dballe.describe_trange(*x)) for x in self.explorer.tranges], "var": [(code, describe_var(code)) for code in self.explorer.varcodes], "stats": { "datetime_min": _export_datetime(stats.datetime_min), "datetime_max": _export_datetime(stats.datetime_max), "count": stats.count, }, "initialized": self.initialized, "data_limit": self.data_limit, "db_url": self.db_url, }
def tree_json(nodes, base_path, wildcards=False): results = [] branchNode = { 'allowChildren': 1, 'expandable': 1, 'leaf': 0, } leafNode = { 'allowChildren': 0, 'expandable': 0, 'leaf': 1, } #Add a wildcard node if appropriate if len(nodes) > 1 and wildcards: wildcardNode = {'text': '*', 'id': base_path + '*'} if any(not n.is_leaf for n in nodes): wildcardNode.update(branchNode) else: wildcardNode.update(leafNode) results.append(wildcardNode) found = set() results_leaf = [] results_branch = [] for node in nodes: #Now let's add the matching children if node.name in found: continue found.add(node.name) if dballepresent: position = (base_path + str(node.name)).count(".") if position == 0: text = "Data Level: " + node.name.split( "_")[0] + " Station Type: " + node.name.split("_")[1] elif position == 1: text = "Ident: " + node.name elif position == 2: if node.name == "*": text = node.name else: text = "Lon: " + str( int(node.name.split("_")[0]) / 100000.) + " Lat: " + str( int(node.name.split("_")[1]) / 100000.) elif position == 3: text = "Network: " + node.name elif position == 4: if node.name == "*": text = node.name else: text = dballe.describe_trange(*toint(node.name)) elif position == 5: if node.name == "*": text = node.name else: text = dballe.describe_level(*toint(node.name)) elif position == 6: if node.name == "*": text = node.name else: varinfo = dballe.varinfo(node.name) text = varinfo.desc.lower() + " " + varinfo.unit else: text = urllib.unquote_plus(str(node.name)) else: text = urllib.unquote_plus(str(node.name)) resultNode = { 'text': text, 'id': base_path + str(node.name), } if node.is_leaf: resultNode.update(leafNode) results_leaf.append(resultNode) else: resultNode.update(branchNode) results_branch.append(resultNode) results.extend(results_branch) results.extend(results_leaf) return results
def describe_timerange(self): if dballepresent: return dballe.describe_trange(*toint(self.timerange)) else: return self.timerange
def spatialseries(request, html_template="showdata/spatialseries.html", **kwargs): if kwargs.get("year"): if kwargs.get("month"): if kwargs.get("day"): if kwargs.get("hour"): #HOURLY timerequested = datetime(year=int(kwargs.get("year")), month=int(kwargs.get("month")), day=int(kwargs.get("day")), hour=int(kwargs.get("hour"))) delta = timedelta(hours=1) dtprevious = timerequested - delta dtnext = timerequested + delta previous = reverse( 'showdata:spatialserieshourly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtprevious.year), "month": "{:02d}".format(dtprevious.month), "day": "{:02d}".format(dtprevious.day), "hour": "{:02d}".format(dtprevious.hour) }) + "?dsn=" + request.GET.get('dsn', defaultdsn) next = reverse('showdata:spatialserieshourly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtnext.year), "month": "{:02d}".format(dtnext.month), "day": "{:02d}".format(dtnext.day), "hour": "{:02d}".format(dtnext.hour) }) + "?dsn=" + request.GET.get( 'dsn', defaultdsn) more = reverse('showdata:spatialseriesdaily', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": kwargs.get("year"), "month": kwargs.get("month"), "day": kwargs.get("day") }) + "?dsn=" + request.GET.get( 'dsn', defaultdsn) less = None datefrom = kwargs.get("hour") + ":00_" + kwargs.get( "year") + kwargs.get("month") + kwargs.get("day") dateuntil = kwargs.get("hour") + ":59_" + kwargs.get( "year") + kwargs.get("month") + kwargs.get("day") elif not request.GET.get('type') is None: #DAILY RAINBO FILTER timerequested = datetime(year=int(kwargs.get("year")), month=int(kwargs.get("month")), day=int(kwargs.get("day"))) delta = timedelta(days=1) dtprevious = timerequested - delta dtnext = timerequested + delta previous = reverse('spatialseriesdaily',kwargs={ "ident":kwargs.get("ident"), "coords":kwargs.get("coords"), "network":kwargs.get("network"), "trange":kwargs.get("trange"), "level":kwargs.get("level"), "var":kwargs.get("var"), "year" :"{:04d}".format(dtprevious.year), "month":"{:02d}".format(dtprevious.month), "day" :"{:02d}".format(dtprevious.day)})\ +"?dsn="+request.GET.get('dsn', defaultdsn)+"&type="+request.GET.get('type') next= reverse('spatialseriesdaily', kwargs={ "ident":kwargs.get("ident"), "coords":kwargs.get("coords"), "network":kwargs.get("network"), "trange":kwargs.get("trange"), "level":kwargs.get("level"), "var":kwargs.get("var"), "year" :"{:04d}".format(dtnext.year), "month":"{:02d}".format(dtnext.month), "day" :"{:02d}".format(dtnext.day)})\ +"?dsn="+request.GET.get('dsn', defaultdsn)+"&type="+request.GET.get('type') datefrom = "00:00_" + kwargs.get("year") + kwargs.get( "month") + kwargs.get("day") dateuntil = "23:59_" + kwargs.get("year") + kwargs.get( "month") + kwargs.get("day") less = None more = None else: #DAILY timerequested = datetime(year=int(kwargs.get("year")), month=int(kwargs.get("month")), day=int(kwargs.get("day"))) delta = timedelta(days=1) dtprevious = timerequested - delta dtnext = timerequested + delta previous = reverse( 'showdata:spatialseriesdaily', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtprevious.year), "month": "{:02d}".format(dtprevious.month), "day": "{:02d}".format(dtprevious.day) }) + "?dsn=" + request.GET.get('dsn', defaultdsn) next = reverse('showdata:spatialseriesdaily', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtnext.year), "month": "{:02d}".format(dtnext.month), "day": "{:02d}".format(dtnext.day) }) + "?dsn=" + request.GET.get( 'dsn', defaultdsn) more = None less = reverse('showdata:spatialserieshourly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": kwargs.get("year"), "month": kwargs.get("month"), "day": kwargs.get("day"), "hour": "12" }) + "?dsn=" + request.GET.get( 'dsn', defaultdsn) datefrom = "00:00_" + kwargs.get("year") + kwargs.get( "month") + kwargs.get("day") dateuntil = "23:59_" + kwargs.get("year") + kwargs.get( "month") + kwargs.get("day") else: #MONTHLY #WRONG previous = None next = None less = None more = None datefrom = "" dateuntil = "" else: #YEARLY #WRONG previous = None next = None less = None more = None datefrom = "" dateuntil = "" else: #WRONG previous = None next = None less = None more = None datefrom = "" dateuntil = "" if kwargs.get("level") == "*": leveltxt = "All levels" else: leveltxt = dballe.describe_level(*[ None if v == "-" else int(v) for v in kwargs.get("level").split(",") ]) if kwargs.get("trange") == "*": trangetxt = "All timeranges" else: trangetxt = dballe.describe_trange(*[ None if v == "-" else int(v) for v in kwargs.get("trange").split(",") ]) if kwargs.get("var") == "*": vartxt = "All vars" bcode = Bcode(bcode="B00001", description="Undefined", unit="Undefined", userunit="", scale=1.0, offset=0.0) else: varinfo = dballe.varinfo(kwargs.get("var")) #vartxt=varinfo.desc+" "+varinfo.unit vartxt = varinfo.desc bcode = Bcode.objects.get(bcode=kwargs.get("var")) spatialbox = {} for k in ('lonmin', 'latmin', 'lonmax', 'latmax'): if not request.GET.get(k, None) is None: spatialbox[k] = request.GET.get(k) timebox = {} for k in ('yearmin', 'monthmin', 'daymin', 'hourmin', 'minumin', 'secmin', 'yearmax', 'monthmax', 'daymax', 'hourmax', 'minumax', 'secmax'): if not request.GET.get(k, None) is None: timebox[k] = request.GET.get(k) return render( request, html_template, { "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": kwargs.get("year"), "month": kwargs.get("month"), "day": kwargs.get("day"), "hour": kwargs.get("hour"), "vartxt": vartxt, "trangetxt": trangetxt, "leveltxt": leveltxt, "datefrom": datefrom, "dateuntil": dateuntil, "previous": previous, "next": next, "less": less, "more": more, "dsn": request.GET.get('dsn', defaultdsn), "bcode": bcode, "spatialbox": spatialbox, "timebox": timebox })
def timeseries(request, **kwargs): if kwargs.get("year"): if kwargs.get("month"): if kwargs.get("day"): if kwargs.get("hour"): #HOURLY timerequested = datetime(year=int(kwargs.get("year")), month=int(kwargs.get("month")), day=int(kwargs.get("day")), hour=int(kwargs.get("hour"))) delta = timedelta(hours=1) dtprevious = timerequested - delta dtnext = timerequested + delta previous = reverse('showdata:timeserieshourly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtprevious.year), "month": "{:02d}".format(dtprevious.month), "day": "{:02d}".format(dtprevious.day), "hour": "{:02d}".format(dtprevious.hour) }) next = reverse('showdata:timeserieshourly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtnext.year), "month": "{:02d}".format(dtnext.month), "day": "{:02d}".format(dtnext.day), "hour": "{:02d}".format(dtnext.hour) }) more = reverse('showdata:timeseriesdaily', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": kwargs.get("year"), "month": kwargs.get("month"), "day": kwargs.get("day") }) less = None datefrom = kwargs.get("hour") + ":00_" + kwargs.get( "year") + kwargs.get("month") + kwargs.get("day") dateuntil = kwargs.get("hour") + ":59_" + kwargs.get( "year") + kwargs.get("month") + kwargs.get("day") else: #DAILY timerequested = datetime(year=int(kwargs.get("year")), month=int(kwargs.get("month")), day=int(kwargs.get("day"))) delta = timedelta(days=1) dtprevious = timerequested - delta dtnext = timerequested + delta previous = reverse('showdata:timeseriesdaily', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtprevious.year), "month": "{:02d}".format(dtprevious.month), "day": "{:02d}".format(dtprevious.day) }) next = reverse('showdata:timeseriesdaily', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtnext.year), "month": "{:02d}".format(dtnext.month), "day": "{:02d}".format(dtnext.day) }) more = reverse('showdata:timeseriesmonthly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": kwargs.get("year"), "month": kwargs.get("month") }) less = reverse('showdata:timeserieshourly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": kwargs.get("year"), "month": kwargs.get("month"), "day": kwargs.get("day"), "hour": "12" }) datefrom = "00:00_" + kwargs.get("year") + kwargs.get( "month") + kwargs.get("day") dateuntil = "23:59_" + kwargs.get("year") + kwargs.get( "month") + kwargs.get("day") else: #MONTHLY timerequested = datetime(year=int(kwargs.get("year")), month=int(kwargs.get("month")), day=15) delta = timedelta(days=30) dtprevious = timerequested - delta dtnext = timerequested + delta previous = reverse('showdata:timeseriesmonthly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtprevious.year), "month": "{:02d}".format(dtprevious.month) }) next = reverse('showdata:timeseriesmonthly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtnext.year), "month": "{:02d}".format(dtnext.month) }) more = reverse('showdata:timeseriesyearly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": kwargs.get("year") }) less = reverse('showdata:timeseriesdaily', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": kwargs.get("year"), "month": kwargs.get("month"), "day": "15" }) datefrom = "00:00_" + kwargs.get("year") + kwargs.get( "month") + "01" lastdayinmonth = "{:02d}".format( (dtnext.replace(day=1) - timedelta(days=1)).day) dateuntil = "23:59_" + kwargs.get("year") + kwargs.get( "month") + lastdayinmonth else: #YEARLY timerequested = datetime(year=int(kwargs.get("year")), month=6, day=15) delta = timedelta(days=30 * 12) dtprevious = timerequested - delta dtnext = timerequested + delta previous = reverse('showdata:timeseriesyearly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtprevious.year) }) next = reverse('showdata:timeseriesyearly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtnext.year) }) more = None less = reverse('showdata:timeseriesmonthly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": kwargs.get("year"), "month": "06" }) datefrom = "00:00_" + kwargs.get("year") + "0101" dateuntil = "23:59_" + kwargs.get("year") + "1231" else: #WRONG previous = None next = None less = None more = None datefrom = "" dateuntil = "" if kwargs.get("level") == "*": leveltxt = "All levels" else: leveltxt = dballe.describe_level(*[ None if v == "-" else int(v) for v in kwargs.get("level").split(",") ]) if kwargs.get("trange") == "*": trangetxt = "All timeranges" else: trangetxt = dballe.describe_trange(*[ None if v == "-" else int(v) for v in kwargs.get("trange").split(",") ]) if kwargs.get("var") == "*": vartxt = "All vars" bcode = Bcode(bcode="B00001", description="Undefined", unit="Undefined", userunit="", scale=1.0, offset=0.0) else: varinfo = dballe.varinfo(kwargs.get("var")) #vartxt=varinfo.desc+" "+varinfo.unit vartxt = varinfo.desc bcode = Bcode.objects.get(bcode=kwargs.get("var")) return render( request, 'showdata/timeseries.html', { "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "undescored_coords": kwargs.get("coords").replace(",", "_"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "undescored_trange": kwargs.get("trange").replace(",", "_"), "level": kwargs.get("level"), "undescored_level": kwargs.get("level").replace(",", "_"), "var": kwargs.get("var"), "year": kwargs.get("year"), "month": kwargs.get("month"), "day": kwargs.get("day"), "datefrom": datefrom, "dateuntil": dateuntil, "vartxt": vartxt, "trangetxt": trangetxt, "leveltxt": leveltxt, "previous": previous, "next": next, "less": less, "more": more, "type": request.GET.get('type', 'report_fixed'), "bcode": bcode })
def testTrange(self): self.assertIn("Accumulation", dballe.describe_trange(1))
def timeseries(request, html_template="showdata/timeseries.html", **kwargs): dsn = request.GET.get('dsn', defaulttimedsn) if (dsn == "report" or dsn == "sample"): dsn += "_fixed" # default to fixed dsn if kwargs.get("year"): if kwargs.get("month"): if kwargs.get("day"): if kwargs.get("hour"): #HOURLY timerequested = datetime(year=int(kwargs.get("year")), month=int(kwargs.get("month")), day=int(kwargs.get("day")), hour=int(kwargs.get("hour"))) delta = timedelta(hours=1) dtprevious = timerequested - delta dtnext = timerequested + delta previous = reverse( 'showdata:timeserieshourly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtprevious.year), "month": "{:02d}".format(dtprevious.month), "day": "{:02d}".format(dtprevious.day), "hour": "{:02d}".format(dtprevious.hour) }) + "?dsn=" + dsn next = reverse('showdata:timeserieshourly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtnext.year), "month": "{:02d}".format(dtnext.month), "day": "{:02d}".format(dtnext.day), "hour": "{:02d}".format(dtnext.hour) }) + "?dsn=" + dsn more = reverse('showdata:timeseriesdaily', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": kwargs.get("year"), "month": kwargs.get("month"), "day": kwargs.get("day") }) + "?dsn=" + dsn less = None datefrom = kwargs.get("hour") + ":00_" + kwargs.get( "year") + kwargs.get("month") + kwargs.get("day") dateuntil = kwargs.get("hour") + ":59_" + kwargs.get( "year") + kwargs.get("month") + kwargs.get("day") else: #DAILY timerequested = datetime(year=int(kwargs.get("year")), month=int(kwargs.get("month")), day=int(kwargs.get("day"))) delta = timedelta(days=1) dtprevious = timerequested - delta dtnext = timerequested + delta previous = reverse( 'showdata:timeseriesdaily', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtprevious.year), "month": "{:02d}".format(dtprevious.month), "day": "{:02d}".format(dtprevious.day) }) + "?dsn=" + dsn next = reverse('showdata:timeseriesdaily', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtnext.year), "month": "{:02d}".format(dtnext.month), "day": "{:02d}".format(dtnext.day) }) + "?dsn=" + dsn more = reverse('showdata:timeseriesmonthly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": kwargs.get("year"), "month": kwargs.get("month") }) + "?dsn=" + dsn less = reverse('showdata:timeserieshourly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": kwargs.get("year"), "month": kwargs.get("month"), "day": kwargs.get("day"), "hour": "12" }) + "?dsn=" + dsn datefrom = "00:00_" + kwargs.get("year") + kwargs.get( "month") + kwargs.get("day") dateuntil = "23:59_" + kwargs.get("year") + kwargs.get( "month") + kwargs.get("day") else: #MONTHLY timerequested = datetime(year=int(kwargs.get("year")), month=int(kwargs.get("month")), day=15) delta = timedelta(days=30) dtprevious = timerequested - delta dtnext = timerequested + delta previous = reverse( 'showdata:timeseriesmonthly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtprevious.year), "month": "{:02d}".format(dtprevious.month) }) + "?dsn=" + dsn next = reverse('showdata:timeseriesmonthly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtnext.year), "month": "{:02d}".format(dtnext.month) }) + "?dsn=" + dsn more = reverse('showdata:timeseriesyearly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": kwargs.get("year") }) + "?dsn=" + dsn less = reverse('showdata:timeseriesdaily', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": kwargs.get("year"), "month": kwargs.get("month"), "day": "15" }) + "?dsn=" + dsn datefrom = "00:00_" + kwargs.get("year") + kwargs.get( "month") + "01" lastdayinmonth = "{:02d}".format( (dtnext.replace(day=1) - timedelta(days=1)).day) dateuntil = "23:59_" + kwargs.get("year") + kwargs.get( "month") + lastdayinmonth else: #YEARLY timerequested = datetime(year=int(kwargs.get("year")), month=6, day=15) delta = timedelta(days=30 * 12) dtprevious = timerequested - delta dtnext = timerequested + delta previous = reverse('showdata:timeseriesyearly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtprevious.year) }) + "?dsn=" + dsn next = reverse('showdata:timeseriesyearly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": "{:04d}".format(dtnext.year) }) + "?dsn=" + dsn more = None less = reverse('showdata:timeseriesmonthly', kwargs={ "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "level": kwargs.get("level"), "var": kwargs.get("var"), "year": kwargs.get("year"), "month": "06" }) + "?dsn=" + dsn datefrom = "00:00_" + kwargs.get("year") + "0101" dateuntil = "23:59_" + kwargs.get("year") + "1231" else: #WRONG previous = None next = None less = None more = None datefrom = "" dateuntil = "" if kwargs.get("level") == "*": leveltxt = "All levels" else: leveltxt = dballe.describe_level(*[ None if v == "-" else int(v) for v in kwargs.get("level").split(",") ]) if kwargs.get("trange") == "*": trangetxt = "All timeranges" else: trangetxt = dballe.describe_trange(*[ None if v == "-" else int(v) for v in kwargs.get("trange").split(",") ]) if kwargs.get("var") == "*": bcode = Bcode(bcode="B00001", description="Undefined", unit="Undefined", userunit="", scale=1.0, offset=0.0) else: varinfo = dballe.varinfo(kwargs.get("var")) #vartxt=varinfo.desc+" "+varinfo.unit try: bcode = Bcode.objects.get(bcode=kwargs.get("var")) except: bcode = Bcode(bcode=kwargs.get("var"), description=varinfo.desc, unit=varinfo.unit, userunit=varinfo.unit, scale=1.0, offset=0.0) spatialbox = {} for k in ('lonmin', 'latmin', 'lonmax', 'latmax'): if not request.GET.get(k, None) is None: spatialbox[k] = request.GET.get(k) timebox = {} for k in ('yearmin', 'monthmin', 'daymin', 'hourmin', 'minumin', 'secmin', 'yearmax', 'monthmax', 'daymax', 'hourmax', 'minumax', 'secmax'): if not request.GET.get(k, None) is None: timebox[k] = request.GET.get(k) return render( request, html_template, { "ident": kwargs.get("ident"), "coords": kwargs.get("coords"), "undescored_coords": kwargs.get("coords").replace(",", "_"), "network": kwargs.get("network"), "trange": kwargs.get("trange"), "undescored_trange": kwargs.get("trange").replace(",", "_"), "level": kwargs.get("level"), "undescored_level": kwargs.get("level").replace(",", "_"), "var": kwargs.get("var"), "year": kwargs.get("year"), "month": kwargs.get("month"), "day": kwargs.get("day"), "hour": kwargs.get("hour"), "datefrom": datefrom, "dateuntil": dateuntil, "trangetxt": trangetxt, "leveltxt": leveltxt, "previous": previous, "next": next, "less": less, "more": more, "dsn": dsn, "bcode": bcode, "spatialbox": spatialbox, "timebox": timebox })
def spatialseries(request, **kwargs): if kwargs.get("year"): if kwargs.get("month"): if kwargs.get("day"): if kwargs.get("hour"): #HOURLY timerequested=datetime(year=int(kwargs.get("year")), month=int(kwargs.get("month")), day=int(kwargs.get("day")), hour=int(kwargs.get("hour"))) delta=timedelta(hours=1) dtprevious = timerequested - delta dtnext = timerequested + delta previous = reverse('showdata:spatialserieshourly', kwargs={ "ident":kwargs.get("ident"), "coords":kwargs.get("coords"), "network":kwargs.get("network"), "trange":kwargs.get("trange"), "level":kwargs.get("level"), "var":kwargs.get("var"), "year" :"{:04d}".format(dtprevious.year), "month":"{:02d}".format(dtprevious.month), "day" :"{:02d}".format(dtprevious.day), "hour" :"{:02d}".format(dtprevious.hour)}) next= reverse('showdata:spatialserieshourly', kwargs={ "ident":kwargs.get("ident"), "coords":kwargs.get("coords"), "network":kwargs.get("network"), "trange":kwargs.get("trange"), "level":kwargs.get("level"), "var":kwargs.get("var"), "year" :"{:04d}".format(dtnext.year), "month":"{:02d}".format(dtnext.month), "day" :"{:02d}".format(dtnext.day), "hour" :"{:02d}".format(dtnext.hour)}) more=reverse('showdata:spatialseriesdaily', kwargs={ "ident":kwargs.get("ident"), "coords":kwargs.get("coords"), "network":kwargs.get("network"), "trange":kwargs.get("trange"), "level":kwargs.get("level"), "var":kwargs.get("var"), "year":kwargs.get("year"), "month":kwargs.get("month"), "day":kwargs.get("day")}) less=None datefrom=kwargs.get("hour")+":00_"+kwargs.get("year")+kwargs.get("month")+kwargs.get("day") dateuntil=kwargs.get("hour")+":59_"+kwargs.get("year")+kwargs.get("month")+kwargs.get("day") else: #DAILY timerequested=datetime(year=int(kwargs.get("year")), month=int(kwargs.get("month")), day=int(kwargs.get("day"))) delta=timedelta(days=1) dtprevious = timerequested - delta dtnext = timerequested + delta previous = reverse('showdata:spatialseriesdaily', kwargs={ "ident":kwargs.get("ident"), "coords":kwargs.get("coords"), "network":kwargs.get("network"), "trange":kwargs.get("trange"), "level":kwargs.get("level"), "var":kwargs.get("var"), "year" :"{:04d}".format(dtprevious.year), "month":"{:02d}".format(dtprevious.month), "day" :"{:02d}".format(dtprevious.day)}) next= reverse('showdata:spatialseriesdaily', kwargs={ "ident":kwargs.get("ident"), "coords":kwargs.get("coords"), "network":kwargs.get("network"), "trange":kwargs.get("trange"), "level":kwargs.get("level"), "var":kwargs.get("var"), "year" :"{:04d}".format(dtnext.year), "month":"{:02d}".format(dtnext.month), "day" :"{:02d}".format(dtnext.day)}) more=None less=reverse('showdata:spatialserieshourly', kwargs={ "ident":kwargs.get("ident"), "coords":kwargs.get("coords"), "network":kwargs.get("network"), "trange":kwargs.get("trange"), "level":kwargs.get("level"), "var":kwargs.get("var"), "year":kwargs.get("year"), "month":kwargs.get("month"), "day":kwargs.get("day"), "hour":"12"}) datefrom="00:00_"+kwargs.get("year")+kwargs.get("month")+kwargs.get("day") dateuntil="23:59_"+kwargs.get("year")+kwargs.get("month")+kwargs.get("day") else: #MONTHLY #WRONG previous=None next=None less=None more=None datefrom="" dateuntil="" else: #YEARLY #WRONG previous=None next=None less=None more=None datefrom="" dateuntil="" else: #WRONG previous=None next=None less=None more=None datefrom="" dateuntil="" if kwargs.get("level")== "*": leveltxt="All levels" else: leveltxt=dballe.describe_level(*[None if v == "-" else int(v) for v in kwargs.get("level").split(",")]) if kwargs.get("trange")== "*": trangetxt="All timeranges" else: trangetxt=dballe.describe_trange(*[None if v == "-" else int(v) for v in kwargs.get("trange").split(",")]) if kwargs.get("var")== "*": vartxt="All vars" else: varinfo=dballe.varinfo(kwargs.get("var")) vartxt=varinfo.desc+" "+varinfo.unit return render(request, 'showdata/spatialseries.html',{ "ident":kwargs.get("ident"), "coords":kwargs.get("coords"), "network":kwargs.get("network"), "trange":kwargs.get("trange"), "level":kwargs.get("level"), "var":kwargs.get("var"), "year":kwargs.get("year"), "month":kwargs.get("month"), "day":kwargs.get("day"), "hour":kwargs.get("hour"), "vartxt":vartxt, "trangetxt":trangetxt, "leveltxt":leveltxt, "datefrom":datefrom,"dateuntil":dateuntil, "previous":previous,"next":next,"less":less,"more":more})
def testTrange(self): self.assertIn("Accumulation", dballe.describe_trange(1))