def CONFIRM_BOX(request, session, title="Delete Record", label="Are you sure you want to delete this record?", content="", func_yes=lambda v:v, func_no=lambda v:v): form = FORM( DIV( P(LABEL(label), _class="centered"), P(BUTTON("Yes", _type="submit", _name="yes", _value="yes"), _class="centered"), P(BUTTON("No", _type="submit", _name="no", _value="no"), _class="centered"), ) ) html = DIV( H2(title), DIV( DIV( form, P(content), _id="padding"), _id="user_action"), ) if form.accepts(request.vars, session): if request.vars.yes == "yes": func_yes() else: func_no() elif form.errors: response.flash = "There were errors with the form" return html
def CONFIRM_BOX(request, session, title="Delete Record", label="Are you sure you want to delete this record?", content="", func_yes=lambda v: v, func_no=lambda v: v): form = FORM( DIV( P(LABEL(label), _class="centered"), P(BUTTON("Yes", _type="submit", _name="yes", _value="yes"), _class="centered"), P(BUTTON("No", _type="submit", _name="no", _value="no"), _class="centered"), )) html = DIV( H2(title), DIV(DIV(form, P(content), _id="padding"), _id="user_action"), ) if form.accepts(request.vars, session): if request.vars.yes == "yes": func_yes() else: func_no() elif form.errors: response.flash = "There were errors with the form" return html
def index(): """ example action using the internationalization operator T and flash rendered by views/default/index.html or views/generic.html """ form=FORM(T('Search:'), INPUT( _name='filesearch', requires=IS_LENGTH(minsize=3)), INPUT(_type='submit')) filesearch=None if form.accepts(request,session): filesearch=request.vars['filesearch'] if not request.env.web2py_runtime_gae: rows= db(db.ddl.filename.contains(filesearch.replace("%", "_").replace(" ","%"))).select(orderby=db.ddl.filename, limitby=(0,100)) else: # query = like_query(filesearch.replace(" ","%"), db.ddl.filename) # rows = db(query).select() from google.appengine.ext.db import GqlQuery query = filesearch queryEnd = query+"\xEF\xBF\xBD".decode('utf-8') rows = GqlQuery("SELECT * FROM ddl WHERE filename>=:1 AND filename<=:2 ORDER BY filename DESC", query, queryEnd) else: rows= db(db.ddl.id>0).select(orderby=~db.ddl.date_added, limitby=(0,20)) ddlz=[] for row in rows: if not request.env.web2py_runtime_gae: date_added=row['date_added'] else: date_added=row.date_added difference = datetime.now()-date_added weeks, days = divmod(difference.days, 7) minutes, seconds = divmod(difference.seconds, 60) hours, minutes = divmod(minutes, 60) if not request.env.web2py_runtime_gae: row['timedelta']= getTimeDelta(weeks, days, hours, minutes, seconds) row['nickname']= row['uploader']['nickname'] else: row.timedelta= getTimeDelta(weeks, days, hours, minutes, seconds) if type(row.uploader) is long: row.nickname = row.uploader row.id = 0 else: row.nickname= row.uploader.nickname ddlz.append(row) loggedIn = True if auth.is_logged_in() else False return dict(message=T('Hello World'),ddlz=ddlz, form=form, filesearch=filesearch, loggedIn=loggedIn)
def ccache(): form = FORM( P(TAG.BUTTON("Clear CACHE?", _type="submit", _name="yes", _value="yes")), P(TAG.BUTTON("Clear RAM", _type="submit", _name="ram", _value="ram")), P(TAG.BUTTON("Clear DISK", _type="submit", _name="disk", _value="disk")), ) if form.accepts(request.vars, session): clear_ram = False clear_disk = False session.flash = "" if request.vars.yes: clear_ram = clear_disk = True if request.vars.ram: clear_ram = True if request.vars.disk: clear_disk = True if clear_ram: cache.ram.clear() session.flash += "Ram Cleared " if clear_disk: cache.disk.clear() session.flash += "Disk Cleared" redirect(URL(r=request)) try: from guppy import hpy; hp=hpy() except ImportError: hp = False import shelve, os, copy, time, math from gluon import portalocker ram = { 'bytes': 0, 'objects': 0, 'hits': 0, 'misses': 0, 'ratio': 0, 'oldest': time.time() } disk = copy.copy(ram) total = copy.copy(ram) for key, value in cache.ram.storage.items(): if isinstance(value, dict): ram['hits'] = value['hit_total'] - value['misses'] ram['misses'] = value['misses'] try: ram['ratio'] = ram['hits'] * 100 / value['hit_total'] except (KeyError, ZeroDivisionError): ram['ratio'] = 0 else: if hp: ram['bytes'] += hp.iso(value[1]).size ram['objects'] += hp.iso(value[1]).count if value[0] < ram['oldest']: ram['oldest'] = value[0] locker = open(os.path.join(request.folder, 'cache/cache.lock'), 'a') portalocker.lock(locker, portalocker.LOCK_EX) disk_storage = shelve.open(os.path.join(request.folder, 'cache/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 if value[0] < disk['oldest']: disk['oldest'] = value[0] finally: portalocker.unlock(locker) locker.close() disk_storage.close() total['bytes'] = ram['bytes'] + disk['bytes'] total['objects'] = ram['objects'] + disk['objects'] total['hits'] = ram['hits'] + disk['hits'] total['misses'] = ram['misses'] + disk['misses'] try: total['ratio'] = total['hits'] * 100 / (total['hits'] + total['misses']) except (KeyError, ZeroDivisionError): total['ratio'] = 0 if disk['oldest'] < ram['oldest']: total['oldest'] = disk['oldest'] else: total['oldest'] = ram['oldest'] def GetInHMS(seconds): hours = math.floor(seconds / 3600) seconds -= hours * 3600 minutes = math.floor(seconds / 60) seconds -= minutes * 60 seconds = math.floor(seconds) return (hours, minutes, seconds) ram['oldest'] = GetInHMS(time.time() - ram['oldest']) disk['oldest'] = GetInHMS(time.time() - disk['oldest']) total['oldest'] = GetInHMS(time.time() - total['oldest']) return dict(form=form, total=total, ram=ram, disk=disk)
def apply_method(r, **attr): """ Apply method. @param r: the S3Request @param attr: controller options for this request """ if r.representation == "html": from gluon.dal import Field from gluon.html import FORM, INPUT, OPTION, SELECT from gluon.validators import IS_IN_SET, IS_EMPTY_OR from s3fields import s3_datetime from s3validators import IS_LOCATION_SELECTOR2 from s3widgets import S3LocationSelectorWidget2 T = current.T table = r.table response = current.response session = current.session formstyle = current.deployment_settings.get_ui_formstyle() tracker = S3Trackable(table, record_id=r.id) form = FORM() fappend = form.append comment = "" opts = {1 : T("Check-In"), 2 : T("Check-Out"), 3 : T("Update Base Location"), } id = "action" label = T("Action") widget = SELECT([OPTION(opts[opt], _value=opt) for opt in opts], _id=id, _name=id, _value=1, requries = IS_IN_SET(opts), ) row = formstyle("%s__row" % id, label, widget, comment) fappend(row) field = s3_datetime() field.tablename = r.tablename id = "timestmp" label = T("Time") value = current.request.utcnow widget = field.widget(field, value) row = formstyle("%s__row" % id, label, widget, comment) fappend(row) field = table.location_id field.requires = IS_EMPTY_OR(IS_LOCATION_SELECTOR2()) value = tracker.get_location(_fields=["id"], as_rows=True).first().id id = "location" label = "" # Replaced by Widget widget = S3LocationSelectorWidget2()(field, value) row = formstyle("%s__row" % id, label, widget, comment) fappend(row) id = "submit" label = "" widget = INPUT(_type="submit", _value=T("Apply")) row = formstyle("%s__row" % id, label, widget, comment) fappend(row) response.view = "create.html" title = T("Update Location") output = dict(title=title, form=form) script = \ '''$("#action").change(function(){ var type=$("#action").val() if(type==2){$('#location__row').hide()}else{$('#location__row').show()}})''' response.s3.jquery_ready.append(script) if form.accepts(current.request.vars, current.session): form_vars = form.vars action = form_vars.get("action", None) if action == "1": # Check-In location_id = form_vars.get("location_id", None) if location_id: # We're not Checking-in in S3Track terms (that's about interlocking with another object) #tracker.check_in() timestmp = form_vars.get("timestmp", None) if timestmp: # @ToDo: Convert from string pass tracker.set_location(location_id, timestmp=timestmp) response.confirmation = T("Checked-In successfully!") elif action == "2": # Check-Out # We're not Checking-out in S3Track terms (that's about removing an interlock with another object) #tracker.check_out() timestmp = form_vars.get("timestmp", None) if timestmp: # @ToDo: Convert from string pass tracker.set_location(r.record.location_id, timestmp=timestmp) response.confirmation = T("Checked-Out successfully!") elif action == "3": # Update Base Location location_id = form_vars.get("location_id", None) if location_id: tracker.set_base_location(location_id) response.confirmation = T("Base Location Updated!") return output else: raise HTTP(501, current.ERROR.BAD_METHOD)
def ccache(): form = FORM( P(TAG.BUTTON("Clear CACHE?", _type="submit", _name="yes", _value="yes")), P(TAG.BUTTON("Clear RAM", _type="submit", _name="ram", _value="ram")), P(TAG.BUTTON("Clear DISK", _type="submit", _name="disk", _value="disk")), ) if form.accepts(request.vars, session): clear_ram = False clear_disk = False session.flash = "" if request.vars.yes: clear_ram = clear_disk = True if request.vars.ram: clear_ram = True if request.vars.disk: clear_disk = True if clear_ram: cache.ram.clear() session.flash += "Ram Cleared " if clear_disk: cache.disk.clear() session.flash += "Disk Cleared" redirect(URL(r=request)) try: from guppy import hpy hp = hpy() except ImportError: hp = False import shelve, os, copy, time, math from gluon import portalocker ram = { 'bytes': 0, 'objects': 0, 'hits': 0, 'misses': 0, 'ratio': 0, 'oldest': time.time() } disk = copy.copy(ram) total = copy.copy(ram) for key, value in cache.ram.storage.items(): if isinstance(value, dict): ram['hits'] = value['hit_total'] - value['misses'] ram['misses'] = value['misses'] try: ram['ratio'] = ram['hits'] * 100 / value['hit_total'] except (KeyError, ZeroDivisionError): ram['ratio'] = 0 else: if hp: ram['bytes'] += hp.iso(value[1]).size ram['objects'] += hp.iso(value[1]).count if value[0] < ram['oldest']: ram['oldest'] = value[0] locker = open(os.path.join(request.folder, 'cache/cache.lock'), 'a') portalocker.lock(locker, portalocker.LOCK_EX) disk_storage = shelve.open( os.path.join(request.folder, 'cache/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 if value[0] < disk['oldest']: disk['oldest'] = value[0] finally: portalocker.unlock(locker) locker.close() disk_storage.close() total['bytes'] = ram['bytes'] + disk['bytes'] total['objects'] = ram['objects'] + disk['objects'] total['hits'] = ram['hits'] + disk['hits'] total['misses'] = ram['misses'] + disk['misses'] try: total['ratio'] = total['hits'] * 100 / (total['hits'] + total['misses']) except (KeyError, ZeroDivisionError): total['ratio'] = 0 if disk['oldest'] < ram['oldest']: total['oldest'] = disk['oldest'] else: total['oldest'] = ram['oldest'] def GetInHMS(seconds): hours = math.floor(seconds / 3600) seconds -= hours * 3600 minutes = math.floor(seconds / 60) seconds -= minutes * 60 seconds = math.floor(seconds) return (hours, minutes, seconds) ram['oldest'] = GetInHMS(time.time() - ram['oldest']) disk['oldest'] = GetInHMS(time.time() - disk['oldest']) total['oldest'] = GetInHMS(time.time() - total['oldest']) return dict(form=form, total=total, ram=ram, disk=disk)
def apply_method(r, **attr): """ Apply method. @param r: the S3Request @param attr: controller options for this request """ if r.representation == "html": from gluon.dal import Field from gluon.html import FORM, INPUT, OPTION, SELECT from gluon.validators import IS_IN_SET, IS_EMPTY_OR from s3fields import s3_datetime from s3validators import IS_LOCATION_SELECTOR2 from s3widgets import S3LocationSelectorWidget2 T = current.T table = r.table response = current.response session = current.session formstyle = current.deployment_settings.get_ui_formstyle() tracker = S3Trackable(table, record_id=r.id) form = FORM() fappend = form.append comment = "" opts = { 1: T("Check-In"), 2: T("Check-Out"), 3: T("Update Base Location"), } id = "action" label = T("Action") widget = SELECT( [OPTION(opts[opt], _value=opt) for opt in opts], _id=id, _name=id, _value=1, requries=IS_IN_SET(opts), ) row = formstyle("%s__row" % id, label, widget, comment) fappend(row) field = s3_datetime() field.tablename = r.tablename id = "timestmp" label = T("Time") value = current.request.utcnow widget = field.widget(field, value) row = formstyle("%s__row" % id, label, widget, comment) fappend(row) field = table.location_id field.requires = IS_EMPTY_OR(IS_LOCATION_SELECTOR2()) value = tracker.get_location(_fields=["id"], as_rows=True).first().id id = "location" label = "" # Replaced by Widget widget = S3LocationSelectorWidget2()(field, value) row = formstyle("%s__row" % id, label, widget, comment) fappend(row) id = "submit" label = "" widget = INPUT(_type="submit", _value=T("Apply")) row = formstyle("%s__row" % id, label, widget, comment) fappend(row) response.view = "create.html" title = T("Update Location") output = dict(title=title, form=form) script = \ '''$("#action").change(function(){ var type=$("#action").val() if(type==2){$('#location__row').hide()}else{$('#location__row').show()}})''' response.s3.jquery_ready.append(script) if form.accepts(current.request.vars, current.session): form_vars = form.vars action = form_vars.get("action", None) if action == "1": # Check-In location_id = form_vars.get("location_id", None) if location_id: # We're not Checking-in in S3Track terms (that's about interlocking with another object) #tracker.check_in() timestmp = form_vars.get("timestmp", None) if timestmp: # @ToDo: Convert from string pass tracker.set_location(location_id, timestmp=timestmp) response.confirmation = T("Checked-In successfully!") elif action == "2": # Check-Out # We're not Checking-out in S3Track terms (that's about removing an interlock with another object) #tracker.check_out() timestmp = form_vars.get("timestmp", None) if timestmp: # @ToDo: Convert from string pass tracker.set_location(r.record.location_id, timestmp=timestmp) response.confirmation = T("Checked-Out successfully!") elif action == "3": # Update Base Location location_id = form_vars.get("location_id", None) if location_id: tracker.set_base_location(location_id) response.confirmation = T("Base Location Updated!") return output else: raise HTTP(501, current.ERROR.BAD_METHOD)