Преглед изворни кода

[fix] web forms remove attachment

version-14
Rushabh Mehta пре 8 година
родитељ
комит
f1dd0c0bb8
3 измењених фајлова са 26 додато и 7 уклоњено
  1. +12
    -6
      frappe/templates/generators/web_form.html
  2. +2
    -0
      frappe/utils/file_manager.py
  3. +12
    -1
      frappe/website/doctype/web_form/web_form.py

+ 12
- 6
frappe/templates/generators/web_form.html Прегледај датотеку

@@ -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');
}
});
}


+ 2
- 0
frappe/utils/file_manager.py Прегледај датотеку

@@ -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))


+ 12
- 1
frappe/website/doctype/web_form/web_form.py Прегледај датотеку

@@ -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…
Откажи
Сачувај