diff --git a/foods/models.py b/foods/models.py index 929a294..0ee0ac3 100644 --- a/foods/models.py +++ b/foods/models.py @@ -1,6 +1,6 @@ import datetime from sqlalchemy.ext.hybrid import hybrid_property -from sqlalchemy import Column, Integer, REAL, CHAR, VARCHAR, TIMESTAMP, TEXT, ForeignKey +from sqlalchemy import Column, Integer, REAL, CHAR, VARCHAR, TIMESTAMP, TEXT, ForeignKey, JSON import json from flask_admin.contrib.sqla import ModelView from flask import jsonify @@ -230,5 +230,12 @@ class FoodModelView(ModelView): } +class DietRecord(db.Model): + id = Column(Integer(), primary_key=True) + generatedAt = Column('generated_at', TIMESTAMP(), nullable=False, default=datetime.datetime.now) + ownerId = Column('owner_id', Integer(), ForeignKey('users.id'), nullable=False) + diet = Column('diet', JSON(), nullable=False) + + db.event.listen(db.session, 'before_commit', SearchableMixin.before_commit) db.event.listen(db.session, 'after_commit', SearchableMixin.after_commit) diff --git a/foods/views.py b/foods/views.py index 0b509c4..1a6227e 100644 --- a/foods/views.py +++ b/foods/views.py @@ -1,13 +1,24 @@ from flask import jsonify, request -from flask_jwt_extended import jwt_required +from flask_jwt_extended import jwt_required, get_jwt_identity from foods import foods from foods.diet import dovade, sevade, yevade from foods.utils import (beautify_category, get_foods_with_categories, set_placeholder) from utils.decorators import confirmed_only +from users.models import User -from .models import Food +from .models import Food, DietRecord +from extentions import db + + +def submit_diet_record(food_ids,jwt_identity): + user = User.query.filter_by(Email=jwt_identity).first() + if user is None: + return + diet_record = DietRecord(ownerId=user.id, diet=food_ids) + db.session.add(diet_record) + db.session.commit() @foods.route('/yevade/', methods=['GET']) @@ -22,6 +33,7 @@ def get_yevade(calorie): if catdog is None: return jsonify({'error': 'Not Found'}), 404 else: + submit_diet_record([catdog[0].id],get_jwt_identity()) return jsonify({'diet': [catdog[0].simple_view, catdog[1]]}), 200 else: return jsonify({'error': 'I\'m a teapot'}), 418 @@ -42,6 +54,7 @@ def get_dovade(calorie): if catdog is None: return jsonify({'error': 'Not Found'}), 404 else: + submit_diet_record([catdog[0].id, catdog[1].id],get_jwt_identity()) return jsonify({'diet': [catdog[0].simple_view, catdog[1].simple_view, catdog[2]]}), 200 else: return jsonify({'error': 'I\'m a teapot'}), 418 @@ -64,6 +77,7 @@ def get_sevade(calorie): if catdog is None: return jsonify({'error': 'Not Found'}), 404 else: + submit_diet_record([catdog[0].id, catdog[1].id, catdog[2].id],get_jwt_identity()) return jsonify( {'diet': [catdog[0].simple_view, catdog[1].simple_view, catdog[2].simple_view, catdog[3]]}), 200 else: diff --git a/users/models.py b/users/models.py index f45660c..4efb285 100644 --- a/users/models.py +++ b/users/models.py @@ -20,6 +20,7 @@ class User(db.Model): ConfirmedOn = Column(DateTime(), nullable=True) FoodSet = db.relationship('Food', backref='author', lazy=True) PostSet = db.relationship('Post', backref='writer', lazy=True) + DietSet = db.relationship('DietRecord', backref='owner', lazy=True) def __init__(self, full_name, email, password, admin=False, registerd_on=None, confirmed=False, confirmed_on=None): @@ -53,4 +54,4 @@ class UserModelView(ModelView): column_filters = ['Admin', 'RegisteredOn', 'Confirmed', 'ConfirmedOn'] edit_modal = False # i don't know but it didn't work for true column_editable_list = ['Admin', 'Confirmed'] - form_excluded_columns = ('FoodSet', ) \ No newline at end of file + form_excluded_columns = ('FoodSet',)