def handle(self, *args, **options): n = options['n'] users = [] for i in range(1, 6): user, created = User.objects.get_or_create( username='******'.format(i), ) cats = list(user.categories.all()) if not cats: cats = [ user.categories.create(name=silly.noun()) for i in range(5) ] user.set_password("secret1234") user.save() users.append(user) for i in range(n): with transaction.atomic(): o = models.Expense( user=random.choice(users), date=get_random_date(), amount="{:.2f}".format(random.uniform(1, 100)), title="{} {}".format(silly.adjective(), silly.noun()).title(), description=get_paragraph(1, 3), ) o.full_clean() o.save() sample = set(random.sample(cats, random.randint(1, 3))) for cat in sample: o.categories.add(cat) for i in range(random.randint(0, 5)): o.comments.create(content=get_paragraph(1, 4), )
def test_expenses(self): n = 12 for i in range(n): o = models.Expense( date=datetime.date(2016, 1, i + 1), title="Expense #{}".format(i + 1), amount=(i + 1) * (decimal.Decimal('10.10')), ) o.full_clean() o.save() self.assertEquals(models.Expense.objects.count(), n)
def handle(self, *args, **options): n = options['n'] for i in range(n): o = models.Expense( date="201{}-{:02}-{}".format( random.randint(0, 9), random.randint(1, 12), random.randint(1, 30) ), amount="{:.2f}".format(random.uniform(1, 100)), title="{} {}".format(silly.adjective(), silly.noun()).title(), description=silly.paragraph(length=random.randint(1, 3)), ) o.full_clean() o.save()
def new_expense(request): if request.method == 'GET': return render( request, 'expenses/new_expense.html', { "committees": models.Committee.objects.order_by('name'), "budget_json": models.get_budget_json() }) elif request.method == 'POST': if len((request.FILES.getlist('files'))) < 1: return HttpResponseBadRequest( "Du måste ladda upp minst en fil som verifikat") expense = models.Expense( owner=request.user.profile, expense_date=request.POST['expense-date'], description=request.POST['expense-description']) expense.save() for uploaded_file in request.FILES.getlist('files'): file = models.File(belonging_to=expense, file=uploaded_file) file.save() expense_part_indices = json.loads(request.POST['expense_part_indices']) for i in expense_part_indices: expense_part = models.ExpensePart( expense=expense, budget_line=models.BudgetLine.objects.get( cost_centre__committee__name=request.POST[ 'expense_part-{}-committee'.format(i)], cost_centre__name=request.POST[ 'expense_part-{}-cost_centre'.format(i)], name=request.POST['expense_part-{}-budget_line'.format( i)]), amount=request.POST['expense_part-{}-amount'.format(i)]) expense_part.save() return HttpResponseRedirect( reverse('expenses-expense-new-binder', kwargs={'pk': expense.id})) else: raise Http404()
def handle(self, *args, **options): n = options['n'] users = [] for i in range(1, 6): user, created = User.objects.get_or_create( username='******'.format(i), ) user.set_password("secret1234") user.save() users.append(user) for i in range(n): o = models.Expense( user=random.choice(users), date=get_random_date(), amount="{:.2f}".format(random.uniform(1, 100)), title="{} {}".format(silly.adjective(), silly.noun()).title(), description=get_paragraph(1, 3), ) o.full_clean() o.save() for i in range(random.randint(0, 5)): o.comments.create(content=get_paragraph(1, 4), )
def new_expense(request): """ Add a new expense. """ if request.method == 'GET': return render(request, 'expenses/new.html') elif request.method == 'POST': if len((request.FILES.getlist('files'))) < 1 and len( (request.POST.getlist('fileIds[]'))) < 1: messages.error(request, 'Du måste ladda upp minst en fil som verifikat') return HttpResponseRedirect(reverse('expenses-new')) if datetime.now() < datetime.strptime(request.POST['expense-date'], '%Y-%m-%d'): print("Felaktigt datum") messages.error(request, 'Du har angivit ett datum i framtiden') return HttpResponseRedirect(reverse('expenses-new')) if any(map(lambda x: float(x) <= 0, request.POST.getlist('amount[]'))) > 0: messages.error( request, 'Du har angivit en icke-positiv summa i någon av kvittodelarna' ) return HttpResponseRedirect(reverse('expenses-new')) # Create the expense expense = models.Expense( owner=request.user.profile, expense_date=request.POST['expense-date'], description=request.POST['expense-description'], confirmed_by=None) expense.save() # Add the files submitted for posted_file in request.FILES.getlist('files'): file = models.File(expense=expense, file=posted_file) file.save() # Add the files submitted to the javascript upload for pre_uploaded_file_id in request.POST.getlist('fileIds[]'): file = models.File.objects.get(pk=int(pre_uploaded_file_id)) if file.expense is None: file.expense = expense print("None") else: print("Inte none") file.save() # Add the expenseparts for idx, budgetLineId in enumerate( request.POST.getlist('budgetLine[]')): response = requests.get( "https://budget.datasektionen.se/api/budget-lines/{}".format( budgetLineId)) budget_line = response.json() models.ExpensePart( expense=expense, budget_line_id=budget_line['id'], budget_line_name=budget_line['name'], cost_centre_name=budget_line['cost_centre']['name'], cost_centre_id=budget_line['cost_centre']['id'], committee_name=budget_line['cost_centre']['committee']['name'], committee_id=budget_line['cost_centre']['committee']['id'], amount=request.POST.getlist('amount[]')[idx]).save() return HttpResponseRedirect( reverse('expenses-new-confirmation', kwargs={'pk': expense.id}))