Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
    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)