diff --git a/core/models.py b/core/models.py index c13c57f3..8c6f654b 100644 --- a/core/models.py +++ b/core/models.py @@ -572,10 +572,14 @@ class SithFile(models.Model): code='duplicate', ) if self.is_folder: - try: - self.file.delete() - except: pass - self.file = None + if self.file: + try: + import imghdr + if imghdr.what(None, self.file.read()) not in ['gif', 'png', 'jpeg']: + self.file.delete() + self.file = None + except: + self.file = None self.mime_type = "inode/directory" if self.is_file and (self.file is None or self.file == ""): raise ValidationError(_("You must provide a file")) diff --git a/core/views/files.py b/core/views/files.py index 78f50f0b..7ee09240 100644 --- a/core/views/files.py +++ b/core/views/files.py @@ -26,7 +26,7 @@ def send_file(request, file_id, file_class=SithFile, file_attr="file"): iterator for chunks of 8KB. """ f = file_class.objects.filter(id=file_id).first() - if f is None or f.is_folder: + if f is None or not f.file: return not_found(request) from counter.models import Counter if not (can_view(f, request.user) or diff --git a/sas/templates/sas/album.jinja b/sas/templates/sas/album.jinja index e357e161..660a8c53 100644 --- a/sas/templates/sas/album.jinja +++ b/sas/templates/sas/album.jinja @@ -22,7 +22,9 @@
- {% if a.children.filter(is_folder=False, is_moderated=True).exists() %} + {% if a.file %} + {% trans %}preview{% endtrans %} + {% elif a.children.filter(is_folder=False, is_moderated=True).exists() %} {% trans %}preview{% endtrans %} {% else %} {% trans %}preview{% endtrans %} diff --git a/sas/templates/sas/main.jinja b/sas/templates/sas/main.jinja index 452f7e85..6f62e868 100644 --- a/sas/templates/sas/main.jinja +++ b/sas/templates/sas/main.jinja @@ -8,12 +8,14 @@

{% trans %}SAS{% endtrans %}


- {% for a in root_file.children.filter(is_folder=True).all() %} + {% for a in root_file.children.filter(is_folder=True).order_by('date') %} {% if a.is_moderated %}
- {% if a.children.filter(is_folder=False, is_moderated=True).exists() %} + {% if a.file %} + {% trans %}preview{% endtrans %} + {% elif a.children.filter(is_folder=False, is_moderated=True).exists() %} {% trans %}preview{% endtrans %} {% else %} {% trans %}preview{% endtrans %} diff --git a/sas/views.py b/sas/views.py index 6ad04439..28087222 100644 --- a/sas/views.py +++ b/sas/views.py @@ -202,16 +202,16 @@ class PictureEditForm(forms.ModelForm): class AlbumEditForm(forms.ModelForm): class Meta: model = Album - fields=['name', 'parent'] + fields=['name', 'file', 'parent'] parent = make_ajax_field(Album, 'parent', 'files', help_text="") -class PictureEditView(UpdateView): +class PictureEditView(CanEditMixin, UpdateView): model=Picture form_class=PictureEditForm template_name='core/edit.jinja' pk_url_kwarg = "picture_id" -class AlbumEditView(UpdateView): +class AlbumEditView(CanEditMixin, UpdateView): model=Album form_class=AlbumEditForm template_name='core/edit.jinja'