@@ -107,6 +107,7 @@ def init(site, sites_path=None): | |||||
local.user = None | local.user = None | ||||
local.role_permissions = {} | local.role_permissions = {} | ||||
local.valid_columns = {} | |||||
local.jenv = None | local.jenv = None | ||||
local.jloader =None | local.jloader =None | ||||
@@ -30,7 +30,8 @@ def pass_context(f): | |||||
if profile: | if profile: | ||||
pr.disable() | pr.disable() | ||||
s = StringIO.StringIO() | s = StringIO.StringIO() | ||||
ps = pstats.Stats(pr, stream=s).sort_stats('tottime', 'ncalls') | |||||
ps = pstats.Stats(pr, stream=s)\ | |||||
.sort_stats('cumtime', 'tottime', 'ncalls') | |||||
ps.print_stats() | ps.print_stats() | ||||
print s.getvalue() | print s.getvalue() | ||||
@@ -72,8 +73,12 @@ def _new_site(db_name, site, mariadb_root_username=None, mariadb_root_password=N | |||||
import frappe.utils.scheduler | import frappe.utils.scheduler | ||||
frappe.init(site=site) | frappe.init(site=site) | ||||
# enable scheduler post install? | |||||
enable_scheduler = _is_scheduler_enabled() | |||||
try: | |||||
# enable scheduler post install? | |||||
enable_scheduler = _is_scheduler_enabled() | |||||
except: | |||||
enable_scheduler = False | |||||
install_db(root_login=mariadb_root_username, root_password=mariadb_root_password, db_name=db_name, admin_password=admin_password, verbose=verbose, source_sql=source_sql,force=force, reinstall=reinstall) | install_db(root_login=mariadb_root_username, root_password=mariadb_root_password, db_name=db_name, admin_password=admin_password, verbose=verbose, source_sql=source_sql,force=force, reinstall=reinstall) | ||||
make_site_dirs() | make_site_dirs() | ||||
@@ -132,7 +137,7 @@ def reinstall(context): | |||||
frappe.clear_cache() | frappe.clear_cache() | ||||
installed = frappe.get_installed_apps() | installed = frappe.get_installed_apps() | ||||
frappe.clear_cache() | frappe.clear_cache() | ||||
except: | |||||
except Exception, e: | |||||
installed = [] | installed = [] | ||||
raise | raise | ||||
finally: | finally: | ||||
@@ -247,6 +247,8 @@ class Database: | |||||
def convert_to_simple_type(self, v, formatted=0): | def convert_to_simple_type(self, v, formatted=0): | ||||
"""Format date, time, longint values.""" | """Format date, time, longint values.""" | ||||
return v | |||||
from frappe.utils import formatdate, fmt_money | from frappe.utils import formatdate, fmt_money | ||||
if isinstance(v, (datetime.date, datetime.timedelta, datetime.datetime, long)): | if isinstance(v, (datetime.date, datetime.timedelta, datetime.datetime, long)): | ||||
@@ -9,4 +9,5 @@ from frappe.model.document import Document | |||||
class Currency(Document): | class Currency(Document): | ||||
def validate(self): | def validate(self): | ||||
frappe.clear_cache() | |||||
if not frappe.flags.in_install_app: | |||||
frappe.clear_cache() |
@@ -88,6 +88,7 @@ def make_connection(root_login, root_password): | |||||
return frappe.database.Database(user=root_login, password=root_password) | return frappe.database.Database(user=root_login, password=root_password) | ||||
def install_app(name, verbose=False, set_as_patched=True): | def install_app(name, verbose=False, set_as_patched=True): | ||||
frappe.clear_cache() | |||||
app_hooks = frappe.get_hooks(app_name=name) | app_hooks = frappe.get_hooks(app_name=name) | ||||
installed_apps = frappe.get_installed_apps() | installed_apps = frappe.get_installed_apps() | ||||
@@ -179,16 +179,22 @@ class BaseDocument(object): | |||||
if key not in self.__dict__: | if key not in self.__dict__: | ||||
self.__dict__[key] = None | self.__dict__[key] = None | ||||
if self.doctype in ("DocField", "DocPerm") and self.parent in ("DocType", "DocField", "DocPerm"): | |||||
from frappe.model.meta import get_table_columns | |||||
valid = get_table_columns(self.doctype) | |||||
else: | |||||
valid = self.meta.get_valid_columns() | |||||
for key in valid: | |||||
for key in self.get_valid_columns(): | |||||
if key not in self.__dict__: | if key not in self.__dict__: | ||||
self.__dict__[key] = None | self.__dict__[key] = None | ||||
def get_valid_columns(self): | |||||
if self.doctype not in frappe.local.valid_columns: | |||||
if self.doctype in ("DocField", "DocPerm") and self.parent in ("DocType", "DocField", "DocPerm"): | |||||
from frappe.model.meta import get_table_columns | |||||
valid = get_table_columns(self.doctype) | |||||
else: | |||||
valid = self.meta.get_valid_columns() | |||||
frappe.local.valid_columns[self.doctype] = valid | |||||
return frappe.local.valid_columns[self.doctype] | |||||
def is_new(self): | def is_new(self): | ||||
return self.get("__islocal") | return self.get("__islocal") | ||||
@@ -124,6 +124,7 @@ class Meta(Document): | |||||
self.add_custom_fields() | self.add_custom_fields() | ||||
self.apply_property_setters() | self.apply_property_setters() | ||||
self.sort_fields() | self.sort_fields() | ||||
self.get_valid_columns() | |||||
def add_custom_fields(self): | def add_custom_fields(self): | ||||
try: | try: | ||||
@@ -107,7 +107,7 @@ def add_country_and_currency(name, country): | |||||
"code": country.code, | "code": country.code, | ||||
"date_format": country.date_format or "dd-mm-yyyy", | "date_format": country.date_format or "dd-mm-yyyy", | ||||
"time_zones": "\n".join(country.timezones or []) | "time_zones": "\n".join(country.timezones or []) | ||||
}).insert() | |||||
}).db_insert() | |||||
if country.currency and not frappe.db.exists("Currency", country.currency): | if country.currency and not frappe.db.exists("Currency", country.currency): | ||||
frappe.get_doc({ | frappe.get_doc({ | ||||
@@ -117,5 +117,5 @@ def add_country_and_currency(name, country): | |||||
"symbol": country.currency_symbol, | "symbol": country.currency_symbol, | ||||
"fraction_units": country.currency_fraction_units, | "fraction_units": country.currency_fraction_units, | ||||
"number_format": country.number_format | "number_format": country.number_format | ||||
}).insert() | |||||
}).db_insert() | |||||
@@ -35,9 +35,9 @@ class RedisWrapper(redis.Redis): | |||||
:param generator: Function to be called to generate a value if `None` is returned.""" | :param generator: Function to be called to generate a value if `None` is returned.""" | ||||
original_key = key | original_key = key | ||||
key = self.make_key(key, user) | key = self.make_key(key, user) | ||||
val = frappe.local.cache.get(key) | |||||
if val is None: | |||||
if key not in frappe.local.cache: | |||||
val = None | |||||
if not frappe.local.flags.in_install: | if not frappe.local.flags.in_install: | ||||
try: | try: | ||||
val = self.get(key) | val = self.get(key) | ||||
@@ -50,7 +50,8 @@ class RedisWrapper(redis.Redis): | |||||
self.set_value(original_key, val, user=user) | self.set_value(original_key, val, user=user) | ||||
else: | else: | ||||
frappe.local.cache[key] = val | frappe.local.cache[key] = val | ||||
return val | |||||
return frappe.local.cache.get(key) | |||||
def get_all(self, key): | def get_all(self, key): | ||||
ret = {} | ret = {} | ||||