Exemplo n.º 1
0
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
Exemplo n.º 2
0
Arquivo: main.py Projeto: sup/fill
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")
Exemplo n.º 3
0
Arquivo: main.py Projeto: sup/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")
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
Arquivo: main.py Projeto: sup/fill
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'))
Exemplo n.º 6
0
Arquivo: main.py Projeto: sup/fill
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!")
Exemplo n.º 7
0
Arquivo: main.py Projeto: sup/fill
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")
Exemplo n.º 8
0
Arquivo: main.py Projeto: sup/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!")
Exemplo n.º 9
0
Arquivo: main.py Projeto: sup/fill
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
Exemplo n.º 10
0
Arquivo: main.py Projeto: sup/fill
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.")
Exemplo n.º 11
0
Arquivo: main.py Projeto: sup/fill
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()))
Exemplo n.º 12
0
Arquivo: main.py Projeto: sup/fill
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()))
Exemplo n.º 13
0
Arquivo: main.py Projeto: sup/fill
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()))
Exemplo n.º 14
0
Arquivo: main.py Projeto: sup/fill
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!")