Commit 5b5d6594c6e02b76a1e28dd1e04b0648717eb751
1 parent
355c051a
Exists in
master
and in
2 other branches
Chat bug fixes - part 1
Showing
3 changed files
with
40 additions
and
12 deletions
Show diff stats
amadeus/static/js/chat.js
... | ... | @@ -119,10 +119,33 @@ function getForm(field) { |
119 | 119 | } |
120 | 120 | |
121 | 121 | function setChatFormSubmit() { |
122 | - var frm = $('#chat-form'); | |
122 | + var frm = $('#chat-form'), | |
123 | + error_msg = frm.data('error'); | |
123 | 124 | |
124 | 125 | frm.submit(function () { |
125 | - var formData = new FormData($(this)[0]); | |
126 | + var formData = new FormData($(this)[0]), | |
127 | + file = $("#id_image")[0].files[0], | |
128 | + max_filesize = 5*1024*1024; | |
129 | + | |
130 | + if (typeof(file) != "undefined") { | |
131 | + var image_container = $("#id_image").parent(), | |
132 | + overlay_msg = image_container.data('overlay'), | |
133 | + wrong_format_msg = image_container.data('invalid'), | |
134 | + file_type = file.type, | |
135 | + type_accept = /^image\/(jpg|png|jpeg|gif)$/; | |
136 | + | |
137 | + if (file.size > max_filesize) { | |
138 | + image_container.append('<div class="alert alert-danger alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button><ul><li>' + overlay_msg + '</li></ul></div>'); | |
139 | + | |
140 | + return false; | |
141 | + } | |
142 | + | |
143 | + if (!type_accept.test(file_type)) { | |
144 | + image_container.append('<div class="alert alert-danger alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button><ul><li>' + wrong_format_msg + '</li></ul></div>'); | |
145 | + | |
146 | + return false; | |
147 | + } | |
148 | + } | |
126 | 149 | |
127 | 150 | $.ajax({ |
128 | 151 | type: frm.attr('method'), |
... | ... | @@ -152,7 +175,12 @@ function setChatFormSubmit() { |
152 | 175 | $('#chat-modal-form').modal('hide'); |
153 | 176 | }, |
154 | 177 | error: function(data) { |
155 | - $("#chat-modal-form").html(data.responseText); | |
178 | + if (data.status == 400) { | |
179 | + $("#chat-modal-form").html(data.responseText); | |
180 | + } else { | |
181 | + alertify.error(error_msg); | |
182 | + } | |
183 | + | |
156 | 184 | setChatFormSubmit(); |
157 | 185 | }, |
158 | 186 | cache: false, | ... | ... |
chat/models.py
... | ... | @@ -13,7 +13,7 @@ def validate_img_extension(value): |
13 | 13 | |
14 | 14 | if hasattr(value.file, 'content_type'): |
15 | 15 | if not value.file.content_type in valid_formats: |
16 | - raise ValidationError(_('File not supported.')) | |
16 | + raise ValidationError(_('Select a valid file. The file must posses one of this extensions: .jpg, .png, .gif')) | |
17 | 17 | |
18 | 18 | def upload_filename(instance, filename): |
19 | 19 | path = "chat/" |
... | ... | @@ -26,7 +26,7 @@ class Conversation(models.Model): |
26 | 26 | user_two = models.ForeignKey(User, verbose_name = _('User Two'), related_name = 'talk_user_end') |
27 | 27 | |
28 | 28 | class TalkMessages(models.Model): |
29 | - text = models.TextField(_('Comment'), blank = True) | |
29 | + text = models.TextField(_('Message'), blank = True) | |
30 | 30 | image = models.ImageField(verbose_name = _('Image'), null = True, blank = True, upload_to = upload_filename, validators = [validate_img_extension]) |
31 | 31 | talk = models.ForeignKey(Conversation, verbose_name = _('Conversation'), related_name = 'message_talk', null = True) |
32 | 32 | user = models.ForeignKey(User, verbose_name = _('User'), related_name = 'message_user', null = True) | ... | ... |
chat/templates/chat/_form.html
... | ... | @@ -4,7 +4,7 @@ |
4 | 4 | <div class="modal-dialog" role="document"> |
5 | 5 | <div class="modal-content"> |
6 | 6 | <div class="modal-body"> |
7 | - <form id="chat-form" method="post" action="{{ form_url }}" enctype="multipart/form-data"> | |
7 | + <form id="chat-form" method="post" action="{{ form_url }}" enctype="multipart/form-data" data-error="{% trans 'Something went wrong. Please try again later.' %}"> | |
8 | 8 | {% csrf_token %} |
9 | 9 | |
10 | 10 | <div class="form-group{% if form.has_error %} has-error {% endif %}"> |
... | ... | @@ -27,22 +27,22 @@ |
27 | 27 | {% endif %} |
28 | 28 | </div> |
29 | 29 | |
30 | - <div class="form-group{% if form.has_error %} has-error {% endif %} is-fileinput"> | |
30 | + <div class="form-group{% if form.has_error %} has-error {% endif %} is-fileinput" data-overlay="{% trans 'The image is too large. It should have less than 5MB.' %}" data-invalid="{% trans 'Select a valid file. The file must posses one of this extensions: .jpg, .png, .gif' %}"> | |
31 | 31 | {% render_field form.image %} |
32 | 32 | |
33 | 33 | <div class="filedrag"> |
34 | - {% trans 'Click or drop the file here' %}<br /> | |
34 | + {% trans 'Click or drop the image here' %}<br /> | |
35 | 35 | |
36 | - <small>{% trans 'The file could not exceed 5MB.' %}</small> | |
36 | + <small>{% trans 'The image could not exceed 5MB.' %}</small> | |
37 | 37 | </div> |
38 | 38 | |
39 | 39 | <span id="helpBlock" class="help-block">{{ form.image.help_text }}</span> |
40 | 40 | |
41 | 41 | {% if form.image.errors %} |
42 | 42 | <div class="alert alert-danger alert-dismissible" role="alert"> |
43 | - <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | |
44 | - <span aria-hidden="true">×</span> | |
45 | - </button> | |
43 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | |
44 | + <span aria-hidden="true">×</span> | |
45 | + </button> | |
46 | 46 | <ul> |
47 | 47 | {% for error in form.image.errors %} |
48 | 48 | <li>{{ error }}</li> | ... | ... |