Exemplo n.º 1
0
    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})
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
    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})
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
    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})
Exemplo n.º 6
0
    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})
Exemplo n.º 7
0
    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})
Exemplo n.º 8
0
    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()
Exemplo n.º 9
0
    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})
Exemplo n.º 10
0
    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)
Exemplo n.º 11
0
    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
Exemplo n.º 12
0
 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)
Exemplo n.º 13
0
 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)
Exemplo n.º 14
0
 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)
Exemplo n.º 15
0
    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
Exemplo n.º 16
0
    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})
Exemplo n.º 17
0
    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)
Exemplo n.º 18
0
    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))
Exemplo n.º 19
0
    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()))
Exemplo n.º 20
0
 def __init__(self):
     self.users = db_session.query(User).all()
     self.meals = db_session.query(Meal).all()
     self.today = datetime.date.today()
Exemplo n.º 21
0
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]})
Exemplo n.º 22
0
def get_user(_token):
    user = db_session.query(Token).filter_by(token=_token).first()
    if user:
        return user.user
    return
Exemplo n.º 23
0
 def _form_items(self):
     return db_session.query(self.model).order_by(
         self.model.id.desc()).all()