Tags in filenames can now either be found by key (in case - or _ are

used as delimeter) or by index. Added some more tests.
This commit is contained in:
Wolf-Bastian Poettner
2020-02-01 20:58:44 +00:00
parent 05da4a559f
commit d8fda64cd0
3 changed files with 125 additions and 11 deletions

View File

@@ -283,21 +283,39 @@ class Document(models.Model):
return self.filename
def many_to_dictionary(self, field):
@staticmethod
def many_to_dictionary(field):
# Converts ManyToManyField to dictionary by assuming, that field
# entries contain an _ or - which will be used as a delimeter
mydictionary = dict()
for t in field.all():
# Find delimeter
delimeter = t.name.find('_')
if delimeter is -1:
delimeter = t.name.find('-')
if delimeter is -1:
continue
key = t.name[:delimeter]
value = t.name[delimeter+1:]
mydictionary[key] = slugify(value)
mydictionary[slugify(key)] = slugify(value)
return mydictionary
@staticmethod
def many_to_list(field):
# Converts ManyToManyField to list
mylist = list()
for t in field.all():
mylist.append(slugify(t))
return mylist
def generate_source_filename(self):
# Create filename based on configured format
if settings.PAPERLESS_FILENAME_FORMAT is not None:
@@ -306,8 +324,8 @@ class Document(models.Model):
title=slugify(self.title),
created=slugify(self.created),
added=slugify(self.added),
tags=defaultdict(str,
self.many_to_dictionary(self.tags)))
tag=defaultdict(str, self.many_to_dictionary(self.tags)),
tags=self.many_to_list(self.tags))
else:
path = ""