From 781cb416ae8849eff166b124bc134c18d4a378b7 Mon Sep 17 00:00:00 2001 From: Zambom Date: Wed, 25 Jan 2017 00:28:50 -0200 Subject: [PATCH] Adding file link update --- amadeus/static/css/base/amadeus.css | 4 ++++ file_link/forms.py | 6 ++++++ file_link/models.py | 9 +++++++-- file_link/templates/file_links/_form.html | 12 +++++++++--- file_link/templates/file_links/update.html | 36 ++++++++++++++++++++++++++++++++++++ file_link/urls.py | 1 + file_link/views.py | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ webpage/templates/webpages/update.html | 1 - 8 files changed, 157 insertions(+), 6 deletions(-) create mode 100644 file_link/templates/file_links/update.html diff --git a/amadeus/static/css/base/amadeus.css b/amadeus/static/css/base/amadeus.css index 4d78347..1ff4001 100755 --- a/amadeus/static/css/base/amadeus.css +++ b/amadeus/static/css/base/amadeus.css @@ -609,6 +609,10 @@ a:focus { cursor: pointer; } +.filedrag i { + font-size: 35px; +} + .theme_img { width: 100%; } diff --git a/file_link/forms.py b/file_link/forms.py index 1430f8d..3319c45 100644 --- a/file_link/forms.py +++ b/file_link/forms.py @@ -65,6 +65,12 @@ class FileLinkForm(forms.ModelForm): return ValueError + + if not self.instance.pk: + self._errors['file_content'] = [_('This field is required.')] + + return ValueError + return file_content def save(self, commit = True): diff --git a/file_link/models.py b/file_link/models.py index 57e6e7b..e112b9d 100644 --- a/file_link/models.py +++ b/file_link/models.py @@ -1,3 +1,4 @@ +import os from django.db import models from django.core.exceptions import ValidationError from django.utils.translation import ugettext_lazy as _ @@ -21,12 +22,16 @@ def validate_file_extension(value): raise ValidationError(_('File not supported.')) class FileLink(Resource): - file_content = models.FileField(_('File'), upload_to = 'files/', validators = [validate_file_extension]) + file_content = models.FileField(_('File'), blank = True, upload_to = 'files/', validators = [validate_file_extension]) class Meta: verbose_name = _('File Link') verbose_name_plural = _('File Links') + @property + def filename(self): + return os.path.basename(self.file_content.name) + def __str__(self): return self.name @@ -34,7 +39,7 @@ class FileLink(Resource): return 'file_links:download' def update_link(self): - return 'webpages:update' + return 'file_links:update' def delete_link(self): return 'webpages:delete' diff --git a/file_link/templates/file_links/_form.html b/file_link/templates/file_links/_form.html index 3ba2a17..41bc79e 100644 --- a/file_link/templates/file_links/_form.html +++ b/file_link/templates/file_links/_form.html @@ -39,9 +39,15 @@
- {% trans 'Click or drop the file here' %}
- - {% trans 'The file could not exceed 10MB.' %} + {% if file_link %} +
+ + {{ file_link.filename }} + {% else %} + {% trans 'Click or drop the file here' %}
+ + {% trans 'The file could not exceed 10MB.' %} + {% endif %}
{{ form.file_content.help_text }} diff --git a/file_link/templates/file_links/update.html b/file_link/templates/file_links/update.html new file mode 100644 index 0000000..6da1ef9 --- /dev/null +++ b/file_link/templates/file_links/update.html @@ -0,0 +1,36 @@ +{% extends 'subjects/view.html' %} + +{% load static i18n django_bootstrap_breadcrumbs %} + +{% block style %} + {{block.super}} + +{% endblock %} + +{% block javascript %} + {{block.super}} + +{% endblock %} + +{% block breadcrumbs %} + {{ block.super }} + + {% breadcrumb topic 'subjects:topic_view' topic.subject.slug topic.slug %} + + {% trans 'Edit: ' as bread %} + {% with bread|add:file_link.name as bread_slug %} + {% breadcrumb bread_slug 'file_links:update' topic.slug file_link.slug %} + {% endwith %} +{% endblock %} + +{% block content %} +
+
+
+ {% include 'file_links/_form.html' %} +
+
+
+
+
+{% endblock %} diff --git a/file_link/urls.py b/file_link/urls.py index 9147791..097870e 100644 --- a/file_link/urls.py +++ b/file_link/urls.py @@ -5,5 +5,6 @@ from . import views urlpatterns = [ url(r'^create/(?P[\w_-]+)/$', views.CreateView.as_view(), name = 'create'), + url(r'^update/(?P[\w_-]+)/(?P[\w_-]+)/$', views.UpdateView.as_view(), name = 'update'), url(r'^download/(?P[\w_-]+)/$', views.DownloadFile.as_view(), name = 'download'), ] diff --git a/file_link/views.py b/file_link/views.py index 1de24df..7d106fa 100644 --- a/file_link/views.py +++ b/file_link/views.py @@ -145,4 +145,98 @@ class CreateView(LoginRequiredMixin, generic.edit.CreateView): def get_success_url(self): messages.success(self.request, _('The File Link "%s" was added to the Topic "%s" of the virtual environment "%s" successfully!')%(self.object.name, self.object.topic.name, self.object.topic.subject.name)) + return reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug}) + +class UpdateView(LoginRequiredMixin, generic.UpdateView): + login_url = reverse_lazy("users:login") + redirect_field_name = 'next' + + template_name = 'file_links/update.html' + model = FileLink + form_class = FileLinkForm + context_object_name = 'file_link' + + def dispatch(self, request, *args, **kwargs): + slug = self.kwargs.get('topic_slug', '') + topic = get_object_or_404(Topic, slug = slug) + + if not has_subject_permissions(request.user, topic.subject): + return redirect(reverse_lazy('subjects:home')) + + return super(UpdateView, self).dispatch(request, *args, **kwargs) + + def get(self, request, *args, **kwargs): + self.object = self.get_object() + + form_class = self.get_form_class() + form = self.get_form(form_class) + + slug = self.kwargs.get('topic_slug', '') + topic = get_object_or_404(Topic, slug = slug) + + pend_form = self.object.pendencies_resource.all() + + if len(pend_form) > 0: + pendencies_form = PendenciesForm(instance = pend_form[0], initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]}) + else: + pendencies_form = PendenciesForm(initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]}) + + return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form)) + + def post(self, request, *args, **kwargs): + self.object = self.get_object() + + form_class = self.get_form_class() + form = self.get_form(form_class) + + slug = self.kwargs.get('topic_slug', '') + topic = get_object_or_404(Topic, slug = slug) + + pend_form = self.object.pendencies_resource.all() + + if len(pend_form) > 0: + pendencies_form = PendenciesForm(self.request.POST, instance = pend_form[0], initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]}) + else: + pendencies_form = PendenciesForm(self.request.POST, initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]}) + + if (form.is_valid() and pendencies_form.is_valid()): + return self.form_valid(form, pendencies_form) + else: + return self.form_invalid(form, pendencies_form) + + def form_invalid(self, form, pendencies_form): + return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form)) + + def form_valid(self, form, pendencies_form): + self.object = form.save(commit = False) + + if not self.object.topic.visible and not self.object.topic.repository: + self.object.visible = False + + self.object.save() + + pend_form = pendencies_form.save(commit = False) + pend_form.resource = self.object + + if not pend_form.action == "": + pend_form.save() + + return redirect(self.get_success_url()) + + def get_context_data(self, **kwargs): + context = super(UpdateView, self).get_context_data(**kwargs) + + context['title'] = _('Update File Link') + + slug = self.kwargs.get('topic_slug', '') + topic = get_object_or_404(Topic, slug = slug) + + context['topic'] = topic + context['subject'] = topic.subject + + return context + + def get_success_url(self): + messages.success(self.request, _('The File Link "%s" was updated successfully!')%(self.object.name)) + return reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug}) \ No newline at end of file diff --git a/webpage/templates/webpages/update.html b/webpage/templates/webpages/update.html index 7dbe79f..3b66aa9 100644 --- a/webpage/templates/webpages/update.html +++ b/webpage/templates/webpages/update.html @@ -10,7 +10,6 @@ {% block javascript %} {{block.super}} - {% endblock %} {% block breadcrumbs %} -- libgit2 0.21.2