示例#1
0
文件: views.py 项目: dotnil/fanju
def save(request):
    try:
        group_id = long(post_param(request, 'group_id'))
        group = get_group(group_id)
        require = check_user(group)
        if require: 
            return redirect("/redirect/?%s" % require)
            
        amount = float(post_param(request, 'amount'))
        if amount <0:
            raise ValueError('amount can not be negative')
        
        payer_id = long(post_param(request, 'payer'))
        participants = map(lambda x: long(x), post_params(request, 'participants'))
        if len(participants) <1:
            raise ValueError('a meal with no attendee?')
        if payer_id not in participants:
            raise ValueError('...I have nothing to say.')
        date = None
        date_str = post_param(request, 'date')
        if date_str:
            date = datetime.strptime(date_str, "%Y/%m/%d")
    except:
        return redirect('/redirect/group/%s?%s' % (group_id, 'param'))
    else:
        save_fee(group, amount, payer_id, participants, date)
        return redirect('/redirect/group/%s' % group_id)
示例#2
0
文件: views.py 项目: dotnil/fanju
def home(request):
    group_query = db.Query(Group)
    groups = group_query.fetch(20)
    if len(groups) <1:
        return redirect("/group/edit/")

    return respond('group_home.html', {'groups': groups,})
示例#3
0
文件: views.py 项目: dotnil/fanju
def delete(request, fee_id):
    try:
        fee = get_fee(fee_id)
        group_id = fee.group.key().id()
        if not request.GET.has_key('confirm'):
            params = {'name': u"%s的%d个家伙腐败掉%.1f的证据" % (fee.group.name, len(fee.participants), fee.amount),
                      'confirm': "%s?confirm" % request.path,
                      'cancel': "/group/%s" % group_id,}
            return respond("confirm.html", params)

        require = check_user(fee.group)
        if require:
            return redirect("/redirect/?%s" % require)

        update_group_summary(fee, add_fee=False)
        fee.delete()
    except:
        raise
    else:
        return redirect("/redirect/group/%s" % group_id)
示例#4
0
文件: views.py 项目: dotnil/fanju
def save(request):
    password = post_param(request, 'password')
    name = post_param(request, 'name')
    members = post_param(request, 'members').split()
    group_id = post_param(request, 'group_id')
    owner_email = post_param(request, 'owner')
    group = None
    if group_id:
        try:
            group = get_group(long(group_id))
            require = check_user(group)
            if require:
                return redirect("/redirect/?%s" % require)
        except:
            return redirect('/group/edit/?errs=group_id')

        for member in get_users(group):
            if member.name not in members:
                return redirect('/group/edit/%s?errs=members' % group.key().id())

    members = save_users(members, group)
    owner = None
    try:
        owner = users.User(owner_email)
    except:
        owner = users.get_current_user()
        
    if group:
        group.members = members
        group.owner = owner
    else:
        group = Group(members = members,
                      password = password,
                      name = name,
                      owner = owner)

    while len(group.summaries) < len(members):
        group.summaries.append(0.0)
            
    group.put()
    return redirect('/redirect/group/')
示例#5
0
文件: views.py 项目: dotnil/fanju
def delete(request, group_id):
    try:
        group = get_group(group_id)
        require = check_user(group)
        if require:
            raise Exception("invalid user")
        if not request.GET.has_key('confirm'):
            params = {'name': group.name,
                      'confirm': "%s?confirm" % request.path,
                      'cancel': "/group/%s" % group_id,}
            return respond("confirm.html", params)
    except ValueError:
        return redirect('/redirect/?param')
    except:
        return redirect("/redirect/?%s" % require)
    else:
        for member_id in group.members:
           member = get_user(member_id)
           member.delete()
        group.delete()
        return home(request)
示例#6
0
文件: views.py 项目: dotnil/fanju
def edit(request, group_id):
    param = {}
    if group_id:
        group = get_group(group_id)
        require = check_user(group)
        if require:
            return redirect("/redirect/?%s" % require)
        
        users = get_users(group)
        param.update({'group': group,
                      'users': users,})

    errs = get_param(request, 'errs')
    if errs:
        errs = errs.split(',')
        for err in errs:
            param.update({"%s_error" % err: True,})
    return respond('group_edit.html', param)