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 get(self, request, *args, **kwargs): year = kwargs["year"] month = kwargs["month"] # validation if not is_valid_date(year, month): return redirect('moneybook:index') # 前後の日付 to_month = datetime(int(year), int(month), 1) next_month = to_month + relativedelta(months=1) last_month = to_month - relativedelta(months=1) context = { 'app_name': settings.APP_NAME, 'username': request.user, 'year': year, 'month': month, 'next_year': next_month.year, 'next_month': next_month.month, 'last_year': last_month.year, 'last_month': last_month.month, 'directions': Direction.list(), 'methods': Method.list(), 'unused_methods': Method.un_used_list(), 'first_categories': Category.first_list(), 'latter_categories': Category.latter_list(), } return render(request, 'index.html', context)
def post(self, request, *args, **kwargs): pk = kwargs["pk"] try: data = Data.get(pk) except: return HttpResponseBadRequest( json.dumps({"message": "Data does not exist"})) new_data = DataForm(request.POST) if new_data.is_valid(): # データ更新 data.date = request.POST.get("date") data.item = request.POST.get("item") data.price = request.POST.get("price") data.direction = Direction.get(request.POST.get("direction")) data.method = Method.get(request.POST.get("method")) data.category = Category.get(request.POST.get("category")) data.temp = request.POST.get("temp") data.checked = request.POST.get("checked") data.save() return HttpResponse() else: res_data = {} error_list = [] for a in new_data.errors: error_list.append(a) res_data["ErrorList"] = error_list return HttpResponseBadRequest(json.dumps(res_data))
def get(self, request, *args, **kwargs): pk = kwargs["pk"] try: data = Data.get(pk) except: return redirect('moneybook:index') context = { 'app_name': settings.APP_NAME, 'username': request.user, 'data': data, 'directions': Direction.list(), 'methods': Method.list(), 'first_categories': Category.first_list(), 'latter_categories': Category.latter_list(), 'temps': { 0: "No", 1: "Yes" }, 'checkeds': { 0: "No", 1: "Yes" }, } return render(request, "edit.html", context)
def get(self, request, *args, **kwargs): now = datetime.now() context = { 'app_name': settings.APP_NAME, 'username': request.user, 'year': now.year, 'month': now.month, 'directions': Direction.list(), 'methods': Method.list(), 'chargeable_methods': Method.chargeable_list(), 'first_categories': Category.first_list(), 'latter_categories': Category.latter_list(), 'temps': { 0: "No", 1: "Yes" }, 'paypay_pk': Method.get_paypay().pk, 'bank_pk': Method.get_bank().pk, 'traffic_cost_pk': Category.get_traffic_cost().pk, 'deposit_pk': Category.get_deposit().pk, 'income_pk': Category.get_income().pk, } return render(request, 'add.html', context)
def post(self, request, *args, **kwargs): form = IntraMoveForm(request.POST) if form.is_valid(): try: out_data = Data() out_data.date = date(int(request.POST.get("year")), int(request.POST.get("month")), int(request.POST.get("day"))) out_data.price = request.POST.get("price") out_data.direction = Direction.get(2) out_data.method = Method.get(request.POST.get("before_method")) out_data.category = Category.get_intra_move() out_data.temp = False out_data.item = request.POST.get('item') in_data = Data() in_data.date = date(int(request.POST.get("year")), int(request.POST.get("month")), int(request.POST.get("day"))) in_data.price = request.POST.get("price") in_data.direction = Direction.get(1) in_data.method = Method.get(request.POST.get("after_method")) in_data.category = Category.get_intra_move() in_data.temp = False in_data.item = request.POST.get('item') # 保存 out_data.save() in_data.save() # 成功レスポンス return HttpResponse() except: return HttpResponseBadRequest() else: return HttpResponseBadRequest()
def test_chargeable_list(self): ls = Method.chargeable_list() expects = ['Kyash', 'PayPay'] self._assert_list(ls, expects)
def test_unused_list(self): ls = Method.un_used_list() expects = ['nanaco', 'Edy'] self._assert_list(ls, expects)
def test_list(self): ls = Method.list() expects = ['銀行', '現金', 'Kyash', 'PayPay'] self._assert_list(ls, expects)
def test_get(self): self.assertEqual(str(Method.get(1)), "現金") self.assertEqual(str(Method.get(4)), "nanaco")
def get(self, request, *args, **kwargs): context = { 'app_name': settings.APP_NAME, 'username': request.user, 'directions': Direction.list(), 'methods': Method.list(), 'unused_methods': Method.un_used_list(), 'first_categories': Category.first_list(), 'latter_categories': Category.latter_list(), 'temps': { 0: "No", 1: "Yes" }, 'checkeds': { 0: "No", 1: "Yes" }, } # 入力値を維持するための変数 query_context = {} query_list = [ "start_year", "start_month", "start_day", "end_year", "end_month", "end_day", "item", "lower_price", "upper_price" ] for q in query_list: if q in request.GET: query_context[q] = request.GET.get(q) context.update(query_context) query_context = {} query_list = ["direction", "method", "category", "temp", "checked"] for q in query_list: if q in request.GET and request.GET.get(q) != '': query_context[q] = list(map(int, request.GET.getlist(q))) context.update(query_context) # 条件に沿うデータを検索 if "is_query" in request.GET: # 日付 start_date = None if "start_year" in request.GET and "start_month" in request.GET \ and "start_day" in request.GET: if request.GET.get("start_year") != "" \ and request.GET.get("start_month") != "" \ and request.GET.get("start_day") != "": try: date(int(request.GET.get("start_year")), int(request.GET.get("start_month")), int(request.GET.get("start_day"))) start_date = request.GET.get("start_year") + "-" + request.GET.get("start_month") + \ "-" + request.GET.get("start_day") except: start_date = None end_date = None if "end_year" in request.GET and "end_month" in request.GET and "end_day" in request.GET: if request.GET.get("end_year") != "" and request.GET.get( "end_month") != "" and request.GET.get( "end_day") != "": try: date(int(request.GET.get("end_year")), int(request.GET.get("end_month")), int(request.GET.get("end_day"))) end_date = request.GET.get( "end_year") + "-" + request.GET.get( "end_month") + "-" + request.GET.get("end_day") except: end_date = None data = Data.get_range_data(start_date, end_date) # 品目 if "item" in request.GET: item = request.GET.get("item") if item != "": data = Data.get_keyword_data(data, item) # 金額 if "lower_price" in request.GET and request.GET.get( "lower_price") != "": try: data = Data.filter_price( data, int(request.GET.get("lower_price")), None) except: data = data if "upper_price" in request.GET and request.GET.get( "upper_price") != "": try: data = Data.filter_price( data, None, int(request.GET.get("upper_price"))) except: data = data # 方向 if "direction" in request.GET: try: data = Data.filter_directions(data, context["direction"]) except: data = data # 支払い方法 if "method" in request.GET: try: data = Data.filter_methods(data, context["method"]) except: data = data # 分類 if "category" in request.GET: try: data = Data.filter_categories(data, context["category"]) except: data = data # 立替 if "temp" in request.GET: try: data = Data.filter_temps(data, context["temp"]) except: data = data # チェック済み if "checked" in request.GET: try: data = Data.filter_checkeds(data, context["checked"]) except: data = data # 日付順にソート data = Data.sort_ascending(data) context.update({ "show_data": data, "income_sum": Data.get_income_sum(data), "outgo_sum": Data.get_outgo_sum(data), "is_show": True, }) else: context.update({"is_show": False}) return render(request, 'search.html', context)
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)