diff --git a/sas/templates/sas/main.jinja b/sas/templates/sas/main.jinja
index 9a904f51..f6706e62 100644
--- a/sas/templates/sas/main.jinja
+++ b/sas/templates/sas/main.jinja
@@ -6,6 +6,11 @@
{% block content %}
{% for a in root_file.children.filter(is_folder=True).all() %}
diff --git a/sas/views.py b/sas/views.py
index 31e2aa48..1946f46c 100644
--- a/sas/views.py
+++ b/sas/views.py
@@ -1,6 +1,7 @@
from django.shortcuts import render
+# from django.core.urlresolvers import reverse_lazy
from django.views.generic import ListView, DetailView, RedirectView, TemplateView
-from django.views.generic.edit import UpdateView, CreateView, DeleteView, ProcessFormView, FormMixin
+from django.views.generic.edit import UpdateView, CreateView, DeleteView, ProcessFormView, FormMixin, FormView
from django.utils.translation import ugettext as _
from django.utils import timezone
from django.conf import settings
@@ -15,19 +16,49 @@ from core.models import SithFile
from sas.models import Picture, Album
-class SASMainView(TemplateView):
+class SASForm(forms.Form):
+ album_name = forms.CharField(label=_("Add a new album"), max_length=30, required=False)
+ images = forms.ImageField(widget=forms.ClearableFileInput(attrs={'multiple': True}), label=_("Upload images"),
+ required=False)
+
+ def process(self, parent, owner, files):
+ try:
+ if self.cleaned_data['album_name'] != "":
+ album = Album(parent=parent, name=self.cleaned_data['album_name'], owner=owner)
+ album.clean()
+ album.save()
+ except Exception as e:
+ self.add_error(None, _("Error creating album %(album)s: %(msg)s") %
+ {'album': self.cleaned_data['album_name'], 'msg': str(e.message)})
+ for f in files:
+ new_file = Picture(parent=parent, name=f.name, file=f, owner=owner, mime_type=f.content_type, size=f._size)
+ try:
+ new_file.clean()
+ # TODO: generate thumbnail
+ new_file.save()
+ except Exception as e:
+ self.add_error(None, _("Error uploading file %(file_name)s: %(msg)s") % {'file_name': f, 'msg': repr(e)})
+
+class SASMainView(FormView):
+ form_class = SASForm
template_name = "sas/main.jinja"
+ # success_url = reverse_lazy('sas:main')
+
+ def post(self, request, *args, **kwargs):
+ self.form = self.get_form()
+ parent = SithFile.objects.filter(id=settings.SITH_SAS_ROOT_DIR_ID).first()
+ files = request.FILES.getlist('images')
+ if request.user.is_authenticated() and request.user.is_in_group('ae-membres') and self.form.is_valid():
+ self.form.process(parent=parent, owner=request.user, files=files)
+ if self.form.is_valid():
+ return super(SASMainView, self).form_valid(self.form)
+ return self.form_invalid(self.form)
def get_context_data(self, **kwargs):
kwargs = super(SASMainView, self).get_context_data(**kwargs)
kwargs['root_file'] = SithFile.objects.filter(id=settings.SITH_SAS_ROOT_DIR_ID).first()
return kwargs
-class AlbumView(DetailView, CanViewMixin):
- model = Album
- pk_url_kwarg = "album_id"
- template_name = "sas/album.jinja"
-
class PictureView(DetailView, CanViewMixin):
model = Picture
pk_url_kwarg = "picture_id"
@@ -36,3 +67,23 @@ class PictureView(DetailView, CanViewMixin):
def send_pict(request, picture_id):
return send_file(request, picture_id, Picture)
+class AlbumView(CanViewMixin, FormMixin, DetailView):
+ model = Album
+ pk_url_kwarg = "album_id"
+ template_name = "sas/album.jinja"
+
+ def get(self, request, *args, **kwargs):
+ self.form = self.get_form()
+ return super(AlbumView, self).get(request, *args, **kwargs)
+
+ def post(self, request, *args, **kwargs):
+ self.object = self.get_object()
+ self.form = self.get_form()
+ files = request.FILES.getlist('images')
+ if request.user.is_authenticated() and request.user.is_in_group('ae-member') and self.form.is_valid():
+ self.form.process(parent=self.object, owner=request.user, files=files)
+ if self.form.is_valid():
+ return super(AlbumView, self).form_valid(self.form)
+ return self.form_invalid(self.form)
+
+
diff --git a/sith/settings.py b/sith/settings.py
index 83e81dbf..1d42f0f0 100644
--- a/sith/settings.py
+++ b/sith/settings.py
@@ -447,8 +447,8 @@ SITH_LAUNDERETTE_PRICES = {
}
# SAS variables
-SITH_SAS_ROOT_DIR_ID = 63
-SITH_SAS_ADMIN_GROUP_ID = 74
+SITH_SAS_ROOT_DIR_ID = 4
+SITH_SAS_ADMIN_GROUP_ID = 26
try:
from .settings_custom import *