Commit 781cb416ae8849eff166b124bc134c18d4a378b7

Authored by Zambom
1 parent ad562111

Adding file link update

amadeus/static/css/base/amadeus.css
... ... @@ -609,6 +609,10 @@ a:focus {
609 609 cursor: pointer;
610 610 }
611 611  
  612 +.filedrag i {
  613 + font-size: 35px;
  614 +}
  615 +
612 616 .theme_img {
613 617 width: 100%;
614 618 }
... ...
file_link/forms.py
... ... @@ -65,6 +65,12 @@ class FileLinkForm(forms.ModelForm):
65 65  
66 66 return ValueError
67 67  
  68 +
  69 + if not self.instance.pk:
  70 + self._errors['file_content'] = [_('This field is required.')]
  71 +
  72 + return ValueError
  73 +
68 74 return file_content
69 75  
70 76 def save(self, commit = True):
... ...
file_link/models.py
  1 +import os
1 2 from django.db import models
2 3 from django.core.exceptions import ValidationError
3 4 from django.utils.translation import ugettext_lazy as _
... ... @@ -21,12 +22,16 @@ def validate_file_extension(value):
21 22 raise ValidationError(_('File not supported.'))
22 23  
23 24 class FileLink(Resource):
24   - file_content = models.FileField(_('File'), upload_to = 'files/', validators = [validate_file_extension])
  25 + file_content = models.FileField(_('File'), blank = True, upload_to = 'files/', validators = [validate_file_extension])
25 26  
26 27 class Meta:
27 28 verbose_name = _('File Link')
28 29 verbose_name_plural = _('File Links')
29 30  
  31 + @property
  32 + def filename(self):
  33 + return os.path.basename(self.file_content.name)
  34 +
30 35 def __str__(self):
31 36 return self.name
32 37  
... ... @@ -34,7 +39,7 @@ class FileLink(Resource):
34 39 return 'file_links:download'
35 40  
36 41 def update_link(self):
37   - return 'webpages:update'
  42 + return 'file_links:update'
38 43  
39 44 def delete_link(self):
40 45 return 'webpages:delete'
... ...
file_link/templates/file_links/_form.html
... ... @@ -39,9 +39,15 @@
39 39 </div>
40 40  
41 41 <div class="filedrag">
42   - {% trans 'Click or drop the file here' %}<br />
43   -
44   - <small>{% trans 'The file could not exceed 10MB.' %}</small>
  42 + {% if file_link %}
  43 + <i class="fa fa-file-archive-o"></i> <br />
  44 +
  45 + <small>{{ file_link.filename }}</small>
  46 + {% else %}
  47 + {% trans 'Click or drop the file here' %}<br />
  48 +
  49 + <small>{% trans 'The file could not exceed 10MB.' %}</small>
  50 + {% endif %}
45 51 </div>
46 52  
47 53 <span id="helpBlock" class="help-block">{{ form.file_content.help_text }}</span>
... ...
file_link/templates/file_links/update.html 0 → 100644
... ... @@ -0,0 +1,36 @@
  1 +{% extends 'subjects/view.html' %}
  2 +
  3 +{% load static i18n django_bootstrap_breadcrumbs %}
  4 +
  5 +{% block style %}
  6 + {{block.super}}
  7 + <link rel="stylesheet" type="text/css" href="{% static "css/bootstrap-tagsinput.css" %}">
  8 +{% endblock %}
  9 +
  10 +{% block javascript %}
  11 + {{block.super}}
  12 + <script type="text/javascript" src="{% static "js/bootstrap-tagsinput.js" %} "></script>
  13 +{% endblock %}
  14 +
  15 +{% block breadcrumbs %}
  16 + {{ block.super }}
  17 +
  18 + {% breadcrumb topic 'subjects:topic_view' topic.subject.slug topic.slug %}
  19 +
  20 + {% trans 'Edit: ' as bread %}
  21 + {% with bread|add:file_link.name as bread_slug %}
  22 + {% breadcrumb bread_slug 'file_links:update' topic.slug file_link.slug %}
  23 + {% endwith %}
  24 +{% endblock %}
  25 +
  26 +{% block content %}
  27 + <div class="card">
  28 + <div class="card-content">
  29 + <div class="card-body">
  30 + {% include 'file_links/_form.html' %}
  31 + </div>
  32 + </div>
  33 + </div>
  34 + <br clear="all" />
  35 + <br clear="all" />
  36 +{% endblock %}
... ...
file_link/urls.py
... ... @@ -5,5 +5,6 @@ from . import views
5 5  
6 6 urlpatterns = [
7 7 url(r'^create/(?P<slug>[\w_-]+)/$', views.CreateView.as_view(), name = 'create'),
  8 + url(r'^update/(?P<topic_slug>[\w_-]+)/(?P<slug>[\w_-]+)/$', views.UpdateView.as_view(), name = 'update'),
8 9 url(r'^download/(?P<slug>[\w_-]+)/$', views.DownloadFile.as_view(), name = 'download'),
9 10 ]
... ...
file_link/views.py
... ... @@ -145,4 +145,98 @@ class CreateView(LoginRequiredMixin, generic.edit.CreateView):
145 145 def get_success_url(self):
146 146 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))
147 147  
  148 + return reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug})
  149 +
  150 +class UpdateView(LoginRequiredMixin, generic.UpdateView):
  151 + login_url = reverse_lazy("users:login")
  152 + redirect_field_name = 'next'
  153 +
  154 + template_name = 'file_links/update.html'
  155 + model = FileLink
  156 + form_class = FileLinkForm
  157 + context_object_name = 'file_link'
  158 +
  159 + def dispatch(self, request, *args, **kwargs):
  160 + slug = self.kwargs.get('topic_slug', '')
  161 + topic = get_object_or_404(Topic, slug = slug)
  162 +
  163 + if not has_subject_permissions(request.user, topic.subject):
  164 + return redirect(reverse_lazy('subjects:home'))
  165 +
  166 + return super(UpdateView, self).dispatch(request, *args, **kwargs)
  167 +
  168 + def get(self, request, *args, **kwargs):
  169 + self.object = self.get_object()
  170 +
  171 + form_class = self.get_form_class()
  172 + form = self.get_form(form_class)
  173 +
  174 + slug = self.kwargs.get('topic_slug', '')
  175 + topic = get_object_or_404(Topic, slug = slug)
  176 +
  177 + pend_form = self.object.pendencies_resource.all()
  178 +
  179 + if len(pend_form) > 0:
  180 + pendencies_form = PendenciesForm(instance = pend_form[0], initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
  181 + else:
  182 + pendencies_form = PendenciesForm(initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
  183 +
  184 + return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
  185 +
  186 + def post(self, request, *args, **kwargs):
  187 + self.object = self.get_object()
  188 +
  189 + form_class = self.get_form_class()
  190 + form = self.get_form(form_class)
  191 +
  192 + slug = self.kwargs.get('topic_slug', '')
  193 + topic = get_object_or_404(Topic, slug = slug)
  194 +
  195 + pend_form = self.object.pendencies_resource.all()
  196 +
  197 + if len(pend_form) > 0:
  198 + pendencies_form = PendenciesForm(self.request.POST, instance = pend_form[0], initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
  199 + else:
  200 + pendencies_form = PendenciesForm(self.request.POST, initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
  201 +
  202 + if (form.is_valid() and pendencies_form.is_valid()):
  203 + return self.form_valid(form, pendencies_form)
  204 + else:
  205 + return self.form_invalid(form, pendencies_form)
  206 +
  207 + def form_invalid(self, form, pendencies_form):
  208 + return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
  209 +
  210 + def form_valid(self, form, pendencies_form):
  211 + self.object = form.save(commit = False)
  212 +
  213 + if not self.object.topic.visible and not self.object.topic.repository:
  214 + self.object.visible = False
  215 +
  216 + self.object.save()
  217 +
  218 + pend_form = pendencies_form.save(commit = False)
  219 + pend_form.resource = self.object
  220 +
  221 + if not pend_form.action == "":
  222 + pend_form.save()
  223 +
  224 + return redirect(self.get_success_url())
  225 +
  226 + def get_context_data(self, **kwargs):
  227 + context = super(UpdateView, self).get_context_data(**kwargs)
  228 +
  229 + context['title'] = _('Update File Link')
  230 +
  231 + slug = self.kwargs.get('topic_slug', '')
  232 + topic = get_object_or_404(Topic, slug = slug)
  233 +
  234 + context['topic'] = topic
  235 + context['subject'] = topic.subject
  236 +
  237 + return context
  238 +
  239 + def get_success_url(self):
  240 + messages.success(self.request, _('The File Link "%s" was updated successfully!')%(self.object.name))
  241 +
148 242 return reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug})
149 243 \ No newline at end of file
... ...
webpage/templates/webpages/update.html
... ... @@ -10,7 +10,6 @@
10 10 {% block javascript %}
11 11 {{block.super}}
12 12 <script type="text/javascript" src="{% static "js/bootstrap-tagsinput.js" %} "></script>
13   - <script type="text/javascript" src="{% static "js/jquery.formset.js" %} "></script>
14 13 {% endblock %}
15 14  
16 15 {% block breadcrumbs %}
... ...