def get(self, request, envelope_id): envelopes_api = EnvelopesApi(get_api_client()) envelope = envelopes_api.get_envelope(ACCOUNT_ID, envelope_id) envelope.status = 'voided' envelope.voided_reason = 'changed my mind' envelope.purge_state = None envelopes_api.update(ACCOUNT_ID, envelope_id, envelope=envelope) SigEnvelope.objects.get(envelope_id=envelope_id).delete() return redirect('esign:envelope_list')
def worker(cls, args): """ 1. Call the envelope update method """ # Create the envelope definition env = EnvelopeDefinition(workflow=Workflow( workflow_status="in_progress")) # Exceptions will be caught by the calling function api_client = create_api_client(base_path=args["base_path"], access_token=args["access_token"]) # 2. Call Envelopes::update API method # Exceptions will be caught by the calling function envelopes_api = EnvelopesApi(api_client) results = envelopes_api.update(account_id=args["account_id"], envelope_id=args["envelope_id"], envelope=env, resend_envelope=True) return {"envelope_id": results.envelope_id}
def createEnv(repReports=extractReport(), template_id="a07ff1a4-d135-459a-ac45-e5b1f3f5e021", api_client=dsAuth(), template_role_name='Rep', template_role_cc='Rep Manager'): docusign.configuration.api_client = api_client data_labels = { "CaseNum_Label": ["CNum_1", "CNum_2", "CNum_3", "CNum_4", "CNum_5", "CNum_6"], "DateEsc_Label": ["Date_1", "Date_2", "Date_3", "Date_4", "Date_5", "Date_6"], "Subject_Label": [ "Subject_1", "Subject_2", "Subject_3", "Subject_4", "Subject_5", "Subject_6" ], "CaseRes_Label": [ "Resolution_1", "Resolution_2", "Resolution_3", "Resolution_4", "Resolution_5", "Resolution_6" ], "T3": ["T3_1", "T3_2", "T3_3", "T3_4", "T3_5", "T3_6"], "Link": ["Link_1", "Link_2", "Link_3", "Link_4", "Link_5", "Link_6"] } # repEmails = get_emails() sentListOut = [] env_count = 0 # loop through each rep for key, val in repReports.items(): if key != "Bug Backlog" and val[ 'MgrEmail'] != 'n/a': # '*****@*****.**': # and val['Email'].lower() == '*****@*****.**': # create an envelope to be signed envelope_definition = docusign.EnvelopeDefinition() if val['MgrEmail'] == '*****@*****.**' or val['Email'].lower() \ in ("*****@*****.**","*****@*****.**","*****@*****.**"): envelope_definition.email_subject = 'Tier 3 case escalation feedback - ' \ 'here\'s what happened with your recent previously owned cases' envelope_definition.email_blurb = 'Hello ' + key.split(' ')[ 0] + ', \n\nI\'m sending these out to you tier 3 reps as well now so if another tier 3 or dev ' \ 'support takes on your cases we can close the loop on these as well. \n\nFeel free to message ' \ 'me for any suggestions on how to make this program even better. \n\nThanks for reading,' \ '\n\nKevin\'s Autofeedbacker bot' else: envelope_definition.email_subject = 'Tier 3 case escalation feedback - here\'s what happened with ' \ 'your recent escalated cases' envelope_definition.email_blurb = 'Hello ' + key.split(' ')[ 0] + ', \n\nWe\'re starting a new program intended to provide you with a followup on how the cases ' \ 'you escalated to tier 3 were resolved. The purpose of this is to learn from these cases, ' \ 'we know you\'re too busy to check up on all of those so we\'re making it easy with these ' \ 'weekly reports. If you\'re missing any cases we may still be working on them so stay tuned. ' \ 'Feel free to reach out to the tier 3 rep who closed these cases for more details on what ' \ 'they did. \n\nFeel free to message Kevin Alber for any suggestions on how to make this ' \ 'program even better. \n\nThanks for reading,\n\nKevin\'s Autofeedbacker bot' # assign template information including ID and role(s) envelope_definition.template_id = template_id # create manager email notification, need to test mgr_emailNotification = docusign.RecipientEmailNotification() mgr_emailNotification.email_subject = 'Tier 3 case escalation feedback - here\'s what happened with ' + \ key.split(' ')[0] + '\'s recent escalated cases' mgr_emailNotification.email_body = 'Hello ' + val['MgrEmail'].split('.')[ 0].title() + ', \n\n We\'re starting a new program intended to provide your reps with feedback on cases ' \ 'that they escalated to tier 3 so they can learn from them and you can better coach them. ' \ 'Please let me, Kevin Alber, know if you have any feedback about this process. \n\nThanks ' \ 'for reading,\n\nKevin\'s Autofeedbacker bot' # create a template role with a valid template_id and role_name and assign signer info t_role = docusign.TemplateRole() t_role.role_name = template_role_name t_role.name = key if test_mode == 1: t_role.email = '*****@*****.**' # for real send else: t_role.email = val['Email'] print("Envelope going to rep: " + val['Email']) # mgr role on template t_role_cc = docusign.TemplateRole() t_role_cc.role_name = template_role_cc t_role_cc.name = val['MgrEmail'].split('@')[0].replace( '.', ' ').title() # might want to just add this to spreadsheet if test_mode == 1 or val[ 'MgrEmail'] == '*****@*****.**': t_role_cc.email = '*****@*****.**' # else: t_role_cc.email = val['MgrEmail'] t_role_cc.email_notification = mgr_emailNotification # create a list of template roles and add our newly created role # assign template role(s) to the envelope envelope_definition.template_roles = [t_role, t_role_cc] # send the envelope by setting |status| to "sent". To save as a draft set to "created" envelope_definition.status = 'created' # notif = Notification() # notif.use_account_defaults = "True" # envelope_definition.notification = notif auth_api = AuthenticationApi() envelopes_api = EnvelopesApi() # create draft try: login_info = auth_api.login( api_password='******', include_account_id_guid='true') ### assert login_info is not None assert len(login_info.login_accounts) > 0 login_accounts = login_info.login_accounts assert login_accounts[0].account_id is not None base_url, _ = login_accounts[0].base_url.split('/v2') api_client.host = base_url docusign.configuration.api_client = api_client envelope_summary = envelopes_api.create_envelope( login_accounts[0].account_id, envelope_definition=envelope_definition) assert envelope_summary is not None assert envelope_summary.envelope_id is not None assert envelope_summary.status == 'created' env_count += 1 # print("Envelope Created Summary: ", end="") # pprint(envelope_summary) except ApiException as e: print("\nException when calling DocuSign API: %s" % e) assert e is None # make the test case fail in case of an API exception # get array of tab objects on the current envelope tab_array = envelopes_api.get_page_tabs( login_accounts[0].account_id, 1, envelope_summary.envelope_id, 1).text_tabs # iterate through each case as row in envelope row = 0 tab_list = [] for v in val['Cases']: if row < 6: label = 'CaseNum_Label' target_tab = next( (x for x in tab_array if x.tab_label == data_labels[label][row]), None) assert target_tab is not None t_col1 = docusign.Text() t_col1.tab_label = data_labels[label][row - 1] t_col1.value = str(v['CaseNumber']) t_col1.tab_id = target_tab.tab_id t_col1.documentId = "1" t_col1.recipientId = "1" t_col1.pageNumber = 1 tab_list.append(t_col1) # print(str(v['CaseNumber'])) sentListOut.append(v['CaseNumber']) label = 'DateEsc_Label' target_tab = next( (x for x in tab_array if x.tab_label == data_labels[label][row]), None) assert target_tab is not None t_col2 = docusign.Text() t_col2.tab_label = data_labels[label][row] t_col2.value = v['DateEscalated'] t_col2.tab_id = target_tab.tab_id t_col2.documentId = "1" t_col2.recipientId = "1" t_col2.pageNumber = 1 tab_list.append(t_col2) # subMaxChar = charLimit(19, 10, v['Subject']) if len(v['Subject']) > 160: extra = '...' else: extra = '' label = 'Subject_Label' target_tab = next( (x for x in tab_array if x.tab_label == data_labels[label][row]), None) assert target_tab is not None t_col3 = docusign.Text() t_col3.tab_label = data_labels[label][row] t_col3.disable_auto_size = 'True' t_col3.height = '200' t_col3.value = v['Subject'][:160] + extra t_col3.tab_id = target_tab.tab_id t_col3.documentId = "1" t_col3.recipientId = "1" t_col3.pageNumber = 1 tab_list.append(t_col3) if len(v['CaseResolution']) > 184: extra = '...' else: extra = '' label = 'CaseRes_Label' target_tab = next( (x for x in tab_array if x.tab_label == data_labels[label][row]), None) assert target_tab is not None t_col4 = docusign.Text() t_col4.tab_label = data_labels[label][row] t_col4.disable_auto_size = 'True' t_col4.height = '200' t_col4.value = v['CaseResolution'][:184] + extra t_col4.tab_id = target_tab.tab_id t_col4.documentId = "1" t_col4.recipientId = "1" t_col4.pageNumber = 1 tab_list.append(t_col4) label = 'T3' target_tab = next( (x for x in tab_array if x.tab_label == data_labels[label][row]), None) assert target_tab is not None t_col5 = docusign.Text() t_col5.tab_label = data_labels[label][row] t_col5.value = v['T3RepName'] t_col5.tab_id = target_tab.tab_id t_col5.documentId = "1" t_col5.recipientId = "1" t_col5.pageNumber = 1 tab_list.append(t_col5) label = 'Link' target_tab = next( (x for x in tab_array if x.tab_label == data_labels[label][row]), None) assert target_tab is not None t_col6 = docusign.Text() t_col6.tab_label = "#HREF_" + data_labels[label][row] t_col6.name = v['link'] t_col6.value = 'Go to Case' t_col6.tab_id = target_tab.tab_id t_col6.documentId = "1" t_col6.recipientId = "1" t_col6.pageNumber = 1 tab_list.append(t_col6) row += 1 else: print("We're over 6 cases for rep" + val['Email'] + ", dropped case " + str(v['CaseNumber'])) # now update those tabs using my list of tab definitions, then update status to sent tabs = docusign.Tabs() tabs.text_tabs = tab_list envelopes_api.update_tabs(login_accounts[0].account_id, envelope_summary.envelope_id, 1, tabs=tabs) envelope_definition.status = 'sent' envelope_summary2 = envelopes_api.update( login_accounts[0].account_id, envelope_summary.envelope_id, envelope=envelope_definition) if test_mode != 1: updateSentList(sentListOut) # print("Sent: " +str(key)+ " envId: " + ) # + "EnvelopeSummary: ", end="") # pprint(envelope_summary2) print("Count: " + str(env_count))