def invite(request, huddle_id): """ Invite participants to a huddle. """ ids = [int(x) for x in request.POST.get('invite_profile_id').split()] try: Huddle.invite(request.get_host(), huddle_id, ids, request.access_token) except APIException as exc: return respond_with_error(request, exc) return HttpResponseRedirect(reverse('single-huddle', args=(huddle_id,)))
def create(request): """ Create a huddle. """ 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]), } if request.method == 'POST': form = create_form(request.POST) if form.is_valid(): hud_request = Huddle.from_create_form(form.cleaned_data) try: hud_response = hud_request.create(request.get_host(), request.access_token) except APIException as exc: return respond_with_error(request, exc) if request.POST.get('invite'): ids = [int(x) for x in request.POST.get('invite').split(',')] Huddle.invite(request.get_host(), hud_response.id, ids, request.access_token) if request.POST.get('firstcomment') and len(request.POST.get('firstcomment')) > 0: payload = { 'itemType': 'huddle', 'itemId': hud_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 3MB. Please try again.', } return render(request, form_template, view_data) return HttpResponseRedirect(reverse('single-huddle', args=(hud_response.id,))) else: view_data['form'] = form return render(request, form_template, view_data) if request.method == 'GET': if request.GET.get('to'): recipients = [] list_of_recipient_ids = request.GET.get('to').split(",") for recipient_id in list_of_recipient_ids: try: recipient_profile = Profile.retrieve(request.get_host(), recipient_id) except APIException: # Skip this recipient, but don't return as we may be able to load the others. continue recipients.append({ 'id': recipient_profile.id, 'profileName': recipient_profile.profile_name, 'avatar': recipient_profile.avatar }) view_data['recipients_json'] = json.dumps(recipients) view_data['form'] = create_form(initial=dict()) return render(request, form_template, view_data)