def get_receipts(): receipts = mongo.db.receipts if request.method == 'POST': '''Create new receipt''' receipt = request.json receipt['user'] = request.authorization['username'] # TODO Validate input, add date if missing etc db_operation = receipts.insert(receipt) ac_add_new_words(receipt) return jsonify({'savedReceipt': receipt, 'dbOperation': db_operation}) # 201 Created # 403 Forbidden if request.method == 'GET': ''' List all receipts for request user. Pagination is set by limit and offset variables. ''' limit = request.args.get('limit') or 1000 offset = request.args.get('offset') or 0 receipts = mongo.db.receipts user_receipts_cursor = receipts.find( {"user": request.authorization['username']}) user_receipts = [] for receipt in user_receipts_cursor: user_receipts.append(receipt) # Sort by date user_receipts.sort(key=lambda x: x['date']) return jsonify({'receipts': user_receipts[offset:offset+limit], 'pagination': { 'total': len(user_receipts), 'from': offset, 'to': offset + limit}})
def receipt(id): receipts = mongo.db.receipts if request.method == 'GET': '''Get receipt specified by ID''' # TODO return {'id': id, 'data': 'GET mocked'} if request.method == 'PUT': '''Update receipt data''' receipt = request.get_json() receipt['_id'] = ObjectId(receipt['_id']) query = receipts.save(receipt) # TODO A save receipt product names to autocomplete database ac_add_new_words(receipt) # add if not exists return jsonify(receipt) if request.method == 'DELETE': '''Delete receipt''' # TODO: other users receipts can now be removed by ID try: query = receipts.remove(ObjectId(id)) if query[u'n'] is 0: abort(404, "Problem with Mongo remove function") except: abort(404) return jsonify({"query": str(query)}), 200