示例#1
0
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
示例#2
0
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
示例#3
0
文件: web_form.py 项目: jnix3/frappe
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()
示例#4
0
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()
示例#5
0
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
示例#6
0
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()