def edit_task_action(calendar_id: str, year: int, month: int, day: int, task_id: int) -> Response: month_names = GregorianCalendar.MONTH_NAMES calendar_data = CalendarData(current_app.config['DATA_FOLDER']) repeats = request.args.get("repeats") == "1" try: if repeats: task = calendar_data.repetitive_task_from_calendar( calendar_id=calendar_id, year=year, month=month, task_id=int(task_id) ) else: task = calendar_data.task_from_calendar( calendar_id=calendar_id, year=year, month=month, day=day, task_id=int(task_id) ) except (FileNotFoundError, IndexError): abort(404) if task["details"] == " ": task["details"] = "" return cast(Response, render_template( "task.html", calendar_id=calendar_id, year=year, month=month, day=day, min_year=current_app.config['MIN_YEAR'], max_year=current_app.config['MAX_YEAR'], month_names=month_names, task=task, base_url=current_app.config['BASE_URL'], editing=True) )
def test_existing_repetitive_task_retrieval( calendar_data: CalendarData) -> None: task_id = 2 task = calendar_data.repetitive_task_from_calendar( calendar_id="sample_data_file", year=2017, month=11, task_id=task_id) assert task is not None assert task["id"] == task_id assert task["is_all_day"] is True
def edit_task_action(calendar_id: str, year: int, month: int, day: int, task_id: int) -> Response: month_names = GregorianCalendar.MONTH_NAMES calendar_data = CalendarData(current_app.config["DATA_FOLDER"], current_app.config["WEEK_STARTING_DAY"]) repeats = request.args.get("repeats") == "1" try: if repeats: task = calendar_data.repetitive_task_from_calendar( calendar_id=calendar_id, year=year, month=month, task_id=int(task_id)) else: task = calendar_data.task_from_calendar( calendar_id=calendar_id, year=year, month=month, day=day, task_id=int(task_id), ) except (FileNotFoundError, IndexError): abort(404) if task["details"] == " ": task["details"] = "" emojis_enabled = current_app.config.get("EMOJIS_ENABLED", False) return cast( Response, render_template( "task.html", calendar_id=calendar_id, year=year, month=month, day=day, min_year=current_app.config["MIN_YEAR"], max_year=current_app.config["MAX_YEAR"], month_names=month_names, task=task, accounts=task["account"], base_url=current_app.config["BASE_URL"], editing=True, emojis_enabled=emojis_enabled, button_default_color_value=current_app. config["BUTTON_CUSTOM_COLOR_VALUE"], buttons_colors=current_app.config["BUTTONS_COLORS_LIST"], buttons_emojis=current_app.config["BUTTONS_EMOJIS_LIST"] if emojis_enabled else tuple(), ), )
def change_amount_action(calendar_id: str, year: str, month: int, day: int, task_id: int, new_amount: float) -> Response: print("ACTIONS -> CHANGE_AMOUNT_ACTION: ", new_amount, file=sys.stderr) calendar_data = CalendarData(current_app.config["DATA_FOLDER"], current_app.config["WEEK_STARTING_DAY"]) repeats = False try: task = calendar_data.repetitive_task_from_calendar( calendar_id=calendar_id, year=year, month=month, task_id=int(task_id)) repeats = True except (FileNotFoundError, IndexError): try: task = calendar_data.task_from_calendar( calendar_id=calendar_id, year=year, month=month, day=day, task_id=int(task_id), ) except (FileNotFoundError, IndexError): abort(404) calendar_data.update_task_amount(calendar_id=calendar_id, year=year, month=month, day=day, task_id=int(task_id), new_amount='{0:.2f}'.format( float(new_amount)), repeats=repeats) return cast(Response, jsonify({}))
def test_non_existing_repetitive_task_retrieval( calendar_data: CalendarData) -> None: with pytest.raises(IndexError): calendar_data.repetitive_task_from_calendar( calendar_id="sample_data_file", year=2017, month=11, task_id=111)