mirror of
https://github.com/ae-utbm/sith.git
synced 2024-11-25 18:44:23 +00:00
Some fixes on SAS upload form
This commit is contained in:
parent
72685618a6
commit
a90a553939
@ -80,7 +80,7 @@
|
|||||||
{% if edit_mode %}
|
{% if edit_mode %}
|
||||||
</form>
|
</form>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<form action="" method="post" enctype="multipart/form-data">
|
<form id="upload_form" action="" method="post" enctype="multipart/form-data">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{{ form.as_p() }}
|
{{ form.as_p() }}
|
||||||
<p><input type="submit" value="{% trans %}Upload{% endtrans %}" /></p>
|
<p><input type="submit" value="{% trans %}Upload{% endtrans %}" /></p>
|
||||||
@ -91,20 +91,20 @@
|
|||||||
{% block script %}
|
{% block script %}
|
||||||
{{ super() }}
|
{{ super() }}
|
||||||
<script>
|
<script>
|
||||||
$("form").submit(function (event) {
|
$("form#upload_form").submit(function (event) {
|
||||||
var formData = new FormData($(this)[0]);
|
var formData = new FormData($(this)[0]);
|
||||||
|
|
||||||
if(formData.get('album_name') === '' && formData.get('images').name === '')
|
if(!formData.get('album_name') && !formData.get('images').name)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if(formData.get('images').name === '') {
|
if(!formData.get('images').name) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
var errorlist;
|
var errorlist;
|
||||||
if((errorlist = this.querySelector('ul.errorlist.nonfield')) === null) {
|
if((errorlist = this.querySelector('#upload_form ul.errorlist.nonfield')) === null) {
|
||||||
errorlist = document.createElement('ul');
|
errorlist = document.createElement('ul');
|
||||||
errorlist.classList.add('errorlist', 'nonfield');
|
errorlist.classList.add('errorlist', 'nonfield');
|
||||||
this.insertBefore(errorlist, this.firstElementChild);
|
this.insertBefore(errorlist, this.firstElementChild);
|
||||||
@ -124,12 +124,13 @@ $("form").submit(function (event) {
|
|||||||
|
|
||||||
var dataHolder;
|
var dataHolder;
|
||||||
|
|
||||||
if(formData.get('album_name') !== '') {
|
if(formData.get('album_name')) {
|
||||||
dataHolder = new FormData();
|
dataHolder = new FormData();
|
||||||
dataHolder.set('csrfmiddlewaretoken', '{{ csrf_token }}');
|
dataHolder.set('csrfmiddlewaretoken', '{{ csrf_token }}');
|
||||||
dataHolder.set('album_name', formData.get('album_name'));
|
dataHolder.set('album_name', formData.get('album_name'));
|
||||||
$.ajax({
|
$.ajax({
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
|
url: "{{ url('sas:album_upload', album_id=object.id) }}",
|
||||||
data: dataHolder,
|
data: dataHolder,
|
||||||
processData: false,
|
processData: false,
|
||||||
contentType: false,
|
contentType: false,
|
||||||
@ -157,10 +158,12 @@ $("form").submit(function (event) {
|
|||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
|
url: "{{ url('sas:album_upload', album_id=object.id) }}",
|
||||||
data: dataHolder,
|
data: dataHolder,
|
||||||
processData: false,
|
processData: false,
|
||||||
contentType: false,
|
contentType: false,
|
||||||
})
|
})
|
||||||
|
.fail(onSuccess.bind(undefined, image))
|
||||||
.done(onSuccess.bind(undefined, image))
|
.done(onSuccess.bind(undefined, image))
|
||||||
.always(next.bind(undefined, image));
|
.always(next.bind(undefined, image));
|
||||||
}
|
}
|
||||||
@ -179,8 +182,8 @@ $("form").submit(function (event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function onSuccess(image, data, status, jqXHR) {
|
function onSuccess(image, data, status, jqXHR) {
|
||||||
if ($(data).find('.errorlist.nonfield')[0])
|
if ($(data.responseText).find('.errorlist.nonfield')[0])
|
||||||
var errors = Array.from($(data).find('.errorlist.nonfield')[0].children);
|
var errors = Array.from($(data.responseText).find('.errorlist.nonfield')[0].children);
|
||||||
else
|
else
|
||||||
var errors = []
|
var errors = []
|
||||||
while(errors.length > 0)
|
while(errors.length > 0)
|
||||||
|
@ -6,6 +6,7 @@ urlpatterns = [
|
|||||||
url(r'^$', SASMainView.as_view(), name='main'),
|
url(r'^$', SASMainView.as_view(), name='main'),
|
||||||
url(r'^moderation$', ModerationView.as_view(), name='moderation'),
|
url(r'^moderation$', ModerationView.as_view(), name='moderation'),
|
||||||
url(r'^album/(?P<album_id>[0-9]+)$', AlbumView.as_view(), name='album'),
|
url(r'^album/(?P<album_id>[0-9]+)$', AlbumView.as_view(), name='album'),
|
||||||
|
url(r'^album/(?P<album_id>[0-9]+)/upload$', AlbumUploadView.as_view(), name='album_upload'),
|
||||||
url(r'^album/(?P<album_id>[0-9]+)/edit$', AlbumEditView.as_view(), name='album_edit'),
|
url(r'^album/(?P<album_id>[0-9]+)/edit$', AlbumEditView.as_view(), name='album_edit'),
|
||||||
url(r'^picture/(?P<picture_id>[0-9]+)$', PictureView.as_view(), name='picture'),
|
url(r'^picture/(?P<picture_id>[0-9]+)$', PictureView.as_view(), name='picture'),
|
||||||
url(r'^picture/(?P<picture_id>[0-9]+)/edit$', PictureEditView.as_view(), name='picture_edit'),
|
url(r'^picture/(?P<picture_id>[0-9]+)/edit$', PictureEditView.as_view(), name='picture_edit'),
|
||||||
|
24
sas/views.py
24
sas/views.py
@ -1,4 +1,5 @@
|
|||||||
from django.shortcuts import render, redirect
|
from django.shortcuts import render, redirect
|
||||||
|
from django.http import HttpResponseRedirect, HttpResponse
|
||||||
from django.core.urlresolvers import reverse_lazy, reverse
|
from django.core.urlresolvers import reverse_lazy, reverse
|
||||||
from django.views.generic import ListView, DetailView, RedirectView, TemplateView
|
from django.views.generic import ListView, DetailView, RedirectView, TemplateView
|
||||||
from django.views.generic.edit import UpdateView, CreateView, DeleteView, ProcessFormView, FormMixin, FormView
|
from django.views.generic.edit import UpdateView, CreateView, DeleteView, ProcessFormView, FormMixin, FormView
|
||||||
@ -34,7 +35,7 @@ class SASForm(forms.Form):
|
|||||||
album = Album(parent=parent, name=self.cleaned_data['album_name'], owner=owner, is_moderated=automodere)
|
album = Album(parent=parent, name=self.cleaned_data['album_name'], owner=owner, is_moderated=automodere)
|
||||||
album.clean()
|
album.clean()
|
||||||
album.save()
|
album.save()
|
||||||
notif = True
|
notif = not automodere
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.add_error(None, _("Error creating album %(album)s: %(msg)s") %
|
self.add_error(None, _("Error creating album %(album)s: %(msg)s") %
|
||||||
{'album': self.cleaned_data['album_name'], 'msg': repr(e)})
|
{'album': self.cleaned_data['album_name'], 'msg': repr(e)})
|
||||||
@ -47,7 +48,7 @@ class SASForm(forms.Form):
|
|||||||
new_file.clean()
|
new_file.clean()
|
||||||
new_file.generate_thumbnails()
|
new_file.generate_thumbnails()
|
||||||
new_file.save()
|
new_file.save()
|
||||||
notif = True
|
notif = not automodere
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.add_error(None, _("Error uploading file %(file_name)s: %(msg)s") % {'file_name': f, 'msg': repr(e)})
|
self.add_error(None, _("Error uploading file %(file_name)s: %(msg)s") % {'file_name': f, 'msg': repr(e)})
|
||||||
if notif:
|
if notif:
|
||||||
@ -148,6 +149,25 @@ def send_compressed(request, picture_id):
|
|||||||
def send_thumb(request, picture_id):
|
def send_thumb(request, picture_id):
|
||||||
return send_file(request, picture_id, Picture, "thumbnail")
|
return send_file(request, picture_id, Picture, "thumbnail")
|
||||||
|
|
||||||
|
class AlbumUploadView(CanViewMixin, DetailView, FormMixin):
|
||||||
|
model = Album
|
||||||
|
form_class = SASForm
|
||||||
|
pk_url_kwarg = "album_id"
|
||||||
|
|
||||||
|
def post(self, request, *args, **kwargs):
|
||||||
|
self.object = self.get_object()
|
||||||
|
self.form = self.get_form()
|
||||||
|
parent = SithFile.objects.filter(id=self.object.id).first()
|
||||||
|
files = request.FILES.getlist('images')
|
||||||
|
if request.user.is_authenticated() and request.user.is_subscribed():
|
||||||
|
if self.form.is_valid():
|
||||||
|
self.form.process(parent=parent, owner=request.user, files=files,
|
||||||
|
automodere=request.user.is_in_group(settings.SITH_GROUP_SAS_ADMIN_ID))
|
||||||
|
if self.form.is_valid():
|
||||||
|
return HttpResponse(str(self.form.errors), status=200)
|
||||||
|
return HttpResponse(str(self.form.errors), status=500)
|
||||||
|
|
||||||
|
|
||||||
class AlbumView(CanViewMixin, DetailView, FormMixin):
|
class AlbumView(CanViewMixin, DetailView, FormMixin):
|
||||||
model = Album
|
model = Album
|
||||||
form_class = SASForm
|
form_class = SASForm
|
||||||
|
Loading…
Reference in New Issue
Block a user