Browse Source

refactor report view to make it thread safe

version-14
Pratik Vyas 12 years ago
parent
commit
f8c32bbd11
1 changed files with 15 additions and 16 deletions
  1. +15
    -16
      webnotes/widgets/reportview.py

+ 15
- 16
webnotes/widgets/reportview.py View File

@@ -7,9 +7,9 @@ from __future__ import unicode_literals
import webnotes, json
import webnotes.defaults

tables = None
doctypes = {}
roles = []
tables = webnotes.local('reportview_tables')
doctypes = webnotes.local('reportview_doctypes')
roles = webnotes.local('reportview_roles')

@webnotes.whitelist()
def get():
@@ -48,8 +48,7 @@ def execute(doctype, query=None, filters=None, fields=None, docstatus=None,
return webnotes.conn.sql(query, as_dict=not as_list, debug=debug)
def prepare_args(doctype, filters, fields, docstatus, group_by, order_by, with_childnames):
global tables
tables = get_tables(doctype, fields)
webnotes.local.reportview_tables = get_tables(doctype, fields)
load_doctypes()
remove_user_tags(doctype, fields)
conditions = build_conditions(doctype, fields, filters, docstatus)
@@ -107,11 +106,13 @@ def run_custom_query(query):

def load_doctypes():
"""load all doctypes and roles"""
global doctypes, roles
import webnotes.model.doctype

roles = webnotes.get_roles()
webnotes.local.reportview_roles = webnotes.get_roles()
if not doctypes:
webnotes.local.reportview_doctypes = {}

for t in tables:
if t.startswith('`'):
doctype = t[4:-1]
@@ -158,8 +159,8 @@ def build_conditions(doctype, fields, filters, docstatus):
def build_filter_conditions(filters, conditions):
"""build conditions from user filters"""
from webnotes.utils import cstr
global tables
if not tables: tables = []
if not tables:
webnotes.local.reportview_tables = []
for f in filters:
if isinstance(f, basestring):
@@ -184,18 +185,17 @@ def build_filter_conditions(filters, conditions):
def build_match_conditions(doctype, fields=None, as_condition=True):
"""add match conditions if applicable"""
global tables, roles
match_filters = {}
match_conditions = []
match = True
if not tables or not doctypes:
tables = get_tables(doctype, fields)
webnotes.local.reportview_tables = get_tables(doctype, fields)
load_doctypes()

if not roles:
roles = webnotes.get_roles()
webnotes.local.reportview_roles = webnotes.get_roles()

for d in doctypes[doctype]:
if d.doctype == 'DocPerm' and d.parent == doctype:
@@ -309,8 +309,7 @@ def export_query():

def verify_export_allowed():
"""throw exception if user is not allowed to export"""
global roles
roles = webnotes.get_roles()
webnotes.local.reportview_roles = webnotes.get_roles()
if not ('Administrator' in roles or 'System Manager' in roles or 'Report Manager' in roles):
raise webnotes.PermissionError

@@ -395,4 +394,4 @@ def get_match_cond(doctype, searchfield = 'name'):
cond = ' and ' + cond
else:
cond = ''
return cond
return cond

Loading…
Cancel
Save