| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent de3953e commit df90d6e
4 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -24,3 +24,13 @@ def move_envelope(args): | |||
| 24 | 24 | results = folders_api.move_envelopes(account_id=args["account_id"], folder_id=args["folder_id"], folders_request=folders_request) | |
| 25 | 25 | #ds-snippet-end:eSign45Step4 | |
| 26 | 26 | return results | |
| 27 | + | ||
| 28 | + @staticmethod | ||
| 29 | + def get_folders(args): | ||
| 30 | + api_client = create_api_client(base_path=args["base_path"], access_token=args["access_token"]) | ||
| 31 | + folders_api = FoldersApi(api_client) | ||
| 32 | + | ||
| 33 | + #ds-snippet-start:eSign45Step5 | ||
| 34 | + results = folders_api.list(account_id=args["account_id"]) | ||
| 35 | + #ds-snippet-end:eSign45Step5 | ||
| 36 | + return results | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,10 @@ | |||
| 1 | + def get_folder_id_by_name(folders, folder_name): | ||
| 2 | + for folder in folders: | ||
| 3 | + if folder.name.lower() == folder_name.lower(): | ||
| 4 | + return folder.folder_id | ||
| 5 | + | ||
| 6 | + subfolders = folder.folders | ||
| 7 | + if subfolders is not None and len(subfolders) > 0: | ||
| 8 | + folder_id = get_folder_id_by_name(subfolders, folder_name) | ||
| 9 | + if folder_id is not None: | ||
| 10 | + return folder_id | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,11 +1,12 @@ | |||
| 1 | - """ Example 045: Delete and Restore an Envelope """ | ||
| 1 | + """ Example 045: Delete and undelete an Envelope """ | ||
| 2 | 2 | ||
| 3 | 3 | from os import path | |
| 4 | 4 | ||
| 5 | 5 | from docusign_esign.client.api_exception import ApiException | |
| 6 | 6 | from flask import render_template, session, Blueprint, request, redirect | |
| 7 | 7 | ||
| 8 | 8 | from ..examples.eg045_delete_restore_envelope import Eg045DeleteRestoreEnvelopeController | |
| 9 | + from ..utils import get_folder_id_by_name | ||
| 9 | 10 | from ...docusign import authenticate, ensure_manifest, get_example_by_number | |
| 10 | 11 | from ...ds_config import DS_CONFIG | |
| 11 | 12 | from ...error_handlers import process_error | |
@@ -54,7 +55,7 @@ def delete_envelope(): | |||
| 54 | 55 | return render_template( | |
| 55 | 56 | "example_done.html", | |
| 56 | 57 | title=example["ExampleName"], | |
| 57 | - message=additional_page_data["ResultsPageText"], | ||
| 58 | + message=additional_page_data["ResultsPageText"].format(args["envelope_id"]), | ||
| 58 | 59 | redirect_url=restore_endpoint | |
| 59 | 60 | ) | |
| 60 | 61 | ||
@@ -69,26 +70,43 @@ def restore_envelope(): | |||
| 69 | 70 | """ | |
| 70 | 71 | ||
| 71 | 72 | # 1. Get required arguments | |
| 73 | + folder_name = pattern.sub("", request.form.get("folder_name")) | ||
| 72 | 74 | args = { | |
| 73 | 75 | "account_id": session["ds_account_id"], | |
| 74 | 76 | "base_path": session["ds_base_path"], | |
| 75 | 77 | "access_token": session["ds_access_token"], | |
| 76 | 78 | "envelope_id": pattern.sub("", session.get("envelope_id")), | |
| 77 | - "folder_id": restore_folder_id, | ||
| 78 | 79 | "from_folder_id": delete_folder_id | |
| 79 | 80 | } | |
| 81 | + | ||
| 82 | + example = get_example_by_number(session["manifest"], example_number, api) | ||
| 80 | 83 | try: | |
| 81 | 84 | # 2. Call the worker method | |
| 85 | + folders = Eg045DeleteRestoreEnvelopeController.get_folders(args) | ||
| 86 | + args["folder_id"] = get_folder_id_by_name(folders.folders, folder_name) | ||
| 87 | + | ||
| 88 | + if args["folder_id"] is None: | ||
| 89 | + additional_page_data = next( | ||
| 90 | + (p for p in example["AdditionalPage"] if p["Name"] == "folder_does_not_exist"), | ||
| 91 | + None | ||
| 92 | + ) | ||
| 93 | + | ||
| 94 | + return render_template( | ||
| 95 | + "example_done.html", | ||
| 96 | + title=example["ExampleName"], | ||
| 97 | + message=additional_page_data["ResultsPageText"].format(folder_name), | ||
| 98 | + redirect_url=restore_endpoint | ||
| 99 | + ) | ||
| 100 | + | ||
| 82 | 101 | Eg045DeleteRestoreEnvelopeController.move_envelope(args) | |
| 83 | 102 | except ApiException as err: | |
| 84 | 103 | return process_error(err) | |
| 85 | 104 | ||
| 86 | 105 | # 3. Render success response with envelopeId | |
| 87 | - example = get_example_by_number(session["manifest"], example_number, api) | ||
| 88 | 106 | return render_template( | |
| 89 | 107 | "example_done.html", | |
| 90 | 108 | title=example["ExampleName"], | |
| 91 | - message=example["ResultsPageText"] | ||
| 109 | + message=example["ResultsPageText"].format(session.get("envelope_id", ""), args["folder_id"], folder_name) | ||
| 92 | 110 | ) | |
| 93 | 111 | ||
| 94 | 112 | @eg045.route(f"/{eg}", methods=["GET"]) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -5,13 +5,19 @@ <h4>{{ title }}</h4> | |||
| 5 | 5 | <p>{{ session["manifest"]["SupportingTexts"]["HelpingTexts"]["EnvelopeWillBeRestored"].format(envelope_id) | safe }}</p> | |
| 6 | 6 | ||
| 7 | 7 | {% set form_index = 0 %} | |
| 8 | - {% set envelope_id_index = 0 %} | ||
| 8 | + {% set folder_name_index = 1 %} | ||
| 9 | 9 | ||
| 10 | 10 | <form class="eg" action="" method="post" data-busy="form"> | |
| 11 | - {% if 'FormName' in example['Forms'][recipient_form_index] %} | ||
| 12 | - <p>{{ example['Forms'][recipient_form_index]['FormName'] | safe }}</p> | ||
| 11 | + {% if 'FormName' in example['Forms'][form_index] %} | ||
| 12 | + <p>{{ example['Forms'][form_index]['FormName'] | safe }}</p> | ||
| 13 | 13 | {% endif %} | |
| 14 | 14 | ||
| 15 | + <div class="form-group"> | ||
| 16 | + <label for="folder_name">{{ example['Forms'][form_index]['Inputs'][folder_name_index]['InputName'] }}</label> | ||
| 17 | + <input type="text" class="form-control" id="folder_name" name="folder_name" | ||
| 18 | + placeholder="{{ example['Forms'][form_index]['Inputs'][folder_name_index]['InputPlaceholder'] }}" required/> | ||
| 19 | + </div> | ||
| 20 | + | ||
| 15 | 21 | <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> | |
| 16 | 22 | {% include 'submit_button.html' %} | |
| 17 | 23 | </form> | |
| Back | FazBrowse Home | New Git URL |
0 commit comments