Compare commits

...

2 Commits

Author SHA1 Message Date
Eugen Ciur c8b524910d changes to support document versioning 2020-12-11 10:45:10 +01:00
Eugen Ciur 1b86732056 change to support versioning 2020-12-11 10:44:53 +01:00
2 changed files with 71 additions and 17 deletions

View File

@ -32,12 +32,16 @@ class DocumentPath:
self.version = version
self.pages = "pages"
def url(self):
return f"{self.dirname}{self.file_name}"
def url(self, version=None):
if version:
version = int(version)
@property
def path(self):
return self.url()
return f"{self.dirname(version=version)}{self.file_name}"
def path(self, version=None):
if version:
version = int(version)
return self.url(version=version)
@property
def dirname_docs(self):
@ -57,21 +61,23 @@ class DocumentPath:
return _path
@property
def dirname(self):
def dirname(self, version=None):
if version is None:
version = self.version
full_path = (
f"{self.aux_dir}/user_{self.user_id}/"
f"document_{self.document_id}/"
)
if self.version > 0:
full_path = f"{full_path}v{self.version}/"
if version > 0:
full_path = f"{full_path}v{version}/"
return full_path
@property
def pages_dirname(self):
return f"{self.dirname}{self.pages}/"
def pages_dirname(self, version=None):
return f"{self.dirname(version=version)}{self.pages}/"
def __repr__(self):
message = (
@ -144,7 +150,7 @@ class PagePath:
@property
def ppmroot(self):
# returns schema://.../<doc_id>/pages/<page_num>/<step>/page
pages_dirname = self.results_document_ep.pages_dirname
pages_dirname = self.results_document_ep.pages_dirname()
result = (
f"{pages_dirname}page_{self.page_num}/"
f"{self.step.percent}/page"
@ -153,7 +159,7 @@ class PagePath:
@property
def pages_dirname(self):
return self.document_path.pages_dirname
return self.document_path.pages_dirname()
@property
def path(self):
@ -167,7 +173,7 @@ class PagePath:
return self.txt_url()
def txt_url(self):
pages_dirname = self.results_document_ep.pages_dirname
pages_dirname = self.results_document_ep.pages_dirname()
return f"{pages_dirname}page_{self.page_num}.txt"
@property

View File

@ -19,6 +19,47 @@ class TestDocumentPath(unittest.TestCase):
"docs/user_1/document_3/x.pdf"
)
def test_document_url_with_another_version(self):
doc_ep = DocumentPath(
user_id=1,
document_id=15,
file_name="x.pdf"
)
self.assertEqual(
doc_ep.url(version=3),
"docs/user_1/document_15/v3/x.pdf"
)
self.assertEqual(
doc_ep.url(version=2),
"docs/user_1/document_15/v2/x.pdf"
)
def test_document_url_none_vs_0(self):
doc_ep = DocumentPath(
user_id=1,
document_id=15,
file_name="x.pdf"
)
doc_ep.inc_version() # current version = 1
doc_ep.inc_version() # current version = 2
doc_ep.inc_version() # current version = 3
self.assertEqual(
# with version == None, latest version of the document
# will be returned, which is 3
doc_ep.url(version=None),
"docs/user_1/document_15/v3/x.pdf"
)
self.assertEqual(
# with version == 0, version 0 will be provided
# i.e. version=0 returns original doc.
doc_ep.url(version=0),
"docs/user_1/document_15/x.pdf"
)
def test_inc_version(self):
"""
Document endpoints are now versioned.
@ -48,6 +89,13 @@ class TestDocumentPath(unittest.TestCase):
"docs/user_1/document_3/v2/x.pdf"
)
# however, explicit version can be forced
# by providing an argument to url method.
self.assertEqual(
doc_ep.url(version=1),
"docs/user_1/document_3/v1/x.pdf"
)
def test_dirname(self):
ep = DocumentPath(
user_id=1,
@ -56,7 +104,7 @@ class TestDocumentPath(unittest.TestCase):
file_name="x.pdf"
)
self.assertEqual(
ep.dirname,
ep.dirname(),
"results/user_1/document_3/"
)
@ -68,7 +116,7 @@ class TestDocumentPath(unittest.TestCase):
file_name="x.pdf"
)
self.assertEqual(
ep.pages_dirname,
ep.pages_dirname(),
"results/user_1/document_3/pages/"
)