def rsvp(request, event_id): """ Create an attendee (RSVP) for an event. An attendee can be in one of four states: invited, yes, maybe, no. """ responses = response_list_to_dict(grequests.map(request.view_requests)) user = Profile(responses[request.whoami_url], summary=False) attendee = [dict(rsvp=request.POST['rsvp'],profileId=user.id),] try: Event.rsvp(request.get_host(), event_id, user.id, attendee, access_token=request.access_token) except APIException as exc: return respond_with_error(request, exc) return HttpResponseRedirect(reverse('single-event', args=(event_id,)))
def create(request, microcosm_id): """ Create an event within a microcosm. """ try: responses = response_list_to_dict(grequests.map(request.view_requests)) except APIException as exc: return respond_with_error(request, exc) view_data = { 'user': Profile(responses[request.whoami_url], summary=False), 'site': Site(responses[request.site_url]), } user = Profile(responses[request.whoami_url], summary=False) if request.whoami_url else None if request.method == 'POST': form = create_form(request.POST) if form.is_valid(): event_request = Event.from_create_form(form.cleaned_data) try: event_response = event_request.create(request.get_host(), request.access_token) except APIException as exc: return respond_with_error(request, exc) # invite attendees invites = request.POST.get('invite') if len(invites.strip()) > 0: invited_list = invites.split(",") attendees = [] if len(invited_list) > 0: for userid in invited_list: if userid != "": attendees.append({ 'rsvp': 'maybe', 'profileId': int(userid) }) if len(attendees) > 0: try: Event.rsvp(request.get_host(), event_response.id, user.id, attendees, access_token=request.access_token) except APIException as exc: return respond_with_error(request, exc) # create comment if request.POST.get('firstcomment') and len(request.POST.get('firstcomment')) > 0: payload = { 'itemType': 'event', 'itemId': event_response.id, 'markdown': request.POST.get('firstcomment'), 'inReplyTo': 0 } comment_req = Comment.from_create_form(payload) try: comment = comment_req.create(request.get_host(), request.access_token) except APIException as exc: return respond_with_error(request, exc) try: process_attachments(request, comment) except ValidationError: responses = response_list_to_dict(grequests.map(request.view_requests)) comment_form = CommentForm( initial={ 'itemId': comment.item_id, 'itemType': comment.item_type, 'comment_id': comment.id, 'markdown': request.POST['markdown'], }) view_data = { 'user': Profile(responses[request.whoami_url], summary=False), 'site': Site(responses[request.site_url]), 'content': comment, 'comment_form': comment_form, 'error': 'Sorry, one of your files was over 5MB. Please try again.', } return render(request, form_template, view_data) return HttpResponseRedirect(reverse('single-event', args=(event_response.id,))) else: print 'Event form is not valid' view_data['form'] = form view_data['microcosm_id'] = microcosm_id return render(request, form_template, view_data) if request.method == 'GET': view_data['form'] = create_form(initial=dict(microcosmId=microcosm_id)) view_data['microcosm_id'] = microcosm_id return render(request, form_template, view_data)