def handle_invite(request, accept): invite = get_obj_from_request(request.POST, 'invitation', BandInvitation) if invite is None: raise Http404 # make sure the user has permission to reject this invitation if invite.invitee != request.user: return json_failure(design.invitation_not_sent_to_you) # make sure it's not expired if invite.expire_date is not None and datetime.now() > invite.expire_date: return json_failure(design.invitation_expired) if accept: # apply the invitation member = BandMember() member.user = request.user member.band = invite.band member.role = invite.role member.save() createNewBandMemberLogEntry(member) send_invitation_accepted_email(invite, request.get_host()) invite.delete() return json_success()
def redeem_invitation(request, password_hash): """ join the band if the invitation is valid """ err_msg = "" try: invite = BandInvitation.objects.get(code=password_hash) except BandInvitation.DoesNotExist: invite = None err_msg = design.invitation_expired return render_to_response('workbench/redeem_invitation.html', locals(), context_instance=RequestContext(request)) if invite.expire_date is None or (datetime.now() <= invite.expire_date and invite.count > 0): # if the member exists, escalate the privileges to the new role. try: member = BandMember.objects.get(user=request.user, band=invite.band) # if the role is the same or worse, error if invite.role >= member.role: err_msg = design.already_member_of_x.format(member.band.title) return render_to_response( 'workbench/redeem_invitation.html', locals(), context_instance=RequestContext(request)) else: member.role = invite.role member.save() except BandMember.DoesNotExist: # create a band member for the invitation member = BandMember() member.user = request.user member.band = invite.band member.role = invite.role member.save() createNewBandMemberLogEntry(member) # decrement the counter invite.count -= 1 if invite.count <= 0: invite.delete() else: invite.save() invite.invitee = request.user # we fill this field for the sake of send_invitation_accepted_email send_invitation_accepted_email(invite, request.get_host()) band = invite.band else: err_msg = design.invitation_expired return render_to_response('workbench/redeem_invitation.html', locals(), context_instance=RequestContext(request))
def actually_create_band(user, band_name): band = Band() band.title = band_name band.total_space = settings.BAND_INIT_SPACE band.save() manager = BandMember() manager.user = user manager.band = band manager.role = BandMember.MANAGER manager.save()
def redeem_invitation(request, password_hash): """ join the band if the invitation is valid """ err_msg = "" try: invite = BandInvitation.objects.get(code=password_hash) except BandInvitation.DoesNotExist: invite = None err_msg = design.invitation_expired return render_to_response('workbench/redeem_invitation.html', locals(), context_instance=RequestContext(request)) if invite.expire_date is None or (datetime.now() <= invite.expire_date and invite.count > 0): # if the member exists, escalate the privileges to the new role. try: member = BandMember.objects.get(user=request.user, band=invite.band) # if the role is the same or worse, error if invite.role >= member.role: err_msg = design.already_member_of_x.format(member.band.title) return render_to_response('workbench/redeem_invitation.html', locals(), context_instance=RequestContext(request)) else: member.role = invite.role member.save() except BandMember.DoesNotExist: # create a band member for the invitation member = BandMember() member.user = request.user member.band = invite.band member.role = invite.role member.save() createNewBandMemberLogEntry(member) # decrement the counter invite.count -= 1 if invite.count <= 0: invite.delete() else: invite.save() invite.invitee = request.user # we fill this field for the sake of send_invitation_accepted_email send_invitation_accepted_email(invite, request.get_host()) band = invite.band else: err_msg = design.invitation_expired return render_to_response('workbench/redeem_invitation.html', locals(), context_instance=RequestContext(request))
def user_register_plan(request, plan_url): "plan_url of 'free' means free plan" if request.user.is_authenticated(): return change_plan(request, plan_url) if request.method == 'POST': form = RegisterForm(request.POST) if form.is_valid(): plan_id = 0 plan = None # create the user user = User.objects.create_user(form.cleaned_data.get('username'), form.cleaned_data.get('email'), form.cleaned_data.get('password')) user.save() # create a band band = Band() band.title = form.cleaned_data.get('artist_name') band.total_space = settings.BAND_INIT_SPACE band.save() # create a profile profile = Profile() profile.user = user profile.solo_band = band profile.activated = False profile.activate_code = create_hash(32) profile.logon_count = 0 profile.band_count_limit = settings.FREE_BAND_LIMIT profile.save() # make them a manager manager = BandMember() manager.user = user manager.band = band manager.role = BandMember.MANAGER manager.save() # send an activation email subject = design.account_confirmation context = Context({ 'user': user, 'activate_url': request.build_absolute_uri(reverse('confirm', args=[user.username, profile.activate_code])), 'host': request.get_host(), }) message_txt = get_template('email/activation.txt').render(context) message_html = get_template('email/activation.html').render(context) send_html_mail(subject, message_txt, message_html, [user.email]) return HttpResponseRedirect(reverse("register_pending")) else: try: plan = AccountPlan.objects.get(url=plan_url) plan_id = plan.id except AccountPlan.DoesNotExist: plan = None plan_id = 0 form = RegisterForm(initial={'plan': plan_id}) return render_to_response('register.html', {'form': form}, context_instance=RequestContext(request))
def user_register_plan(request, plan_url): "plan_url of 'free' means free plan" if request.user.is_authenticated(): return change_plan(request, plan_url) if request.method == 'POST': form = RegisterForm(request.POST) if form.is_valid(): plan_id = 0 plan = None # create the user user = User.objects.create_user(form.cleaned_data.get('username'), form.cleaned_data.get('email'), form.cleaned_data.get('password')) user.save() # create a band band = Band() band.title = form.cleaned_data.get('artist_name') band.total_space = settings.BAND_INIT_SPACE band.save() # create a profile profile = Profile() profile.user = user profile.solo_band = band profile.activated = False profile.activate_code = create_hash(32) profile.logon_count = 0 profile.band_count_limit = settings.FREE_BAND_LIMIT profile.save() # make them a manager manager = BandMember() manager.user = user manager.band = band manager.role = BandMember.MANAGER manager.save() # send an activation email subject = design.account_confirmation context = Context({ 'user': user, 'activate_url': request.build_absolute_uri( reverse('confirm', args=[user.username, profile.activate_code])), 'host': request.get_host(), }) message_txt = get_template('email/activation.txt').render(context) message_html = get_template('email/activation.html').render( context) send_html_mail(subject, message_txt, message_html, [user.email]) return HttpResponseRedirect(reverse("register_pending")) else: try: plan = AccountPlan.objects.get(url=plan_url) plan_id = plan.id except AccountPlan.DoesNotExist: plan = None plan_id = 0 form = RegisterForm(initial={'plan': plan_id}) return render_to_response('register.html', {'form': form}, context_instance=RequestContext(request))