def attach_file(files, doc): #frappe.errprint("in the attach_file") if files: for f in files: fieldname, filedata = f if fieldname == 'resume': if files[0][1]['filename'].split('.')[-1] == 'pdf' or files[0][ 1]['filename'].split('.')[-1] == 'docx' or files[0][1][ 'filename'].split('.')[-1] == 'doc': #frappe.errprint(files[0][1]['filename']) if doc.get(fieldname): remove_file_by_url(doc.get(fieldname), doc.doctype, doc.name) filedoc = save_file(filedata["filename"], filedata["dataurl"], doc.doctype, doc.name, decode=True) doc.set(fieldname, filedoc.file_url) return True else: msgprint(_("Please Attach Valid Resume Document"), raise_exception=1) return False elif fieldname == 'video_resume': if files[0][1]['filename'].split('.')[-1] == 'mp4': #frappe.errprint(files[0][1]['filename']) if doc.get(fieldname): remove_file_by_url(doc.get(fieldname), doc.doctype, doc.name) filedoc = save_file(filedata["filename"], filedata["dataurl"], doc.doctype, doc.name, decode=True) doc.set(fieldname, filedoc.file_url) return True else: msgprint(_("Please Attach Valid Resume Document"), raise_exception=1) return False
def accept(web_form, data, for_payment=False): '''Save the web form''' 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: frappe.throw(_("Invalid Request")) 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) else: # insert doc = frappe.new_doc(data.doctype) # set values for fieldname, value in iteritems(data): if value and isinstance(value, dict): try: 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 doc.set(fieldname, value) if for_payment: web_form.validate_mandatory(doc) doc.run_method('validate_payment') if doc.name: if has_web_form_permission(doc.doctype, doc.name, "write"): doc.save(ignore_permissions=True) else: # only if permissions are present doc.save() else: # insert if web_form.login_required and frappe.session.user == "Guest": frappe.throw(_("You must login to submit this form")) doc.insert(ignore_permissions=True) # add files if files: for f in files: fieldname, filedata = f # remove earlier attached file (if exists) if doc.get(fieldname): remove_file_by_url(doc.get(fieldname), doc.doctype, doc.name) # save new file filedoc = save_file(filedata["filename"], filedata["dataurl"], doc.doctype, doc.name, decode=True) # update values doc.set(fieldname, filedoc.file_url) doc.save() if files_to_delete: for f in files_to_delete: if f: remove_file_by_url(f, doc.doctype, doc.name) frappe.flags.web_form_doc = doc if for_payment: return web_form.get_payment_gateway_url(doc) else: return doc.name
def accept(): args = frappe.form_dict files = [] web_form = frappe.get_doc("Web Form", args.web_form) if args.doctype != web_form.doc_type: frappe.throw(_("Invalid Request")) elif args.name and not web_form.allow_edit: frappe.throw(_("You are not allowed to update this Web Form Document")) if args.name: # update doc = frappe.get_doc(args.doctype, args.name) else: # insert doc = frappe.new_doc(args.doctype) # set values for fieldname, value in args.iteritems(): if fieldname not in ("web_form", "cmd", "owner"): if value and value.startswith("{"): try: filedata = json.loads(value) if "__file_attachment" in filedata: files.append((fieldname, filedata)) continue except ValueError: pass doc.set(fieldname, value) if args.name: if has_web_form_permission(doc.doctype, doc.name, "write"): doc.save(ignore_permissions=True) else: # only if permissions are present doc.save() else: # insert if web_form.login_required and frappe.session.user=="Guest": frappe.throw(_("You must login to submit this form")) doc.insert(ignore_permissions = True) # add files if files: for f in files: fieldname, filedata = f # remove earlier attachmed file (if exists) if doc.get(fieldname): remove_file_by_url(doc.get(fieldname), doc.doctype, doc.name) # save new file filedoc = save_file(filedata["filename"], filedata["dataurl"], doc.doctype, doc.name, decode=True) # update values doc.set(fieldname, filedoc.file_url) doc.save()
def accept(web_form, data, for_payment=False): '''Save the web form''' 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: frappe.throw(_("Invalid Request")) 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) else: # insert doc = frappe.new_doc(data.doctype) # set values for fieldname, value in iteritems(data): if value and isinstance(value, dict): try: 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 doc.set(fieldname, value) if for_payment: web_form.validate_mandatory(doc) doc.run_method('validate_payment') if doc.name: if has_web_form_permission(doc.doctype, doc.name, "write"): doc.save(ignore_permissions=True) else: # only if permissions are present doc.save() else: # insert if web_form.login_required and frappe.session.user=="Guest": frappe.throw(_("You must login to submit this form")) doc.insert(ignore_permissions = True) # add files if files: for f in files: fieldname, filedata = f # remove earlier attached file (if exists) if doc.get(fieldname): remove_file_by_url(doc.get(fieldname), doc.doctype, doc.name) # save new file filedoc = save_file(filedata["filename"], filedata["dataurl"], doc.doctype, doc.name, decode=True) # update values doc.set(fieldname, filedoc.file_url) doc.save() if files_to_delete: for f in files_to_delete: if f: remove_file_by_url(f, doc.doctype, doc.name) frappe.flags.web_form_doc = doc if for_payment: return web_form.get_payment_gateway_url(doc) else: return doc.name
def accept(web_form, data, for_payment=False): '''Save the web form''' 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: frappe.throw(_("Invalid Request")) 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 meta = frappe.get_meta(data.doctype) if data.name: # update doc = frappe.get_doc(data.doctype, data.name) else: # insert doc = frappe.new_doc(data.doctype) # set values for field in web_form.web_form_fields: fieldname = field.fieldname df = meta.get_field(fieldname) value = data.get(fieldname, None) if df and df.fieldtype in ('Attach', 'Attach Image'): if value and 'data:' and 'base64' in value: files.append((fieldname, value)) if not doc.name: doc.set(fieldname, '') continue elif not value and doc.get(fieldname): files_to_delete.append(doc.get(fieldname)) doc.set(fieldname, value) if for_payment: web_form.validate_mandatory(doc) doc.run_method('validate_payment') if doc.name: if has_web_form_permission(doc.doctype, doc.name, "write"): doc.save(ignore_permissions=True) else: # only if permissions are present doc.save() else: # insert if web_form.login_required and frappe.session.user == "Guest": frappe.throw(_("You must login to submit this form")) ignore_mandatory = True if files else False doc.insert(ignore_permissions=True, ignore_mandatory=ignore_mandatory) # add files if files: for f in files: fieldname, filedata = f # remove earlier attached file (if exists) if doc.get(fieldname): remove_file_by_url(doc.get(fieldname), doc.doctype, doc.name) # save new file filename, dataurl = filedata.split(',', 1) filedoc = save_file(filename, dataurl, doc.doctype, doc.name, decode=True) # update values doc.set(fieldname, filedoc.file_url) doc.save(ignore_permissions=True) if files_to_delete: for f in files_to_delete: if f: remove_file_by_url(f, doc.doctype, doc.name) frappe.flags.web_form_doc = doc if for_payment: return web_form.get_payment_gateway_url(doc) else: return doc.as_dict()