예제 #1
0
def signup_post(request):
    dbsession = DBSession()
    settings = request.registry.settings
    form = Form(request, schema=schemas.Signup, obj=User())
    if request.POST and form.validate():
        if not validate_csrf(request):
            return HTTPUnauthorized("Not authorized")
        user = form.bind(User())
        user.username = get_username(user.name, dbsession)
        user.password = func.sha1(user.password)

        cookie = facebook.get_user_from_cookie(
            request.cookies, settings["facebook.app.id"], settings["facebook.app.secret"]
        )
        if cookie:
            graph = facebook.GraphAPI(cookie["access_token"])
            profile = graph.get_object("me")
            user.fb_id = profile["id"]
            user.fb_profile_url = profile["link"]
            user.fb_access_token = cookie["access_token"]

        try:
            dbsession.add(user)
            dbsession.commit()
            headers = remember_me_header(request, user.email)
            redirect_url = route_url("create_profile", request)
            request.response_headerlist = headers
            return {"status": 1, "url": redirect_url}
        except IntegrityError:
            return {"errors": {"form": "Invalid Information"}}

    return {"errors": form.errors}
예제 #2
0
def create_trip_post(request):
    try:
        dbsession = request.session["dbsession"]
    except KeyError:
        dbsession = DBSession()
        request.session["dbsession"] = dbsession

    settings = request.registry.settings
    form = Form(request, schema=schemas.Trip, obj=Trip())

    if request.POST:
        if not validate_csrf(request):
            return HTTPUnauthorized("Not authorized")

        try:
            trip = request.session["new_trip"]
        except KeyError:
            user = get_user_from_email(authenticated_userid(request), dbsession)
            trip = Trip()
            organizer = TripMember()
            organizer.user = user
            organizer.admin = True
            trip.members.append(organizer)
            request.session["new_trip"] = trip

        step = request.POST["step"]
        if step == "1":
            form = Form(request, schema=schemas.TripBasic, obj=Trip())
            if form.validate():
                trip = form.bind(trip)
                return {"status": 2, "target": 2}
        elif step == "2":
            form = Form(request, schema=schemas.TripLogistics, obj=Trip())
            if form.validate():
                trip = bind_trip(form.schema.to_python(dict(request.params)), trip)
                return {"status": 2, "target": 3}
        elif step == "3":
            try:
                dbsession.add(trip)
                dbsession.commit()
                redirect_url = route_url("home", request)
                return {"status": 1, "url": redirect_url}
            except IntegrityError:
                return {"errors": {"form": "Invalid Information"}}

    return {"errors": form.errors}