From 7de0861fb58f7230579c5bd78ff933066907c419 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Thu, 14 Aug 2014 19:10:51 -0500 Subject: [PATCH] response.formstyle, reponse.label_separator --- VERSION | 2 +- applications/welcome/models/db.py | 1 + gluon/compileapp.py | 4 ++-- gluon/globals.py | 7 +++++-- gluon/sqlhtml.py | 14 ++++++++------ gluon/template.py | 19 +++++++++---------- gluon/tools.py | 3 ++- 7 files changed, 28 insertions(+), 22 deletions(-) diff --git a/VERSION b/VERSION index e855d8c2..d063ca04 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.10.0-trunk+timestamp.2014.08.14.16.27.22 +Version 2.10.0-trunk+timestamp.2014.08.14.19.10.27 diff --git a/applications/welcome/models/db.py b/applications/welcome/models/db.py index 9569ea69..5880120f 100644 --- a/applications/welcome/models/db.py +++ b/applications/welcome/models/db.py @@ -25,6 +25,7 @@ else: ## by default give a view/generic.extension to all actions from localhost ## none otherwise. a pattern can be 'controller/function.extension' response.generic_patterns = ['*'] if request.is_local else [] +response.formstyle = 'bootstrap3' ## (optional) optimize handling of static files # response.optimize_css = 'concat,minify,inline' # response.optimize_js = 'concat,minify,inline' diff --git a/gluon/compileapp.py b/gluon/compileapp.py index cf822ade..5b132fab 100644 --- a/gluon/compileapp.py +++ b/gluon/compileapp.py @@ -653,8 +653,8 @@ def run_view_in(environment): folder = request.folder path = pjoin(folder, 'compiled') badv = 'invalid view (%s)' % view - if response.generic_patterns: - patterns = response.generic_patterns + patterns = response.get('generic_patterns') + if patterns: regex = re_compile('|'.join(map(fnmatch.translate, patterns))) short_action = '%(controller)s/%(function)s.%(extension)s' % request allow_generic = regex.search(short_action) diff --git a/gluon/globals.py b/gluon/globals.py index 123465ac..e77a0176 100644 --- a/gluon/globals.py +++ b/gluon/globals.py @@ -165,6 +165,7 @@ class Request(Storage): - is_local - is_https - restful() + - settings """ def __init__(self, env): @@ -383,13 +384,15 @@ class Response(Storage): self.meta = Storage() # used by web2py_ajax.html self.menu = [] # used by the default view layout self.files = [] # used by web2py_ajax.html - self.generic_patterns = [] # patterns to allow generic views - self.delimiters = ('{{', '}}') self._vars = None self._caller = lambda f: f() self._view_environment = None self._custom_commit = None self._custom_rollback = None + self.generic_patterns = ['*'] + self.delimiters = ('{{','}}') + self.formstyle = 'table2cols' + self.label_separator = ': ' def write(self, data, escape=True): if not escape: diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index 78887499..feb98953 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -1013,16 +1013,16 @@ class SQLFORM(FORM): keepopts=[], ignore_rw=False, record_id=None, - formstyle='table3cols', + formstyle=None, buttons=['submit'], - separator=': ', + separator=None, extra_fields=None, **attributes ): T = current.T self.ignore_rw = ignore_rw - self.formstyle = formstyle + self.formstyle = formstyle or current.response.formstyle self.readonly = readonly # Default dbio setting self.detect_record_change = None @@ -1078,7 +1078,7 @@ class SQLFORM(FORM): else: self.id_field_name = table._primarykey[0] # only works if one key - sep = separator or '' + sep = separator or current.response.label_separator extra_fields = extra_fields or [] self.extra_fields = {} @@ -1820,7 +1820,7 @@ class SQLFORM(FORM): and_button, or_button, close_button, _id='%s_%s' % (field_id, name), _class='w2p_query_row', - _style='display:inline')) + _style='display:none')) criteria.insert(0, SELECT( _id=fields_id, @@ -1886,7 +1886,7 @@ class SQLFORM(FORM): search_widget='default', advanced_search=True, ignore_rw = False, - formstyle = 'table3cols', + formstyle = None, exportclasses = None, formargs={}, createargs={}, @@ -1901,6 +1901,8 @@ class SQLFORM(FORM): ignore_common_filters=None, ): + formstyle = formstyle or current.response.formstyle + # jQuery UI ThemeRoller classes (empty if ui is disabled) if ui == 'jquery-ui': ui = dict(widget='ui-widget', diff --git a/gluon/template.py b/gluon/template.py index 05cb882f..131cb927 100644 --- a/gluon/template.py +++ b/gluon/template.py @@ -279,18 +279,16 @@ class TemplateParser(object): self.context = context # allow optional alternative delimiters - self.delimiters = delimiters + if delimiters is None: + delimiters = context.get('response', {})\ + .get('app_settings',{}).get('template_delimiters') if delimiters != self.default_delimiters: - escaped_delimiters = (escape(delimiters[0]), + escaped_delimiters = (escape(elimiters[0]), escape(delimiters[1])) self.r_tag = compile(r'(%s.*?%s)' % escaped_delimiters, DOTALL) - elif hasattr(context.get('response', None), 'delimiters'): - if context['response'].delimiters != self.default_delimiters: - escaped_delimiters = ( - escape(context['response'].delimiters[0]), - escape(context['response'].delimiters[1])) - self.r_tag = compile(r'(%s.*?%s)' % escaped_delimiters, - DOTALL) + else: + delimiters = self.default_delimiters + self.delimiters = delimiters # Create a root level Content that everything will go into. self.content = Content(name=name) @@ -569,7 +567,8 @@ class TemplateParser(object): line = i # Get rid of delimiters - line = line[len(self.delimiters[0]):-len(self.delimiters[1])].strip() + line = line[len(self.delimiters[0]): \ + -len(self.delimiters[1])].strip() # This is bad juju, but let's do it anyway if not line: diff --git a/gluon/tools.py b/gluon/tools.py index 5e128209..7bf10d16 100644 --- a/gluon/tools.py +++ b/gluon/tools.py @@ -1008,7 +1008,7 @@ class Auth(object): allow_basic_login=False, allow_basic_login_only=False, on_failed_authentication=lambda x: redirect(x), - formstyle="table3cols", + formstyle=None, label_separator=": ", logging_enabled = True, allow_delete_accounts=False, @@ -1343,6 +1343,7 @@ class Auth(object): reset_password_onvalidation = [], reset_password_onaccept = [], hmac_key = hmac_key, + formstyle = current.response.formstyle, ) settings.lock_keys = True