[fix] web forms remove attachment
This commit is contained in:
parent
e091005b00
commit
f1dd0c0bb8
3 changed files with 26 additions and 7 deletions
|
|
@ -332,7 +332,6 @@ frappe.ready(function() {
|
|||
var input = $input.get(0);
|
||||
var reader = new FileReader();
|
||||
|
||||
input.filedata = null;
|
||||
if(input.files.length) {
|
||||
file = input.files[0];
|
||||
frappe.file_reading = true;
|
||||
|
|
@ -396,9 +395,11 @@ frappe.ready(function() {
|
|||
|
||||
// change attach
|
||||
$form.on("click", ".change-attach", function() {
|
||||
$(this).parent().addClass("hide")
|
||||
var input_wrapper = $(this).parent().addClass("hide")
|
||||
.parent().find(".attach-input-wrap").removeClass("hide");
|
||||
|
||||
input_wrapper.find('input').val('');
|
||||
|
||||
frappe.form_dirty = true;
|
||||
|
||||
return false;
|
||||
|
|
@ -513,7 +514,12 @@ frappe.ready(function() {
|
|||
var $input = $(this);
|
||||
var input_type = $input.attr("type");
|
||||
if(input_type==="file") {
|
||||
var val = $input.get(0).filedata;
|
||||
// save filedata dict as value
|
||||
if($input.get(0).filedata) {
|
||||
var val = $input.get(0).filedata;
|
||||
} else {
|
||||
var val = {'__no_attachment': 1}
|
||||
}
|
||||
} else if(input_type==="checkbox") {
|
||||
var val = $input.prop("checked") ? 1 : 0;
|
||||
} else if($input.attr("data-fieldtype")==="Date") {
|
||||
|
|
@ -639,11 +645,11 @@ frappe.ready(function() {
|
|||
dateFormat: frappe.datepicker_format,
|
||||
});
|
||||
|
||||
// convert dates from YYYY-MM-DD to user format
|
||||
// initialize dates from YYYY-MM-DD to user format
|
||||
$dates.each(function() {
|
||||
var val = $(this).val();
|
||||
var val = $(this).attr('value');
|
||||
if(val) {
|
||||
$(this).val(moment(val, 'YYYY-MM-DD').format());
|
||||
$(this).val(moment(val, 'YYYY-MM-DD').format()).trigger('change');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -259,6 +259,8 @@ def remove_file(fid, attached_to_doctype=None, attached_to_name=None):
|
|||
if attached_to_doctype and attached_to_name:
|
||||
doc = frappe.get_doc(attached_to_doctype, attached_to_name)
|
||||
ignore_permissions = doc.has_permission("write") or False
|
||||
if frappe.flags.in_web_form:
|
||||
ignore_permissions = True
|
||||
if not file_name:
|
||||
file_name = frappe.db.get_value("File", fid, "file_name")
|
||||
comment = doc.add_comment("Attachment Removed", _("Removed {0}").format(file_name))
|
||||
|
|
|
|||
|
|
@ -304,6 +304,7 @@ def get_context(context):
|
|||
def accept(web_form, data):
|
||||
data = frappe._dict(json.loads(data))
|
||||
files = []
|
||||
files_to_delete = []
|
||||
|
||||
web_form = frappe.get_doc("Web Form", web_form)
|
||||
if data.doctype != web_form.doc_type:
|
||||
|
|
@ -312,6 +313,8 @@ def accept(web_form, data):
|
|||
elif data.name and not web_form.allow_edit:
|
||||
frappe.throw(_("You are not allowed to update this Web Form Document"))
|
||||
|
||||
frappe.flags.in_web_form = True
|
||||
|
||||
if data.name:
|
||||
# update
|
||||
doc = frappe.get_doc(data.doctype, data.name)
|
||||
|
|
@ -326,6 +329,9 @@ def accept(web_form, data):
|
|||
if "__file_attachment" in value:
|
||||
files.append((fieldname, value))
|
||||
continue
|
||||
if '__no_attachment' in value:
|
||||
files_to_delete.append(doc.get(fieldname))
|
||||
value = ''
|
||||
|
||||
except ValueError:
|
||||
pass
|
||||
|
|
@ -351,7 +357,7 @@ def accept(web_form, data):
|
|||
for f in files:
|
||||
fieldname, filedata = f
|
||||
|
||||
# remove earlier attachmed file (if exists)
|
||||
# remove earlier attached file (if exists)
|
||||
if doc.get(fieldname):
|
||||
remove_file_by_url(doc.get(fieldname), doc.doctype, doc.name)
|
||||
|
||||
|
|
@ -364,6 +370,11 @@ def accept(web_form, data):
|
|||
|
||||
doc.save()
|
||||
|
||||
if files_to_delete:
|
||||
for f in files_to_delete:
|
||||
if f:
|
||||
remove_file_by_url(f, doc.doctype, doc.name)
|
||||
|
||||
return doc.name
|
||||
|
||||
@frappe.whitelist()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue