Publish first version
This commit is contained in:
parent
e167769041
commit
bac59704db
18 changed files with 564 additions and 1 deletions
14
app/resources/__init__.py
Normal file
14
app/resources/__init__.py
Normal file
|
@ -0,0 +1,14 @@
|
|||
def register_blueprints(api):
|
||||
from . import impulses, consumption
|
||||
|
||||
resources = (impulses, consumption, )
|
||||
|
||||
for resource_blp in (res.bp for res in resources):
|
||||
# Here we can register common handlers to all resources
|
||||
#
|
||||
# resource_blp.before_request(before_request_handler)
|
||||
# resource_blp.after_request(after_request_handler)
|
||||
|
||||
api.register_blueprint(resource_blp,
|
||||
url_prefix=f'/{resource_blp.url_prefix}')
|
||||
|
24
app/resources/consumption.py
Normal file
24
app/resources/consumption.py
Normal file
|
@ -0,0 +1,24 @@
|
|||
from .. import db
|
||||
import datetime
|
||||
from flask.views import MethodView
|
||||
from flask_smorest import Blueprint
|
||||
from ..schemas.consumption import ConsumptionSchema, ConsumptionQuerySchema
|
||||
from ..models.impulse import Impulse
|
||||
from sqlalchemy.sql import func
|
||||
|
||||
bp = Blueprint('consumption', 'consumptions', url_prefix='consumption',
|
||||
description='Operations on consumptions')
|
||||
|
||||
|
||||
@bp.route('/')
|
||||
class Consumptions(MethodView):
|
||||
@bp.arguments(ConsumptionQuerySchema, location="query")
|
||||
@bp.response(ConsumptionSchema(many=False))
|
||||
def get(self, args):
|
||||
if "timeperiod" in args:
|
||||
timeperiod = int(args['timeperiod'])
|
||||
filterdate = datetime.datetime.now() - datetime.timedelta(seconds=timeperiod)
|
||||
consumption = db.session.query(func.sum(Impulse.power)).filter(Impulse.created_at >= filterdate).first()[0]
|
||||
else:
|
||||
consumption = db.session.query(func.sum(Impulse.power)).first()[0]
|
||||
return {'consumption': consumption}
|
35
app/resources/impulses.py
Normal file
35
app/resources/impulses.py
Normal file
|
@ -0,0 +1,35 @@
|
|||
from .. import db
|
||||
from flask.views import MethodView
|
||||
from flask_smorest import Blueprint
|
||||
from ..schemas.impulse import ImpulseSchema, ImpulseQuerySchema
|
||||
from ..models.impulse import Impulse
|
||||
|
||||
bp = Blueprint('impulse', 'impulses', url_prefix='impulses',
|
||||
description='Operations on impulses')
|
||||
|
||||
|
||||
@bp.route('/')
|
||||
class Impulses(MethodView):
|
||||
|
||||
@bp.arguments(ImpulseQuerySchema, location="query")
|
||||
@bp.response(ImpulseSchema(many=True))
|
||||
def get(self, args):
|
||||
impulses = Impulse.query.all()
|
||||
return impulses
|
||||
|
||||
@bp.arguments(ImpulseSchema)
|
||||
@bp.response(ImpulseSchema, code=201)
|
||||
def post(self, new_impulse):
|
||||
db.session.add(new_impulse)
|
||||
db.session.commit()
|
||||
return new_impulse
|
||||
|
||||
|
||||
@bp.route('/<impulse_id>')
|
||||
class ImpulseById(MethodView):
|
||||
@bp.response(code=204)
|
||||
def delete(self, impulse_id):
|
||||
impulse = Impulse.query.filter_by(id=impulse_id).first()
|
||||
db.session.delete(impulse)
|
||||
db.session.commit()
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue