Added primitive doc type checking
This commit is contained in:
parent
6e1b26440f
commit
b11cfcd6ea
@ -75,9 +75,8 @@ class Ensemble(models.Model):
|
|||||||
class Meta:
|
class Meta:
|
||||||
ordering = ('slug', )
|
ordering = ('slug', )
|
||||||
|
|
||||||
#def active_projects(self):
|
def active_projects(self):
|
||||||
# #return self.projects.filter(active=True, event_date__gte=timezone.now())
|
return self.projects.active().current()
|
||||||
# return self.projects.active().current()
|
|
||||||
|
|
||||||
def has_admin(self, user):
|
def has_admin(self, user):
|
||||||
if not user.is_authenticated:
|
if not user.is_authenticated:
|
||||||
|
|||||||
@ -309,15 +309,21 @@ class Document(models.Model):
|
|||||||
DOCTYPE_PDF = 1
|
DOCTYPE_PDF = 1
|
||||||
DOCTYPE_AUDIO = 2
|
DOCTYPE_AUDIO = 2
|
||||||
DOCTYPE_VIDEO = 3
|
DOCTYPE_VIDEO = 3
|
||||||
DOCTYPE_SOURCE = 4
|
DOCTYPE_MISC= 4
|
||||||
|
|
||||||
DOCTYPES = (
|
DOCTYPES = (
|
||||||
(DOCTYPE_PDF, 'PDF'),
|
(DOCTYPE_PDF, 'PDF'),
|
||||||
(DOCTYPE_AUDIO, 'Audio'),
|
(DOCTYPE_AUDIO, 'Audio'),
|
||||||
(DOCTYPE_VIDEO, 'Video'),
|
(DOCTYPE_VIDEO, 'Video'),
|
||||||
(DOCTYPE_SOURCE, 'Source'),
|
(DOCTYPE_MISC, 'Misc'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
DOCTYPE_MAP = {
|
||||||
|
'.pdf': DOCTYPE_PDF,
|
||||||
|
'.mp3': DOCTYPE_AUDIO,
|
||||||
|
'.mp4': DOCTYPE_VIDEO,
|
||||||
|
}
|
||||||
|
|
||||||
work = models.ForeignKey('Work', on_delete=models.CASCADE, related_name="docs")
|
work = models.ForeignKey('Work', on_delete=models.CASCADE, related_name="docs")
|
||||||
doctype = models.PositiveSmallIntegerField(choices=DOCTYPES, default=DOCTYPE_PDF)
|
doctype = models.PositiveSmallIntegerField(choices=DOCTYPES, default=DOCTYPE_PDF)
|
||||||
upload = models.FileField(upload_to=doc_upload_filename, storage=library_storage)
|
upload = models.FileField(upload_to=doc_upload_filename, storage=library_storage)
|
||||||
|
|||||||
@ -9,8 +9,10 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="has-text-right" style="white-space: nowrap;">
|
<td class="has-text-right" style="white-space: nowrap;">
|
||||||
{% if request.is_admin %}
|
{% if request.is_admin %}
|
||||||
|
{% if doc.doctype == 1 %}
|
||||||
<a href="{% url 'document_annotate' collection.pk doc.pk %}"><i class="fas fa-tags"
|
<a href="{% url 'document_annotate' collection.pk doc.pk %}"><i class="fas fa-tags"
|
||||||
title="Manage Tags"></i></a>
|
title="Manage Tags"></i></a>
|
||||||
|
{% endif %}
|
||||||
<a href="{% url 'document_delete' collection.pk doc.pk %}"><i class="fas fa-trash-alt" title="Delete Document"></i></a>
|
<a href="{% url 'document_delete' collection.pk doc.pk %}"><i class="fas fa-trash-alt" title="Delete Document"></i></a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@ -23,6 +23,8 @@ from library.music_tags import MUSIC_TAGS, MUSIC_TAG_BY_NAME
|
|||||||
from library import forms, models
|
from library import forms, models
|
||||||
from library.pdf_utils import extract_pages, extract_and_concat
|
from library.pdf_utils import extract_pages, extract_and_concat
|
||||||
|
|
||||||
|
import logging
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
class ProjectItemListView(ProjectMixin, ListView):
|
class ProjectItemListView(ProjectMixin, ListView):
|
||||||
template_name = "library/item_list.html"
|
template_name = "library/item_list.html"
|
||||||
@ -321,14 +323,18 @@ class WorkAddDocumentView(CollectionMixin, CreateView):
|
|||||||
return super().form_invalid(form)
|
return super().form_invalid(form)
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
|
orig_name, ext = os.path.splitext(form.cleaned_data['upload'].name)
|
||||||
|
logger.info("Uploaded: %s", orig_name)
|
||||||
|
|
||||||
doc = form.save(commit=False)
|
doc = form.save(commit=False)
|
||||||
|
doc.doctype = models.Document.DOCTYPE_MAP.get(ext.lower(), models.Document.DOCTYPE_MISC)
|
||||||
doc.work_id = self.kwargs['pk']
|
doc.work_id = self.kwargs['pk']
|
||||||
doc.save()
|
doc.save()
|
||||||
|
|
||||||
# auto tag the document
|
# auto tag the document
|
||||||
|
|
||||||
name, _ = os.path.splitext(os.path.basename(doc.upload.name))
|
#name, ext = os.path.splitext(os.path.basename(doc.upload.name))
|
||||||
parts = re.split(r'[^A-Za-z]+', name)
|
parts = re.split(r'[^A-Za-z]+', orig_name)
|
||||||
parts.reverse()
|
parts.reverse()
|
||||||
for word in parts:
|
for word in parts:
|
||||||
try:
|
try:
|
||||||
@ -339,6 +345,7 @@ class WorkAddDocumentView(CollectionMixin, CreateView):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if self.request.headers['Accept'] == 'application/json':
|
if self.request.headers['Accept'] == 'application/json':
|
||||||
filename = os.path.basename(doc.upload.name)
|
filename = os.path.basename(doc.upload.name)
|
||||||
return JsonResponse({
|
return JsonResponse({
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user