Esempio n. 1
0
def respond(req, key):
    invite = models.Invitation.get(db.Key(key))
    if invite is None:
        raise NotFound
    if req.method == 'GET':
        if invite.attending >= 1:
            guests = invite.attending - 1
        else:
            guests = ''
        attending, possible, not_attending, no_response = (
                models.Invitation.grouped_by_response(invite.event))
        return render_response('respond.html', invite=invite, event=invite.event,
                               guests=guests, attending=attending,
                               possible=possible,
                               not_attending=not_attending)
    if 'no' in req.form:
        invite.attending = 0
    else:
        invite.attending = int(req.form['guests'] or 0) + 1
        invite.maybe = 'maybe' in req.form
    invite.email = req.form['email']
    invite.comments = req.form['comments']
    invite.put()
    _send_response(invite)
    return redirect(url_for('respond', key=key))
Esempio n. 2
0
def create(req):
    user = users.get_current_user()
    if user is None:
        return redirect(users.create_login_url(url_for('create')))
    if user.email() != '*****@*****.**':
        raise Forbidden
    if req.method == 'GET':
        return render_response('create.html', user=user)
    ics_file = req.files.get('ics')
    if not ics_file:
        return render_response('create.html', error='No file', user=user)
    vobj = vobject.readOne(ics_file)
    event = models.Event.from_vevent(vobj.vevent)
    event.owner = user
    event_key = event.put()
    return redirect(url_for('update', key=str(event_key)))
Esempio n. 3
0
def update(req, key):
    event = models.Event.get(db.Key(key))
    if event.owner != users.get_current_user():
        raise Forbidden
    if event is None:
        raise NotFound
    if req.method == 'GET':
        attending, possible, not_attending, no_response = (
                models.Invitation.grouped_by_response(event))
        return render_response('update.html',
                               event=event,
                               attending=attending,
                               possible=possible,
                               not_attending=not_attending,
                               no_response=no_response)
    for vcard in vobject.readComponents(req.files['invitees']):
        invite = models.Invitation.from_vcard(vcard, event=event)
        invite_key = str(invite.put())
        _send_invite(invite, invite_key)
    return redirect(url_for('update', key=key))
Esempio n. 4
0
def index(req):
    return render_response('index.html')