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.