def post_project_document(project_id, document_type, document_name, document_content_type, document_content, document_preamble, document_legal_entity_name, new_major_version=None, username=None): """ Will create a new document for the project specified. :param project_id: The ID of the project to add this document to. :type project_id: string :param document_type: The type of document (individual or corporate). :type document_type: string :param document_name: The name of this new document. :type document_name: string :param document_content_type: The content type of this document ('pdf', 'url+pdf', 'storage+pdf', etc). :type document_content_type: string :param document_content: The content of the document (or URL to content if content type starts with 'url+'. :type document_content: string or binary data :param document_preamble: The document preamble. :type document_preamble: string :param document_legal_entity_name: The legal entity name on the document. :type document_legal_entity_name: string :param new_major_version: Whether or not to bump up the major version. :type new_major_version: boolean """ project = get_project_instance() try: project.load(str(project_id)) except DoesNotExist as err: return {'errors': {'project_id': str(err)}} project_acl_verify(username, project) document = get_document_instance() document.set_document_name(document_name) document.set_document_content_type(document_content_type) document.set_document_content(document_content) document.set_document_preamble(document_preamble) document.set_document_legal_entity_name(document_legal_entity_name) if document_type == 'individual': major, minor = cla.utils.get_last_version(project.get_project_individual_documents()) if new_major_version: document.set_document_major_version(major + 1) document.set_document_minor_version(0) else: if major == 0: major = 1 document.set_document_major_version(major) document.set_document_minor_version(minor + 1) project.add_project_individual_document(document) else: major, minor = cla.utils.get_last_version(project.get_project_corporate_documents()) if new_major_version: document.set_document_major_version(major + 1) document.set_document_minor_version(0) else: if major == 0: major = 1 document.set_document_major_version(major) document.set_document_minor_version(minor + 1) project.add_project_corporate_document(document) project.save() # Create audit trail event_data = 'Created new document for Project-{} '.format(project.get_project_name()) Event.create_event( event_type=EventType.CreateProjectDocument, event_project_id=project.get_project_id(), event_data=event_data, contains_pii=False, ) return project.to_dict()
def post_project_document_template(project_id, document_type, document_name, document_preamble, document_legal_entity_name, template_name, new_major_version=None, username=None): """ Will create a new document for the project specified, using the existing template. :param project_id: The ID of the project to add this document to. :type project_id: string :param document_type: The type of document (individual or corporate). :type document_type: string :param document_name: The name of this new document. :type document_name: string :param document_preamble: The document preamble. :type document_preamble: string :param document_legal_entity_name: The legal entity name on the document. :type document_legal_entity_name: string :param template_name: The name of the template object to use. :type template_name: string :param new_major_version: Whether or not to bump up the major version. :type new_major_version: boolean """ project = get_project_instance() try: project.load(str(project_id)) except DoesNotExist as err: return {'errors': {'project_id': str(err)}} project_acl_verify(username, project) document = get_document_instance() document.set_document_name(document_name) document.set_document_preamble(document_preamble) document.set_document_legal_entity_name(document_legal_entity_name) if document_type == 'individual': major, minor = cla.utils.get_last_version(project.get_project_individual_documents()) if new_major_version: document.set_document_major_version(major + 1) document.set_document_minor_version(0) else: document.set_document_minor_version(minor + 1) project.add_project_individual_document(document) else: major, minor = cla.utils.get_last_version(project.get_project_corporate_documents()) if new_major_version: document.set_document_major_version(major + 1) document.set_document_minor_version(0) else: document.set_document_minor_version(minor + 1) project.add_project_corporate_document(document) # Need to take the template, inject the preamble and legal entity name, and add the tabs. tmplt = getattr(cla.resources.contract_templates, template_name) template = tmplt(document_type=document_type.capitalize(), major_version=document.get_document_major_version(), minor_version=document.get_document_minor_version()) content = template.get_html_contract(document_legal_entity_name, document_preamble) pdf_generator = get_pdf_service() pdf_content = pdf_generator.generate(content) document.set_document_content_type('storage+pdf') document.set_document_content(pdf_content, b64_encoded=False) document.set_raw_document_tabs(template.get_tabs()) project.save() # Create audit trail event_data = 'Project Document created for project {} created with template {}'.format( project.get_project_name(), template_name) Event.create_event( event_type=EventType.CreateProjectDocumentTemplate, event_project_id=project.get_project_id(), event_data=event_data, contains_pii=False, ) return project.to_dict()
project.set_project_id(str(uuid.uuid4())) project.set_project_external_id(PROJECT_EXTERNAL_ID) project.set_project_name('Test Project One') project.set_project_ccla_requires_icla_signature(False) project.save() ## Create CCLA Document corporate_template = CNCFTemplate(document_type='Corporate', major_version=1, minor_version=0) content = corporate_template.get_html_contract("", "") pdf_generator = get_pdf_service() pdf_content = pdf_generator.generate(content) ## CCLA corporate_document = get_document_instance() corporate_document.set_document_name('Test CCLA Document') corporate_document.set_document_file_id(str(uuid.uuid4())) corporate_document.set_document_content_type('storage+pdf') corporate_document.set_document_content(pdf_content, b64_encoded=False) corporate_document.set_document_major_version(1) corporate_document.set_document_minor_version(0) corporate_document.set_raw_document_tabs(corporate_template.get_tabs()) project.add_project_corporate_document(corporate_document) project.save() ## Create Github Org GITHUB_ORGANIZATION_NAME = 'linuxfoundation' GITHUB_INSTALLATION_ID = 72228 # NOT THE APP ID - find it in the webhook request JSON or URL when viewing installed apps. cla.log.info('Creating GitHub Organization: %s' % GITHUB_ORGANIZATION_NAME) github_org = get_github_organization_instance()