caselawclient.managers.merge.checks
1from caselawclient.models.documents import Document 2from caselawclient.types import SuccessFailureMessageTuple 3 4 5def check_document_is_not_version(document: Document) -> SuccessFailureMessageTuple: 6 """Check that the document URI isn't a specific version""" 7 if document.is_version: 8 return SuccessFailureMessageTuple( 9 False, 10 ["This document is a specific version, and cannot be used as a merge source"], 11 ) 12 13 return SuccessFailureMessageTuple(True, []) 14 15 16def check_document_has_only_one_version(document: Document) -> SuccessFailureMessageTuple: 17 """Make sure the document has exactly one version.""" 18 if len(document.versions) > 1: 19 return SuccessFailureMessageTuple( 20 False, 21 ["This document has more than one version"], 22 ) 23 24 return SuccessFailureMessageTuple(True, []) 25 26 27def check_document_has_never_been_published(document: Document) -> SuccessFailureMessageTuple: 28 """Make sure the document has never been published.""" 29 if document.has_ever_been_published: 30 return SuccessFailureMessageTuple( 31 False, 32 ["This document has previously been published"], 33 ) 34 35 return SuccessFailureMessageTuple(True, []) 36 37 38def check_document_is_safe_to_delete(document: Document) -> SuccessFailureMessageTuple: 39 """Make sure the document is safe to delete.""" 40 if not document.safe_to_delete: 41 return SuccessFailureMessageTuple( 42 False, 43 ["This document cannot be deleted because it is published"], 44 ) 45 46 return SuccessFailureMessageTuple(True, []) 47 48 49def check_documents_are_not_same_document(document_one: Document, document_two: Document) -> SuccessFailureMessageTuple: 50 """Check that two documents aren't actually the same""" 51 if document_one.uri == document_two.uri: 52 return SuccessFailureMessageTuple( 53 False, 54 ["You cannot merge a document with itself"], 55 ) 56 return SuccessFailureMessageTuple(True, []) 57 58 59def check_documents_are_same_type(document_one: Document, document_two: Document) -> SuccessFailureMessageTuple: 60 """Check to see if this document is the same type as a target document.""" 61 if type(document_one) is not type(document_two): 62 return SuccessFailureMessageTuple( 63 False, 64 [ 65 f"The type of {document_one.uri} ({type(document_one).document_noun}) does not match the type of {document_two.uri} ({type(document_two).document_noun})" 66 ], 67 ) 68 return SuccessFailureMessageTuple(True, []) 69 70 71def check_source_document_is_newer_than_target( 72 source_document: Document, target_document: Document 73) -> SuccessFailureMessageTuple: 74 """Check to see if the created datetime of the latest version of this document is newer than the created datetime of the latest version of a target document.""" 75 if source_document.version_created_datetime < target_document.version_created_datetime: 76 return SuccessFailureMessageTuple( 77 False, [f"The document at {source_document.uri} is older than the latest version of {target_document.uri}"] 78 ) 79 return SuccessFailureMessageTuple(True, [])
def
check_document_is_not_version( document: caselawclient.models.documents.Document) -> caselawclient.types.SuccessFailureMessageTuple:
6def check_document_is_not_version(document: Document) -> SuccessFailureMessageTuple: 7 """Check that the document URI isn't a specific version""" 8 if document.is_version: 9 return SuccessFailureMessageTuple( 10 False, 11 ["This document is a specific version, and cannot be used as a merge source"], 12 ) 13 14 return SuccessFailureMessageTuple(True, [])
Check that the document URI isn't a specific version
def
check_document_has_only_one_version( document: caselawclient.models.documents.Document) -> caselawclient.types.SuccessFailureMessageTuple:
17def check_document_has_only_one_version(document: Document) -> SuccessFailureMessageTuple: 18 """Make sure the document has exactly one version.""" 19 if len(document.versions) > 1: 20 return SuccessFailureMessageTuple( 21 False, 22 ["This document has more than one version"], 23 ) 24 25 return SuccessFailureMessageTuple(True, [])
Make sure the document has exactly one version.
def
check_document_has_never_been_published( document: caselawclient.models.documents.Document) -> caselawclient.types.SuccessFailureMessageTuple:
28def check_document_has_never_been_published(document: Document) -> SuccessFailureMessageTuple: 29 """Make sure the document has never been published.""" 30 if document.has_ever_been_published: 31 return SuccessFailureMessageTuple( 32 False, 33 ["This document has previously been published"], 34 ) 35 36 return SuccessFailureMessageTuple(True, [])
Make sure the document has never been published.
def
check_document_is_safe_to_delete( document: caselawclient.models.documents.Document) -> caselawclient.types.SuccessFailureMessageTuple:
39def check_document_is_safe_to_delete(document: Document) -> SuccessFailureMessageTuple: 40 """Make sure the document is safe to delete.""" 41 if not document.safe_to_delete: 42 return SuccessFailureMessageTuple( 43 False, 44 ["This document cannot be deleted because it is published"], 45 ) 46 47 return SuccessFailureMessageTuple(True, [])
Make sure the document is safe to delete.
def
check_documents_are_not_same_document( document_one: caselawclient.models.documents.Document, document_two: caselawclient.models.documents.Document) -> caselawclient.types.SuccessFailureMessageTuple:
50def check_documents_are_not_same_document(document_one: Document, document_two: Document) -> SuccessFailureMessageTuple: 51 """Check that two documents aren't actually the same""" 52 if document_one.uri == document_two.uri: 53 return SuccessFailureMessageTuple( 54 False, 55 ["You cannot merge a document with itself"], 56 ) 57 return SuccessFailureMessageTuple(True, [])
Check that two documents aren't actually the same
def
check_documents_are_same_type( document_one: caselawclient.models.documents.Document, document_two: caselawclient.models.documents.Document) -> caselawclient.types.SuccessFailureMessageTuple:
60def check_documents_are_same_type(document_one: Document, document_two: Document) -> SuccessFailureMessageTuple: 61 """Check to see if this document is the same type as a target document.""" 62 if type(document_one) is not type(document_two): 63 return SuccessFailureMessageTuple( 64 False, 65 [ 66 f"The type of {document_one.uri} ({type(document_one).document_noun}) does not match the type of {document_two.uri} ({type(document_two).document_noun})" 67 ], 68 ) 69 return SuccessFailureMessageTuple(True, [])
Check to see if this document is the same type as a target document.
def
check_source_document_is_newer_than_target( source_document: caselawclient.models.documents.Document, target_document: caselawclient.models.documents.Document) -> caselawclient.types.SuccessFailureMessageTuple:
72def check_source_document_is_newer_than_target( 73 source_document: Document, target_document: Document 74) -> SuccessFailureMessageTuple: 75 """Check to see if the created datetime of the latest version of this document is newer than the created datetime of the latest version of a target document.""" 76 if source_document.version_created_datetime < target_document.version_created_datetime: 77 return SuccessFailureMessageTuple( 78 False, [f"The document at {source_document.uri} is older than the latest version of {target_document.uri}"] 79 ) 80 return SuccessFailureMessageTuple(True, [])
Check to see if the created datetime of the latest version of this document is newer than the created datetime of the latest version of a target document.