Add the file metadata app. This app uses binary wrappers called drivers to extract properties from the file of documents. The default driver uses the exiftool to extract the EXIF record from JPEG images. The exiftool can also extra some properties from other files like PDFs, office files and sound file. Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
from __future__ import unicode_literals
|
|
|
|
from .events import event_file_metadata_document_version_submit
|
|
from .tasks import task_process_document_version
|
|
|
|
|
|
def method_document_submit(self):
|
|
latest_version = self.latest_version
|
|
# Don't error out if document has no version
|
|
if latest_version:
|
|
latest_version.submit_for_file_metadata_processing()
|
|
|
|
|
|
def method_document_version_submit(self):
|
|
event_file_metadata_document_version_submit.commit(
|
|
action_object=self.document, target=self
|
|
)
|
|
|
|
task_process_document_version.apply_async(
|
|
kwargs={
|
|
'document_version_id': self.pk,
|
|
}
|
|
)
|
|
|
|
|
|
def method_get_document_file_metadata(self, dotted_name):
|
|
latest_version = self.latest_version
|
|
# Don't error out if document has no version
|
|
if latest_version:
|
|
return latest_version.get_file_metadata(
|
|
dotted_name=dotted_name
|
|
)
|
|
|
|
|
|
def method_get_document_version_file_metadata(self, dotted_name):
|
|
driver_internal_name, key = dotted_name.split('.')
|
|
|
|
try:
|
|
document_driver = self.file_metadata_drivers.get(
|
|
driver__internal_name=driver_internal_name
|
|
)
|
|
except self.file_metadata_drivers.model.DoesNotExist:
|
|
return
|
|
else:
|
|
try:
|
|
return document_driver.entries.get(key=key).value
|
|
except document_driver.entries.model.DoesNotExist:
|
|
return
|