0% found this document useful (0 votes)
58 views

Server Script

This document discusses server scripts in Frappe which are Python scripts that can be executed on the server on document events or via APIs. It covers how to create server scripts, available document events, enabling APIs, examples of using server scripts for various purposes like validation, automation etc.

Uploaded by

Chipo Hameja
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
58 views

Server Script

This document discusses server scripts in Frappe which are Python scripts that can be executed on the server on document events or via APIs. It covers how to create server scripts, available document events, enabling APIs, examples of using server scripts for various purposes like validation, automation etc.

Uploaded by

Chipo Hameja
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

10/23/2020 Server Script

Scripting / Server Script

Server Script
A Server Script lets you dynamically define a Python Script that is executed on the server on a document event or
API
Introduced in Version 12

1. How to create a Server Script


To create a Server Script
1. If your site is being hosted on erpnext.com, contact support to activate Server Script. In case of self-hosted accounts, set
server_script_enabled as true in site_config.json of your site.

2. To add/edit Server Script, ensure your role is System Manager.


3. Create a new server script via "New Server Script" in the toolbar.
4. Set the type of server script Document Event / API .
5. Set the document type and event name, or method name, script and save.

2. Features
2.1 Enabling Server Script
Server script must be enabled via site_config.json
bench --site site1.local set-config server_script_enabled true

2.2 Document Events


For scripts that are to be called via document events, you must set the Reference Document Type and Event Name to define the
trigger
Before Insert
Before Save
After Save
Before Submit
After Submit
Before Cancel
https://frappeframework.com/docs/user/en/desk/scripting/server-script 1/3
10/23/2020 Server Script

After Cancel
Before Delete
After Delete
Before Save Submitted Document)
After Save Submitted Document)

2.3 API Scripts


You can create a new API that can be accessed via api/method/[methodname] by the script type "API"
If you want the guest user to access the API, you must check on "Allow Guest"
The response can be set via frappe.response["message"] object

2.3 Security
Frappe Framework uses the RestrictedPython library to restrict access to methods available for server scripts. Only the safe
methods, listed below are available in server scripts
For allowed methods, see Script API

2.4 Using Server Scripts as libraries


You can use a server script as an internal method by setting frappe.flags value in script.

3. Examples
3.1 Change the value of a property before change
Script Type: Before Save
if "test" in doc.description:
doc.status = 'Closed'

3.2 Custom validation


Script Type: "Before Save"
if "validate" in doc.description:
raise frappe.ValidationError

3.3. Auto Create To Do


Script Type: "After Save"
if doc.allocted_to:
frappe.get_doc(dict(
doctype = 'ToDo'
owner = doc.allocated_to,
description = doc.subject
)).insert()

https://frappeframework.com/docs/user/en/desk/scripting/server-script 2/3
10/23/2020 Server Script

3.4 API
Script Type: API
Method Name: test_method
frappe.response['message'] = "hello"

Request: /api/method/test_method

3.5 Internal Library


New in version 13

Call one ( script_1 script from another script_2 )


Script 1
frappe.flags.my_key = 'my value'

Script 2
my_key = run_script('script_1').get('my_key')

Forum Frappe Docs GitHub

© Frappe. Content licensed under CC BY SA 3.0. Built on Frappe


91 22 4897 0555 - [email protected]

https://frappeframework.com/docs/user/en/desk/scripting/server-script 3/3

You might also like