def addItem(): """ GET /items: Render a create item form page POST /items: Create a new item and store it in database. Fields: title (required) description category (required) Created date are default saved as timestamp """ token = request.cookies.get('token') expire_time = request.cookies.get('expire_time') # Only authenticated user can add a new item if not token: flash("Please login.") return redirect(url_for('auth.login')) if request.method == "GET": user_data = validate_token(token, expire_time) categories = Category.get_all(session) return render_template('add_item.html', categories=categories, user=user_data) if request.method == "POST": # When user send POST request, # we get a token again from HTTP header, not from cookie token = request.headers.get('Authorization') # Only authenticated user can add a new item user_data = validate_token(token, expire_time) if not user_data: response = make_response( json.dumps({ "message": "Please login", "redirect": url_for('auth.login') }), 401 ) response.headers['Content-Type'] = 'application/json' return response # Get title, description, and category_id from the form. title = request.form.get('title') description = request.form.get('description') category_id = request.form.get('category') # In the form in HTML title field is required. # No title means the user use another way to send POST request if not title: response = make_response( json.dumps({ "message": "Please use the proper way", "redirect": url_for('basic.addItem') }), 401 ) response.headers['Content-Type'] = 'application/json' return response # Create a new item row with the fields user has inputted item = Item(title=title, description=description, category_id=category_id, user_id=user_data.get("id")) session.add(item) session.commit() # Redirect to the detail page, so user can check their input. response = make_response( json.dumps({ "message": "The item was successfully created.", "redirect": url_for('basic.showItemDetail', category_id=category_id, item_id=item.id) }), 200 ) response.headers['Content-Type'] = 'application/json' return response
password = "******".format(i + 1) enc, salt = encrypt_password(password) user = User(name="user{}".format(i + 1), email="user{}@email.com".format(i + 1), password=enc, salt=salt) session.add(user) session.commit() # Create dummy categories and items(10 categories, 100 items) # Example: # Category: category1 ~ category10 # Item: item1_c1 ~ item10_c10 for c in range(10): category = Category(name="category{}".format(c + 1)) session.add(category) session.commit() # 10 items in each category for i in range(10): item = Item(title="item{}_c{}".format(i + 1, c + 1), category_id=category.id, user_id=(i % 10 + 1)) item.description = "This is a description of category: \ {} and item: {}. This item is created by {}"\ .format(i + 1, c + 1, "user{}".format(i % 10 + 1)) session.add(item) session.commit() print "inserting rows done!"