def create_orderline(request, group=None): r = dict() group = get_object_or_404(Group, name=group) if request.method == 'POST': form = OrderLineForm(request.POST) if form.is_valid(): new_orderline = form.save(commit=False) new_orderline.creator = request.user new_orderline.order = get_order(group) users = manually_parse_users(form) if check_orderline(group, new_orderline.creator, new_orderline.price, buddies=users): new_orderline.save() form.save_m2m() # Manually save the m2m relations when using commit=False new_orderline.users.add(new_orderline.creator) messages.success(request, 'Added orderline') return redirect('feedme:feedme_index_new', group) else: messages.error(request, 'Failed to add orderline') else: form = OrderLineForm() form.fields["users"].queryset = get_order(group).available_users().exclude(id=request.user.id) r['feedme_groups'] = [g for g in get_feedme_groups() if request.user in g.user_set.all()] r['group'] = group r['form'] = form r['is_admin'] = is_admin(request) return render(request, 'feedme/orderview.html', r)
def orderlineview(request, orderline_id=None, group=None): new_or_existing_orderline = 'new' if orderline_id is None: orderline = OrderLine() creator = None else: orderline = get_object_or_404(OrderLine, pk=orderline_id) new_or_existing_orderline = 'existing' creator = orderline.creator group = get_object_or_404(Group, name=group) if request.method == 'POST': form = OrderLineForm(request.POST, instance=orderline) if form.is_valid(): new_orderline = form.save(commit=False) if creator is not None: new_orderline.creator = creator else: new_orderline.creator = request.user new_orderline.order = get_order(group) users = manually_parse_users(form) if check_orderline(group, creator, orderline.price, buddies=users): new_orderline.save() form.save_m2m( ) # Manually save the m2m relations when using commit=False if new_or_existing_orderline == 'new': messages.success(request, "Orderline added") else: messages.success(request, "Orderline edited") new_orderline.users.add(new_orderline.creator) return redirect('feedme:feedme_index_new', group) else: messages.error( request, "Orderline validation failed, please verify your data and try again." ) else: form = OrderLineForm(instance=orderline) form.fields["users"].queryset = get_order( group).available_users().exclude(id=request.user.id) r = dict() r['feedme_groups'] = [ g for g in get_feedme_groups() if request.user in g.user_set.all() ] r['group'] = group r['form'] = form r['is_admin'] = is_admin(request) return render(request, 'feedme/orderview.html', r)
def admin(request, group=None): # Admin index - defaults to new order page r = dict() group = get_object_or_404(Group, name=group) if request.method == 'POST': form = NewOrderForm(request.POST) if form.is_valid(): form.save() poll = Poll.get_active() if poll: poll.deactivate() messages.success(request, 'New order added') logger.info('%s created a new order for %s: "%s".' % (request.user, group, get_order(group))) return redirect('feedme:feedme_index_new', group) else: form = NewOrderForm() if Poll.objects.count() > 0: poll = Poll.get_active() if poll: form.fields['restaurant'].initial = poll.get_winner() form.fields["date"].initial = get_next_wednesday() # r['form'] = form r['feedme_groups'] = [ g for g in get_feedme_groups() if request.user in g.user_set.all() ] r['group'] = group r['is_admin'] = is_admin(request) return render(request, 'feedme/admin.html', r)
def orderview(request, order_id=None, group=None): if order_id: order = get_object_or_404(Order, pk=order_id) else: order = Order() group = get_object_or_404(Group, name=group) if request.method == 'POST': form = OrderForm(request.POST, instance=order) if form.is_valid(): form = form.save(commit=False) form.creator = request.user form.order_line = get_order(group) form.save() messages.success(request, 'Orderline added') return redirect('feedme:feedme_index_new', group) form = OrderForm(request.POST) else: form = OrderForm(instance=order) r = dict() r['feedme_groups'] = [g for g in get_feedme_groups() if request.user in g.user_set.all()] r['group'] = group r['form'] = form r['is_admin'] = is_admin(request) return render(request, 'feedme/orderview.html', r)
def orderview(request, order_id=None, group=None): if order_id: order = get_object_or_404(Order, pk=order_id) else: order = Order() group = get_object_or_404(Group, name=group) if request.method == 'POST': form = OrderForm(request.POST, instance=order) if form.is_valid(): form = form.save(commit=False) form.creator = request.user form.order_line = get_order(group) form.save() messages.success(request, 'Orderline added') return redirect('feedme:feedme_index_new', group) form = OrderForm(request.POST) else: form = OrderForm(instance=order) r = dict() r['feedme_groups'] = [ g for g in get_feedme_groups() if request.user in g.user_set.all() ] r['group'] = group r['form'] = form r['is_admin'] = is_admin(request) return render(request, 'feedme/orderview.html', r)
def orderlineview(request, orderline_id=None, group=None): new_or_existing_orderline = 'new' if orderline_id is None: orderline = OrderLine() creator = None else: orderline = get_object_or_404(OrderLine, pk=orderline_id) new_or_existing_orderline = 'existing' creator = orderline.creator group = get_object_or_404(Group, name=group) if request.method == 'POST': form = OrderLineForm(request.POST, instance=orderline) if form.is_valid(): new_orderline = form.save(commit=False) if creator is not None: new_orderline.creator = creator else: new_orderline.creator = request.user new_orderline.order = get_order(group) users = manually_parse_users(form) if check_orderline(group, creator, orderline.price, buddies=users): new_orderline.save() form.save_m2m() # Manually save the m2m relations when using commit=False if new_or_existing_orderline == 'new': messages.success(request, "Orderline added") else: messages.success(request, "Orderline edited") new_orderline.users.add(new_orderline.creator) return redirect('feedme:feedme_index_new', group) else: messages.error(request, "Orderline validation failed, please verify your data and try again.") else: form = OrderLineForm(instance=orderline) form.fields["users"].queryset = get_order(group).available_users().exclude(id=request.user.id) r = dict() r['feedme_groups'] = [g for g in get_feedme_groups() if request.user in g.user_set.all()] r['group'] = group r['form'] = form r['is_admin'] = is_admin(request) return render(request, 'feedme/orderview.html', r)
def join_orderline(request, group, orderline_id): orderline = get_object_or_404(OrderLine, pk=orderline_id) group = get_object_or_404(Group, name=group) # @TODO if not buddy system enabled, disable join if in_other_orderline(get_order(group), request.user): messages.error(request, 'You cannot be in multiple orderlines') logger.warn('%s tried to join multiple orderlines (new: %i) for "%s"!' % (request.user, orderline.id, get_order(group))) elif orderline.order.use_validation and \ not validate_user_funds( request.user, (orderline.price / (orderline.users.count() + 1))): # Adds us to the test as well messages.error(request, 'You need cashes') logger.info('%s tried to join an orderline for "%s", by %s, with insufficient funds.' % (request.user, orderline.order, orderline.creator)) else: orderline.users.add(request.user) orderline.save() messages.success(request, 'Joined orderline') return redirect('feedme:feedme_index_new', group)
def join_orderline(request, group, orderline_id): orderline = get_object_or_404(OrderLine, pk=orderline_id) group = get_object_or_404(Group, name=group) # @TODO if not buddy system enabled, disable join if in_other_orderline(get_order(group), request.user): messages.error(request, 'You cannot be in multiple orderlines') logger.warn( '%s tried to join multiple orderlines (new: %i) for "%s"!' % (request.user, orderline.id, get_order(group))) elif orderline.order.use_validation and \ not validate_user_funds( request.user, (orderline.price / (orderline.users.count() + 1))): # Adds us to the test as well messages.error(request, 'You need cashes') logger.info( '%s tried to join an orderline for "%s", by %s, with insufficient funds.' % (request.user, orderline.order, orderline.creator)) else: orderline.users.add(request.user) orderline.save() messages.success(request, 'Joined orderline') return redirect('feedme:feedme_index_new', group)
def leave_orderline(request, group, orderline_id): orderline = get_object_or_404(OrderLine, pk=orderline_id) group = get_object_or_404(Group, name=group) if request.user not in orderline.users.all(): messages.error(request, 'You cannot leave since you are not in the users') logger.warn('%s tried to leave orderline#%i for "%s" without being in it!' % (request.user, orderline.id, get_order(group))) else: orderline.users.remove(request.user) orderline.save() messages.success(request, 'Left orderline') return redirect('feedme:feedme_index_new', group)
def leave_orderline(request, group, orderline_id): orderline = get_object_or_404(OrderLine, pk=orderline_id) group = get_object_or_404(Group, name=group) if request.user not in orderline.users.all(): messages.error(request, 'You cannot leave since you are not in the users') logger.warn( '%s tried to leave orderline#%i for "%s" without being in it!' % (request.user, orderline.id, get_order(group))) else: orderline.users.remove(request.user) orderline.save() messages.success(request, 'Left orderline') return redirect('feedme:feedme_index_new', group)
def create_orderline(request, group=None): r = dict() group = get_object_or_404(Group, name=group) if request.method == 'POST': form = OrderLineForm(request.POST) if form.is_valid(): new_orderline = form.save(commit=False) new_orderline.creator = request.user new_orderline.order = get_order(group) users = manually_parse_users(form) if check_orderline(group, new_orderline.creator, new_orderline.price, buddies=users): new_orderline.save() form.save_m2m( ) # Manually save the m2m relations when using commit=False new_orderline.users.add(new_orderline.creator) messages.success(request, 'Added orderline') return redirect('feedme:feedme_index_new', group) else: messages.error(request, 'Failed to add orderline') else: form = OrderLineForm() form.fields["users"].queryset = get_order( group).available_users().exclude(id=request.user.id) r['feedme_groups'] = [ g for g in get_feedme_groups() if request.user in g.user_set.all() ] r['group'] = group r['form'] = form r['is_admin'] = is_admin(request) return render(request, 'feedme/orderview.html', r)
def index_new(request, group=None): group = get_object_or_404(Group, name=group) if \ request.user in get_object_or_404(Group, name=group).user_set.all() else None order = get_order(group) if group else None poll = get_poll(group) if group else None r = dict() r['group'] = group r['order'] = order r['restaurants'] = Restaurant.objects.all() r['is_admin'] = is_admin(request) r['can_join'] = not in_other_orderline(order, request.user) r['feedme_groups'] = [ g for g in get_feedme_groups() if request.user in g.user_set.all() ] a_id = None if str(request.user) != 'AnonymousUser': if Answer.objects.filter(poll=poll, user=request.user).count() == 1: a_id = Answer.objects.get(poll=poll, user=request.user) if request.method == 'POST': if request.POST['act'] == 'vote': if a_id is not None: form = PollAnswerForm(request.POST, instance=a_id) else: form = PollAnswerForm(request.POST) if form.is_valid(): answer = form.save(commit=False) answer.user = request.user answer.poll = poll answer.save() messages.success(request, 'Voted for %s' % answer.answer) return redirect('feedme:feedme_index_new', group) if poll is not None: r['poll'] = poll if a_id is None: r['answer'] = PollAnswerForm() else: r['answer'] = PollAnswerForm(instance=a_id) r['results'] = poll.get_result() return render(request, 'feedme/index.html', r)
def index_new(request, group=None): group = get_object_or_404(Group, name=group) if \ request.user in get_object_or_404(Group, name=group).user_set.all() else None order = get_order(group) if group else None poll = get_poll(group) if group else None r = dict() r['group'] = group r['order'] = order r['restaurants'] = Restaurant.objects.all() r['is_admin'] = is_admin(request) r['can_join'] = not in_other_orderline(order, request.user) r['feedme_groups'] = [g for g in get_feedme_groups() if request.user in g.user_set.all()] a_id = None if str(request.user) != 'AnonymousUser': if Answer.objects.filter(poll=poll, user=request.user).count() == 1: a_id = Answer.objects.get(poll=poll, user=request.user) if request.method == 'POST': if request.POST['act'] == 'vote': if a_id is not None: form = PollAnswerForm(request.POST, instance=a_id) else: form = PollAnswerForm(request.POST) if form.is_valid(): answer = form.save(commit=False) answer.user = request.user answer.poll = poll answer.save() messages.success(request, 'Voted for %s' % answer.answer) return redirect('feedme:feedme_index_new', group) if poll is not None: r['poll'] = poll if a_id is None: r['answer'] = PollAnswerForm() else: r['answer'] = PollAnswerForm(instance=a_id) r['results'] = poll.get_result() return render(request, 'feedme/index.html', r)
def test_get_order_group_with_inactive_order(self): group = G(Group) order = G(Order, group=group, active=False) self.assertEquals(None, get_order(group), "Got %s, expected %s." % (get_order(group), None))
def test_get_order_group_with_active_order(self): group = G(Group) order = G(Order, group=group) self.assertEquals(order, get_order(group), "Got %s, expected %s." % (get_order(group), order))
def test_get_order_no_order_for_group(self): new_group = G(Group) self.assertEquals(None, get_order(new_group), "There should be no orders for a group with no orders")
def admin(request, group=None): # Admin index - defaults to new order page r = dict() group = get_object_or_404(Group, name=group) if request.method == 'POST': form = NewOrderForm(request.POST) if form.is_valid(): form.save() poll = Poll.get_active() if poll: poll.deactivate() messages.success(request, 'New order added') logger.info('%s created a new order for %s: "%s".' % (request.user, group, get_order(group))) return redirect('feedme:feedme_index_new', group) else: form = NewOrderForm() if Poll.objects.count() > 0: poll = Poll.get_active() if poll: form.fields['restaurant'].initial = poll.get_winner() form.fields["date"].initial = get_next_wednesday() # r['form'] = form r['feedme_groups'] = [g for g in get_feedme_groups() if request.user in g.user_set.all()] r['group'] = group r['is_admin'] = is_admin(request) return render(request, 'feedme/admin.html', r)
def test_get_order_no_order_for_group(self): new_group = G(Group) self.assertEquals( None, get_order(new_group), "There should be no orders for a group with no orders")