Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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))
Ejemplo n.º 3
0
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()
Ejemplo n.º 4
0
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()
Ejemplo n.º 5
0
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()
Ejemplo n.º 6
0
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))
Ejemplo n.º 7
0
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))
Ejemplo n.º 8
0
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))