@@ -42,4 +42,30 @@ def get_custom_server_script(doctype): | |||||
webnotes.cache().set_value("_server_script:" + doctype, custom_script) | webnotes.cache().set_value("_server_script:" + doctype, custom_script) | ||||
return custom_script | return custom_script | ||||
def make_custom_server_scripts_path(): | |||||
from webnotes.utils import get_site_path | |||||
import os | |||||
custom_scripts_path = get_site_path(webnotes.conf.get("custom_scripts_path")) | |||||
if not os.path.exists(custom_scripts_path): | |||||
os.mkdir(custom_scripts_path) | |||||
return custom_scripts_path | |||||
def make_custom_server_script_file(doctype, script=None): | |||||
from webnotes.modules import scrub | |||||
import os | |||||
custom_scripts_path = make_custom_server_scripts_path() | |||||
file_path = os.path.join(custom_scripts_path, scrub(doctype) + ".py") | |||||
if os.path.exists(file_path): | |||||
raise Exception(file_path + " already exists") | |||||
if not script: | |||||
script = "\tpass" | |||||
with open(file_path, "w") as f: | |||||
f.write("class CustomDocType(DocType):\n" + script) |
@@ -588,6 +588,12 @@ def get_conf(site): | |||||
import conf | import conf | ||||
site_config = _dict({}) | site_config = _dict({}) | ||||
conf = site_config.update(conf.__dict__) | conf = site_config.update(conf.__dict__) | ||||
if not conf.get("files_path"): | |||||
conf["files_path"] = os.path.join("public", "files") | |||||
if not conf.get("custom_scripts_path"): | |||||
conf["custom_scripts_path"] = "custom_scripts" | |||||
if conf.sites_dir and site: | if conf.sites_dir and site: | ||||
out = get_site_config(conf.sites_dir, site) | out = get_site_config(conf.sites_dir, site) | ||||
if not out: | if not out: | ||||
@@ -598,8 +604,6 @@ def get_conf(site): | |||||
return site_config | return site_config | ||||
else: | else: | ||||
if not conf.get("files_path"): | |||||
conf["files_path"] = os.path.join("public", "files") | |||||
return conf | return conf | ||||
def get_site_config(sites_dir, site): | def get_site_config(sites_dir, site): | ||||
@@ -15,19 +15,6 @@ methods in following modules are imported for backward compatibility | |||||
* webnotes.model.doc.* | * webnotes.model.doc.* | ||||
* webnotes.model.bean.* | * webnotes.model.bean.* | ||||
""" | """ | ||||
custom_class = ''' | |||||
import webnotes | |||||
from webnotes.utils import cint, cstr, flt | |||||
from webnotes.model.doc import Document | |||||
from webnotes.model.code import get_obj | |||||
from webnotes import msgprint | |||||
class CustomDocType(DocType): | |||||
def __init__(self, doc, doclist): | |||||
DocType.__init__(self, doc, doclist) | |||||
''' | |||||
def execute(code, doc=None, doclist=[]): | def execute(code, doc=None, doclist=[]): | ||||
# functions used in server script of DocTypes | # functions used in server script of DocTypes | ||||
@@ -79,8 +66,6 @@ def get_server_obj(doc, doclist = [], basedoctype = ''): | |||||
custom_script = get_custom_server_script(doc.doctype) | custom_script = get_custom_server_script(doc.doctype) | ||||
if custom_script: | if custom_script: | ||||
global custom_class | |||||
exec custom_script in locals() | exec custom_script in locals() | ||||
return CustomDocType(doc, doclist) | return CustomDocType(doc, doclist) | ||||
@@ -232,6 +232,7 @@ def clear_cache(doctype=None): | |||||
def clear_single(dt): | def clear_single(dt): | ||||
webnotes.cache().delete_value(cache_name(dt, False)) | webnotes.cache().delete_value(cache_name(dt, False)) | ||||
webnotes.cache().delete_value(cache_name(dt, True)) | webnotes.cache().delete_value(cache_name(dt, True)) | ||||
webnotes.cache().delete_value("_server_script:" + dt) | |||||
if doctype_cache and doctype in doctype_cache: | if doctype_cache and doctype in doctype_cache: | ||||
del doctype_cache[dt] | del doctype_cache[dt] | ||||