def post_ad(state="available"): is_available = state == "available" if is_available: form = AvailableAdForm() else: form = WantedAdForm() form.starting.flags.is_date = True if request.method == "GET": form.email.data = g.user.email if form.validate_on_submit(): room = Room(user=g.user, is_available=is_available) if room.is_available: form.room_pref.data = product(form.room_pref.data) else: form.room_type.data = product(form.room_type.data) form.populate_obj(room) room.urlname = str(uuid4())[:8] db.session.add(room) db.session.commit() # Search for matching rooms rooms_distance = Room.search_rooms(room) # Send emails to interested users for r, distance in rooms_distance: if room.is_available: # ad poster is looking for a person send_email_found_room(r.user, room, distance) else: # ad poster is looking for a room. send_email_found_person(r.user, room, distance) flash("Your ad has been posted!", category="info") return render_template("found.html", room=room, rooms_distance=rooms_distance) return render_template("autoform.html", form=form, title="Post a new advertisement", submit="Post ad")
def edit_ad(url): room = Room.query.filter_by(urlname=url).first() if not room and room.user == g.user: abort(404) if room.dead or get_days_ago(room.created_at) > OLD_DAYS.days: abort(404) occupied = Occupied.query.filter_by(space=room.occupieds).order_by("created_at").first() if occupied and get_days_ago(occupied.created_at) > OCCUPIED_DAYS.days: abort(404) if room.is_available: form = AvailableAdForm() else: form = WantedAdForm() form.starting.flags.is_date = True if request.method == "GET": form.process(obj=room) if room.is_available: form.room_pref.data = factorize(room.room_pref) else: form.room_type.data = factorize(room.room_type) form.email.data = g.user.email elif form.validate_on_submit(): if room.is_available: form.room_pref.data = product(form.room_pref.data) else: form.room_type.data = product(form.room_type.data) form.populate_obj(room) db.session.commit() return redirect(url_for("view_ad", url=room.urlname)) return render_template("autoform.html", form=form, title="Edit advertisement", submit="Save")