diff --git a/applications/admin/controllers/appadmin.py b/applications/admin/controllers/appadmin.py index 50263b35..c2d5836c 100644 --- a/applications/admin/controllers/appadmin.py +++ b/applications/admin/controllers/appadmin.py @@ -693,6 +693,6 @@ def hooks(): ul_t = UL(_class='nav nav-list', _id="a_%s" % t['slug'], _style='display:none') for op in t['method_hooks']: ul_t.append(LI (op['name'])) - ul_t.append(UL([LI(A(f['funcname'], _href=f['url']if 'url' in f else None)) for f in op['functions']])) + ul_t.append(UL([LI(A(f['funcname'], _class="editor_filelink", _href=f['url']if 'url' in f else None, **{'_data-lineno':f['lineno']-1})) for f in op['functions']])) ul_main.append(ul_t) return ul_main diff --git a/applications/admin/views/default/edit.html b/applications/admin/views/default/edit.html index c2af8ced..d094b937 100644 --- a/applications/admin/views/default/edit.html +++ b/applications/admin/views/default/edit.html @@ -258,12 +258,16 @@ $(document).on('click', 'a.font_button', function (e) {
-
- {{=LOAD('default', 'todolist.load', vars={'app':app}, ajax=True, timeout=60000, times="infinity")}} -
-
- {{include 'default/editor_shortcuts.html'}} -
+
+ {{=LOAD('default', 'todolist.load', vars={'app':app}, ajax=True, timeout=60000, times="infinity")}} +
+
+ {{include 'default/editor_shortcuts.html'}} +
+
+

Tables hooks

+
{{=LOAD(url="/%s/appadmin/hooks" % app, ajax=True, timeout=60000, times="infinity")}}
+
{{block footer}} @@ -272,6 +276,7 @@ $(document).on('click', 'a.font_button', function (e) { diff --git a/applications/admin/views/default/editor_shortcuts.html b/applications/admin/views/default/editor_shortcuts.html index 874921f9..cc2883f7 100644 --- a/applications/admin/views/default/editor_shortcuts.html +++ b/applications/admin/views/default/editor_shortcuts.html @@ -1,18 +1,17 @@

{{=T("Keyboard shortcuts")}}

- -
+ diff --git a/applications/examples/controllers/appadmin.py b/applications/examples/controllers/appadmin.py index 3b78a019..c2d5836c 100644 --- a/applications/examples/controllers/appadmin.py +++ b/applications/examples/controllers/appadmin.py @@ -461,34 +461,24 @@ def ccache(): if value[0] < ram['oldest']: ram['oldest'] = value[0] ram['keys'].append((key, GetInHMS(time.time() - value[0]))) - folder = os.path.join(request.folder,'cache') - if not os.path.exists(folder): - os.mkdir(folder) - locker = open(os.path.join(folder, 'cache.lock'), 'a') - portalocker.lock(locker, portalocker.LOCK_EX) - disk_storage = shelve.open( - os.path.join(folder, 'cache.shelve')) - try: - for key, value in disk_storage.items(): - if isinstance(value, dict): - disk['hits'] = value['hit_total'] - value['misses'] - disk['misses'] = value['misses'] - try: - disk['ratio'] = disk['hits'] * 100 / value['hit_total'] - except (KeyError, ZeroDivisionError): - disk['ratio'] = 0 - else: - if hp: - disk['bytes'] += hp.iso(value[1]).size - disk['objects'] += hp.iso(value[1]).count - disk['entries'] += 1 - if value[0] < disk['oldest']: - disk['oldest'] = value[0] - disk['keys'].append((key, GetInHMS(time.time() - value[0]))) - finally: - portalocker.unlock(locker) - locker.close() - disk_storage.close() + + for key in cache.disk.storage: + value = cache.disk.storage[key] + if isinstance(value, dict): + disk['hits'] = value['hit_total'] - value['misses'] + disk['misses'] = value['misses'] + try: + disk['ratio'] = disk['hits'] * 100 / value['hit_total'] + except (KeyError, ZeroDivisionError): + disk['ratio'] = 0 + else: + if hp: + disk['bytes'] += hp.iso(value[1]).size + disk['objects'] += hp.iso(value[1]).count + disk['entries'] += 1 + if value[0] < disk['oldest']: + disk['oldest'] = value[0] + disk['keys'].append((key, GetInHMS(time.time() - value[0]))) total['entries'] = ram['entries'] + disk['entries'] total['bytes'] = ram['bytes'] + disk['bytes'] @@ -703,6 +693,6 @@ def hooks(): ul_t = UL(_class='nav nav-list', _id="a_%s" % t['slug'], _style='display:none') for op in t['method_hooks']: ul_t.append(LI (op['name'])) - ul_t.append(UL([LI(A(f['funcname'], _href=f['url']if 'url' in f else None)) for f in op['functions']])) + ul_t.append(UL([LI(A(f['funcname'], _class="editor_filelink", _href=f['url']if 'url' in f else None, **{'_data-lineno':f['lineno']-1})) for f in op['functions']])) ul_main.append(ul_t) return ul_main diff --git a/applications/welcome/controllers/appadmin.py b/applications/welcome/controllers/appadmin.py index 50263b35..c2d5836c 100644 --- a/applications/welcome/controllers/appadmin.py +++ b/applications/welcome/controllers/appadmin.py @@ -693,6 +693,6 @@ def hooks(): ul_t = UL(_class='nav nav-list', _id="a_%s" % t['slug'], _style='display:none') for op in t['method_hooks']: ul_t.append(LI (op['name'])) - ul_t.append(UL([LI(A(f['funcname'], _href=f['url']if 'url' in f else None)) for f in op['functions']])) + ul_t.append(UL([LI(A(f['funcname'], _class="editor_filelink", _href=f['url']if 'url' in f else None, **{'_data-lineno':f['lineno']-1})) for f in op['functions']])) ul_main.append(ul_t) return ul_main diff --git a/gluon/contrib/hypermedia.py b/gluon/contrib/hypermedia.py index e2cdf764..50494516 100644 --- a/gluon/contrib/hypermedia.py +++ b/gluon/contrib/hypermedia.py @@ -276,6 +276,8 @@ class Collection(object): table = db[tablename] if 'json' in request.env.content_type: data = request.post_vars.data + else: + data = request.post_vars if request.get_vars or len(request.args)>1: # update # ADD validate fields and return error try: diff --git a/gluon/dal/adapters/oracle.py b/gluon/dal/adapters/oracle.py index be8dcfb8..e00b9fea 100644 --- a/gluon/dal/adapters/oracle.py +++ b/gluon/dal/adapters/oracle.py @@ -136,7 +136,7 @@ class OracleAdapter(BaseAdapter): return self.log_execute(command, args) def create_sequence_and_triggers(self, query, table, **args): - tablename = table._tablename + tablename = table._rname or table._tablename id_name = table._id.name sequence_name = table._sequence_name trigger_name = table._trigger_name diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index 657ef814..4bac53c4 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -1204,6 +1204,13 @@ class SQLFORM(FORM): field, default, _disabled=True) else: inp = field.formatter(default) + if getattr(field, 'show_if', None): + if not isinstance(inp, DIV): + # Create a container for string represents + inp = DIV(inp, _id='%s_%s' % (field.tablename, field.name)) + trigger, cond = show_if(field.show_if) + inp['_data-show-trigger'] = trigger + inp['_data-show-if'] = cond elif field.type == 'upload': if field.widget: inp = field.widget(field, default, upload) diff --git a/gluon/tools.py b/gluon/tools.py index 5d44d015..481d18ed 100644 --- a/gluon/tools.py +++ b/gluon/tools.py @@ -1544,7 +1544,9 @@ class Auth(object): _href=item['href']))) self.bar.insert(-1, LI('', _class='divider')) if self.user_id: - self.bar = LI(Anr(prefix, user_identifier, _href='#'), + self.bar = LI(Anr(prefix, user_identifier, + _href='#',_class="dropdown-toggle", + data={'toggle':'dropdown'}), self.bar,_class='dropdown') else: self.bar = LI(Anr(T('Log In'),