def dispatch_request(self): if self.month_number and self.month_number not in range(1,13): return make_response(jsonify({'type': 'error', 'text': 'Wrong month number'}), 403) if self.user_id != self.head_user_id and self.head_user_id != 1: return make_response(jsonify({'type': 'error', 'text': 'Access denied'}), 403) _month_number = self.month_number if not self.month_number: _month_number = self.this_month if self.user_id: orders = list(map(lambda day: db_session.query(Order).filter_by( order_date=day, user_id=self.user_id).all(), self._get_month_dates(_month_number))) else: if self.head_user_id == 1: orders = list(map(lambda day: db_session.query(Order).filter_by( order_date=day).all(), self._get_month_dates(_month_number))) else: orders = list(map(lambda day: db_session.query(Order).filter_by( order_date=day, user_id=self.head_user_id).all(), self._get_month_dates(_month_number))) orders[:] = [_parse_order(_order) for _day_orders in orders for _order in _day_orders] return jsonify({'orders': orders})
def login(): json = request.json user = db_session.query(User).filter_by( username=json.get('username').strip()).first() if not user: return make_response( jsonify({ 'type': 'error', 'text': 'no users with such username' }), 401) elif check_password_hash(user.password, json.get('password').strip()): token = {} tokens = db_session.query(Token).filter_by(user_id=user.id).all() is_expired_list = list(map(lambda t: t.is_expired(), tokens)) all_expired = all(is_expired_list) if all_expired: token = Token(user_id=user.id) db_session.add(token) db_session.commit() else: token = [t for t in tokens if not t.is_expired()].pop() logged_user = _parse_user(user) logged_user.update({'token': token.token}) return make_response(jsonify(logged_user), 200) else: return make_response( jsonify({ 'type': 'error', 'text': 'password incorrect' }), 401)
def dispatch_request(self): if self.user_id != self.head_user_id and self.head_user_id != 1: return make_response( jsonify({ 'type': 'error', 'text': 'Access denied' }), 403) if self.user_id: orders = list( map( lambda day: db_session.query(Order).filter_by( order_date=day, user_id=self.user_id).all(), self._get_week_dates())) else: if self.head_user_id == 1: orders = list( map( lambda day: db_session.query(Order).filter_by( order_date=day).all(), self._get_week_dates())) else: orders = list( map( lambda day: db_session.query(Order).filter_by( order_date=day, user_id=self.head_user_id).all(), self._get_week_dates())) orders[:] = [ _parse_order(_order) for _day_orders in orders for _order in _day_orders ] return jsonify({'orders': orders})
def get_details(): user_id = g.user.id user = db_session.query(User).get(user_id) comments = db_session.query(Comment).filter_by(user_id=user_id).order_by( Comment.timestamp_created.desc()).limit(50).all() orders = db_session.query(Order).filter_by(user_id=user_id).order_by( Order.order_date.desc()).limit(50).all() user_dict = _parse_user(user) user_dict['orders'] = [_parse_order(order) for order in orders] user_dict['comments'] = [_parse_comment(comment) for comment in comments] return jsonify(user_dict)
def get(self, meal_id): if meal_id: meal = db_session.query(Meal).get(meal_id) if meal: return jsonify(_parse_meal(meal)) else: return make_response( jsonify({ 'type': 'error', 'text': 'not found' }), 404) meals = db_session.query(Meal).all() meals[:] = [_parse_meal(meal) for meal in meals] return jsonify({'meals': meals})
def get(self, user_id): if user_id: user = db_session.query(User).get(user_id) if user: return jsonify(_parse_user(user)) else: return make_response( jsonify({ 'type': 'error', 'text': 'not found' }), 404) users = db_session.query(User).all() users[:] = [_parse_user(user) for user in users] return jsonify({'users': users})
def get(self, order_id): if order_id: order = db_session.query(Order).get(order_id) if order: return jsonify(_parse_order(order)) else: return make_response( jsonify({ 'type': 'error', 'text': 'not found' }), 404) orders = db_session.query(Order).all() if orders: orders[:] = [_parse_order(order) for order in orders] return jsonify({'orders': orders})
def __init__(self, *args, **kwargs): self.model = args[0] kwargs = {key: value.pop() for key, value in kwargs.items()} self.page = int(kwargs.get('page', 0)) self.limit = int(kwargs.get('limit', 1000)) self.overall = db_session.query(self.model).count()
def get(self, comment_id): if comment_id: comment = db_session.query(Comment).get(comment_id) if comment: return jsonify(_parse_comment(comment)) else: return make_response( jsonify({ 'type': 'error', 'text': 'not found' }), 404) comments = db_session.query(Comment).all() comments[:] = [_parse_comment(comment) for comment in comments] return jsonify({'comments': comments})
def put(self, user_id): json_dict = { 'real_name': self.json.get('real_name'), 'username': self.json.get('username'), 'email': self.json.get('email') } if self.json.get('password'): json_dict.update({ 'password': generate_password_hash( str(self.json.get('password')).encode()) }) update_user = db_session.query(User).filter_by(id=user_id) try: update_user.update(json_dict) db_session.commit() except StatementError: return make_response( jsonify({ 'type': 'error', 'text': 'database error' }), 500) return make_response(jsonify(_parse_user(update_user.first())), 200)
def run_week(self): while self.step < 5: day = self.next_week - \ datetime.timedelta(days=self.today.weekday() - self.step) meals = db_session.query(Meal).filter_by(day_linked=day.weekday(), enabled=True) \ .order_by('category').all() yield meals, day self.step += 1
def delete(self, user_id): user = db_session.query(User).get(user_id) if user: db_session.delete(user) db_session.commit() return jsonify(_parse_user(user, detailed=False)) return make_response(jsonify({ 'type': 'error', 'text': 'not found' }), 404)
def delete(self, meal_id): meal = db_session.query(Meal).get(meal_id) if meal: db_session.delete(meal) db_session.commit() return jsonify(_parse_meal(meal, detailed=False)) return make_response(jsonify({ 'type': 'error', 'text': 'not found' }), 404)
def delete(self, comment_id): comment = db_session.query(Comment).get(comment_id) if comment: db_session.delete(comment) db_session.commit() return jsonify(_parse_comment(comment, detailed=False)) return make_response(jsonify({ 'type': 'error', 'text': 'not found' }), 404)
def _check_order(self): _orders = db_session.query(Order).filter_by( user_id=g.user.id, meal_id=self.json.get('meal_id'), order_date=self.json.get('order_date')).all() if _orders: return False else: return True
def get(self, order_id): if order_id: order = db_session.query(Order).get(order_id) if order: return jsonify(_parse_order(order)) else: return make_response(jsonify({'type': 'error', 'text': 'not found'}), 404) orders = Pagination(Order, **request.args).items() orders[:] = [_parse_order(order) for order in orders] return jsonify({'orders': orders})
def delete(self, order_id): order = db_session.query(Order).get(order_id) if order: _order_date = order.order_date if not self._check_actual_date(_order_date.timetuple().tm_yday): return make_response(jsonify({'type': 'error', 'text': 'not allowed remove old order'}), 403) db_session.delete(order) db_session.commit() return jsonify(_parse_order(order, detailed=False)) return make_response(jsonify({'type': 'error', 'text': 'not found'}), 404)
def post(self): check_comment = db_session.query(Comment).filter_by( user_id=g.user.id, meal_id=self.json.get('meal_id')).first() if check_comment: return make_response( jsonify({ 'type': 'error', 'text': 'you have already commented this meal' })) new_comment = Comment(user_id=g.user.id, meal_id=self.json.get('meal_id'), content=self.json.get('content', '')) db_session.add(new_comment) db_session.commit() return jsonify(_parse_comment(new_comment, detailed=False))
def put(self, meal_id): json_dict = { 'title': self.json.get('title'), 'description': self.json.get('description'), 'category': self.json.get('category'), 'day_linked': self.json.get('day_linked'), 'enabled': self.json.get('enabled'), 'source_price': self.json.get('source_price'), 'price': self.json.get('price') } json_dict.update({'timestamp_modified': datetime.datetime.utcnow()}) update_meal = db_session.query(Meal).filter_by(id=meal_id) update_meal.update(json_dict) db_session.commit() return jsonify(_parse_meal(update_meal.first()))
def __init__(self): self.users = db_session.query(User).all() self.meals = db_session.query(Meal).all() self.today = datetime.date.today()
def get_user_comments(user_id): comments = db_session.query(Comment).filter_by(user_id=user_id).all() return jsonify( {'comments': [_parse_comment(comment) for comment in comments]})
def get_user(_token): user = db_session.query(Token).filter_by(token=_token).first() if user: return user.user return
def _form_items(self): return db_session.query(self.model).order_by( self.model.id.desc()).all()