def reset_docs_content()

in backend-apis/app/utils/utils_workspace.py [0:0]


def reset_docs_content(template_docs_id: str, case_docs_id: str):
    """

    Args:
        template_docs_id:
        case_docs_id:

    Raises:
        HTTPException:
    """
    document = (
        ws.docs()
        .documents()
        .get(documentId=template_docs_id)
        .execute(num_retries=20)
    )
    docs_template_content = document["body"]["content"]

    # get content of the current doc and delete its content
    current_document = (
        ws.docs()
        .documents()
        .get(documentId=case_docs_id)
        .execute(num_retries=20)
    )
    current_document_content = current_document["body"]["content"]

    try:
        # Delete everything
        requests = []
        requests = [
            {
                "deleteContentRange": {
                    "range": {
                        "startIndex": 1,
                        "endIndex": current_document_content[-1]["endIndex"]
                        - 1,
                    }
                }
            }
        ]
        ws.docs().documents().batchUpdate(
            documentId=case_docs_id, body={"requests": requests}
        ).execute(num_retries=20)

        # Update document with template
        requests = []
        for i in docs_template_content[1:]:
            for j in i["paragraph"]["elements"]:
                requests.append(
                    {
                        "insertText": {
                            "text": j["textRun"]["content"],
                            "location": {"index": j["startIndex"]},
                        }
                    }
                )
                if j["textRun"]["textStyle"]:
                    requests.append(
                        {
                            "updateTextStyle": {
                                "range": {
                                    "startIndex": j["startIndex"],
                                    "endIndex": j["endIndex"],
                                },
                                "textStyle": {**j["textRun"]["textStyle"]},
                                "fields": ", ".join(
                                    j["textRun"]["textStyle"].keys()
                                ),
                            }
                        }
                    )
            if i["paragraph"].get("paragraphStyle", ""):
                requests.append(
                    {
                        "updateParagraphStyle": {
                            "range": {
                                "startIndex": i["startIndex"],
                                "endIndex": i["endIndex"],
                            },
                            "paragraphStyle": {
                                **i["paragraph"]["paragraphStyle"]
                            },
                            "fields": ", ".join(
                                [
                                    k
                                    for k in i["paragraph"][
                                        "paragraphStyle"
                                    ].keys()
                                    if k != "headingId"
                                ]
                            ),
                        }
                    }
                )

        ws.docs().documents().batchUpdate(
            documentId=case_docs_id, body={"requests": requests}
        ).execute(num_retries=20)

    except Exception as e:
        raise HTTPException(status_code=400, detail=str(e)) from e