Source code for literature.utils
from datetime import datetime
from django.utils.module_loading import import_string
from literature.conf import settings
[docs]def clean_doi(doi):
"""Clean a DOI string to remove any unnecessary characters."""
return doi.split("doi.org/")[-1].strip("/").lower()
# def simple_autolabeler(obj):
# """The strategy used to create unique labels for literature items in the
# database.
# TODO: This has not been implemented yet
# Args:
# obj (literature.models.Literature): A Literature instance.
# """
# label = f"{obj.authors.first().family}{obj.year}"
# # We don't want label clashes so find how many labels already
# # in the database start with our new label then append the
# # appropriate letter.
# letters = "abcdefghijklmopqrstuvwzy"
# count = obj._meta.model.objects.filter(label__startswith=label).count()
# if count:
# label += letters[count]
# return label
[docs]def simple_file_renamer(instance, fname):
return f"literature/{instance.title[:50].strip()}.pdf"
[docs]def pdf_file_renamer(instance, fname=None):
func = import_string(settings.LITERATURE_PDF_RENAMER)
return func(instance, fname)
[docs]def get_current_year():
return datetime.now().year