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))
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)))
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))
def index(req): return render_response('index.html')