Ejemplo n.º 1
0
    def create_signature_from_document(self,
                                       signature,
                                       subject=u'',
                                       blurb=u'',
                                       sobo_email=None,
                                       **env_params):
        """Register ``signature`` in DocuSign service, for a signature from
        document.

        """
        # Prepare signers.
        signers = self.get_docusign_signers(signature)

        # Prepare documents.
        documents = []
        i = 1
        for document in signature.signature_documents():
            documents.append(
                pydocusign.Document(
                    name=document.name,
                    documentId=i,
                    data=document.bytes,
                ))
            i += 1
        # Create envelope with embedded signing.
        envelope = pydocusign.Envelope(emailSubject=subject,
                                       emailBlurb=blurb,
                                       status=pydocusign.Envelope.STATUS_SENT,
                                       documents=documents,
                                       recipients=signers,
                                       sobo_email=sobo_email,
                                       **env_params)
        envelope.envelopeId = self.docusign_client \
                                  .create_envelope_from_documents(envelope)
        return envelope
Ejemplo n.º 2
0
 def _create_docusign_documents(self):
     docusign_documents = []
     for n, document in enumerate(self.documents, start=1):
         docusign_documents.append(
             pydocusign.Document(name='document_{}.pdf'.format(n),
                                 documentId=n,
                                 data=document.output_buffer))
     self.docusign_documents = docusign_documents
Ejemplo n.º 3
0
 def test_create_envelope_from_document_request(self):
     """Request for creating envelope for document has expected format."""
     docusign = pydocusign.DocuSignClient()
     docusign.login_information()
     with open(os.path.join(pydocusign.test.fixtures_dir(), 'test.pdf'),
               'rb') as pdf_file:
         envelope = pydocusign.Envelope(emailSubject='This is the subject',
                                        emailBlurb='This is the body',
                                        status=models.ENVELOPE_STATUS_SENT,
                                        documents=[
                                            pydocusign.Document(
                                                name='document.pdf',
                                                documentId=1,
                                                data=pdf_file,
                                            ),
                                        ],
                                        recipients=[
                                            pydocusign.Signer(
                                                email='*****@*****.**',
                                                name='Zorro',
                                                recipientId=1,
                                                tabs=[
                                                    pydocusign.SignHereTab(
                                                        documentId=1,
                                                        pageNumber=1,
                                                        xPosition=100,
                                                        yPosition=100,
                                                    ),
                                                    pydocusign.ApproveTab(
                                                        documentId=1,
                                                        pageNumber=1,
                                                        xPosition=100,
                                                        yPosition=200,
                                                    ),
                                                ],
                                                accessCode='0000',
                                            ),
                                        ])
         parts = docusign._create_envelope_from_document_request(envelope)
     self.assertTrue(parts['url'].startswith(docusign.account_url))
     self.assertTrue(parts['url'].endswith('/envelopes'))
     self.assertEqual(parts['headers']['Content-Type'],
                      'multipart/form-data; boundary=myboundary')
     self.assertTrue(parts['body'].strip().startswith(
         '--myboundary\r\n'
         'Content-Type: application/json; charset=UTF-8\r\n'
         'Content-Disposition: form-data\r\n'
         '\r\n'))
Ejemplo n.º 4
0
        emailSubject='Here is a subject',
        emailBody='Here is a message',
        supportedLanguage='en',
    ),
]

# Create envelope with embedded signing.
print("2. POST {account}/envelopes")
document_path = os.path.join(fixtures_dir(), 'test.pdf')
document_2_path = os.path.join(fixtures_dir(), 'test2.pdf')
with open(document_path, 'rb') as pdf, open(document_2_path, 'rb') as pdf_2:
    envelope = pydocusign.Envelope(
        documents=[
            pydocusign.Document(
                name='document.pdf',
                documentId=1,
                data=pdf,
            ),
            pydocusign.Document(
                name='document_2.pdf',
                documentId=2,
                data=pdf_2,
            ),
        ],
        emailSubject='This is the subject',
        emailBlurb='This is the body',
        status=pydocusign.Envelope.STATUS_SENT,
        recipients=signers,
    )
    client.create_envelope_from_documents(envelope)
print("   Received envelopeId {id}".format(id=envelope.envelopeId))
Ejemplo n.º 5
0
def getLinkFromPDF():
    try:
        raw_input
    except NameError:
        raw_input = input

    def prompt(environ_key, description, default):
        try:
            return os.environ[environ_key]
        except KeyError:
            value = raw_input('{description} (default: "{default}"): '.format(
                default=default, description=description))
            if not value:
                return default
            else:
                return value

    # Get configuration from environment or prompt the user...
    root_url = 'https://demo.docusign.net/restapi/v2'
    username = '******'
    password = '******'
    integrator_key = '886c800a-506f-45c7-8db2-a19ab7d4b0a6'
    callback_url = 'www.google.com'
    signer_return_url = 'www.google.com'

    # Create a client.
    client = pydocusign.DocuSignClient(
        root_url=root_url,
        username=username,
        password=password,
        integrator_key=integrator_key,
    )

    # Login. Updates API URLs in client.
    print("1. GET /login_information")
    login_information = client.login_information()
    print("   Received data: {data}".format(data=login_information))

    #Prepare list of signers. Ordering matters.
    signers = [
        pydocusign.Signer(
            email='*****@*****.**',
            name=u'Spencer King',
            recipientId=1,
            clientUserId=str(
                uuid.uuid4()),  # Something unique in your database.
            tabs=[
                pydocusign.SignHereTab(
                    documentId=1,
                    pageNumber=1,
                    xPosition=100,
                    yPosition=200,
                ),
            ],
            emailSubject='Test PDF Docusign Script',
            emailBody='I am testing the docusign script',
            supportedLanguage='en',
        ),
        pydocusign.Signer(
            email='*****@*****.**',
            name=u'Eduardo Lopez',
            recipientId=2,
            clientUserId=str(
                uuid.uuid4()),  # Something unique in your database.
            # tabs=[],  # No tabs means user places tabs himself in DocuSign UI.
            tabs=[
                pydocusign.SignHereTab(
                    documentId=1,
                    pageNumber=1,
                    xPosition=100,
                    yPosition=400,
                ),
            ],
            emailSubject='Well docusign is working',
            emailBody=
            'Figured out how to take a text doc, pdf it, and create and send the signing request, woohoo',
            supportedLanguage='en',
        ),
    ]

    # Create envelope with embedded signing.
    print("2. POST {account}/envelopes")
    event_notification = pydocusign.EventNotification(url=callback_url, )
    document_path = "./Client_Contracts/Final.pdf"  # os.path.join(fixtures_dir(), 'test.pdf')
    #document_2_path = "./test2.pdf"      # os.path.join(fixtures_dir(), 'test2.pdf')
    with open(document_path,
              'rb') as pdf:  #, open(document_2_path, 'rb') as pdf_2:
        envelope = pydocusign.Envelope(
            documents=[
                pydocusign.Document(
                    name='HelloWorldTest.pdf',
                    documentId=1,
                    data=pdf,
                )
            ],
            emailSubject=
            'What does this do - 1',  # Title in docusign demo/sent view
            emailBlurb='What does this do - 2',
            eventNotification=event_notification,
            status=pydocusign.Envelope.STATUS_SENT,
            recipients=signers,
        )
        client.create_envelope_from_documents(envelope)
    print("   Received envelopeId {id}".format(id=envelope.envelopeId))

    # Update recipient list of envelope: fetch envelope's ``UserId`` from DocuSign.
    print("3. GET {account}/envelopes/{envelopeId}/recipients")
    envelope.get_recipients()
    print("   Received UserId for recipient 0: {0}".format(
        envelope.recipients[0].userId))
    print("   Received UserId for recipient 1: {0}".format(
        envelope.recipients[1].userId))

    # Retrieve embedded signing for first recipient.
    print("4. Get DocuSign Recipient View")
    signing_url = envelope.post_recipient_view(envelope.recipients[0],
                                               returnUrl=signer_return_url)
    print("   Received signing URL for recipient 0: {0}".format(signing_url))
    signing_url = envelope.post_recipient_view(envelope.recipients[1],
                                               returnUrl=signer_return_url)
    print("   Received signing URL for recipient 1: {0}".format(signing_url))

    # Download signature documents.
    print("5. List signature documents.")
    document_list = envelope.get_document_list()
    print("   Received document list: {0}".format(document_list))
    print("6. Download documents from DocuSign.")
    for signed_document in document_list:
        document = envelope.get_document(signed_document['documentId'])
        document_sha = hashlib.sha1(document.read()).hexdigest()
        print("   Document SHA1: {0}".format(document_sha))
    print("7. Download signature certificate from DocuSign.")
    document = envelope.get_certificate()
    document_sha = hashlib.sha1(document.read()).hexdigest()
    print("   Certificate SHA1: {0}".format(document_sha))

    URLS = [
        envelope.post_recipient_view(  # Recipient URL 1
            envelope.recipients[0],
            returnUrl=signer_return_url),
        envelope.post_recipient_view(  # Recipient URL 2
            envelope.recipients[1],
            returnUrl=signer_return_url)
    ]

    return URLS
Ejemplo n.º 6
0
]


# Create envelope with embedded signing.
print("2. POST {account}/envelopes")
event_notification = pydocusign.EventNotification(
    url=callback_url,
)
document_path = "./hw.pdf"        # os.path.join(fixtures_dir(), 'test.pdf')
#document_2_path = "./test2.pdf"      # os.path.join(fixtures_dir(), 'test2.pdf')
with open(document_path, 'rb') as pdf: #, open(document_2_path, 'rb') as pdf_2:
    envelope = pydocusign.Envelope(
        documents=[
            pydocusign.Document(
                name='HelloWorldTest.pdf',
                documentId=1,
                data=pdf,
            )
        ],
        emailSubject='What does this do - 1',  # Title in docusign demo/sent view
        emailBlurb='What does this do - 2',
        eventNotification=event_notification,
        status=pydocusign.Envelope.STATUS_SENT,
        recipients=signers,
    )
    client.create_envelope_from_documents(envelope)
print("   Received envelopeId {id}".format(id=envelope.envelopeId))


# Update recipient list of envelope: fetch envelope's ``UserId`` from DocuSign.
print("3. GET {account}/envelopes/{envelopeId}/recipients")
Ejemplo n.º 7
0
    ),
]


# Create envelope with embedded signing.
print("2. POST {account}/envelopes")
event_notification = pydocusign.EventNotification(
    url=callback_url,
)
input_document_path = os.path.join(fixtures_dir(), 'test.pdf')
with open(input_document_path, 'rb') as pdf_file:
    envelope = pydocusign.Envelope(
        documents=[
            pydocusign.Document(
                name='document.pdf',
                documentId=1,
                data=pdf_file,
            ),
        ],
        emailSubject='This is the subject',
        emailBlurb='This is the body',
        eventNotification=event_notification,
        status=pydocusign.Envelope.STATUS_SENT,
        recipients=signers,
    )
    client.create_envelope_from_document(envelope)
print("   Received envelopeId {id}".format(id=envelope.envelopeId))


# Update recipient list of envelope: fetch envelope's ``UserId`` from DocuSign.
print("3. GET {account}/envelopes/{envelopeId}/recipients")