def edit_item(category, item_title): edit_item_form = NewItemForm(request.form) edit_item_form.category.choices = \ [(cat.id, cat.name) for cat in session.query(Category).all()] # get item if there is no item abort 404 error item = item_controller.get_item_in_category(category, item_title) if item is None: abort(404) # validate form and check if logged in user who created the item if request.method == 'POST' and edit_item_form.validate()\ and current_user.id == item.user.id: # set item new values and save item.title = edit_item_form.title.data item.description = edit_item_form.description.data item.category_id = edit_item_form.category.data item_controller.create_item(item) flash("item successfully edited") return redirect(url_for('home')) # init form default values edit_item_form.title.default = item.title edit_item_form.description.default = item.description edit_item_form.category.default = item.category.id edit_item_form.process() return render_template('edit_item.html', form=edit_item_form, item=item)
def new(request): if request.method == 'POST': # We're accepting form data for save to DB if not request.user.is_authenticated(): return render_to_response('registration/pleaselogin.html') form = NewItemForm(request.POST) if not form.is_valid(): # throw error return HttpResponse("Error! Form invalid. Form: %s" % form) else: new_item = form.save(commit=False) # grab the user id from the current user #new_item.seller = request.user.id new_item.seller = request.user #cd = form.cleaned_data new_item.save() #send_mail( # cd['subject'], # cd['message'], # cd.get('email', '*****@*****.**'), # ['*****@*****.**'], #) #return HttpResponseRedirect('/contact/thanks/') return HttpResponseRedirect('/listings/') else: # user GET if not request.user.is_authenticated(): # not logged in return render_to_response('registration/pleaselogin.html') else: # we are logged in form = NewItemForm() return render_to_response('listings/item_form.html', {'form': form}, context_instance=RequestContext(request))
def new_item(): form = NewItemForm() form.category.choices = crud.get_categories() form.subcategory.choices = crud.get_subcategories() # POST if form.validate_on_submit() and \ form.image.validate(form, extra_validators=(FileRequired(),)): filename = save_image_upload(form.image) # create data # escape()したデータはテンプレートでsafeフィルターを併用すること crud.create_item( title=escape(form.title.data), description=escape(form.description.data), price=float(form.price.data), image=filename, category_id=form.category.data, subcategory_id=form.subcategory.data, ) # Redirect to some page flash( "Item {} has been successfully submitted".format( request.form.get("title")), "success") return redirect(url_for("home")) # GET return render_template("new_item.html", form=form)
def wishlist(userid): # file_folder = app.config['UPLOAD_FOLDER'] form = NewItemForm() form2 = ShareForm() form3 = LoginForm() if request.method == "POST": if form.validate_on_submit(): # generate item id id = str(uuid.uuid4().fields[-1])[:8] # get data from form title = form.title.data description = form.description.data webaddress = form.webaddress.data thumbnail = request.form['thumbnail'] # retrieve item from database item = WishlistItem.query.filter_by( title=title, owner=current_user.get_id()).first() # if the item already exists then flash error message and redirect back to the wishlist page if item is not None: flash('' + title + ' already exists in your wishlist', 'danger') return redirect( url_for('wishlist', userid=current_user.get_id())) # create wishlist object item = WishlistItem(id=id, owner=current_user.get_id(), title=title, description=description, webaddress=webaddress, thumbnail=thumbnail) # insert item into WishlistItem db.session.add(item) db.session.commit() flash('' + title + ' was added to your wishlist', 'success') # redirect user to their wishlist page return redirect(url_for("wishlist", userid=current_user.get_id())) else: # flash message for failed item addition flash('Invalid item data, please try again', 'danger') # redirect user to their wishlist page return redirect(url_for("wishlist", userid=current_user.get_id())) else: # retrieve user wishlist items from database items = WishlistItem.query.filter_by(owner=current_user.get_id()).all() return render_template("wishlist.html", userid=current_user.get_id(), form=form, form2=form2, form3=form3, items=items)
def add_item(request): if request.method == 'POST': print "post" copied_post = request.POST.copy() tags = request.POST['tags'].split(',') obj_list = [] #list of tag objects new_tags = [] #list of tags that don't exist yet for i in tags: if i and Tag.objects.filter(name=i.strip()): obj_list.append(Tag.objects.get(name=i.strip())) elif i: new_tags.append(i.strip()) copied_post['tags'] = obj_list copied_post['categories'] = [ Category.objects.get(id=request.POST['categories']) ] print copied_post['categories'] form = NewItemForm(copied_post, request.FILES) if form.is_valid(): data = form.cleaned_data user = User.objects.get(id=request.session['current_user_id']) instance = Product(name=data['name'], description=data['description'], image=request.FILES['image'], seller=user) # print tags instance.save() for i in new_tags: if not Tag.objects.filter(name=i): new_tag = Tag.objects.create(name=i) obj_list.append(new_tag) for i in obj_list: instance.tags.add(i) instance.categories.add(data['categories'][0]) instance.save() return redirect('/user') else: print form.errors return render( request, 'add_item/form.html', { 'form': form, 'products': Product.objects.all(), 'tags': Tag.objects.all(), 'user': User.objects.get(id=request.session['current_user_id']) }) else: form = NewItemForm() return render( request, 'add_item/form.html', { 'form': form, 'products': Product.objects.all(), 'tags': Tag.objects.all(), 'user': User.objects.get(id=request.session['current_user_id']) })
def add_item(): new_item_form = NewItemForm(request.form) new_item_form.category.choices = \ [(cat.id, cat.name) for cat in session.query(Category).all()] if request.method == 'POST' and new_item_form.validate(): item = Item(title=new_item_form.title.data, description=new_item_form.description.data, category_id=new_item_form.category.data, user_id=current_user.id) item_controller.create_item(item) flash("new Item successfully added") return redirect(url_for('home')) return render_template('new_item.html', form=new_item_form)
def create_item(): ''' Save a new Item in the database ''' owner_id = session.get('user_id') if not owner_id: return ("You must be logged in to be able to create items", 401) form = NewItemForm() if form.validate_on_submit(): file = request.files.get(form.image_file.name) saved_path = save_image(file) if file else None new_item = Item(name=form.data["name"], category_id=form.data["category_id"], description=form.data["description"], image_file=saved_path, owner_id=owner_id) db.session.add(new_item) db.session.commit() return "ok" return render_template('edit_item.html', form=form, action="/items")
def new_listing(): tut_completed = User.query.filter_by(id=current_user.id).first().tutorial_completed """Create a new item.""" form = NewItemForm() if form.validate_on_submit(): listing = Listing( name=form.listing_name.data, description=form.listing_description.data, available=True, unit= form.listing_unit.data, quantity= form.listing_quantity.data, price=form.listing_price.data, vendor_id=current_user.id, product_id=form.listing_productID.data ) db.session.add(listing) db.session.commit() flash('Item {} successfully created'.format(listing.name), 'form-success') return redirect(url_for('.new_listing', tut_completed=tut_completed)) return render_template('vendor/new_listing.html', form=form, tut_completed=tut_completed)
def update_item(id): ''' Updates an Item in the database ''' user_id = session.get('user_id') if not user_id: return ("You must be logged in to be able to edit items", 401) item = Item.query.filter_by(id=id).first() if not item: return "Not Found", 404 if item.owner_id != user_id: return ("This item doesn't belong to you", 401) form = NewItemForm(obj=item) if form.validate_on_submit(): file = request.files.get(form.image_file.name) saved_path = save_image(file) if file else None if saved_path: item.image_file = saved_path item.name = form.data["name"] item.description = form.data["description"] db.session.commit() return "ok" return render_template('edit_item.html', form=form, action=item.url)
def add_item(id): form = NewItemForm() new_item = Item(request.form['item_name'], id) if new_item is not None: db.session.add(new_item) db.session.commit() response = jsonify({'MSG': 'Item added to list'}) response.status_code = 201 else: response.jsonify({'ERR': 'Item wasnt added to list'}) response.status_code = 400 return response
def checkout_item (request, idnum): if len(CheckoutItem.objects.filter(id=idnum)) == 0: if request.method == 'POST': form = NewItemForm(request.POST) if form.is_valid(): item = form.save(commit=False) item.id = idnum item.save() else: form = NewItemForm() return render(request, "scanner/newitem.html", {"idnum": idnum, "form": form}) else: form = NewItemForm() return render(request, "scanner/newitem.html", {"idnum": idnum, "form": form}) return render(request, "scanner/item.html", {"item": CheckoutItem.objects.get(id=idnum)})
def add(): form = NewItemForm() if form.validate_on_submit(): #filename = secure_filename(form.image.data.filename) # save new data here file = form.image.data if file: filename = secure_filename(file.filename) file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) key = form.key.data new_item = Item(key=key, image=filename) db.session.add(new_item) db.session.commit() return redirect('/') else: return render_template('add.html', title = 'Add new item', form=form)
def schedule(request): schedule=[] today = date.today() while today.weekday() >= 5 or ScheduleDay.objects.filter(date=today).count() > 0 and ScheduleDay.objects.get(date=today).day_off: today += timedelta(1) schedule_day = None if ScheduleDay.objects.filter(date=today).count() > 0: schedule_day = ScheduleDay.objects.get(date=today) else: done = False one_day = timedelta(1) today_dt = datetime.combine(today, time()) today_dt -= one_day new_date = today_dt.date() days_ellapsed = 0 day = 0 while not done: if new_date.weekday() < 5 and ScheduleDay.objects.filter(date=new_date).count() == 0: days_ellapsed += 1 elif new_date.weekday() < 5 and not ScheduleDay.objects.get(date=new_date).day_off: done = True day = (ScheduleDay.objects.get(date=new_date).day + days_ellapsed) % 7 new_dt = datetime.combine(new_date, time()) new_dt -= one_day new_date = new_dt.date() schedule_day = ScheduleDay(date=today, day_off=False, day=day, schedule="") schedule_day.save() print(schedule_day.day) if (schedule_day.schedule == "" schedule_day.schedule = master_schedule[schedule_day.day] s if len(schedule_day.period_set.all()) == 0: for i in range(len(schedule_day.schedule)): period = Period(day=schedule_day, period_number=i, period_letter=schedule_day.schedule[i:i + 1]) period.save() schedule.append([["Day " + str(schedule_day.day + 1)]]) for period in schedule_day.schedule: schedule.append([[period]]) return render(request, "scanner/schedule.html", {'schedule_table': schedule}) @not_login_required def checkin (request): messages = [] if request.method == 'POST': form = ScanForm(request.POST) if form.is_valid(): data = form.cleaned_data idnum = data["scan"] if len(Person.objects.filter(id=idnum)) != 0: person = Person.objects.get(id=idnum) checkins = Checkin.objects.filter(person=person, completed=False) if len(checkins) == 0: messages.append("Successfully checked in " + person.first_name + " " + person.last_name) new_checkin = Checkin(person=person, checkin=datetime.now(), checkout=datetime.now()) new_checkin.save() else: for obj in checkins: obj.checkout = datetime.now() obj.completed = True obj.save() person.hours += float((obj.checkout - obj.checkin).total_seconds()) / 3600 person.save() messages.append("Successfully checked out " + person.first_name + " " + person.last_name) form = ScanForm() return render(request, "scanner/checkin.html", {"form": form, "messages": messages}) @not_login_required def scan (request, idnum): idnum = int(idnum) if idnum < 10000 or idnum > 20000: return user(request, idnum) if idnum > 10000 and idnum < 20000: return checkout_item(request, idnum) return render(request, "scanner/item.html", {"idnum": idnum}) @not_login_required def user (request, idnum): if len(Person.objects.filter(id=idnum)) == 0: if request.method == 'POST': form = NewUserForm(request.POST) if form.is_valid(): person = form.save(commit=False) person.id = idnum person.save() else: form = NewUserForm() return render(request, "scanner/newuser.html", {"idnum": idnum, "form": form}) person = Person.objects.get(id=idnum) messages = [] if request.method == 'POST': form = ScanForm(request.POST) if form.is_valid(): if len(CheckoutItem.objects.filter(id=form.cleaned_data["scan"])) > 0: item = CheckoutItem.objects.get(id=form.cleaned_data["scan"]) if len(Checkout.objects.filter(person=person, item=item, checked_in=False)) > 0: for checkout in Checkout.objects.filter(person=person, item=item, checked_in=False): checkout.checked_in = True checkout.date_returned = datetime.now() checkout.save() messages.append(item.name + " successfully checked in.") else: new_checkout = Checkout(person=person, item=CheckoutItem.objects.get(id=form.cleaned_data["scan"]), date_checked_out=datetime.now() , date_due=datetime.now() + timedelta(CheckoutItem.objects.get(id=form.cleaned_data["scan"]).default_checkout_time)) new_checkout.save() messages.append(item.name + " successfully checked out.") else: messages.append("That item is not in the database.") form = ScanForm() return render(request, "scanner/user.html", {"person": person, "form": form, "checkouts": Checkout.objects.filter(person=person, checked_in=False), "messages": messages}) @not_login_required def checkout_item (request, idnum): if len(CheckoutItem.objects.filter(id=idnum)) == 0: if request.method == 'POST': form = NewItemForm(request.POST) if form.is_valid(): item = form.save(commit=False) item.id = idnum item.save() else: form = NewItemForm() return render(request, "scanner/newitem.html", {"idnum": idnum, "form": form}) else: form = NewItemForm() return render(request, "scanner/newitem.html", {"idnum": idnum, "form": form}) return render(request, "scanner/item.html", {"item": CheckoutItem.objects.get(id=idnum)}) @not_login_required def checkout(request, personid, itemid): return render(request, "scanner/item.html", {"item": CheckoutItem.objects.get(id=itemid)}) @login_required def admin(request): person = request.user.leadershipmember return render(request, "scanner/admin.html", {"person": person}) @not_login_required def admin_login(request): if request.method == 'POST': form = AdminLoginForm(request.POST) if form.is_valid(): data = form.cleaned_data username = data["id"] password = data["password"] user = authenticate(username=username, password=password) if user is not None: login(request, user) return HttpResponseRedirect(reverse("admin")) form = AdminLoginForm() return render(request, "scanner/admin_login.html", {"form": form}) @login_required def admin_add_leadership(request): if not request.user.leadershipmember.can_add_leadership_members: return HttpResponseRedirect(reverse("admin")) if request.method == 'POST': form = NewLeadershipMemberForm(request.POST) if form.is_valid(): data = form.cleaned_data person = Person.objects.get(id=data["id"]) if len(User.objects.filter(username=data["id"])) == 0: print(data["password"]) user = User.objects.create_user(data["id"], data["email"], data["password"]) user.save() user = User.objects.get(username=data["id"]) leadershipmember = LeadershipMember(first_name=person.first_name, last_name=person.last_name, id=person.id, hours=person.hours, periods=data["periods"], user=user) person.delete() leadershipmember.save() return HttpResponseRedirect(reverse("admin")) form = NewLeadershipMemberForm() return render(request, "scanner/admin_add_leadership.html", {"form": form}) @login_required def admin_change_permissions(request): if not request.user.leadershipmember.can_change_leadership_permissions: return HttpResponseRedirect(reverse("admin")) leadershipmembers = LeadershipMember.objects.exclude(id=request.user.leadershipmember.id) return render(request, "scanner/admin_change_permissions.html", {'leadershipmembers': leadershipmembers}) @login_required def admin_edit_info(request): if request.method == 'POST': form = LeadershipEditInfoForm(request.POST, instance=request.user.leadershipmember) if form.is_valid(): form.save() return HttpResponseRedirect(reverse("admin")) form = LeadershipEditInfoForm(instance=request.user.leadershipmember) return render(request, "scanner/admin_edit_info.html", {"form": form}) @login_required def admin_change_user_permissions(request, id): if not request.user.leadershipmember.can_change_leadership_permissions: return HttpResponseRedirect(reverse("admin")) if request.method == 'POST': form = ChangePermissionsForm(request.POST) if form.is_valid(): print("1") data = form.cleaned_data lm = LeadershipMember.objects.get(id=id) lm.can_add_leadership_members = data["can_add_leadership_members"] lm.can_change_leadership_permissions = data["can_change_leadership_permissions"] lm.save() return HttpResponseRedirect(reverse("admin change permissions")) person = request.user.leadershipmember form = ChangePermissionsForm(instance=LeadershipMember.objects.get(id=id)) return render(request, "scanner/admin_change_user_permissions.html", {"form": form, "person": person, "id": id})