Compare commits

...

2 Commits

Author SHA1 Message Date
sessionm21 f2cad65626 add stimulus activation report 2020-05-13 02:40:59 +01:00
sessionm21 6b826d8e0f add gitignore 2020-05-13 02:40:44 +01:00
3 changed files with 16 additions and 2 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
*.swp
*.sqlite
__pycache__

View File

@ -26,10 +26,12 @@ class DataPoint(db.Model):
class StimulusActivation(db.Model): class StimulusActivation(db.Model):
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
collar_id = db.Column(db.Integer, db.ForeignKey('collar.id'))
longitude = db.Column(db.Float(precision=10)) longitude = db.Column(db.Float(precision=10))
latitude = db.Column(db.Float(precision=10)) latitude = db.Column(db.Float(precision=10))
volume_level = db.Column(db.Integer) volume_level = db.Column(db.Integer)
voltage_level = db.Column(db.Integer) voltage_level = db.Column(db.Integer)
datetime = db.Column(db.DateTime)
class User(db.Model): class User(db.Model):
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)

View File

@ -4,6 +4,7 @@ from .model import *
from flask import g, jsonify, request, abort from flask import g, jsonify, request, abort
from sqlalchemy import func from sqlalchemy import func
import geopy.distance import geopy.distance
from datetime import datetime, timedelta
@app.route('/') @app.route('/')
def index(): def index():
@ -49,7 +50,7 @@ def collars_distance():
distance_kilometers = 0 distance_kilometers = 0
coords_pairs = list(map(lambda e : (e.longitude, e.latitude), coords)) coords_pairs = list(map(lambda e : (e.longitude, e.latitude), coords))
coord_last = coords_pairs.pop() coord_last = coords_pairs.pop(0)
for coord in coords_pairs: for coord in coords_pairs:
distance_kilometers += geopy.distance.VincentyDistance(coord_last,coord).km distance_kilometers += geopy.distance.VincentyDistance(coord_last,coord).km
coord_last = coord coord_last = coord
@ -79,4 +80,12 @@ def collar_detail(id):
collar = Collar.query.filter_by(id=id).first() collar = Collar.query.filter_by(id=id).first()
if collar is None: abort(404) if collar is None: abort(404)
return jsonify({'id': collar.id, 'name': collar.name }) # get stimulus activation reports from within last 24 hours
since = datetime.now() - timedelta(hours=24)
stimulus_points = StimulusActivation.query.\
filter_by(collar_id=id).\
filter(StimulusActivation.datetime < since).\
order_by(StimulusActivation.datetime.desc())
n_stimulus = stimulus_points.count()
return jsonify({'id': collar.id, 'name': collar.name, 'stimilus': n_stimulus })