# Don't save with the lock active. Saving will cause the file
# renaming logic to acquire the lock as well.
+ # This triggers things like file renaming
document.save()
# Delete the file only if it was successfully consumed
self._send_progress(100, 100, "SUCCESS", MESSAGE_FINISHED, document.id)
+ # Return the most up to date fields
+ document.refresh_from_db()
+
return document
def _store(self, text, date, mime_type) -> Document:
with FileLock(settings.MEDIA_LOCK):
try:
+
+ # If this was waiting for the lock, the filename or archive_filename
+ # of this document may have been updated. This happens if multiple updates
+ # get queued from the UI for the same document
+ # So freshen up the data before doing anything
+ instance.refresh_from_db()
+
old_filename = instance.filename
old_source_path = instance.source_path
import backports.zoneinfo as zoneinfo
from django.conf import settings
+from django.utils import timezone
from django.test import override_settings
from django.test import TestCase
def testNormalOperation(self):
filename = self.get_test_file()
+
+ # Get the local time, as an aware datetime
+ # Roughly equal to file modification time
+ rough_create_date_local = timezone.localtime(timezone.now())
+
+ # Consume the file
document = self.consumer.try_consume_file(filename)
self.assertEqual(document.content, "The Text")
self._assert_first_last_send_progress()
- self.assertEqual(document.created.tzinfo, zoneinfo.ZoneInfo("America/Chicago"))
+ # Convert UTC time from DB to local time
+ document_date_local = timezone.localtime(document.created)
+
+ self.assertEqual(
+ document_date_local.tzinfo,
+ zoneinfo.ZoneInfo("America/Chicago"),
+ )
+ self.assertEqual(document_date_local.tzinfo, rough_create_date_local.tzinfo)
+ self.assertEqual(document_date_local.year, rough_create_date_local.year)
+ self.assertEqual(document_date_local.month, rough_create_date_local.month)
+ self.assertEqual(document_date_local.day, rough_create_date_local.day)
+ self.assertEqual(document_date_local.hour, rough_create_date_local.hour)
+ self.assertEqual(document_date_local.minute, rough_create_date_local.minute)
+ # Skipping seconds and more precise
@override_settings(FILENAME_FORMAT=None)
def testDeleteMacFiles(self):