get_versions method added

master
Eugen Ciur 2020-12-14 07:01:20 +01:00
parent faba619024
commit e341100e69
3 changed files with 77 additions and 0 deletions

View File

@ -1,6 +1,12 @@
# Changelog
## [1.3.4] - 14 December 2020
### Changed
- mglib.storage.get_versions(self, doc_path) method added
## [1.3.3] - 14 December 2020
### Changed

View File

@ -35,6 +35,31 @@ class Storage:
exist_ok=True
)
def get_versions(self, doc_path):
"""
Returns a list of (all) ordered versions
of specific doc_path. Versions
start with 0. Examples of return values:
- [0, 1, 2, 3] = 4 versions of the document
- [ 0 ] = only one version (original)
To count versions it just counts number of subfolders
in specific document folder. Versions are
stored in subfolders named v1, v2, v3, ...
"""
abs_dirname_docs = self.path(
doc_path.dirname_docs
)
only_dirs = [
fi for fi in listdir(abs_dirname_docs) if isdir(
join(abs_dirname_docs, fi)
)
]
dirs_count = len(only_dirs)
return list(range(0, dirs_count + 1))
def get_pagecount(self, doc_path):
"""
Returns total number of pages for this doc_path.

View File

@ -41,3 +41,49 @@ class TestStorage(unittest.TestCase):
f1.exists()
)
def test_get_versions_1(self):
storage = FileSystemStorage(location=MEDIA_ROOT)
with TemporaryNode(MEDIA_ROOT) as media_root:
docs = media_root.add_folder("docs")
res = media_root.add_folder("results")
f1 = docs.add_folder("user_1/document_2")
f1.add_file("doku.pdf")
# simulate 2 versions of the document.
f1.add_folder("v1")
f1.add_folder("v2")
res.add_folder("user_1/document_2/pages")
doc_path = DocumentPath(
user_id=1,
document_id=2,
file_name='doku.pdf',
version=2
)
versions = storage.get_versions(doc_path)
self.assertEqual(
versions, [0, 1, 2]
)
def test_get_versions_2(self):
storage = FileSystemStorage(location=MEDIA_ROOT)
with TemporaryNode(MEDIA_ROOT) as media_root:
docs = media_root.add_folder("docs")
f1 = docs.add_folder("user_1/document_2")
f1.add_file("doku.pdf")
doc_path = DocumentPath(
user_id=1,
document_id=2,
file_name='doku.pdf',
version=2
)
versions = storage.get_versions(doc_path)
# document has only one version - the latest
self.assertEqual(
versions, [0]
)