Commit d1823e72e8c87eff8d2859f74c1b6b444d201fe3

Authored by Zambom
1 parent fb879490

Adjusting bugs involving image in themes configuration

amadeus/static/js/themes.js
@@ -30,10 +30,47 @@ function Init() { @@ -30,10 +30,47 @@ function Init() {
30 // file selection 30 // file selection
31 function FileSelectHandler(e) { 31 function FileSelectHandler(e) {
32 var files = e.target.files || e.dataTransfer.files, 32 var files = e.target.files || e.dataTransfer.files,
33 - parent = $(e.target.offsetParent); 33 + parent = $(e.target.offsetParent),
  34 + file_id = parent.data('file_id'),
  35 + submit_btn = $("#theme-form").find("input[type='submit']"),
  36 + max_size = 2*1024*1024;
34 37
  38 + parent.removeClass('alert-file');
  39 +
  40 + var alerts_open = $("#theme-form").find(".alert-file").length;
  41 +
  42 + console.log(alerts_open);
  43 +
  44 + if (alerts_open == 0) {
  45 + $(submit_btn).prop('disable', false);
  46 + $(submit_btn).prop('disabled', false);
  47 + }
  48 +
  49 + $("." + file_id + "-file-errors").hide();
  50 + $("." + file_id + "-file-errors .size").hide();
  51 + $("." + file_id + "-file-errors .format").hide();
35 // process all File objects 52 // process all File objects
36 for (var i = 0, f; f = files[i]; i++) { 53 for (var i = 0, f; f = files[i]; i++) {
  54 + if (f.size > max_size) {
  55 + $(submit_btn).prop('disable', true);
  56 + $(submit_btn).prop('disabled', true);
  57 +
  58 + $("." + file_id + "-file-errors").show();
  59 + $("." + file_id + "-file-errors .size").show();
  60 +
  61 + parent.addClass('alert-file');
  62 + }
  63 +
  64 + if (!f.type.match(/^image\//)) {
  65 + $(submit_btn).prop('disable', true);
  66 + $(submit_btn).prop('disabled', true);
  67 +
  68 + $("." + file_id + "-file-errors").show();
  69 + $("." + file_id + "-file-errors .format").show();
  70 +
  71 + parent.addClass('alert-file');
  72 + }
  73 +
37 parent.find('.filedrag').html(f.name); 74 parent.find('.filedrag').html(f.name);
38 } 75 }
39 } 76 }
40 \ No newline at end of file 77 \ No newline at end of file
themes/forms.py
1 # coding=utf-8 1 # coding=utf-8
2 from django import forms 2 from django import forms
3 3
  4 +from resubmit.widgets import ResubmitFileWidget
  5 +
4 from .models import Themes 6 from .models import Themes
5 7
6 class BasicElemetsForm(forms.ModelForm): 8 class BasicElemetsForm(forms.ModelForm):
@@ -45,6 +47,11 @@ class BasicElemetsForm(forms.ModelForm): @@ -45,6 +47,11 @@ class BasicElemetsForm(forms.ModelForm):
45 class Meta: 47 class Meta:
46 model = Themes 48 model = Themes
47 fields = ['title', 'favicon', 'small_logo', 'large_logo', 'footer_note'] 49 fields = ['title', 'favicon', 'small_logo', 'large_logo', 'footer_note']
  50 + widgets = {
  51 + 'favicon': ResubmitFileWidget(attrs={'accept':'image/*'}),
  52 + 'small_logo': ResubmitFileWidget(attrs={'accept':'image/*'}),
  53 + 'larger_logo': ResubmitFileWidget(attrs={'accept':'image/*'}),
  54 + }
48 55
49 class CSSStyleForm(forms.ModelForm): 56 class CSSStyleForm(forms.ModelForm):
50 57
themes/templates/themes/basic_update.html
@@ -15,10 +15,10 @@ @@ -15,10 +15,10 @@
15 <div class="card-body"> 15 <div class="card-body">
16 <a href="{% url 'themes:basic' %}" class="page_selector"><h4><i class="fa fa-angle-down"></i> {% trans 'Basic Elements' %}</h4></a> 16 <a href="{% url 'themes:basic' %}" class="page_selector"><h4><i class="fa fa-angle-down"></i> {% trans 'Basic Elements' %}</h4></a>
17 17
18 - <form method="post" action="" enctype="multipart/form-data"> 18 + <form id="theme-form" method="post" action="" enctype="multipart/form-data">
19 {% csrf_token %} 19 {% csrf_token %}
20 {% for field in form %} 20 {% for field in form %}
21 - <div class="form-group{% if form.has_error %} has-error {% endif %} is-fileinput"> 21 + <div class="form-group{% if form.has_error %} has-error {% endif %} is-fileinput" data-file_id="{{ field.auto_id }}">
22 {% if field.auto_id == 'id_small_logo' or field.auto_id == 'id_large_logo' or field.auto_id == 'id_favicon' %} 22 {% if field.auto_id == 'id_small_logo' or field.auto_id == 'id_large_logo' or field.auto_id == 'id_favicon' %}
23 {% if field.field.required %} 23 {% if field.field.required %}
24 <label for="{{ field.auto_id }}">{{ field.label }} <span>*</span></label> 24 <label for="{{ field.auto_id }}">{{ field.label }} <span>*</span></label>
@@ -70,19 +70,33 @@ @@ -70,19 +70,33 @@
70 {% endif %} 70 {% endif %}
71 71
72 <span id="helpBlock" class="help-block">{{ field.help_text }}</span> 72 <span id="helpBlock" class="help-block">{{ field.help_text }}</span>
73 - {% if field.errors %}  
74 - <div class="alert alert-danger alert-dismissible" role="alert">  
75 - <button type="button" class="close" data-dismiss="alert" aria-label="Close">  
76 - <span aria-hidden="true">&times;</span>  
77 - </button>  
78 - <ul>  
79 - {% for error in field.errors %}  
80 - <li>{{ error }}</li>  
81 - {% endfor %}  
82 - </ul>  
83 - </div>  
84 - {% endif %}  
85 </div> 73 </div>
  74 +
  75 + {% if field.errors %}
  76 + <div class="alert alert-danger alert-dismissible" role="alert">
  77 + <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  78 + <span aria-hidden="true">&times;</span>
  79 + </button>
  80 + <ul>
  81 + {% for error in field.errors %}
  82 + <li>{{ error }}</li>
  83 + {% endfor %}
  84 + </ul>
  85 + </div>
  86 + {% endif %}
  87 +
  88 + {% if field.auto_id == 'id_small_logo' or field.auto_id == 'id_large_logo' or field.auto_id == 'id_favicon' %}
  89 + <div class="col-lg-12 col-md-12 col-sm-12 alert alert-danger alert-dismissible {{ field.auto_id }}-file-errors" style="display:none" role="alert">
  90 + <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  91 + <span aria-hidden="true">&times;</span>
  92 + </button>
  93 + <ul>
  94 + <li class="size" style="display:none">{% trans "The image is too large. It should have less than 2MB." %}</li>
  95 + <li class="format" style="display:none">{% trans 'File not supported.' %}</li>
  96 + </ul>
  97 + </div>
  98 + <br clear="all" />
  99 + {% endif %}
86 {% endfor %} 100 {% endfor %}
87 <div class="col-md-12 col-lg-12 col-sm-12 col-xs-12"> 101 <div class="col-md-12 col-lg-12 col-sm-12 col-xs-12">
88 <div class="text-center"> 102 <div class="text-center">