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)
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,})
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)
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/')
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)
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)