Exemplo n.º 1
0
def account_plan(request):
    """The page that shows the user what plan they're on and wants them to click to the upgrade plans page."""

    user = request.user
    profile = user.get_profile()
    err_msg = ""
    if request.method == 'POST':
        changes = []
        space_total = 0
        for key, val in request.POST.iteritems():
            # format: member-X-amt=Y
            # X = member id, Y = amount donated
            member_str, member_id, amt_str = key.split('-')
            if member_str == 'member' and amt_str == 'amt':
                try:
                    member_id = int(member_id)
                    member = BandMember.objects.get(pk=member_id)
                except ValueError, BandMember.DoesNotExist:
                    err_msg = design.bad_band_member_id
                    break

                # make sure the user is the band member
                if member.user != user:
                    err_msg = design.can_only_edit_your_own_amount_donated
                    break

                try:
                    val = int(val)
                except ValueError:
                    err_msg = design.invalid_amount
                    break

                changes.append((member, val,))
                space_total += val

        if err_msg == "":
            if space_total <= profile.purchased_bytes:
                # everything is good. apply the change.
                # also create log entries for affected bands
                for member, new_space in changes:
                    old_space = member.space_donated
                    if old_space != new_space:
                        # save new space into member
                        member.space_donated = new_space
                        member.save()

                        # add or take away space from the band
                        band = member.band
                        band.total_space += new_space - old_space
                        band.save()

                        # make log entry
                        entry = LogEntry()
                        entry.entry_type = LogEntry.SPACE_ALLOCATED_CHANGE
                        entry.band = member.band
                        entry.catalyst = user
                        entry.old_amount = old_space
                        entry.new_amount = new_space
                        entry.save()

                return HttpResponseRedirect(reverse('account.plan'))
            else:
                err_msg = design.you_dont_have_enough_space_to_do_that
Exemplo n.º 2
0
def account_plan(request):
    """The page that shows the user what plan they're on and wants them to click to the upgrade plans page."""

    user = request.user
    profile = user.get_profile()
    err_msg = ""
    if request.method == 'POST':
        changes = []
        space_total = 0
        for key, val in request.POST.iteritems():
            # format: member-X-amt=Y
            # X = member id, Y = amount donated
            member_str, member_id, amt_str = key.split('-')
            if member_str == 'member' and amt_str == 'amt':
                try:
                    member_id = int(member_id)
                    member = BandMember.objects.get(pk=member_id)
                except ValueError, BandMember.DoesNotExist:
                    err_msg = design.bad_band_member_id
                    break

                # make sure the user is the band member
                if member.user != user:
                    err_msg = design.can_only_edit_your_own_amount_donated
                    break

                try:
                    val = int(val)
                except ValueError:
                    err_msg = design.invalid_amount
                    break

                changes.append((
                    member,
                    val,
                ))
                space_total += val

        if err_msg == "":
            if space_total <= profile.purchased_bytes:
                # everything is good. apply the change.
                # also create log entries for affected bands
                for member, new_space in changes:
                    old_space = member.space_donated
                    if old_space != new_space:
                        # save new space into member
                        member.space_donated = new_space
                        member.save()

                        # add or take away space from the band
                        band = member.band
                        band.total_space += new_space - old_space
                        band.save()

                        # make log entry
                        entry = LogEntry()
                        entry.entry_type = LogEntry.SPACE_ALLOCATED_CHANGE
                        entry.band = member.band
                        entry.catalyst = user
                        entry.old_amount = old_space
                        entry.new_amount = new_space
                        entry.save()

                return HttpResponseRedirect(reverse('account.plan'))
            else:
                err_msg = design.you_dont_have_enough_space_to_do_that