def user_icla_check(user: User, project_id: str, signature: Signature, latest_major_version=True) -> bool: cla.log.debug(f'ICLA signature found for user: {user} on project: {project_id}, ' f'signature_id: {signature.get_signature_id()}') # Here's our logic to determine if the signature is valid if latest_major_version: # Ensure it's latest signature. project = get_project_instance() project.load(str(project_id)) document_models = project.get_project_individual_documents() major, _ = get_last_version(document_models) if signature.get_signature_document_major_version() != major: cla.log.debug(f'User: {user} only has an old document version signed ' f'(v{signature.get_signature_document_major_version()}) - needs a new version') return False if signature.get_signature_signed() and signature.get_signature_approved(): # Signature found and signed/approved. cla.log.debug(f'User: {user} has ICLA signed and approved signature_id: {signature.get_signature_id()} ' f'for project: {project_id}') return True elif signature.get_signature_signed(): # Not approved yet. cla.log.debug(f'User: {user} has ICLA signed with signature_id: {signature.get_signature_id()}, ' f'project: {project_id}, but has not been approved yet') return False else: # Not signed or approved yet. cla.log.debug(f'User: {user} has ICLA with signature_id: {signature.get_signature_id()}, ' f'project: {project_id}, but has not been signed or approved yet') return False
def user_ccla_check(user: User, project_id: str, signature: Signature) -> bool: cla.log.debug(f'CCLA signature found for user: {user} on project: {project_id}, ' f'signature_id: {signature.get_signature_id()}') if signature.get_signature_signed() and signature.get_signature_approved(): cla.log.debug(f'User: {user} has a signed and approved CCLA for project: {project_id}') return True if signature.get_signature_signed(): cla.log.debug(f'User: {user} has CCLA signed with signature_id: {signature.get_signature_id()}, ' f'project: {project_id}, but has not been approved yet') return False else: # Not signed or approved yet. cla.log.debug(f'User: {user} has CCLA with signature_id: {signature.get_signature_id()}, ' f'project: {project_id}, but has not been signed or approved yet') return False