diff --git a/backend/promis/backend_api/views.py b/backend/promis/backend_api/views.py index f533d1b..72aa7ab 100644 --- a/backend/promis/backend_api/views.py +++ b/backend/promis/backend_api/views.py @@ -26,6 +26,8 @@ from rest_framework.exceptions import NotAuthenticated, NotFound, MethodNotAllowed from rest_framework.renderers import JSONRenderer, BrowsableAPIRenderer +from django.contrib.gis.geos import GEOSGeometry + import unix_time import datetime @@ -274,11 +276,11 @@ def get_queryset(self): time_begin = self.request.query_params.get('time_begin') if time_begin: - filter_opts['session__time_begin__gte'] = unix_time.maketime(time_begin) + filter_opts['session__time_begin__gte'] = unix_time.maketime(int(time_begin)) time_end = self.request.query_params.get('time_end') - if time_begin: - filter_opts['session__time_end__lte'] = unix_time.maketime(time_end) + if time_end: + filter_opts['session__time_end__lte'] = unix_time.maketime(int(time_end)) # NOTE: channels and filters are combined as *AND* not *OR* at the moment # so they are mutually exclusive in a sense, but this won't be a problem for alpha diff --git a/backend/promis/classes/test_set.py b/backend/promis/classes/test_set.py index 01ff23d..d78c117 100644 --- a/backend/promis/classes/test_set.py +++ b/backend/promis/classes/test_set.py @@ -28,7 +28,7 @@ # TODO: yield/with problem, see potential.py for details # TODO: make deploy figure out Docker's bridge IP dynamically -def general_fetch(path, satellite_object, add_measurement=False): +def general_fetch(path, satellite_object): with ftp_helper.FTPChecker(path, "172.17.0.1", 2121) as ftp: # Iterating over all the sessions available for sess_name in ftp.nlst(): @@ -44,21 +44,21 @@ def general_fetch(path, satellite_object, add_measurement=False): # TODO: srid should be 4979 see #222 sess_obj = model.Session.objects.create(time_begin = time_start, time_end = time_end, geo_line = LineString(*line_gen, srid = 4326), space_project = satellite_object ) - if add_measurement: - # Fetching JSON documents from the FTP - docs = [] - for fname in [ "channel", "parameter" ]: - with ftp.xopen(fname + ".json") as fp: - docs.append(model.Document.objects.create(json_data = json.loads(fp.getvalue())) ) + # Fetching JSON documents from the FTP + docs = [] + for fname in [ "channel", "parameter" ]: + with ftp.xopen(fname + ".json") as fp: + docs.append(model.Document.objects.create(json_data = json.loads(fp.getvalue())) ) - # Locating channels/parameters - # TODO: natural keys - chan_obj = model.Channel.objects.language('en').filter(description = "Termometer reading")[0] - par_obj = model.Parameter.objects.language('en').filter(name = "Measured Space Temperature")[0] + # Locating channels/parameters + # TODO: natural keys + # TODO: both use same things for now + chan_obj = model.Channel.objects.language('en').filter(description = "Termometer reading (%d)" % satellite_object.id)[0] + par_obj = model.Parameter.objects.language('en').filter(name = "Measured Space Temperature (%d)" % satellite_object.id)[0] - # Creating the measurement object - # TODO: frequencies? - model.Measurement.objects.create(session = sess_obj, parameter = par_obj, channel = chan_obj, channel_doc = docs[0], parameter_doc = docs[1], sampling_frequency = 1, max_frequency = 1, min_frequency = 1) + # Creating the measurement object + # TODO: frequencies? + model.Measurement.objects.create(session = sess_obj, parameter = par_obj, channel = chan_obj, channel_doc = docs[0], parameter_doc = docs[1], sampling_frequency = 1, max_frequency = 1, min_frequency = 1) ftp.cwd("..") @@ -74,7 +74,7 @@ def check(self): yield v def fetch(self, data_id): - general_fetch("roundabout/" + data_id, self.project_obj, True) + general_fetch("roundabout/" + data_id, self.project_obj) class PeaceLove(BaseProject): diff --git a/test/data/generate.py b/test/data/generate.py index 509b6a6..d2203c0 100755 --- a/test/data/generate.py +++ b/test/data/generate.py @@ -124,15 +124,6 @@ def insert_orbit(folder, start_time, gen_func, data_func=None): time = new_time -# Seed the PRNG -seed(random_seed) - -# Ready, steady, go! -insert_orbit("peace_love/heart", heart_start, heart) -insert_orbit("peace_love/circle", peace_start, circle) -insert_orbit("peace_love/vline", lines_start, vline) -insert_orbit("peace_love/uptick", utick_start, uptick) - def gen_space_temp(): freq = 100 amps = [ randint(50,100) for i in range(freq*orbit_sec) ] @@ -141,6 +132,15 @@ def gen_space_temp(): return mv, amps +# Seed the PRNG +seed(random_seed) + +# Ready, steady, go! +insert_orbit("peace_love/heart", heart_start, heart, gen_space_temp) +insert_orbit("peace_love/circle", peace_start, circle, gen_space_temp) +insert_orbit("peace_love/vline", lines_start, vline, gen_space_temp) +insert_orbit("peace_love/uptick", utick_start, uptick, gen_space_temp) + # TODO: break into several datapoints ("days") # TODO: make short and long sessions # TODO: variable frequencies et al diff --git a/test/data/test_set.json b/test/data/test_set.json index 90aeff7..f960da4 100644 --- a/test/data/test_set.json +++ b/test/data/test_set.json @@ -88,7 +88,7 @@ "model": "backend_api.devicetranslation", "pk": 42001, "fields": { - "name": "Space Termometer", + "name": "Space Termometer (42000)", "description": "Fictional device to measure random things.", "language_code": "en", "master": 42000 @@ -98,15 +98,42 @@ "model": "backend_api.devicetranslation", "pk": 42002, "fields": { - "name": "\u041a\u043e\u0441\u043c\u0456\u0447\u043d\u0438\u0439 \u0422\u0435\u0440\u043c\u043e\u043c\u0435\u0442\u0440", + "name": "\u041a\u043e\u0441\u043c\u0456\u0447\u043d\u0438\u0439 \u0422\u0435\u0440\u043c\u043e\u043c\u0435\u0442\u0440 (42000)", "description": "\u0412\u0438\u0434\u0443\u043c\u0430\u043d\u0438\u0439 \u043f\u0440\u0438\u0441\u0442\u0440\u0456\u0439 \u044f\u043a\u0438\u0439 \u043c\u0456\u0440\u044f\u0454 \u0432\u0438\u043f\u0430\u0434\u043a\u043e\u0432\u0456 \u0440\u0435\u0447\u0456", "language_code": "uk", "master": 42000 } }, +{ + "model": "backend_api.devicetranslation", + "pk": 42003, + "fields": { + "name": "Space Termometer (42001)", + "description": "Fictional device to measure random things.", + "language_code": "en", + "master": 42001 + } +}, +{ + "model": "backend_api.devicetranslation", + "pk": 42004, + "fields": { + "name": "\u041a\u043e\u0441\u043c\u0456\u0447\u043d\u0438\u0439 \u0422\u0435\u0440\u043c\u043e\u043c\u0435\u0442\u0440 (42001)", + "description": "\u0412\u0438\u0434\u0443\u043c\u0430\u043d\u0438\u0439 \u043f\u0440\u0438\u0441\u0442\u0440\u0456\u0439 \u044f\u043a\u0438\u0439 \u043c\u0456\u0440\u044f\u0454 \u0432\u0438\u043f\u0430\u0434\u043a\u043e\u0432\u0456 \u0440\u0435\u0447\u0456", + "language_code": "uk", + "master": 42001 + } +}, { "model": "backend_api.device", "pk": 42000, + "fields": { + "space_project": 42000 + } +}, +{ + "model": "backend_api.device", + "pk": 42001, "fields": { "space_project": 42001 } @@ -116,7 +143,7 @@ "pk": 42001, "fields": { "name": "U", - "description": "Termometer reading", + "description": "Termometer reading (42000)", "language_code": "en", "master": 42000 } @@ -126,11 +153,31 @@ "pk": 42002, "fields": { "name": "U", - "description": "\u041f\u043e\u043a\u0430\u0437\u0438 \u0442\u0435\u0440\u043c\u043e\u043c\u0435\u0442\u0440\u0443", + "description": "\u041f\u043e\u043a\u0430\u0437\u0438 \u0442\u0435\u0440\u043c\u043e\u043c\u0435\u0442\u0440\u0443 (42000)", "language_code": "uk", "master": 42000 } }, +{ + "model": "backend_api.channeltranslation", + "pk": 42003, + "fields": { + "name": "U", + "description": "Termometer reading (42001)", + "language_code": "en", + "master": 42001 + } +}, +{ + "model": "backend_api.channeltranslation", + "pk": 42004, + "fields": { + "name": "U", + "description": "\u041f\u043e\u043a\u0430\u0437\u0438 \u0442\u0435\u0440\u043c\u043e\u043c\u0435\u0442\u0440\u0443 (42001)", + "language_code": "uk", + "master": 42001 + } +}, { "model": "backend_api.channel", "pk": 42000, @@ -141,6 +188,16 @@ "klass": [ "classes.base_data.SingleVarTimeSeries" ] } }, +{ + "model": "backend_api.channel", + "pk": 42001, + "fields": { + "value": 1, + "device": 42001, + "exponent": -6, + "klass": [ "classes.base_data.SingleVarTimeSeries" ] + } +}, { "model": "backend_api.unittranslation", "pk": 42001, @@ -198,7 +255,7 @@ "model": "backend_api.parametertranslation", "pk": 42001, "fields": { - "name": "Measured Space Temperature", + "name": "Measured Space Temperature (42000)", "description": "What our satellite thinks the temperature is.", "language_code": "en", "master": 42000 @@ -208,12 +265,32 @@ "model": "backend_api.parametertranslation", "pk": 42002, "fields": { - "name": "\u0412\u0438\u043c\u0456\u0440\u0438 \u041a\u043e\u0441\u043c\u0456\u0447\u043d\u043e\u0457 \u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0438", + "name": "\u0412\u0438\u043c\u0456\u0440\u0438 \u041a\u043e\u0441\u043c\u0456\u0447\u043d\u043e\u0457 \u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0438 (42000)", "description": "\u0429\u043e \u043d\u0430\u0448 \u0441\u0443\u043f\u0443\u0442\u043d\u0438\u043a \u0434\u0443\u043c\u0430\u0454 \u0437 \u043f\u0440\u0438\u0432\u043e\u0434\u0443 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0438", "language_code": "uk", "master": 42000 } }, +{ + "model": "backend_api.parametertranslation", + "pk": 42003, + "fields": { + "name": "Measured Space Temperature (42001)", + "description": "What our satellite thinks the temperature is.", + "language_code": "en", + "master": 42001 + } +}, +{ + "model": "backend_api.parametertranslation", + "pk": 42004, + "fields": { + "name": "\u0412\u0438\u043c\u0456\u0440\u0438 \u041a\u043e\u0441\u043c\u0456\u0447\u043d\u043e\u0457 \u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0438 (42001)", + "description": "\u0429\u043e \u043d\u0430\u0448 \u0441\u0443\u043f\u0443\u0442\u043d\u0438\u043a \u0434\u0443\u043c\u0430\u0454 \u0437 \u043f\u0440\u0438\u0432\u043e\u0434\u0443 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0438", + "language_code": "uk", + "master": 42001 + } +}, { "model": "backend_api.parameter", "pk": 42000, @@ -223,5 +300,15 @@ "exponent": 0, "klass": [ "classes.base_data.SingleVarTimeSeries" ] } +}, +{ + "model": "backend_api.parameter", + "pk": 42001, + "fields": { + "value": 42000, + "channel": 42001, + "exponent": 0, + "klass": [ "classes.base_data.SingleVarTimeSeries" ] + } } ]