def test_post(self): self.client.force_login(User.objects.create_user(self.username)) before_count = Data.get_all_data().count() response = self.client.post( reverse('moneybook:add_intra_move'), { 'year': 2000, 'month': 4, 'day': 1, 'item': '内部移動テスト', 'price': 20000, 'before_method': 2, 'after_method': 3, }) self.assertEqual(response.status_code, 200) self.assertEqual(response.content.decode(), '') after_count = Data.get_all_data().count() self.assertEqual(after_count, before_count + 2) before = Data.get_all_data()[after_count - 2] self.assertEqual(before.date, date(2000, 4, 1)) self.assertEqual(before.item, '内部移動テスト') self.assertEqual(before.price, 20000) self.assertEqual(before.direction.pk, 2) self.assertEqual(before.method.pk, 2) self.assertEqual(before.category.pk, 4) self.assertEqual(before.temp, False) self.assertEqual(before.checked, False) after = Data.get_all_data()[after_count - 1] self.assertEqual(after.date, date(2000, 4, 1)) self.assertEqual(after.item, '内部移動テスト') self.assertEqual(after.price, 20000) self.assertEqual(after.direction.pk, 1) self.assertEqual(after.method.pk, 3) self.assertEqual(after.category.pk, 4) self.assertEqual(after.temp, False) self.assertEqual(after.checked, False)
def get(self, request, *args, **kwargs): now = datetime.now() # 実際の現金残高 actual_cash_balance = SeveralCosts.get_actual_cash_balance() # クレカ確認日 credit_checked_date = CreditCheckedDate.get_all() # 生活費目標額 living_cost_mark = SeveralCosts.get_living_cost_mark() context = { 'app_name': settings.APP_NAME, 'username': request.user, 'cash_balance': Data.get_income_sum(Data.get_cash_data(Data.get_all_data())) - Data.get_outgo_sum(Data.get_cash_data(Data.get_all_data())), 'year': now.year, 'month': now.month, 'day': now.day, 'actual_cash_balance': actual_cash_balance, 'credit_checked_date': credit_checked_date, 'living_cost_mark': living_cost_mark, } return render(request, "tools.html", context)
def test_get(self): self.client.force_login(User.objects.create_user(self.username)) before_count = Data.get_all_data().count() response = self.client.get(reverse('moneybook:delete'), {'pk': 1}) self.assertEqual(response.status_code, 405) after_count = Data.get_all_data().count() self.assertEqual(after_count, before_count)
def test_post_guest(self): before_count = Data.get_all_data().count() response = self.client.post(reverse('moneybook:delete'), {'pk': 1}) self.assertEqual(response.status_code, 302) self.assertEqual(response.url, reverse('moneybook:login')) after_count = Data.get_all_data().count() self.assertEqual(after_count, before_count)
def test_post_guest(self): before_count = Data.get_all_data().count() response = self.client.post( reverse('moneybook:add_intra_move'), { 'year': 2000, 'month': 4, 'day': 1, 'item': '内部移動テスト', 'price': 20000, 'before_method': 2, 'after_method': 3, }) self.assertEqual(response.status_code, 403) after_count = Data.get_all_data().count() self.assertEqual(after_count, before_count)
def test_post_missing_item(self): self.client.force_login(User.objects.create_user(self.username)) before_count = Data.get_all_data().count() response = self.client.post( reverse('moneybook:add_intra_move'), { 'year': 2000, 'month': 4, 'day': 1, 'price': 20000, 'before_method': 2, 'after_method': 3, }) self.assertEqual(response.status_code, 400) self.assertEqual(response.content.decode(), '') after_count = Data.get_all_data().count() self.assertEqual(after_count, before_count)
def test_post_guest(self): before_count = Data.get_all_data().count() response = self.client.post( reverse('moneybook:add'), { 'date': '2000-4-1', 'item': 'テスト項目1', 'price': 10000, 'direction': 2, 'method': 2, 'category': 1, 'temp': False, 'checked': False }) self.assertEqual(response.status_code, 403) after_count = Data.get_all_data().count() self.assertEqual(after_count, before_count)
def get(self, request, *args, **kwargs): now = datetime.now() # 全データ all_data = Data.get_all_data() # 現在銀行 banks = BankBalance.get_all() # クレカ確認日 credit_checked_date = CreditCheckedDate.get_all() today = date.today() for c in credit_checked_date: # 日付が過ぎていたらpriceを0にする if c.date <= today: c.price = 0 # 銀行残高 all_bank_data = Data.get_bank_data(all_data) checked_bank_data = Data.get_checked_data(all_bank_data) bank_written = Data.get_income_sum( checked_bank_data) - Data.get_outgo_sum(checked_bank_data) context = { 'year': now.year, 'banks': banks, 'credit_checked_date': credit_checked_date, 'bank_written': bank_written, } return render(request, "_several_checked_date.html", context)
def get(self, request, *args, **kwargs): # 全データ all_data = Data.get_all_data() # 支払い方法リスト methods = Method.list() # 支払い方法ごとの残高 methods_bd = [] for m in methods: d = Data.get_method_data(all_data, m.pk) # 銀行はチェック済みだけ if m.pk == Method.get_bank().pk: d = Data.get_checked_data(d) methods_bd.append({ 'pk': m.pk, 'name': m.name, 'balance': Data.get_income_sum(d) - Data.get_outgo_sum(d), 'year': CheckedDate.get(m.pk).date.year, 'month': CheckedDate.get(m.pk).date.month, 'day': CheckedDate.get(m.pk).date.day }) return HttpResponse(json.dumps(methods_bd))
def test_post_invalid(self): self.client.force_login(User.objects.create_user(self.username)) before_count = Data.get_all_data().count() response = self.client.post( reverse('moneybook:add'), { 'item': 'テスト項目1', 'direction': 2, 'method': 2, 'category': 1, 'temp': False, 'checked': False }) self.assertEqual(response.status_code, 400) self.assertEqual(response.content.decode(), json.dumps({'ErrorList': ['date', 'price']})) after_count = Data.get_all_data().count() self.assertEqual(after_count, before_count)
def test_post_guest(self): self.assertEqual(CheckedDate.get(2).date, date(2000, 1, 5)) unchecked_data = Data.get_unchecked_data(Data.get_all_data()) expects = [ '必需品1', 'スーパー', '計算外', '貯金', 'PayPayチャージ', '立替分1', '内部移動1', '内部移動2' ] self._assert_list(unchecked_data, expects) response = self.client.post(reverse('moneybook:checked_date'), { 'year': 2001, 'month': 2, 'day': 20, 'method': 2 }) self.assertEqual(response.status_code, 403) self.assertEqual(CheckedDate.get(2).date, date(2000, 1, 5)) unchecked_data = Data.get_unchecked_data(Data.get_all_data()) self._assert_list(unchecked_data, expects)
def test_post_missing_method(self): self.client.force_login(User.objects.create_user(self.username)) self.assertEqual(CheckedDate.get(2).date, date(2000, 1, 5)) unchecked_data = Data.get_unchecked_data(Data.get_all_data()) expects = [ '必需品1', 'スーパー', '計算外', '貯金', 'PayPayチャージ', '立替分1', '内部移動1', '内部移動2' ] self._assert_list(unchecked_data, expects) response = self.client.post(reverse('moneybook:checked_date'), { 'year': 2000, 'month': 1, 'day': 20 }) self.assertEqual(response.status_code, 400) self.assertEqual(CheckedDate.get(2).date, date(2000, 1, 5)) unchecked_data = Data.get_unchecked_data(Data.get_all_data()) self._assert_list(unchecked_data, expects)
def get(self, request, *args, **kwargs): # 全データ all_data = Data.get_all_data() # 未承認トランザクション unchecked_data = Data.get_unchecked_data(all_data) context = { 'unchecked_data': unchecked_data, } return render(request, "_unchecked_data.html", context)
def test_post(self): self.client.force_login(User.objects.create_user(self.username)) before_count = Data.get_all_data().count() response = self.client.post( reverse('moneybook:add'), { 'date': '2000-4-1', 'item': 'テスト項目1', 'price': 10000, 'direction': 2, 'method': 2, 'category': 1, 'temp': False, 'checked': False }) self.assertEqual(response.status_code, 200) self.assertEqual(response.content.decode(), '') after_count = Data.get_all_data().count() self.assertEqual(after_count, before_count + 1)
def post(self, request, *args, **kwargs): written_bank_data = Data.get_checked_data( Data.get_bank_data(Data.get_all_data())) bank_sum = 0 bb = BankBalance.get_all() cc = CreditCheckedDate.get_all() # フォーマットチェック try: for b in bb: key = "bank-" + str(b.pk) if key in request.POST: int(request.POST.get(key)) for c in cc: key = "credit-" + str(c.pk) if key in request.POST: int(request.POST.get(key)) except ValueError: return HttpResponseBadRequest( json.dumps({"message": "invalid parameter"})) # 更新と計算 for b in bb: key = "bank-" + str(b.pk) if key in request.POST: value = int(request.POST.get(key)) BankBalance.set(b.pk, value) bank_sum += BankBalance.get_price(b.pk) for c in cc: key = "credit-" + str(c.pk) if key in request.POST: value = int(request.POST.get(key)) CreditCheckedDate.set_price(c.pk, value) bank_sum -= CreditCheckedDate.get_price(c.pk) return HttpResponse( json.dumps({ "balance": Data.get_income_sum(written_bank_data) - Data.get_outgo_sum(written_bank_data) - bank_sum }))
def test_get_all_data(self): self.assertEqual(Data.get_all_data().count(), 23)
def get(self, request, *args, **kwargs): # validation if "year" in request.GET and "month" in request.GET: year = request.GET.get("year") month = request.GET.get("month") if not is_valid_date(year, month): return HttpResponseBadRequest("parameter error") else: return HttpResponseBadRequest("parameter error") # 全データ all_data = Data.get_all_data() # 今月のデータ monthly_data = Data.get_month_data(int(year), int(month)) # 支払い方法リスト methods = Method.list() # 支払い方法ごとの残高 methods_iob = [] methods_monthly_iob = [] for m in methods: d = Data.get_method_data(all_data, m.pk) methods_iob.append( InOutBalance(m.name, None, None, Data.get_income_sum(d) - Data.get_outgo_sum(d))) i = Data.get_income_sum(Data.get_method_data(monthly_data, m.pk)) o = Data.get_outgo_sum(Data.get_method_data(monthly_data, m.pk)) methods_monthly_iob.append(InOutBalance(m.name, i, o, None)) # 立替と貯金 monthly_temp_and_deposit = Data.get_temp_and_deposit_sum(monthly_data) # 通常データ monthly_normal_data = Data.get_normal_data(monthly_data) # 今月の収入 monthly_income = Data.get_income_sum( monthly_normal_data) - monthly_temp_and_deposit # 今月の支出 monthly_outgo = Data.get_outgo_sum( monthly_normal_data) - monthly_temp_and_deposit # 生活費 living_cost = Data.get_living_cost(monthly_data) # 変動費 variable_cost = Data.get_variable_cost(monthly_data) # 生活費目標額 living_cost_mark = SeveralCosts.get_living_cost_mark() # 内部移動以外 monthly_data_without_inmove = Data.filter_without_intra_move( monthly_data) context = { 'total_balance': Data.get_income_sum(all_data) - Data.get_outgo_sum(all_data), 'methods_iob': methods_iob, 'monthly_income': monthly_income, 'monthly_outgo': monthly_outgo, 'monthly_inout': monthly_income - monthly_outgo, 'living_cost': living_cost, 'variable_cost': variable_cost, 'living_remain': living_cost_mark - living_cost, 'variable_remain': monthly_income - max(SeveralCosts.get_living_cost_mark(), living_cost) - variable_cost, 'monthly_all_income': Data.get_income_sum(monthly_data_without_inmove), 'monthly_all_outgo': Data.get_outgo_sum(monthly_data_without_inmove), 'methods_monthly_iob': methods_monthly_iob, } return render(request, '_balance_statistic_mini.html', context)