O2Z6RAAYF4PDZNZXGYCI4B566NTSCVHFYTR46CFDGGI3KNFW76EAC KASNCQ3VEVIK2DA6RCDSBIDJILP7WLB3RF4R7YLJ4M7D563PCFJQC W5WL3O4EHDLMUX2IZ7XDDZADPJ6KJBKDT2CXPGFNWIDGGYE7K3OQC R2VVWPT45ZOZW7MQ4EWJWJHNBLVUVQDKPYYHGAFZCKJEJ5MXY4VQC WHFVDGU5M2K6UF3RTXTBR4UHJSRCXRSLF6CMIFNEAIUPH2KS6E5AC NZPSP4FWVNXVB47CVYEPFUDGGJ3YH5JAYKILGOJI5PIQ2EL6ZYCQC GIKW7G7ZCEUPTGDPUV236VJCPM7UGNKI6LI2T5KMIUWVNB4PICQQC VWSECUK44FH5GMLGZV4OQJWD4VGQOSLDNMGLMQPUP2QQWU5VKMUAC BIILSRZG4Y3K4DTEBPOQD4EERVJ5DUL3LU42XKJAKWKDN7DVTWXAC UILSLVIAB4X2JHH57MLWDO4BFD665BPR2ISHEX35VFMVGP7QPGYAC 6XRNELJYSCXSUKCASHOV5KI5J7J37L6ZRQLF53XNYFFB5LQSV5SQC VRJ6XA2ZRV5MP6UVYCFFWOVHXFFVOMNXZP4LZ5EYYPYKSDHJYCGAC UGT3GABDAFKEMPYA2G2ATTGHAITHWLOMCVSI5NLGXZNZ7BDFKONQC RNHBTG23XBZEWM6W6ZBQGLDUMGH74NKUORUEATD2Y4AQY4QXXCVAC ND46Z5YJFEA6V6OKCASQIVLXY65HDT7NQAEMCY3CUNR34FTOZB2QC 35RYUCHQHZ5AFGVHWWUGXW6HL5XPBKX6725W4MQYDTX5WUWSDWTQC J6PH2TWHEBJ6U6XRCEHXKSDRVLOPL4PCUEHEIFK5SVR6WZ7Q4GNQC @app.get("/projects/{project_id}/summary/")async def get_project_summary(project_id: str):logs = list(BeatRepository.list({"project_id": project_id}))logs = [Beat(**serialize_from_document(log)) for log in logs]statistical = {}for log in logs:if not statistical.get(log.day):statistical[log.day] = []statistical[log.day].append(log.duration)statistical = {key: str(sum(value)) for key, value in statistical}return statistical
@app.post("/projects/{project_id}/stop")async def end_project_timer(project_id: str, time_validator: RecordTimeValidator):logs = list(BeatRepository.list({"project_id": project_id, "end": None}))
@app.post("/projects/stop")async def end_project_timer(time_validator: RecordTimeValidator):logs = list(BeatRepository.list({"end": None}))