Browse Source

removed more unnecessary web2py files

Keith Newman 10 years ago
parent
commit
e3ed205123

+ 0 - 702
frameworks/Python/web2py/app/app/controllers/appadmin.py

@@ -1,702 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# ##########################################################
-# ## make sure administrator is on localhost
-# ###########################################################
-
-import os
-import socket
-import datetime
-import copy
-import gluon.contenttype
-import gluon.fileutils
-
-try:
-    import pygraphviz as pgv
-except ImportError:
-    pgv = None
-
-is_gae = request.env.web2py_runtime_gae or False
-
-# ## critical --- make a copy of the environment
-
-global_env = copy.copy(globals())
-global_env['datetime'] = datetime
-
-http_host = request.env.http_host.split(':')[0]
-remote_addr = request.env.remote_addr
-try:
-    hosts = (http_host, socket.gethostname(),
-             socket.gethostbyname(http_host),
-             '::1', '127.0.0.1', '::ffff:127.0.0.1')
-except:
-    hosts = (http_host, )
-
-if request.is_https:
-    session.secure()
-elif (remote_addr not in hosts) and (remote_addr != "127.0.0.1") and \
-    (request.function != 'manage'):
-    raise HTTP(200, T('appadmin is disabled because insecure channel'))
-
-if request.function == 'manage':
-    if not 'auth' in globals() or not request.args:
-        redirect(URL(request.controller, 'index'))
-    manager_action = auth.settings.manager_actions.get(request.args(0), None)
-    if manager_action is None and request.args(0) == 'auth':
-        manager_action = dict(role=auth.settings.auth_manager_role,
-                              heading=T('Manage Access Control'),
-                              tables=[auth.table_user(),
-                                      auth.table_group(),
-                                      auth.table_permission()])
-    manager_role = manager_action.get('role', None) if manager_action else None
-    auth.requires_membership(manager_role)(lambda: None)()
-    menu = False
-elif (request.application == 'admin' and not session.authorized) or \
-        (request.application != 'admin' and not gluon.fileutils.check_credentials(request)):
-    redirect(URL('admin', 'default', 'index',
-                 vars=dict(send=URL(args=request.args, vars=request.vars))))
-else:
-    response.subtitle = T('Database Administration (appadmin)')
-    menu = True
-
-ignore_rw = True
-response.view = 'appadmin.html'
-if menu:
-    response.menu = [[T('design'), False, URL('admin', 'default', 'design',
-                 args=[request.application])], [T('db'), False,
-                 URL('index')], [T('state'), False,
-                 URL('state')], [T('cache'), False,
-                 URL('ccache')]]
-
-# ##########################################################
-# ## auxiliary functions
-# ###########################################################
-
-if False and request.tickets_db:
-    from gluon.restricted import TicketStorage
-    ts = TicketStorage()
-    ts._get_table(request.tickets_db, ts.tablename, request.application)
-
-def get_databases(request):
-    dbs = {}
-    for (key, value) in global_env.items():
-        cond = False
-        try:
-            cond = isinstance(value, GQLDB)
-        except:
-            cond = isinstance(value, SQLDB)
-        if cond:
-            dbs[key] = value
-    return dbs
-
-databases = get_databases(None)
-
-def eval_in_global_env(text):
-    exec ('_ret=%s' % text, {}, global_env)
-    return global_env['_ret']
-
-
-def get_database(request):
-    if request.args and request.args[0] in databases:
-        return eval_in_global_env(request.args[0])
-    else:
-        session.flash = T('invalid request')
-        redirect(URL('index'))
-
-def get_table(request):
-    db = get_database(request)
-    if len(request.args) > 1 and request.args[1] in db.tables:
-        return (db, request.args[1])
-    else:
-        session.flash = T('invalid request')
-        redirect(URL('index'))
-
-
-def get_query(request):
-    try:
-        return eval_in_global_env(request.vars.query)
-    except Exception:
-        return None
-
-
-def query_by_table_type(tablename, db, request=request):
-    keyed = hasattr(db[tablename], '_primarykey')
-    if keyed:
-        firstkey = db[tablename][db[tablename]._primarykey[0]]
-        cond = '>0'
-        if firstkey.type in ['string', 'text']:
-            cond = '!=""'
-        qry = '%s.%s.%s%s' % (
-            request.args[0], request.args[1], firstkey.name, cond)
-    else:
-        qry = '%s.%s.id>0' % tuple(request.args[:2])
-    return qry
-
-
-# ##########################################################
-# ## list all databases and tables
-# ###########################################################
-def index():
-    return dict(databases=databases)
-
-
-# ##########################################################
-# ## insert a new record
-# ###########################################################
-
-
-def insert():
-    (db, table) = get_table(request)
-    form = SQLFORM(db[table], ignore_rw=ignore_rw)
-    if form.accepts(request.vars, session):
-        response.flash = T('new record inserted')
-    return dict(form=form, table=db[table])
-
-
-# ##########################################################
-# ## list all records in table and insert new record
-# ###########################################################
-
-
-def download():
-    import os
-    db = get_database(request)
-    return response.download(request, db)
-
-
-def csv():
-    import gluon.contenttype
-    response.headers['Content-Type'] = \
-        gluon.contenttype.contenttype('.csv')
-    db = get_database(request)
-    query = get_query(request)
-    if not query:
-        return None
-    response.headers['Content-disposition'] = 'attachment; filename=%s_%s.csv'\
-        % tuple(request.vars.query.split('.')[:2])
-    return str(db(query, ignore_common_filters=True).select())
-
-
-def import_csv(table, file):
-    table.import_from_csv_file(file)
-
-
-def select():
-    import re
-    db = get_database(request)
-    dbname = request.args[0]
-    try:
-        is_imap = db._uri.startswith("imap://")
-    except (KeyError, AttributeError, TypeError):
-        is_imap = False
-    regex = re.compile('(?P<table>\w+)\.(?P<field>\w+)=(?P<value>\d+)')
-    if len(request.args) > 1 and hasattr(db[request.args[1]], '_primarykey'):
-        regex = re.compile('(?P<table>\w+)\.(?P<field>\w+)=(?P<value>.+)')
-    if request.vars.query:
-        match = regex.match(request.vars.query)
-        if match:
-            request.vars.query = '%s.%s.%s==%s' % (request.args[0],
-                                                   match.group('table'), match.group('field'),
-                                                   match.group('value'))
-    else:
-        request.vars.query = session.last_query
-    query = get_query(request)
-    if request.vars.start:
-        start = int(request.vars.start)
-    else:
-        start = 0
-    nrows = 0
-
-    step = 100
-    fields = []
-
-    if is_imap:
-        step = 3
- 
-    stop = start + step
-
-    table = None
-    rows = []
-    orderby = request.vars.orderby
-    if orderby:
-        orderby = dbname + '.' + orderby
-        if orderby == session.last_orderby:
-            if orderby[0] == '~':
-                orderby = orderby[1:]
-            else:
-                orderby = '~' + orderby
-    session.last_orderby = orderby
-    session.last_query = request.vars.query
-    form = FORM(TABLE(TR(T('Query:'), '', INPUT(_style='width:400px',
-                _name='query', _value=request.vars.query or '',
-                requires=IS_NOT_EMPTY(
-                    error_message=T("Cannot be empty")))), TR(T('Update:'),
-                INPUT(_name='update_check', _type='checkbox',
-                value=False), INPUT(_style='width:400px',
-                _name='update_fields', _value=request.vars.update_fields
-                                    or '')), TR(T('Delete:'), INPUT(_name='delete_check',
-                _class='delete', _type='checkbox', value=False), ''),
-                TR('', '', INPUT(_type='submit', _value=T('submit')))),
-                _action=URL(r=request, args=request.args))
-
-    tb = None
-    if form.accepts(request.vars, formname=None):
-        regex = re.compile(request.args[0] + '\.(?P<table>\w+)\..+')
-        match = regex.match(form.vars.query.strip())
-        if match:
-            table = match.group('table')
-        try:
-            nrows = db(query, ignore_common_filters=True).count()
-            if form.vars.update_check and form.vars.update_fields:
-                db(query, ignore_common_filters=True).update(
-                    **eval_in_global_env('dict(%s)' % form.vars.update_fields))
-                response.flash = T('%s %%{row} updated', nrows)
-            elif form.vars.delete_check:
-                db(query, ignore_common_filters=True).delete()
-                response.flash = T('%s %%{row} deleted', nrows)
-            nrows = db(query, ignore_common_filters=True).count()
-
-            if is_imap:
-                fields = [db[table][name] for name in
-                    ("id", "uid", "created", "to",
-                     "sender", "subject")]
-            if orderby:
-                rows = db(query, ignore_common_filters=True).select(
-                              *fields, limitby=(start, stop),
-                              orderby=eval_in_global_env(orderby))
-            else:
-                rows = db(query, ignore_common_filters=True).select(
-                    *fields, limitby=(start, stop))
-        except Exception, e:
-            import traceback
-            tb = traceback.format_exc()
-            (rows, nrows) = ([], 0)
-            response.flash = DIV(T('Invalid Query'), PRE(str(e)))
-    # begin handle upload csv
-    csv_table = table or request.vars.table
-    if csv_table:
-        formcsv = FORM(str(T('or import from csv file')) + " ",
-                       INPUT(_type='file', _name='csvfile'),
-                       INPUT(_type='hidden', _value=csv_table, _name='table'),
-                       INPUT(_type='submit', _value=T('import')))
-    else:
-        formcsv = None
-    if formcsv and formcsv.process().accepted:
-        try:
-            import_csv(db[request.vars.table],
-                       request.vars.csvfile.file)
-            response.flash = T('data uploaded')
-        except Exception, e:
-            response.flash = DIV(T('unable to parse csv file'), PRE(str(e)))
-    # end handle upload csv
-
-    return dict(
-        form=form,
-        table=table,
-        start=start,
-        stop=stop,
-        step=step,
-        nrows=nrows,
-        rows=rows,
-        query=request.vars.query,
-        formcsv=formcsv,
-        tb=tb
-    )
-
-
-# ##########################################################
-# ## edit delete one record
-# ###########################################################
-
-
-def update():
-    (db, table) = get_table(request)
-    keyed = hasattr(db[table], '_primarykey')
-    record = None
-    db[table]._common_filter = None
-    if keyed:
-        key = [f for f in request.vars if f in db[table]._primarykey]
-        if key:
-            record = db(db[table][key[0]] == request.vars[key[
-                        0]]).select().first()
-    else:
-        record = db(db[table].id == request.args(
-            2)).select().first()
-
-    if not record:
-        qry = query_by_table_type(table, db)
-        session.flash = T('record does not exist')
-        redirect(URL('select', args=request.args[:1],
-                     vars=dict(query=qry)))
-
-    if keyed:
-        for k in db[table]._primarykey:
-            db[table][k].writable = False
-
-    form = SQLFORM(
-        db[table], record, deletable=True, delete_label=T('Check to delete'),
-        ignore_rw=ignore_rw and not keyed,
-        linkto=URL('select',
-                   args=request.args[:1]), upload=URL(r=request,
-                                                      f='download', args=request.args[:1]))
-
-    if form.accepts(request.vars, session):
-        session.flash = T('done!')
-        qry = query_by_table_type(table, db)
-        redirect(URL('select', args=request.args[:1],
-                 vars=dict(query=qry)))
-    return dict(form=form, table=db[table])
-
-
-# ##########################################################
-# ## get global variables
-# ###########################################################
-
-
-def state():
-    return dict()
-
-
-def ccache():
-    if is_gae:
-        form = FORM(
-            P(TAG.BUTTON(T("Clear CACHE?"), _type="submit", _name="yes", _value="yes")))
-    else:
-        cache.ram.initialize()
-        cache.disk.initialize()
-
-        form = FORM(
-            P(TAG.BUTTON(
-                T("Clear CACHE?"), _type="submit", _name="yes", _value="yes")),
-            P(TAG.BUTTON(
-                T("Clear RAM"), _type="submit", _name="ram", _value="ram")),
-            P(TAG.BUTTON(
-                T("Clear DISK"), _type="submit", _name="disk", _value="disk")),
-        )
-
-    if form.accepts(request.vars, session):
-        session.flash = ""
-        if is_gae:
-            if request.vars.yes:
-                cache.ram.clear()
-                session.flash += T("Cache Cleared")
-        else:
-            clear_ram = False
-            clear_disk = False
-            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 += T("Ram Cleared")
-            if clear_disk:
-                cache.disk.clear()
-                session.flash += T("Disk Cleared")
-        redirect(URL(r=request))
-
-    try:
-        from guppy import hpy
-        hp = hpy()
-    except ImportError:
-        hp = False
-
-    import shelve
-    import os
-    import copy
-    import time
-    import math
-    from gluon import portalocker
-
-    ram = {
-        'entries': 0,
-        'bytes': 0,
-        'objects': 0,
-        'hits': 0,
-        'misses': 0,
-        'ratio': 0,
-        'oldest': time.time(),
-        'keys': []
-    }
-
-    disk = copy.copy(ram)
-    total = copy.copy(ram)
-    disk['keys'] = []
-    total['keys'] = []
-
-    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)
-
-    if is_gae:
-        gae_stats = cache.ram.client.get_stats()
-        try:
-            gae_stats['ratio'] = ((gae_stats['hits'] * 100) /
-                (gae_stats['hits'] + gae_stats['misses']))
-        except ZeroDivisionError:
-            gae_stats['ratio'] = T("?")
-        gae_stats['oldest'] = GetInHMS(time.time() - gae_stats['oldest_item_age'])
-        total.update(gae_stats)
-    else:
-        for key, value in cache.ram.storage.iteritems():
-            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
-                ram['entries'] += 1
-                if value[0] < ram['oldest']:
-                    ram['oldest'] = value[0]
-                ram['keys'].append((key, GetInHMS(time.time() - value[0])))
-
-        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']
-        total['objects'] = ram['objects'] + disk['objects']
-        total['hits'] = ram['hits'] + disk['hits']
-        total['misses'] = ram['misses'] + disk['misses']
-        total['keys'] = ram['keys'] + disk['keys']
-        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']
-
-        ram['oldest'] = GetInHMS(time.time() - ram['oldest'])
-        disk['oldest'] = GetInHMS(time.time() - disk['oldest'])
-        total['oldest'] = GetInHMS(time.time() - total['oldest'])
-
-    def key_table(keys):
-        return TABLE(
-            TR(TD(B(T('Key'))), TD(B(T('Time in Cache (h:m:s)')))),
-            *[TR(TD(k[0]), TD('%02d:%02d:%02d' % k[1])) for k in keys],
-            **dict(_class='cache-keys',
-                   _style="border-collapse: separate; border-spacing: .5em;"))
-
-    if not is_gae:
-        ram['keys'] = key_table(ram['keys'])
-        disk['keys'] = key_table(disk['keys'])
-        total['keys'] = key_table(total['keys'])
-
-    return dict(form=form, total=total,
-                ram=ram, disk=disk, object_stats=hp != False)
-
-
-def table_template(table):
-    from gluon.html import TR, TD, TABLE, TAG
-
-    def FONT(*args, **kwargs):
-        return TAG.font(*args, **kwargs)
-
-    def types(field):
-        f_type = field.type
-        if not isinstance(f_type,str):
-            return ' '
-        elif f_type == 'string':
-            return field.length
-        elif f_type == 'id':
-            return B('pk')
-        elif f_type.startswith('reference') or \
-                f_type.startswith('list:reference'):
-            return B('fk')
-        else:
-            return ' '
-
-    # This is horribe HTML but the only one graphiz understands
-    rows = []
-    cellpadding = 4
-    color = "#000000"
-    bgcolor = "#FFFFFF"
-    face = "Helvetica"
-    face_bold = "Helvetica Bold"
-    border = 0
-
-    rows.append(TR(TD(FONT(table, _face=face_bold, _color=bgcolor),
-                           _colspan=3, _cellpadding=cellpadding,
-                           _align="center", _bgcolor=color)))
-    for row in db[table]:
-        rows.append(TR(TD(FONT(row.name, _color=color, _face=face_bold),
-                              _align="left", _cellpadding=cellpadding,
-                              _border=border),
-                       TD(FONT(row.type, _color=color, _face=face),
-                               _align="left", _cellpadding=cellpadding,
-                               _border=border),
-                       TD(FONT(types(row), _color=color, _face=face),
-                               _align="center", _cellpadding=cellpadding,
-                               _border=border)))
-    return "< %s >" % TABLE(*rows, **dict(_bgcolor=bgcolor, _border=1,
-                                          _cellborder=0, _cellspacing=0)
-                             ).xml()
-
-
-def bg_graph_model():
-    graph = pgv.AGraph(layout='dot',  directed=True,  strict=False,  rankdir='LR')
-
-    subgraphs = dict()
-    for tablename in db.tables:
-        if hasattr(db[tablename],'_meta_graphmodel'):
-            meta_graphmodel = db[tablename]._meta_graphmodel
-        else:
-            meta_graphmodel = dict(group=request.application, color='#ECECEC')
-
-        group = meta_graphmodel['group'].replace(' ', '')
-        if not subgraphs.has_key(group):
-            subgraphs[group] = dict(meta=meta_graphmodel, tables=[])
-            subgraphs[group]['tables'].append(tablename)
-        else:
-            subgraphs[group]['tables'].append(tablename)
-
-        graph.add_node(tablename, name=tablename, shape='plaintext',
-                       label=table_template(tablename))
-
-    for n, key in enumerate(subgraphs.iterkeys()):
-        graph.subgraph(nbunch=subgraphs[key]['tables'],
-                    name='cluster%d' % n,
-                    style='filled',
-                    color=subgraphs[key]['meta']['color'],
-                    label=subgraphs[key]['meta']['group'])
-
-    for tablename in db.tables:
-        for field in db[tablename]:
-            f_type = field.type
-            if isinstance(f_type,str) and (
-                f_type.startswith('reference') or
-                f_type.startswith('list:reference')):
-                referenced_table = f_type.split()[1].split('.')[0]
-                n1 = graph.get_node(tablename)
-                n2 = graph.get_node(referenced_table)
-                graph.add_edge(n1, n2, color="#4C4C4C", label='')
-
-    graph.layout()
-    if not request.args:
-        response.headers['Content-Type'] = 'image/png'
-        return graph.draw(format='png', prog='dot')
-    else:
-        response.headers['Content-Disposition']='attachment;filename=graph.%s'%request.args(0)
-        if request.args(0) == 'dot':
-            return graph.string()
-        else:
-            return graph.draw(format=request.args(0), prog='dot')
-
-def graph_model():
-    return dict(databases=databases, pgv=pgv)
-
-def manage():
-    tables = manager_action['tables']
-    if isinstance(tables[0], str):
-        db = manager_action.get('db', auth.db)
-        db = globals()[db] if isinstance(db, str) else db
-        tables = [db[table] for table in tables]
-    if request.args(0) == 'auth':
-        auth.table_user()._plural = T('Users')
-        auth.table_group()._plural = T('Roles')
-        auth.table_membership()._plural = T('Memberships')
-        auth.table_permission()._plural = T('Permissions')
-    if request.extension != 'load':
-        return dict(heading=manager_action.get('heading',
-                    T('Manage %(action)s') % dict(action=request.args(0).replace('_', ' ').title())),
-                    tablenames=[table._tablename for table in tables],
-                    labels=[table._plural.title() for table in tables])
-
-    table = tables[request.args(1, cast=int)]
-    formname = '%s_grid' % table._tablename
-    linked_tables = orderby = None
-    if request.args(0) == 'auth':
-        auth.table_group()._id.readable = \
-        auth.table_membership()._id.readable = \
-        auth.table_permission()._id.readable = False
-        auth.table_membership().user_id.label = T('User')
-        auth.table_membership().group_id.label = T('Role')
-        auth.table_permission().group_id.label = T('Role')
-        auth.table_permission().name.label = T('Permission')
-        if table == auth.table_user():
-            linked_tables=[auth.settings.table_membership_name]
-        elif table == auth.table_group():
-            orderby = 'role' if not request.args(3) or '.group_id' not in request.args(3) else None
-        elif table == auth.table_permission():
-            orderby = 'group_id'
-    kwargs = dict(user_signature=True, maxtextlength=1000,
-                  orderby=orderby, linked_tables=linked_tables)
-    smartgrid_args = manager_action.get('smartgrid_args', {})
-    kwargs.update(**smartgrid_args.get('DEFAULT', {}))
-    kwargs.update(**smartgrid_args.get(table._tablename, {}))
-    grid = SQLFORM.smartgrid(table, args=request.args[:2], formname=formname, **kwargs)
-    return grid
-
-def hooks():
-    import functools
-    import inspect
-    list_op=['_%s_%s' %(h,m) for h in ['before', 'after'] for m in ['insert','update','delete']]
-    tables=[]
-    with_build_it=False
-    for db_str in sorted(databases):
-        db = databases[db_str]
-        for t in db.tables:
-            method_hooks=[]
-            for op in list_op:
-                functions = []
-                for f in getattr(db[t], op):
-                    if hasattr(f, '__call__'):
-                        try:
-                            if isinstance(f, (functools.partial)):
-                                f = f.func
-                            filename = inspect.getsourcefile(f)
-                            details = {'funcname':f.__name__,
-                                       'filename':filename[len(request.folder):] if request.folder in filename else None,
-                                       'lineno': inspect.getsourcelines(f)[1]}
-                            if details['filename']: # Built in functions as delete_uploaded_files are not editable
-                                details['url'] = URL(a='admin',c='default',f='edit', args=[request['application'], details['filename']],vars={'lineno':details['lineno']})
-                            if details['filename'] or with_build_it:
-                                functions.append(details)
-                        # compiled app and windows build don't support code inspection
-                        except:
-                            pass
-                if len(functions):
-                    method_hooks.append({'name':op, 'functions':functions})
-            if len(method_hooks):
-                tables.append({'name':"%s.%s" % (db_str,t), 'slug': IS_SLUG()("%s.%s" % (db_str,t))[0], 'method_hooks':method_hooks})
-    # Render
-    ul_main = UL(_class='nav nav-list')
-    for t in tables:
-        ul_main.append(A(t['name'], _onclick="collapse('a_%s')" % t['slug']))
-        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'], _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

+ 0 - 41
frameworks/Python/web2py/app/app/databases/7858106637800f617850eed16452cf10_fortune.table

@@ -1,41 +0,0 @@
-(dp1
-S'message'
-p2
-(dp3
-S'length'
-p4
-I512
-sS'unique'
-p5
-I00
-sS'sortable'
-p6
-I2
-sS'sql'
-p7
-S'VARCHAR(512)'
-p8
-sS'notnull'
-p9
-I00
-sS'type'
-p10
-S'string'
-p11
-ssS'id'
-p12
-(dp13
-g4
-I512
-sg5
-I00
-sg6
-I1
-sg7
-S'INT AUTO_INCREMENT NOT NULL'
-p14
-sg9
-I00
-sg10
-g12
-ss.

+ 0 - 41
frameworks/Python/web2py/app/app/databases/7858106637800f617850eed16452cf10_world.table

@@ -1,41 +0,0 @@
-(dp1
-S'id'
-p2
-(dp3
-S'length'
-p4
-I512
-sS'unique'
-p5
-I00
-sS'sortable'
-p6
-I1
-sS'sql'
-p7
-S'INT AUTO_INCREMENT NOT NULL'
-p8
-sS'notnull'
-p9
-I00
-sS'type'
-p10
-g2
-ssS'randomNumber'
-p11
-(dp12
-g4
-I512
-sg5
-I00
-sg6
-I2
-sg7
-S'VARCHAR(512)'
-p13
-sg9
-I00
-sg10
-S'string'
-p14
-ss.

+ 0 - 138
frameworks/Python/web2py/app/app/models/menu.py

@@ -1,138 +0,0 @@
-# -*- coding: utf-8 -*-
-# this file is released under public domain and you can use without limitations
-
-#########################################################################
-## Customize your APP title, subtitle and menus here
-#########################################################################
-
-response.logo = A(B('web',SPAN(2),'py'),XML('&trade;&nbsp;'),
-                  _class="navbar-brand",_href="http://www.web2py.com/",
-                  _id="web2py-logo")
-response.title = request.application.replace('_',' ').title()
-response.subtitle = ''
-
-## read more at http://dev.w3.org/html5/markup/meta.name.html
-response.meta.author = 'Your Name <[email protected]>'
-response.meta.description = 'a cool new app'
-response.meta.keywords = 'web2py, python, framework'
-response.meta.generator = 'Web2py Web Framework'
-
-## your http://google.com/analytics id
-response.google_analytics_id = None
-
-#########################################################################
-## this is the main application menu add/remove items as required
-#########################################################################
-
-response.menu = [
-    (T('Home'), False, URL('default', 'index'), [])
-]
-
-DEVELOPMENT_MENU = True
-
-#########################################################################
-## provide shortcuts for development. remove in production
-#########################################################################
-
-def _():
-    # shortcuts
-    app = request.application
-    ctr = request.controller
-    # useful links to internal and external resources
-    response.menu += [
-        (T('My Sites'), False, URL('admin', 'default', 'site')),
-          (T('This App'), False, '#', [
-              (T('Design'), False, URL('admin', 'default', 'design/%s' % app)),
-              LI(_class="divider"),
-              (T('Controller'), False,
-               URL(
-               'admin', 'default', 'edit/%s/controllers/%s.py' % (app, ctr))),
-              (T('View'), False,
-               URL(
-               'admin', 'default', 'edit/%s/views/%s' % (app, response.view))),
-              (T('DB Model'), False,
-               URL(
-               'admin', 'default', 'edit/%s/models/db.py' % app)),
-              (T('Menu Model'), False,
-               URL(
-               'admin', 'default', 'edit/%s/models/menu.py' % app)),
-              (T('Config.ini'), False,
-               URL(
-               'admin', 'default', 'edit/%s/private/appconfig.ini' % app)),
-              (T('Layout'), False,
-               URL(
-               'admin', 'default', 'edit/%s/views/layout.html' % app)),
-              (T('Stylesheet'), False,
-               URL(
-               'admin', 'default', 'edit/%s/static/css/web2py-bootstrap3.css' % app)),
-              (T('Database'), False, URL(app, 'appadmin', 'index')),
-              (T('Errors'), False, URL(
-               'admin', 'default', 'errors/' + app)),
-              (T('About'), False, URL(
-               'admin', 'default', 'about/' + app)),
-              ]),
-          ('web2py.com', False, '#', [
-             (T('Download'), False,
-              'http://www.web2py.com/examples/default/download'),
-             (T('Support'), False,
-              'http://www.web2py.com/examples/default/support'),
-             (T('Demo'), False, 'http://web2py.com/demo_admin'),
-             (T('Quick Examples'), False,
-              'http://web2py.com/examples/default/examples'),
-             (T('FAQ'), False, 'http://web2py.com/AlterEgo'),
-             (T('Videos'), False,
-              'http://www.web2py.com/examples/default/videos/'),
-             (T('Free Applications'),
-              False, 'http://web2py.com/appliances'),
-             (T('Plugins'), False, 'http://web2py.com/plugins'),
-             (T('Recipes'), False, 'http://web2pyslices.com/'),
-             ]),
-          (T('Documentation'), False, '#', [
-             (T('Online book'), False, 'http://www.web2py.com/book'),
-             LI(_class="divider"),
-             (T('Preface'), False,
-              'http://www.web2py.com/book/default/chapter/00'),
-             (T('Introduction'), False,
-              'http://www.web2py.com/book/default/chapter/01'),
-             (T('Python'), False,
-              'http://www.web2py.com/book/default/chapter/02'),
-             (T('Overview'), False,
-              'http://www.web2py.com/book/default/chapter/03'),
-             (T('The Core'), False,
-              'http://www.web2py.com/book/default/chapter/04'),
-             (T('The Views'), False,
-              'http://www.web2py.com/book/default/chapter/05'),
-             (T('Database'), False,
-              'http://www.web2py.com/book/default/chapter/06'),
-             (T('Forms and Validators'), False,
-              'http://www.web2py.com/book/default/chapter/07'),
-             (T('Email and SMS'), False,
-              'http://www.web2py.com/book/default/chapter/08'),
-             (T('Access Control'), False,
-              'http://www.web2py.com/book/default/chapter/09'),
-             (T('Services'), False,
-              'http://www.web2py.com/book/default/chapter/10'),
-             (T('Ajax Recipes'), False,
-              'http://www.web2py.com/book/default/chapter/11'),
-             (T('Components and Plugins'), False,
-              'http://www.web2py.com/book/default/chapter/12'),
-             (T('Deployment Recipes'), False,
-              'http://www.web2py.com/book/default/chapter/13'),
-             (T('Other Recipes'), False,
-              'http://www.web2py.com/book/default/chapter/14'),
-             (T('Helping web2py'), False,
-              'http://www.web2py.com/book/default/chapter/15'),
-             (T("Buy web2py's book"), False,
-              'http://stores.lulu.com/web2py'),
-             ]),
-          (T('Community'), False, None, [
-             (T('Groups'), False,
-              'http://www.web2py.com/examples/default/usergroups'),
-              (T('Twitter'), False, 'http://twitter.com/web2py'),
-              (T('Live Chat'), False,
-               'http://webchat.freenode.net/?channels=web2py'),
-              ]),
-        ]
-if DEVELOPMENT_MENU: _()
-
-if "auth" in locals(): auth.wikimenu() 

+ 0 - 278
frameworks/Python/web2py/app/app/views/appadmin.html

@@ -1,278 +0,0 @@
-{{extend 'layout.html'}}
-<script><!--
-    jQuery(document).ready(function(){
-    jQuery("table.sortable tbody tr").mouseover( function() {
-    jQuery(this).addClass("highlight"); }).mouseout( function() {
-    jQuery(this).removeClass("highlight"); });
-    jQuery('table.sortable tbody tr:odd').addClass('odd');
-    jQuery('table.sortable tbody tr:even').addClass('even');
-});
-//--></script>
-
-{{if request.function=='index':}}
-<h2>{{=T("Available Databases and Tables")}}</h2>
-  {{if not databases:}}{{=T("No databases in this application")}}{{pass}}
-  <ul class="nav nav-tabs" id="myTab">
-  <li class="active" ><a href="#alltables" data-toggle="tab">Tables</a></li>
-  <li><a href="#hooks" data-toggle="tab">Hooks</a></li>
-  </ul>
-  <div class="tab-content">
-      <div class="tab-pane active" id="alltables">
-        <table class="table">
-          {{for db in sorted(databases):}}
-            {{for table in databases[db].tables:}}
-              {{qry='%s.%s.id>0'%(db,table)}}
-              {{tbl=databases[db][table]}}
-              {{if hasattr(tbl,'_primarykey'):}}
-                {{if tbl._primarykey:}}
-                    {{firstkey=tbl[tbl._primarykey[0]]}}
-                    {{if firstkey.type in ['string','text']:}}
-                      {{qry='%s.%s.%s!=""'%(db,table,firstkey.name)}}
-                    {{else:}}
-                      {{qry='%s.%s.%s>0'%(db,table,firstkey.name)}}
-                    {{pass}}
-                {{else:}}
-                     {{qry=''}}
-                {{pass}}
-              {{pass}}
-          <tr>
-            <th style="font-size: 1.75em;">
-              {{=A("%s.%s" % (db,table),_href=URL('select',args=[db],vars=dict(query=qry)))}}
-            </th>
-            <td>
-              {{=A(str(T('New Record')),_href=URL('insert',args=[db,table]),_class="btn btn-default")}}
-            </td>
-          </tr>
-          {{pass}}
-          {{pass}}
-        </table>
-      </div>
-      <div class="tab-pane" id="hooks">
-      {{=LOAD('appadmin', 'hooks', ajax=True)}}
-      </div>
-  </div>
-{{elif request.function=='select':}}
-  <h2>{{=XML(str(T("Database %s select"))%A(request.args[0],_href=URL('index'))) }}
-  </h2>
-  {{if tb:}}
-  <h3>{{=T('Traceback')}}</h3>
-  <pre>
-    {{=tb}}
-  </pre>
-  {{pass}}
-  {{if table:}}
-  {{=A(str(T('New Record')),_href=URL('insert',args=[request.args[0],table]),_class="btn btn-default")}}<br/><br/>
-    <h3>{{=T("Rows in Table")}}</h3><br/>
-   {{else:}}
-    <h3>{{=T("Rows selected")}}</h3><br/>
-   {{pass}}
-   {{=form}}
-   <p>{{=T('The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.')}}<br/>
-      {{=T('Use (...)&(...) for AND, (...)|(...) for OR, and ~(...)  for NOT to build more complex queries.')}}<br/>
-      {{=T('"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN')}}</p>
-    <br/><br/>
-    <h4>{{=T("%s selected", nrows)}}</h4>
-    {{if start>0:}}{{=A(T('previous %s rows') % step,_href=URL('select',args=request.args[0],vars=dict(start=start-step)),_class="btn btn-default")}}{{pass}}
-    {{if stop<nrows:}}{{=A(T('next %s rows') % step,_href=URL('select',args=request.args[0],vars=dict(start=start+step)),_class="btn btn-default")}}{{pass}}
-    {{if rows:}}
-       <div style="overflow:auto; width:80%;">
-       {{linkto = lambda f, t, r: URL('update', args=[request.args[0], r, f]) if f else "#"}}
-       {{upload=URL('download',args=request.args[0])}}
-       {{=SQLTABLE(rows,linkto,upload,orderby=True,_class='sortable')}}
-       </div>
-    {{pass}}
-    <br/><br/><h3>{{=T("Import/Export")}}</h3><br/>
-    <a href="{{=URL('csv',args=request.args[0],vars=dict(query=query))}}" class="btn btn-default">{{=T("export as csv file")}}</a>
-  {{=formcsv or ''}}
-
-{{elif request.function=='insert':}}
-  <h2>{{=T("Database")}} {{=A(request.args[0],_href=URL('index'))}}
-    {{if hasattr(table,'_primarykey'):}}
-      {{fieldname=table._primarykey[0]}}
-      {{dbname=request.args[0]}}
-      {{tablename=request.args[1]}}
-      {{cond = table[fieldname].type in ['string','text'] and '!=""' or '>0'}}
-      {{=T("Table")}} {{=A(tablename,_href=URL('select',args=dbname,vars=dict(query='%s.%s.%s%s'%(dbname,tablename,fieldname,cond))))}}
-    {{else:}}
-      {{=T("Table")}} {{=A(request.args[1],_href=URL('select',args=request.args[0],vars=dict(query='%s.%s.id>0'%tuple(request.args[:2]))))}}
-    {{pass}}
-  </h2>
-  <h3>{{=T("New Record")}}</h3><br/>
-  {{=form}}
-{{elif request.function=='update':}}
-  <h2>{{=T("Database")}} {{=A(request.args[0],_href=URL('index'))}}
-    {{if hasattr(table,'_primarykey'):}}
-      {{fieldname=request.vars.keys()[0]}}
-      {{dbname=request.args[0]}}
-      {{tablename=request.args[1]}}
-      {{cond = table[fieldname].type in ['string','text'] and '!=""' or '>0'}}
-      {{=T("Table")}} {{=A(tablename,_href=URL('select',args=dbname,vars=dict(query='%s.%s.%s%s'%(dbname,tablename,fieldname,cond))))}}
-      {{=T("Record")}} {{=A('%s=%s'%request.vars.items()[0],_href=URL('update',args=request.args[:2],vars=request.vars))}}
-    {{else:}}
-      {{=T("Table")}} {{=A(request.args[1],_href=URL('select',args=request.args[0],vars=dict(query='%s.%s.id>0'%tuple(request.args[:2]))))}}
-      {{=T("Record id")}} {{=A(request.args[2],_href=URL('update',args=request.args[:3]))}}
-    {{pass}}
-  </h2>
-  <h3>{{=T("Edit current record")}}</h3><br/><br/>{{=form}}
-
-{{elif request.function=='state':}}
-  <h2>{{=T("Internal State")}}</h2>
-  <h3>{{=T("Current request")}}</h3>
-  {{=BEAUTIFY(request)}}
-  <br/><h3>{{=T("Current response")}}</h3>
-  {{=BEAUTIFY(response)}}
-  <br/><h3>{{=T("Current session")}}</h3>
-  {{=BEAUTIFY(session)}}
-
-
-{{elif request.function == 'ccache':}}
-<h2>{{T("Cache")}}</h2>
-<div class="list">
-
-  <div class="list-header">
-    <h3>{{T("Statistics")}}</h3>
-  </div>
-
-  <div class="content">
-    <h4>{{=T("Overview")}}</h4>
-    <p>{{=T.M("Number of entries: **%s**", total['entries'])}}</p>
-    {{if total['entries'] > 0:}}
-      <p>{{=T.M("Hit Ratio: **%(ratio)s%%** (**%(hits)s** %%{hit(hits)} and **%(misses)s** %%{miss(misses})",
-              dict(ratio=total['ratio'], hits=total['hits'], misses=total['misses']))}}
-     </p>
-    <p>
-      {{=T("Size of cache:")}}
-      {{if object_stats:}}
-        {{=T.M("**%(items)s** %%{item(items)}, **%(bytes)s** %%{byte(bytes)}", dict(items=total['objects'], bytes=total['bytes']))}}
-        {{if total['bytes'] > 524287:}}
-          {{=T.M("(**%.0d MB**)", total['bytes'] / 1048576)}}
-        {{pass}}
-      {{else:}}
-        {{=T.M("**not available** (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)")}}
-      {{pass}}
-    </p>
-    <p>
-      {{=T.M("Cache contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.",
-              dict(hours=total['oldest'][0], min=total['oldest'][1], sec=total['oldest'][2]))}}
-    </p>
-    {{=BUTTON(T('Cache Keys'), _onclick='jQuery("#all_keys").toggle();')}}
-    <div class="hidden" id="all_keys">
-      {{=total['keys']}}
-    </div>
-    <br />
-    {{pass}}
-
-    <h4>{{=T("RAM")}}</h4>
-    <p>{{=T.M("Number of entries: **%s**", ram['entries'])}}</p>
-    {{if ram['entries'] > 0:}}
-    <p>{{=T.M("Hit Ratio: **%(ratio)s%%** (**%(hits)s** %%{hit(hits)} and **%(misses)s** %%{miss(misses)})",
-             dict( ratio=ram['ratio'], hits=ram['hits'], misses=ram['misses']))}}
-    </p>
-    <p>
-      {{=T("Size of cache:")}}
-      {{if object_stats:}}
-        {{=T.M("**%(items)s** items, **%(bytes)s** %%{byte(bytes)}", dict(items=ram['objects'], bytes=ram['bytes']))}}
-        {{if ram['bytes'] > 524287:}}
-          {{=T.M("(**%.0d MB**)", ram['bytes'] / 10485576)}}
-        {{pass}}
-      {{else:}}
-        {{=T.M("``**not available**``:red (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)")}}
-      {{pass}}
-    </p>
-    <p>
-      {{=T.M("RAM contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.",
-              dict(hours=ram['oldest'][0], min=ram['oldest'][1], sec=ram['oldest'][2]))}}
-    </p>
-    {{=BUTTON(T('RAM Cache Keys'), _onclick='jQuery("#ram_keys").toggle();')}}
-    <div class="hidden" id="ram_keys">
-      {{=ram['keys']}}
-    </div>
-    <br />
-    {{pass}}
-
-    <h4>{{=T("DISK")}}</h4>
-    <p>{{=T.M("Number of entries: **%s**", disk['entries'])}}</p>
-    {{if disk['entries'] > 0:}}
-      <p>
-      {{=T.M("Hit Ratio: **%(ratio)s%%** (**%(hits)s** %%{hit(hits)} and **%(misses)s** %%{miss(misses)})",
-            dict(ratio=disk['ratio'], hits=disk['hits'], misses=disk['misses']))}}
-      </p>
-      <p>
-      {{=T("Size of cache:")}}
-      {{if object_stats:}}
-        {{=T.M("**%(items)s** %%{item(items)}, **%(bytes)s** %%{byte(bytes)}", dict( items=disk['objects'], bytes=disk['bytes']))}}
-        {{if disk['bytes'] > 524287:}}
-          {{=T.M("(**%.0d MB**)", disk['bytes'] / 1048576)}}
-        {{pass}}
-      {{else:}}
-        {{=T.M("``**not available**``:red (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)")}}
-      {{pass}}
-      </p>
-      <p>
-      {{=T.M("DISK contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.",
-                dict(hours=disk['oldest'][0], min=disk['oldest'][1], sec=disk['oldest'][2]))}}
-      </p>
-      {{=BUTTON(T('Disk Cache Keys'), _onclick='jQuery("#disk_keys").toggle();')}}
-      <div class="hidden" id="disk_keys">
-      {{=disk['keys']}}
-      </div>
-      <br />
-    {{pass}}
-  </div>
-
-  <div class="list-header">
-    <h3>{{=T("Manage Cache")}}</h3>
-  </div>
-
-  <div class="content">
-    <p>
-      {{=form}}
-    </p>
-  </div>
-</div>
-<div class="clear"></div>
-{{pass}}
-
-{{if request.function=='graph_model':}}
-<h2>{{=T("Graph Model")}}</h2>
-  {{if not pgv:}}
-    {{=T('pygraphviz library not found')}}
-  {{elif not databases:}}
-    {{=T("No databases in this application")}}
-  {{else:}}	   
-    <div class="btn-group">
-      <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
-        <i class="icon-download"></i> {{=T('Save model as...')}}
-        <span class="caret"></span>
-      </a>
-      <ul class="dropdown-menu">
-          <li><a href="{{=URL('appadmin', 'bg_graph_model', args=['png'])}}">png</a></li>
-          <li><a href="{{=URL('appadmin', 'bg_graph_model', args=['svg'])}}">svg</a></li>
-          <li><a href="{{=URL('appadmin', 'bg_graph_model', args=['pdf'])}}">pdf</a></li>
-          <li><a href="{{=URL('appadmin', 'bg_graph_model', args=['ps'])}}">ps</a></li>          
-          <li><a href="{{=URL('appadmin', 'bg_graph_model', args=['dot'])}}">dot</a></li>                                   
-      </ul>
-    </div>
-    <br />
-    {{=IMG(_src=URL('appadmin', 'bg_graph_model'))}}
-  {{pass}}
-{{pass}}
-
-{{if request.function == 'manage':}}
-<h2>{{=heading}}</h2>
-<ul class="nav nav-tabs">
-  {{for k, tablename in enumerate(tablenames):}}
-  <li{{=XML(' class="active"') if k == 0 else ''}}>
-    <a href="#table-{{=tablename}}" data-toggle="tab">{{=labels[k]}}</a>
-  </li>
-  {{pass}}
-</ul>
-
-<div class="tab-content">
-  {{for k, tablename in enumerate(tablenames):}}
-  <div class="tab-pane{{=XML(' active') if k == 0 else ''}}" id="table-{{=tablename}}">
-    {{=LOAD(f='manage.load', args=[request.args(0), k], ajax=True)}}
-  </div>
-  {{pass}}
-</div>
-{{pass}}

+ 0 - 17
frameworks/Python/web2py/app/app/views/generic.ics

@@ -1,17 +0,0 @@
-{{
-###
-# response._vars contains the dictionary returned by the controller action
-# Assuming something like:
-#
-# db.define_table('event',
-#                 Field('title'),
-#                 Field('start_datetime','datetime'),
-#                 Field('stop_datetime','datetime'))
-#   events = db(db.event).select()
-#
-# Aor this to work the action must return something like
-#
-#   dict(events=events, title='title',link=URL('action'),timeshift=0)
-#
-###
-from gluon.serializers import ics}}{{=XML(ics(**response._vars))}}

+ 0 - 1
frameworks/Python/web2py/app/app/views/generic.json

@@ -1 +0,0 @@
-{{from gluon.serializers import json}}{{=XML(json(response._vars))}}

+ 0 - 23
frameworks/Python/web2py/app/app/views/generic.jsonp

@@ -1,23 +0,0 @@
-{{
-###
-# response._vars contains the dictionary returned by the controller action
-###
-
-# security check! This file is an example for a jsonp view.
-# it is not safe to use as a generic.jsonp because of security implications.
-
-if response.view == 'generic.jsonp':
-   raise HTTP(501,'generic.jsonp diasbled for security reasons')
-
-try:
-       from gluon.serializers import json
-       result = "%s(%s)" % (request.vars['callback'], json(response._vars))
-       response.write(result, escape=False)
-       response.headers['Content-Type'] = 'application/jsonp'
-except (TypeError, ValueError):
-       raise HTTP(405, 'JSON serialization error')
-except ImportError:
-       raise HTTP(405, 'JSON not available')
-except:
-       raise HTTP(405, 'JSON error')
-}}

+ 0 - 30
frameworks/Python/web2py/app/app/views/generic.load

@@ -1,30 +0,0 @@
-{{'''
-# License: Public Domain
-# Author: Iceberg at 21cn dot com
-
-With this generic.load file, you can use same function to serve two purposes.
-
-= regular action
-- ajax callback (when called with .load)
-
-Example modified from http://www.web2py.com/AlterEgo/default/show/252:
-
-def index():
-    return dict(
-		part1='hello world',
-        	part2=LOAD(url=URL(r=request,f='auxiliary.load'),ajax=True))
-
-def auxiliary():
-    form=SQLFORM.factory(Field('name'))
-    if form.accepts(request.vars):
-        response.flash = 'ok' 
-        return dict(message="Hello %s" % form.vars.name)
-    return dict(form=form)
-
-Notice:
-
-- no need to set response.headers['web2py-response-flash']
-- no need to return a string
-even if the function is called via ajax.
-
-'''}}{{if len(response._vars)==1:}}{{=response._vars.values()[0]}}{{else:}}{{=BEAUTIFY(response._vars)}}{{pass}}

+ 0 - 69
frameworks/Python/web2py/app/app/views/generic.map

@@ -1,69 +0,0 @@
-{{"""
-this is an example of usage of google map
-the web2py action should be something like:
-
-def map():
-    return dict(
-      googlemap_key='...',
-      center_latitude = 41.878,
-      center_longitude = -87.629,
-      scale = 7,
-      maker = lambda point: A(row.id,_href='...')
-      points = db(db.point).select() where a points have latitute and longitude
-    )
-
-the corresponding views/defaut/map.html should be something like:
-
-    \{\{extend 'layout.html'\}\}
-    <center>\{\{include 'generic.map'\}\}</center>
-
-"""}}
-  <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key={{=googlemap_key}}" type="text/javascript"></script>
-    <script type="text/javascript">
-    //<![CDATA[
-    function load() {
-      if (GBrowserIsCompatible()) {
-        var map = new GMap2(document.getElementById("map"));
-        map.addControl(new GSmallMapControl());
-        map.addControl(new GMapTypeControl());
-        map.setCenter(new GLatLng({{=center_latitude}},
-           {{=center_longitude}}), {{=scale}});
-        // Create a base icon for all of our markers that specifies the
-        // shadow, icon dimensions, etc.
-        var baseIcon = new GIcon();
-        baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
-        baseIcon.iconSize = new GSize(20, 34);
-        baseIcon.shadowSize = new GSize(37, 34);
-        baseIcon.iconAnchor = new GPoint(9, 34);
-        baseIcon.infoWindowAnchor = new GPoint(9, 2);
-        baseIcon.infoShadowAnchor = new GPoint(18, 14);
-        var blueIcon = new GIcon();
-        blueIcon.image = "http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png";
-        blueIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
-        blueIcon.iconSize = new GSize(37, 34);
-        blueIcon.shadowSize = new GSize(37, 34);
-        blueIcon.iconAnchor = new GPoint(9, 34);
-        blueIcon.infoWindowAnchor = new GPoint(9, 2);
-        blueIcon.infoShadowAnchor = new GPoint(18, 14);
-
-        function createMarker(point, i, message) {
-           // Set up our GMarkerOptions object
-           if(i==0) markerOptions = { icon:blueIcon };
-           else markerOptions= {}
-           var marker = new GMarker(point, markerOptions);
-           GEvent.addListener(marker, "click", function() {
-             marker.openInfoWindowHtml(message);
-           });
-           return marker;
-        }
-        {{for point in points:}}{{if point.latitude and point.longitude:}}
-          var point = new GLatLng({{=point.latitude}},{{=point.longitude}});
-          map.addOverlay(createMarker(point, 0, 
-            '{{=point.get('map_marker',maker(point))}}'));
-        {{pass}}{{pass}}
-     }
-    }
-    //]]>
-    </script>
-    <div id="map" style="width: 800px; height: 500px"></div>
-    <script>load();</script>

+ 0 - 11
frameworks/Python/web2py/app/app/views/generic.pdf

@@ -1,11 +0,0 @@
-{{
-import os
-from gluon.contrib.generics import pdf_from_html
-filename = '%s/%s.html' % (request.controller,request.function)
-if os.path.exists(os.path.join(request.folder,'views',filename)):
-   html=response.render(filename)
-else:
-   html=BODY(BEAUTIFY(response._vars)).xml()
-pass
-=pdf_from_html(html)
-}}

+ 0 - 10
frameworks/Python/web2py/app/app/views/generic.rss

@@ -1,10 +0,0 @@
-{{
-###
-# response._vars contains the dictionary returned by the controller action
-# for this to work the action must return something like
-#
-#   dict(title=...,link=...,description=...,created_on='...',items=...)
-#
-# items is a list of dictionaries each with title, link, description, pub_date.
-###
-from gluon.serializers import rss}}{{=XML(rss(response._vars))}}

+ 0 - 1
frameworks/Python/web2py/app/app/views/generic.xml

@@ -1 +0,0 @@
-{{from gluon.serializers import xml}}{{=XML(xml(response._vars,quote=False))}}

+ 0 - 132
frameworks/Python/web2py/app/app/views/layout.html

@@ -1,132 +0,0 @@
-<!DOCTYPE html>
-<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js" lang="{{=T.accepted_language or 'en'}}"> <!--<![endif]-->
-  <head>
-    <meta charset="utf-8">
-    <!-- www.phpied.com/conditional-comments-block-downloads/ -->
-    <!-- Always force latest IE rendering engine
-         (even in intranet) & Chrome Frame
-         Remove this if you use the .htaccess -->
-    <meta http-equiv="X-UA-Compatible" content="IE=edge{{=not request.is_local and ',chrome=1' or ''}}">
-    <!--  Mobile Viewport Fix
-          j.mp/mobileviewport & davidbcalhoun.com/2010/viewport-metatag
-          device-width: Occupy full width of the screen in its current orientation
-          initial-scale = 1.0 retains dimensions instead of zooming out if page height > device height
-          user-scalable = yes allows the user to zoom in -->
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>{{=response.title or request.application}}</title>
-    <!-- http://dev.w3.org/html5/markup/meta.name.html -->
-    <meta name="application-name" content="{{=request.application}}">
-    <!-- Speaking of Google, don't forget to set your site up:
-         http://google.com/webmasters -->
-    <meta name="google-site-verification" content="">
-    <!-- include stylesheets -->
-    <link rel="stylesheet" href="{{=URL('static','css/bootstrap.min.css')}}"/>
-    <link rel="stylesheet" href="{{=URL('static','css/bootstrap-theme.min.css')}}"/>
-    <link rel="stylesheet" href="{{=URL('static','css/web2py-bootstrap3.css')}}"/>
-    <link rel="shortcut icon" href="{{=URL('static','images/favicon.ico')}}" type="image/x-icon">
-    <link rel="apple-touch-icon" href="{{=URL('static','images/favicon.png')}}">
-    <!-- All JavaScript at the bottom, except for Modernizr which enables
-         HTML5 elements & feature detects -->
-    <script src="{{=URL('static','js/modernizr-2.8.3.min.js')}}"></script>
-    <!--[if lt IE 9]>
-        <script src="{{=URL('static','js/respond-1.4.2.min.js')}}"></script>
-        <![endif]-->
-    <!-- Favicons -->
-    {{include 'web2py_ajax.html'}} <!-- this includes jquery.js, calendar.js/.css and web2py.js -->
-    {{block head}}{{end}}
-    {{
-    # using sidebars need to know what sidebar you want to use
-    mc0 = 'col-md-12'
-    mc1 = 'col-md-9'
-    mc2 = 'col-md-6'
-    left_sidebar_enabled = globals().get('left_sidebar_enabled', False)
-    right_sidebar_enabled = globals().get('right_sidebar_enabled', False)
-    middle_column = {0: mc0, 1: mc1, 2: mc2}[
-    (left_sidebar_enabled and 1 or 0)+(right_sidebar_enabled and 1 or 0)]
-    }}
-  </head>
-  <body>
-    <!--[if lt IE 8]><p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p><![endif]-->
-    <div class="flash alert alert-dismissable">{{=response.flash or ''}}</div>
-    <!-- Navbar ======================================= -->
-    <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
-      <div class="container-fluid">
-        <div class="navbar-header">
-          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
-            <span class="sr-only">Toggle navigation</span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
-          {{=response.logo or ''}}
-        </div>
-        <div class="collapse navbar-collapse navbar-ex1-collapse">
-          <ul class="nav navbar-nav navbar-right">
-            {{='auth' in globals() and auth.navbar('Welcome',mode='dropdown') or ''}}
-          </ul>
-          {{if response.menu:}}
-          {{=MENU(response.menu, _class='nav navbar-nav',li_class='dropdown',ul_class='dropdown-menu')}}
-          {{pass}}
-        </div>
-      </div>
-    </nav>
-    <!-- Masthead ===================================== -->    
-    {{block header}}
-    {{end}}
-    <!-- Main ========================================= -->
-    <!-- Begin page content -->
-    <div class="container-fluid">
-      {{if left_sidebar_enabled:}}
-        <div class="col-md-3 left-sidebar">
-            {{block left_sidebar}}
-            <h3>Left Sidebar</h3>
-            <p></p>
-            {{end}}
-        </div>
-      {{pass}}
-
-      <div class="{{=middle_column}}">
-        {{block center}}
-        {{include}}
-        {{end}}
-      </div>
-
-      {{if right_sidebar_enabled:}}
-        <div class="col-md-3">
-            {{block right_sidebar}}
-            <h3>Right Sidebar</h3>
-            <p></p>
-            {{end}}
-        </div>
-      {{pass}}
-
-    </div>
-
-    {{block footer}} <!-- this is default footer -->      
-    <footer class="footer">
-      <div class="container-fluid">
-        <div class="copyright pull-left">{{=T('Copyright')}} &#169; {{=request.now.year}}</div>
-          <div id="poweredBy" class="pull-right">
-            {{=T('Powered by')}}
-            <a href="http://www.web2py.com/">web2py</a>
-          </div>
-      </div>
-    </footer>
-    {{end}}
-    <!-- The javascript =============================== -->
-    <script src="{{=URL('static','js/bootstrap.min.js')}}"></script>
-    <script src="{{=URL('static','js/web2py-bootstrap3.js')}}"></script>
-    {{block page_js}}{{end page_js}}
-    {{if response.google_analytics_id:}}
-    <!-- Analytics ==================================== -->
-    <script src="{{=URL('static','js/analytics.min.js')}}"></script>
-    <script type="text/javascript">
-      analytics.initialize({
-      'Google Analytics':{trackingId:'{{=response.google_analytics_id}}'}
-      });
-    </script>
-    {{pass}}
-    <!-- Share ============================y============ -->
-    <script src="{{=URL('static','js/share.js',vars=dict(static=URL('static','images')))}}"></script>
-  </body>
-</html>

+ 0 - 16
frameworks/Python/web2py/app/app/views/web2py_ajax.html

@@ -1,16 +0,0 @@
-<script type="text/javascript"><!--
-    // These variables are used by the web2py_ajax_init function in web2py_ajax.js (which is loaded below).
-    var w2p_ajax_confirm_message = "{{=T('Are you sure you want to delete this object?')}}";
-    var w2p_ajax_disable_with_message = "{{=T('Working...')}}";
-    var w2p_ajax_date_format = "{{=T('%Y-%m-%d')}}";
-    var w2p_ajax_datetime_format = "{{=T('%Y-%m-%d %H:%M:%S')}}";
-    var ajax_error_500 = '{{=T.M('An error occured, please [[reload %s]] the page') % URL(args=request.args, vars=request.get_vars) }}'
-    //--></script>
-{{
-response.files.insert(0,URL('static','js/jquery.js'))
-response.files.insert(1,URL('static','css/calendar.css'))
-response.files.insert(2,URL('static','js/calendar.js'))
-response.files.insert(3,URL('static','js/web2py.js'))
-response.include_meta()
-response.include_files()
-}}