def user(username): u = User() user = u.get_user(username=username) title = request.form.get('new-title') body = request.form.get('new-body') if title and body: p = Post(title=title, body=body, user_id=user.id) p.add_post() posts = u.get_posts_by_user(user.id) if not posts: posts = [ Post(id=2, title="There's nothing here yet!", body="There's nothing here yet!", user_id=-1) ] if user: return render_template('user_page.html', username=user.username, posts=posts) return "user not found" # TODO change the custom 404
def home(): """Return landing page if not logged in, else show dashboard""" # TODO: Gatekeeper Controller username = request.cookies.get('username') user = User.get_user(username) if user: return redirect(url_for('timeline')) else: return render_template('home.html', page_title="FILL")
def admin(): """Return Admin Page""" username = request.cookies.get('username') user = User.get_user(username) if user: joined_events = Event.get_events_by_volunteer(user.key) created_events = Event.get_events_by_admin(user.key) requested_events = Event.get_events_by_request(user.key) return render_template('admin.html', user=user, joined_events=joined_events, created_events=created_events, requested_events=requested_events) else: return render_template('home.html', page_title="FILL")
def register(): form = RegistrationForm() if form.validate_on_submit(): user = User(True, form.username.data, form.email.data) user.set_password(form.password.data) user.add_user() return user.get_user(form.username.data) flash_errors(form.errors.items()) return render_template('register.html', title='Register', form=form)
def check_requests(id=None): # Check ID if id is None: return redirect(url_for('admin')) # Get user username = request.cookies.get('username') user = User.get_user(username) if not user: return redirect(url_for('home')) # Get Event event = Event.get_event_by_id(id) # Handle Render Form Template if request.method == 'GET' and event.admin.id() == user.key.id(): # Check for GET Parameters user_id = request.args.get("user") if not user_id: return render_template('check_requests.html', event=event) user = User.get_user_by_id(user_id) volunteer = request.args.get("volunteer") driver = request.args.get("driver") translator = request.args.get("translator") accept = int(request.args.get("accept")) # Accept the User if accept: if volunteer: event.volunteer_requests = [x for x in event.volunteer_requests if x != user.key] event.volunteers.append(user.key) if driver: event.driver_requests = [x for x in event.driver_requests if x != user.key] event.drivers.append(user.key) if translator: event.translator_requests = [x for x in event.translator_requests if x != user.key] event.translators.append(user.key) event.put() return render_template('check_requests.html', event=event, success="User successfully accepted!") # Reject the User else: if volunteer: event.volunteer_requests = [x for x in event.volunteer_requests if x != user.key] if driver: event.driver_requests = [x for x in event.driver_requests if x != user.key] if translator: event.translator_requests = [x for x in event.translator_requests if x != user.key] event.put() return render_template('check_requests.html', event=event, success="User successfully rejected.") else: return redirect(url_for('admin'))
def edit_event(id=None): """Edit Event Form""" # Check ID if id is None: return redirect(url_for('admin')) # Get user username = request.cookies.get('username') user = User.get_user(username) if not user: return redirect(url_for('home')) # Get Event event = Event.get_event_by_id(id) if event.admin.id() != user.key.id(): return redirect(url_for('admin')) # Handle Requests if request.method == 'GET': return render_template('edit_event.html', event=event) else: # Parse the form name = request.form["name"] date = request.form["date"] date = datetime.strptime(date, "%m/%d/%Y %H:%M %p") location = request.form["location"] accessibility = request.form["accessibility"] hours = int(request.form["hours"]) description = request.form["description"] language = request.form["language"] physical_activity = request.form["physical_activity"] volunteers_needed = int(request.form["volunteers_needed"]) drivers_needed = int(request.form["drivers_needed"]) translators_needed = int(request.form["translators_needed"]) # Update the event event.name = name event.date = date event.hours = hours event.location = location event.accessibility = accessibility event.description = description event.language = language event.physical_activity = physical_activity event.volunteers_needed = int(volunteers_needed) event.drivers_needed = int(drivers_needed) event.translators_needed = int(translators_needed) event.put() # Return success message return render_template('edit_event.html', event=event, success="Event successfully edited!")
def timeline(id=None): """Return Profile Page""" # Hacky redirect - refactor in the future username = request.cookies.get('username') cookie_user = User.get_user(username) if not id: return redirect('timeline/' + str(cookie_user.key.id())) else: user = User.get_user_by_id(id) if user: is_owner = cookie_user == user joined_events = Event.get_events_by_volunteer(user.key) created_events = Event.get_events_by_admin(user.key) posts = Post.get_posts_by_writer(user.key) first_name = user.name.split(" ")[0] return render_template('timeline.html', is_owner=is_owner, user=user, first_name=first_name, joined_events=joined_events, created_events=created_events, posts=posts) else: return render_template('home.html', page_title="FILL")
def join_event(id=None): # Check event id exists if id is None: return redirect(url_for('events')) # Get user and event username = request.cookies.get('username') user = User.get_user(username) event = Event.get_event_by_id(id) # Show form or process join as query if request.method == 'GET': volunteer = request.args.get("volunteer") driver = request.args.get("driver") translator = request.args.get("translator") return render_template('join_event.html', event=event, volunteer=volunteer, driver=driver, translator=translator) # Handle post data from form else: volunteer = request.form.get("volunteer") driver = request.form.get("driver") translator = request.form.get("translator") # Check uniqueness and append to NDB model error = None if volunteer: if user.key not in event.volunteer_requests and user.key not in event.volunteers: event.volunteer_requests.append(user.key) else: error = "You have already sent a request or are already a volunteer!" if driver: if user.key not in event.driver_requests and user.key not in event.drivers: event.driver_requests.append(user.key) else: error = "You have already sent a request or are already a driver!" if translator: if user.key not in event.translator_requests and user.key not in event.translators: event.translator_requests.append(user.key) else: error = "You have already sent a request or are already a translator!" if error: return render_template('join_event.html', event=event, error=error) # Make sure the event makes sense - Probably deprecated event.verify() event.put() return render_template('join_event.html', event=event, success="Request successfully sent!")
def login(): if request.method == 'GET': # TODO: If logged in, redirect to dashboard return render_template('login.html') else: # Paarse the form username = request.form["username"] password = request.form["password"] # Get the User and check password user = User.get_user(username) if user is None: return render_template('login.html', error="User doesn't exist!") hashed_pw = user.password_hash if not valid_pw(username, password, hashed_pw): return render_template('login.html', error="Password incorrect!") else: response = make_response(redirect(url_for('timeline'))) response.set_cookie("username", username) return response
def delete_event(id=None): # Check id if id is None: return redirect(url_for('admin')) # Check user username = request.cookies.get('username') user = User.get_user(username) if not user: return redirect(url_for('home')) # Check Event event = Event.get_event_by_id(id) if not event: return redirect(url_for('admin')) if event.admin.id() != user.key.id(): return redirect(url_for('admin')) # Delete the event event.key.delete() return render_template('admin.html', success="Event successfully deleted.")
def delete_post(id=None): # Check user username = request.cookies.get('username') user = User.get_user(username) if not user: return redirect(url_for('home')) # Check id if id is None: return redirect('timeline/' + str(user.key.id())) # Check Post post = Post.get_post_by_id(id) if not post: return redirect('timeline/' + str(user.key.id())) if post.writer.id() != user.key.id(): return redirect('timeline/' + str(user.key.id())) # Delete the event post.key.delete() return redirect('timeline/' + str(user.key.id()))
def create_post(id=None): """Create a Post""" # Hacky redirect - refactor in the future username = request.cookies.get('username') cookie_user = User.get_user(username) if request.method == "GET": return redirect('timeline/' + str(cookie_user.key.id())) if not id: return redirect('timeline/' + str(cookie_user.key.id())) else: user = User.get_user_by_id(id) if user == cookie_user and request.method == "POST": title = request.form.get("title") body = request.form.get("body") # Create a Post post = Post(title=title, body=body, writer=user.key) post.put() return redirect('timeline/' + str(cookie_user.key.id())) else: return redirect('timeline/' + str(cookie_user.key.id()))
def edit_timeline(id=None): """Edit Timeline Info""" # Hacky redirect - refactor in the future username = request.cookies.get('username') cookie_user = User.get_user(username) if request.method == "GET": return redirect('timeline/' + str(cookie_user.key.id())) if not id: return redirect('timeline/' + str(cookie_user.key.id())) else: user = User.get_user_by_id(id) if user == cookie_user and request.method == "POST": user.name = request.form.get("name") user.bio = request.form.get("bio") user.skills = request.form.get("skills") user.interests = request.form.get("interests") user.profile_pic = request.form.get("profile_pic") user.put() return redirect('timeline/' + str(cookie_user.key.id())) else: return redirect('timeline/' + str(cookie_user.key.id()))
def create_event(): """Create Event Form""" if request.method == 'GET': return render_template('create_event.html') else: # Parse the form name = request.form["name"] date = request.form["date"] date = datetime.strptime(date, "%m/%d/%Y %H:%M %p") hours = int(request.form["hours"]) location = request.form["location"] accessibility = request.form["accessibility"] description = request.form["description"] language = request.form["language"] physical_activity = request.form["physical_activity"] volunteers_needed = int(request.form["volunteers_needed"]) drivers_needed = int(request.form["drivers_needed"]) translators_needed = int(request.form["translators_needed"]) # Get admin username = request.cookies.get('username') user = User.get_user(username) # Create and event event = Event(name=name, date=date, hours=hours, location=location, accessibility=accessibility, description=description, language=language, physical_activity=physical_activity, volunteers_needed=volunteers_needed, drivers_needed=drivers_needed, translators_needed=translators_needed, admin=user.key) event.put() return render_template('create_event.html', success="Event successfully created!")