caselawclient.managers.merge
1import caselawclient.managers.merge.checks as checks 2from caselawclient.models.documents import Document 3from caselawclient.types import SuccessFailureMessageTuple 4 5 6def _combine_list_of_successfailure_results( 7 validations: list[SuccessFailureMessageTuple], 8) -> SuccessFailureMessageTuple: 9 """Given a list of SuccessFailureMessageTuples, combine the success/failure states and any messages into a single new object representing the overall success/failure state.""" 10 success = True 11 messages: list[str] = [] 12 13 for validation in validations: 14 if validation.success is False: 15 success = False 16 17 messages += validation.messages 18 19 return SuccessFailureMessageTuple(success, messages) 20 21 22class MergeManager: 23 @classmethod 24 def check_document_is_safe_as_merge_source(cls, source_document: Document) -> SuccessFailureMessageTuple: 25 """ 26 Is the given document safe to be considered as a merge source? 27 """ 28 29 return _combine_list_of_successfailure_results( 30 [ 31 checks.check_document_is_not_version(source_document), 32 checks.check_document_has_only_one_version(source_document), 33 checks.check_document_has_never_been_published(source_document), 34 checks.check_document_is_safe_to_delete(source_document), 35 ] 36 ) 37 38 @classmethod 39 def check_source_document_is_safe_to_merge_into_target( 40 cls, source_document: Document, target_document: Document 41 ) -> SuccessFailureMessageTuple: 42 """Is the given source document safe to merge into a given target?""" 43 44 return _combine_list_of_successfailure_results( 45 [ 46 checks.check_documents_are_not_same_document(source_document, target_document), 47 checks.check_document_is_not_version(target_document), 48 checks.check_documents_are_same_type(source_document, target_document), 49 checks.check_source_document_is_newer_than_target(source_document, target_document), 50 ] 51 )
class
MergeManager:
23class MergeManager: 24 @classmethod 25 def check_document_is_safe_as_merge_source(cls, source_document: Document) -> SuccessFailureMessageTuple: 26 """ 27 Is the given document safe to be considered as a merge source? 28 """ 29 30 return _combine_list_of_successfailure_results( 31 [ 32 checks.check_document_is_not_version(source_document), 33 checks.check_document_has_only_one_version(source_document), 34 checks.check_document_has_never_been_published(source_document), 35 checks.check_document_is_safe_to_delete(source_document), 36 ] 37 ) 38 39 @classmethod 40 def check_source_document_is_safe_to_merge_into_target( 41 cls, source_document: Document, target_document: Document 42 ) -> SuccessFailureMessageTuple: 43 """Is the given source document safe to merge into a given target?""" 44 45 return _combine_list_of_successfailure_results( 46 [ 47 checks.check_documents_are_not_same_document(source_document, target_document), 48 checks.check_document_is_not_version(target_document), 49 checks.check_documents_are_same_type(source_document, target_document), 50 checks.check_source_document_is_newer_than_target(source_document, target_document), 51 ] 52 )
@classmethod
def
check_document_is_safe_as_merge_source( cls, source_document: caselawclient.models.documents.Document) -> caselawclient.types.SuccessFailureMessageTuple:
24 @classmethod 25 def check_document_is_safe_as_merge_source(cls, source_document: Document) -> SuccessFailureMessageTuple: 26 """ 27 Is the given document safe to be considered as a merge source? 28 """ 29 30 return _combine_list_of_successfailure_results( 31 [ 32 checks.check_document_is_not_version(source_document), 33 checks.check_document_has_only_one_version(source_document), 34 checks.check_document_has_never_been_published(source_document), 35 checks.check_document_is_safe_to_delete(source_document), 36 ] 37 )
Is the given document safe to be considered as a merge source?
@classmethod
def
check_source_document_is_safe_to_merge_into_target( cls, source_document: caselawclient.models.documents.Document, target_document: caselawclient.models.documents.Document) -> caselawclient.types.SuccessFailureMessageTuple:
39 @classmethod 40 def check_source_document_is_safe_to_merge_into_target( 41 cls, source_document: Document, target_document: Document 42 ) -> SuccessFailureMessageTuple: 43 """Is the given source document safe to merge into a given target?""" 44 45 return _combine_list_of_successfailure_results( 46 [ 47 checks.check_documents_are_not_same_document(source_document, target_document), 48 checks.check_document_is_not_version(target_document), 49 checks.check_documents_are_same_type(source_document, target_document), 50 checks.check_source_document_is_newer_than_target(source_document, target_document), 51 ] 52 )
Is the given source document safe to merge into a given target?