def invitation_retrieve(request, response_format='html'): "Retrieve invitation and create account" if request.user.username: return HttpResponseRedirect('/') email = request.REQUEST.get('email') key = request.REQUEST.get('key') if email and key: try: invitation = Invitation.objects.get(email=email, key=key) except: raise Http404 else: raise Http404 if request.POST: form = InvitationForm(invitation, request.POST) if form.is_valid(): profile = form.save() username = profile.user.username password = form.cleaned_data['password'] user = authenticate(username=username, password=password) if user: invitation.delete() login(request, user) return HttpResponseRedirect('/') else: form = InvitationForm(invitation) return render_to_response('core/invitation_retrieve', {'invitation': invitation, 'form': form}, context_instance=RequestContext(request), response_format=response_format)
def invite(request, code): profile = check_profile(code) if not profile: messages.error(request, 'Your personal URL is incorrect, please reset your account or provide proper url') return redirect('index') from forms import InvitationForm if request.method == 'POST': form = InvitationForm(request.POST) if form.is_valid(): emails=form.cleaned_data['emails'] emails=emails.split(',') for e in emails: e=e.strip() i=Invitation(email=e, key=generate_key()) i.save() u, created=User.objects.get_or_create(username=e[:30], email=e) notification.send([u], 'invite', {'key': i.key, 'profile':profile }) if len(emails): messages.info(request, '%d invitation(s) has been sent ' % len(emails)) return redirect('homepage', code=code) else: form=InvitationForm(initial={'key':code}) return render_to_response('researchers/invite.html', {'profile':profile, 'form':form, 'key':code}, context_instance=RequestContext(request))
def invite_people(request, project_id): # TODO: verify user is owner of the project model_project = Project.objects.get(id=int(project_id)) if request.method == "POST": form = InvitationForm(request.POST) if form.is_valid(): emails = form.cleaned_data["emails"] email_people(model_project, emails) return render_to_response('email_success.html', {"li_emails": emails, "proj": model_project}, context_instance=RequestContext(request)) else: form = InvitationForm() return render_to_response('invite_people.html', {"form": form}, context_instance=RequestContext(request))
def post(self, request): form = InvitationForm(request.POST) if form.is_valid(): email = form.cleaned_data['email'] subject = 'Invitation to join MyTweet App' sender_name = request.user.username sender_email = request.user.email invite_code = Invite.generate_invite_code(email) link = 'http://%s/users/invite/accept/%s/' % (settings.SITE_HOST, invite_code) context = Context({"sender_name": sender_name, "sender_email": sender_email, "email": email, "link": link}) invite_email_template = render_to_string('partials/_invite_email_template.html', context) msg = EmailMultiAlternatives(subject, invite_email_template, settings.EMAIL_HOST_USER, [email], cc=[settings.EMAIL_HOST_USER]) user = User.objects.get(username=request.user.username) invitation = Invitation() invitation.email = email invitation.code = invite_code invitation.sender = user invitation.save() success = msg.send() return HttpResponseRedirect('/users/invite?success='+str(success) +'&email='+email)
def invite(request, code): profile = check_profile(code) if not profile: messages.error( request, 'Your personal URL is incorrect, please reset your account or provide proper url' ) return redirect('index') from forms import InvitationForm if request.method == 'POST': form = InvitationForm(request.POST) if form.is_valid(): emails = form.cleaned_data['emails'] emails = emails.split(',') for e in emails: e = e.strip() i = Invitation(email=e, key=generate_key()) i.save() u, created = User.objects.get_or_create(username=e[:30], email=e) notification.send([u], 'invite', { 'key': i.key, 'profile': profile }) if len(emails): messages.info(request, '%d invitation(s) has been sent ' % len(emails)) return redirect('homepage', code=code) else: form = InvitationForm(initial={'key': code}) return render_to_response('researchers/invite.html', { 'profile': profile, 'form': form, 'key': code }, context_instance=RequestContext(request))