ABOUT 0000644 0000765 0000024 00000000066 11201222575 011527 0 ustar mdipierro staff Write something about this app.
Developed with web2py. LICENSE 0000644 0000765 0000024 00000000207 11201222575 011734 0 ustar mdipierro staff This is a sample license. You can write here anything you want
as long as you do not violate web2py copyright, trademark and license.
__init__.py 0000644 0000765 0000024 00000000000 11203316461 013027 0 ustar mdipierro staff cache/ 0000755 0000765 0000024 00000000000 11252606014 011773 5 ustar mdipierro staff controllers/ 0000755 0000765 0000024 00000000000 11252370236 013302 5 ustar mdipierro staff controllers/appadmin.py 0000644 0000765 0000024 00000017506 11251014526 015452 0 ustar mdipierro staff # coding: utf8
# ##########################################################
# ## make sure administrator is on localhost
# ###########################################################
import os
import socket
import datetime
import copy
import gluon.contenttype
import gluon.fileutils
# ## crytical --- 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.gethostbyname(remote_addr))
except:
hosts = (http_host, )
if remote_addr not in hosts:
raise HTTP(400)
if not gluon.fileutils.check_credentials(request):
redirect('/admin')
ignore_rw = True
response.view = 'appadmin.html'
response.menu = [[T('design'), False, URL('admin', 'default', 'design',
args=[request.application])], [T('db'), False,
URL(r=request, f='index')], [T('state'), False,
URL(r=request, f='state')]]
# ##########################################################
# ## auxiliary functions
# ###########################################################
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(r=request, f='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(r=request, f='index'))
def get_query(request):
try:
return eval_in_global_env(request.vars.query)
except Exception:
return None
# ##########################################################
# ## 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)
# ##########################################################
# ## 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).select())
def import_csv(table, file):
table.import_from_csv_file(file)
def select():
import re
db = get_database(request)
dbname = request.args[0]
regex = re.compile('(?P
\w+)\.(?P\w+)=(?P\d+)')
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
stop = start + 100
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='submit'))),
_action=URL(r=request,args=request.args))
if request.vars.csvfile != None:
try:
import_csv(db[request.vars.table],
request.vars.csvfile.file)
response.flash = T('data uploaded')
except:
response.flash = T('unable to parse csv file')
if form.accepts(request.vars, formname=None):
regex = re.compile(request.args[0] + '\.(?P\w+)\.id\>0')
match = regex.match(form.vars.query.strip())
if match:
table = match.group('table')
try:
nrows = db(query).count()
if form.vars.update_check and form.vars.update_fields:
db(query).update(**eval_in_global_env('dict(%s)'
% form.vars.update_fields))
response.flash = T('%s rows updated', nrows)
elif form.vars.delete_check:
db(query).delete()
response.flash = T('%s rows deleted', nrows)
nrows = db(query).count()
if orderby:
rows = db(query).select(limitby=(start, stop),
orderby=eval_in_global_env(orderby))
else:
rows = db(query).select(limitby=(start, stop))
except:
(rows, nrows) = ([], 0)
response.flash = T('Invalid Query')
return dict(
form=form,
table=table,
start=start,
stop=stop,
nrows=nrows,
rows=rows,
query=request.vars.query,
)
# ##########################################################
# ## edit delete one record
# ###########################################################
def update():
(db, table) = get_table(request)
try:
id = int(request.args[2])
record = db(db[table].id == id).select()[0]
except:
session.flash = T('record does not exist')
redirect(URL(r=request, f='select', args=request.args[:1],
vars=dict(query='%s.%s.id>0'
% tuple(request.args[:2]))))
form = SQLFORM(db[table], record, deletable=True, delete_label=T('Check to delete'), ignore_rw=ignore_rw,
linkto=URL(r=request, f='select',
args=request.args[:1]), upload=URL(r=request,
f='download', args=request.args[:1]))
if form.accepts(request.vars, session):
response.flash = T('done!')
redirect(URL(r=request, f='select', args=request.args[:1],
vars=dict(query='%s.%s.id>0'
% tuple(request.args[:2]))))
return dict(form=form)
# ##########################################################
# ## get global variables
# ###########################################################
def state():
return dict()
controllers/default.py 0000644 0000765 0000024 00000001225 11252367455 015311 0 ustar mdipierro staff def index():
return dict(page=get_pages().first())
@auth.requires_login()
def edit():
old_page = get_pages().first()
if old_page:
db.page.title.default=old_page.title
db.page.body.default=old_page.body
db.page.name.default=request.args(0)
db.page.author.default=auth.user.id
db.page.saved_on.default=request.now
form=crud.create(db.page,next=URL(r=request,f='index',args=request.args))
return dict(form=form)
def log():
pages = get_pages(limitby=None)
return dict(pages=pages)
def user(): return dict(form=auth())
def download(): return response.download(request,db)
def data(): return service()
cron/ 0000755 0000765 0000024 00000000000 11225452714 011677 5 ustar mdipierro staff cron/crontab 0000644 0000765 0000024 00000000010 11225452714 013241 0 ustar mdipierro staff #crontab databases/ 0000755 0000765 0000024 00000000000 11252370223 012657 5 ustar mdipierro staff errors/ 0000755 0000765 0000024 00000000000 11252370225 012246 5 ustar mdipierro staff languages/ 0000755 0000765 0000024 00000000000 11236334404 012701 5 ustar mdipierro staff languages/fr-fr.py 0000644 0000765 0000024 00000005434 11202315640 014267 0 ustar mdipierro staff {
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'%s rows deleted': '%s rang\xc3\xa9es effac\xc3\xa9es',
'%s rows updated': '%s rang\xc3\xa9es mises \xc3\xa0 jour',
'Available databases and tables': 'Available databases and tables',
'Cannot be empty': 'Cannot be empty',
'Check to delete': 'Check to delete',
'Current request': 'Current request',
'Current response': 'Current response',
'Current session': 'Current session',
'Delete:': 'Delete:',
'Edit current record': 'Edit current record',
'Hello World': 'Bonjour Monde',
'Import/Export': 'Import/Export',
'Internal State': 'Internal State',
'Invalid Query': 'Requ\xc3\xaate Invalide',
'New Record': 'New Record',
'No databases in this application': 'No databases in this application',
'Query:': 'Query:',
'Rows in table': 'Rows in table',
'Rows selected': 'Rows selected',
'Sure you want to delete this object?': 'Souhaitez vous vraiment effacercet objet?',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.',
'Update:': 'Update:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'Welcome to web2py': 'Bienvenue sur web2py',
'click here for online examples': 'cliquez ici pour voir des exemples enligne',
'click here for the administrative interface': "cliquez ici pour aller\xc3\xa0 l'interface d'administration",
'data uploaded': 'donn\xc3\xa9es t\xc3\xa9l\xc3\xa9charg\xc3\xa9es',
'database': 'database',
'database %s select': 'database %s select',
'db': 'db',
'design': 'design',
'done!': 'fait!',
'export as csv file': 'export as csv file',
'insert new': 'insert new',
'insert new %s': 'insert new %s',
'invalid request': 'requ\xc3\xaate invalide',
'new record inserted': 'nouvelle archive ins\xc3\xa9r\xc3\xa9e',
'next 100 rows': 'next 100 rows',
'or import from csv file': 'or import from csv file',
'previous 100 rows': 'previous 100 rows',
'record does not exist': "l'archive n'existe pas",
'record id': 'record id',
'selected': 'selected',
'state': '\xc3\xa9tat',
'table': 'table',
'unable to parse csv file': "incapable d'analyser le fichier cvs",
}
languages/it-it.py 0000644 0000765 0000024 00000005220 11202315603 014271 0 ustar mdipierro staff {
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'%s rows deleted': '%s records cancellati',
'%s rows updated': '*** %s records modificati',
'Available databases and tables': 'Available databases and tables',
'Cannot be empty': 'Cannot be empty',
'Check to delete': 'Check to delete',
'Current request': 'Current request',
'Current response': 'Current response',
'Current session': 'Current session',
'Delete:': 'Delete:',
'Edit current record': 'Edit current record',
'Hello World': 'Salve Mondo',
'Import/Export': 'Import/Export',
'Internal State': 'Internal State',
'Invalid Query': 'Query invalida',
'New Record': 'New Record',
'No databases in this application': 'No databases in this application',
'Query:': 'Query:',
'Rows in table': 'Rows in table',
'Rows selected': 'Rows selected',
'Sure you want to delete this object?': 'Sicuro che vuoi cancellare questo oggetto?',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.',
'Update:': 'Update:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'Welcome to web2py': 'Ciao da wek2py',
'click here for online examples': 'clicca per vedere gli esempi',
'click here for the administrative interface': "clicca per l'interfaccia administrativa",
'data uploaded': 'dati caricati',
'database': 'database',
'database %s select': 'database %s select',
'db': 'db',
'design': 'progetta',
'done!': 'fatto!',
'export as csv file': 'export as csv file',
'insert new': 'insert new',
'insert new %s': 'insert new %s',
'invalid request': 'richiesta invalida!',
'new record inserted': 'nuovo record inserito',
'next 100 rows': 'next 100 rows',
'or import from csv file': 'or import from csv file',
'previous 100 rows': 'previous 100 rows',
'record does not exist': 'il record non esiste',
'record id': 'record id',
'selected': 'selected',
'state': 'stato',
'table': 'table',
'unable to parse csv file': 'non so leggere questo csv file',
}
languages/it.py 0000644 0000765 0000024 00000005220 11202315655 013666 0 ustar mdipierro staff {
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'%s rows deleted': '%s records cancellati',
'%s rows updated': '*** %s records modificati',
'Available databases and tables': 'Available databases and tables',
'Cannot be empty': 'Cannot be empty',
'Check to delete': 'Check to delete',
'Current request': 'Current request',
'Current response': 'Current response',
'Current session': 'Current session',
'Delete:': 'Delete:',
'Edit current record': 'Edit current record',
'Hello World': 'Salve Mondo',
'Import/Export': 'Import/Export',
'Internal State': 'Internal State',
'Invalid Query': 'Query invalida',
'New Record': 'New Record',
'No databases in this application': 'No databases in this application',
'Query:': 'Query:',
'Rows in table': 'Rows in table',
'Rows selected': 'Rows selected',
'Sure you want to delete this object?': 'Sicuro che vuoi cancellare questo oggetto?',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.',
'Update:': 'Update:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'Welcome to web2py': 'Ciao da wek2py',
'click here for online examples': 'clicca per vedere gli esempi',
'click here for the administrative interface': "clicca per l'interfaccia administrativa",
'data uploaded': 'dati caricati',
'database': 'database',
'database %s select': 'database %s select',
'db': 'db',
'design': 'progetta',
'done!': 'fatto!',
'export as csv file': 'export as csv file',
'insert new': 'insert new',
'insert new %s': 'insert new %s',
'invalid request': 'richiesta invalida!',
'new record inserted': 'nuovo record inserito',
'next 100 rows': 'next 100 rows',
'or import from csv file': 'or import from csv file',
'previous 100 rows': 'previous 100 rows',
'record does not exist': 'il record non esiste',
'record id': 'record id',
'selected': 'selected',
'state': 'stato',
'table': 'table',
'unable to parse csv file': 'non so leggere questo csv file',
}
languages/pl-pl.py 0000644 0000765 0000024 00000006172 11214730605 014304 0 ustar mdipierro staff {
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"Uaktualnij" jest dodatkowym wyra\xc5\xbceniem postaci "pole1=\'nowawarto\xc5\x9b\xc4\x87\'". Nie mo\xc5\xbcesz uaktualni\xc4\x87 lub usun\xc4\x85\xc4\x87 wynik\xc3\xb3w z JOIN:',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'%s rows deleted': 'Wierszy usuni\xc4\x99tych: %s',
'%s rows updated': 'Wierszy uaktualnionych: %s',
'Available databases and tables': 'Dost\xc4\x99pne bazy danych i tabele',
'Cannot be empty': 'Nie mo\xc5\xbce by\xc4\x87 puste',
'Change Password': 'Change Password',
'Check to delete': 'Zaznacz aby usun\xc4\x85\xc4\x87',
'Current request': 'Aktualne \xc5\xbc\xc4\x85danie',
'Current response': 'Aktualna odpowied\xc5\xba',
'Current session': 'Aktualna sesja',
'Delete:': 'Usu\xc5\x84:',
'Edit Profile': 'Edit Profile',
'Edit current record': 'Edytuj aktualny rekord',
'Hello World': 'Witaj \xc5\x9awiecie',
'Import/Export': 'Importuj/eksportuj',
'Internal State': 'Stan wewn\xc4\x99trzny',
'Invalid Query': 'B\xc5\x82\xc4\x99dne zapytanie',
'Login': 'Zaloguj',
'Logout': 'Logout',
'Lost Password': 'Przypomnij has\xc5\x82o',
'New Record': 'Nowy rekord',
'No databases in this application': 'Brak baz danych w tej aplikacji',
'Query:': 'Zapytanie:',
'Register': 'Zarejestruj',
'Rows in table': 'Wiersze w tabeli',
'Rows selected': 'Wybrane wiersze',
'Sure you want to delete this object?': 'Czy na pewno chcesz usun\xc4\x85\xc4\x87 ten obiekt?',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"Zapytanie" jest warunkiem postaci "db.tabela1.pole1==\'warto\xc5\x9b\xc4\x87\'". Takie co\xc5\x9b jak "db.tabela1.pole1==db.tabela2.pole2" oznacza SQL JOIN.',
'Update:': 'Uaktualnij:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'U\xc5\xbcyj (...)&(...) jako AND, (...)|(...) jako OR oraz ~(...) jako NOT do tworzenia bardziej skomplikowanych zapyta\xc5\x84.',
'Welcome to web2py': 'Witaj w web2py',
'click here for online examples': 'Kliknij aby przej\xc5\x9b\xc4\x87 do interaktywnych przyk\xc5\x82ad\xc3\xb3w',
'click here for the administrative interface': 'Kliknij aby przej\xc5\x9b\xc4\x87 do panelu administracyjnego',
'customize me!': 'dostosuj mnie!',
'data uploaded': 'dane wys\xc5\x82ane',
'database': 'baza danych',
'database %s select': 'wyb\xc3\xb3r z bazy danych %s',
'db': 'baza danych',
'design': 'projektuj',
'done!': 'zrobione!',
'export as csv file': 'eksportuj jako plik csv',
'insert new': 'wstaw nowy rekord tabeli',
'insert new %s': 'wstaw nowy rekord do tabeli %s',
'invalid request': 'B\xc5\x82\xc4\x99dne \xc5\xbc\xc4\x85danie',
'new record inserted': 'nowy rekord zosta\xc5\x82 wstawiony',
'next 100 rows': 'nast\xc4\x99pne 100 wierszy',
'or import from csv file': 'lub zaimportuj z pliku csv',
'previous 100 rows': 'poprzednie 100 wierszy',
'record does not exist': 'rekord nie istnieje',
'record id': 'id rekordu',
'selected': 'wybranych',
'state': 'stan',
'table': 'tabela',
'unable to parse csv file': 'nie mo\xc5\xbcna sparsowa\xc4\x87 pliku csv',
}
languages/pl.py 0000644 0000765 0000024 00000006365 11235105075 013677 0 ustar mdipierro staff {
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"Uaktualnij" jest dodatkowym wyra\xc5\xbceniem postaci "pole1=\'nowawarto\xc5\x9b\xc4\x87\'". Nie mo\xc5\xbcesz uaktualni\xc4\x87 lub usun\xc4\x85\xc4\x87 wynik\xc3\xb3w z JOIN:',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'%s rows deleted': 'Wierszy usuni\xc4\x99tych: %s',
'%s rows updated': 'Wierszy uaktualnionych: %s',
'Available databases and tables': 'Dost\xc4\x99pne bazy danych i tabele',
'Cannot be empty': 'Nie mo\xc5\xbce by\xc4\x87 puste',
'Change Password': 'Zmie\xc5\x84 has\xc5\x82o',
'Check to delete': 'Zaznacz aby usun\xc4\x85\xc4\x87',
'Current request': 'Aktualne \xc5\xbc\xc4\x85danie',
'Current response': 'Aktualna odpowied\xc5\xba',
'Current session': 'Aktualna sesja',
'Delete:': 'Usu\xc5\x84:',
'Edit Profile': 'Edytuj Profil',
'Edit current record': 'Edytuj aktualny rekord',
'Hello World': 'Witaj \xc5\x9awiecie',
'Import/Export': 'Importuj/eksportuj',
'Internal State': 'Stan wewn\xc4\x99trzny',
'Invalid Query': 'B\xc5\x82\xc4\x99dne zapytanie',
'Invalid email': 'B\xc5\x82\xc4\x99dny adres email',
'Login': 'Zaloguj',
'Logout': 'Logout',
'Lost Password': 'Przypomnij has\xc5\x82o',
'New Record': 'Nowy rekord',
'No databases in this application': 'Brak baz danych w tej aplikacji',
'Query:': 'Zapytanie:',
'Register': 'Zarejestruj',
'Rows in table': 'Wiersze w tabeli',
'Rows selected': 'Wybrane wiersze',
'Sure you want to delete this object?': 'Czy na pewno chcesz usun\xc4\x85\xc4\x87 ten obiekt?',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"Zapytanie" jest warunkiem postaci "db.tabela1.pole1==\'warto\xc5\x9b\xc4\x87\'". Takie co\xc5\x9b jak "db.tabela1.pole1==db.tabela2.pole2" oznacza SQL JOIN.',
'Update:': 'Uaktualnij:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'U\xc5\xbcyj (...)&(...) jako AND, (...)|(...) jako OR oraz ~(...) jako NOT do tworzenia bardziej skomplikowanych zapyta\xc5\x84.',
'Welcome to web2py': 'Witaj w web2py',
'click here for online examples': 'Kliknij aby przej\xc5\x9b\xc4\x87 do interaktywnych przyk\xc5\x82ad\xc3\xb3w',
'click here for the administrative interface': 'Kliknij aby przej\xc5\x9b\xc4\x87 do panelu administracyjnego',
'customize me!': 'dostosuj mnie!',
'data uploaded': 'dane wys\xc5\x82ane',
'database': 'baza danych',
'database %s select': 'wyb\xc3\xb3r z bazy danych %s',
'db': 'baza danych',
'design': 'projektuj',
'done!': 'zrobione!',
'export as csv file': 'eksportuj jako plik csv',
'insert new': 'wstaw nowy rekord tabeli',
'insert new %s': 'wstaw nowy rekord do tabeli %s',
'invalid request': 'B\xc5\x82\xc4\x99dne \xc5\xbc\xc4\x85danie',
'new record inserted': 'nowy rekord zosta\xc5\x82 wstawiony',
'next 100 rows': 'nast\xc4\x99pne 100 wierszy',
'or import from csv file': 'lub zaimportuj z pliku csv',
'previous 100 rows': 'poprzednie 100 wierszy',
'record does not exist': 'rekord nie istnieje',
'record id': 'id rekordu',
'selected': 'wybranych',
'state': 'stan',
'table': 'tabela',
'unable to parse csv file': 'nie mo\xc5\xbcna sparsowa\xc4\x87 pliku csv',
}
languages/pt-br.py 0000644 0000765 0000024 00000005634 11236334404 014307 0 ustar mdipierro staff {
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" \xc3\xa9 uma express\xc3\xa3o opcional como "campo1=\'novovalor\'". Voc\xc3\xaa n\xc3\xa3o pode atualizar ou apagar os resultados de um JOIN',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'%s rows deleted': '%s linhas apagadas',
'%s rows updated': '%s linhas atualizadas',
'Available databases and tables': 'Bancos de dados e tabelas dispon\xc3\xadveis',
'Cannot be empty': 'N\xc3\xa3o pode ser vazio',
'Check to delete': 'Marque para apagar',
'Current request': 'Requisi\xc3\xa7\xc3\xa3o atual',
'Current response': 'Resposta atual',
'Current session': 'Sess\xc3\xa3o atual',
'Delete:': 'Apagar:',
'Edit current record': 'Editar o registro atual',
'Hello World': 'Ol\xc3\xa1 Mundo',
'Import/Export': 'Importar/Exportar',
'Internal State': 'Estado Interno',
'Invalid Query': 'Consulta Inv\xc3\xa1lida',
'Login': 'Autentique-se',
'Lost Password': 'Esqueceu sua senha?',
'New Record': 'Novo Registro',
'No databases in this application': 'Sem bancos de dados nesta aplica\xc3\xa7\xc3\xa3o',
'Query:': 'Consulta:',
'Register': 'Registre-se',
'Rows in table': 'Linhas na tabela',
'Rows selected': 'Linhas selecionadas',
'Sure you want to delete this object?': 'Est\xc3\xa1 certo(a) que deseja apagar esse objeto ?',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'Uma "consulta" \xc3\xa9 uma condi\xc3\xa7\xc3\xa3o como "db.tabela1.campo1==\'valor\'". Express\xc3\xb5es como "db.tabela1.campo1==db.tabela2.campo2" resultam em um JOIN SQL.',
'Update:': 'Atualizar:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) para AND, (...)|(...) para OR, e ~(...) para NOT para construir consultas mais complexas.',
'Welcome to web2py': 'Bem vindo ao web2py',
'click here for online examples': 'clique aqui para ver alguns exemplos',
'click here for the administrative interface': 'clique aqui para acessar a interface administrativa',
'customize me!': 'Personalize-me!',
'data uploaded': 'dados enviados',
'database': 'banco de dados',
'database %s select': 'Selecionar banco de dados %s',
'db': 'db',
'design': 'design',
'done!': 'conclu\xc3\xaddo!',
'export as csv file': 'exportar como um arquivo csv',
'insert new': 'inserir novo',
'insert new %s': 'inserir novo %s',
'invalid request': 'requisi\xc3\xa7\xc3\xa3o inv\xc3\xa1lida',
'new record inserted': 'novo registro inserido',
'next 100 rows': 'pr\xc3\xb3ximas 100 linhas',
'or import from csv file': 'ou importar de um arquivo csv',
'previous 100 rows': '100 linhas anteriores',
'record does not exist': 'registro n\xc3\xa3o existe',
'record id': 'id do registro',
'selected': 'selecionado',
'state': 'estado',
'table': 'tabela',
'unable to parse csv file': 'n\xc3\xa3o foi poss\xc3\xadvel analisar arquivo csv',
}
languages/pt-pt.py 0000644 0000765 0000024 00000005417 11202315736 014326 0 ustar mdipierro staff {
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'%s rows deleted': '%s linhas eliminadas',
'%s rows updated': '%s linhas actualizadas',
'Available databases and tables': 'Available databases and tables',
'Cannot be empty': 'Cannot be empty',
'Check to delete': 'Check to delete',
'Current request': 'Current request',
'Current response': 'Current response',
'Current session': 'Current session',
'Delete:': 'Delete:',
'Edit current record': 'Edit current record',
'Hello World': 'Ol\xc3\xa1 Mundo',
'Import/Export': 'Import/Export',
'Internal State': 'Internal State',
'Invalid Query': 'Consulta Inv\xc3\xa1lida',
'New Record': 'New Record',
'No databases in this application': 'No databases in this application',
'Query:': 'Query:',
'Rows in table': 'Rows in table',
'Rows selected': 'Rows selected',
'Sure you want to delete this object?': 'Tem a certeza que deseja eliminar este objecto?',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.',
'Update:': 'Update:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'Welcome to Gluonization': 'Bem vindo ao Web2py',
'Welcome to web2py': 'Welcome to web2py',
'click here for online examples': 'Clique aqui para exemplos online',
'click here for the administrative interface': 'Clique aqui para o painel administrativo',
'data uploaded': 'informa\xc3\xa7\xc3\xa3o enviada',
'database': 'database',
'database %s select': 'database %s select',
'db': 'bd',
'design': 'design',
'done!': 'conclu\xc3\xaddo!',
'export as csv file': 'export as csv file',
'insert new': 'insert new',
'insert new %s': 'insert new %s',
'invalid request': 'Pedido Inv\xc3\xa1lido',
'new record inserted': 'novo registo inserido',
'next 100 rows': 'next 100 rows',
'or import from csv file': 'or import from csv file',
'previous 100 rows': 'previous 100 rows',
'record does not exist': 'registo inexistente',
'record id': 'record id',
'selected': 'selected',
'state': 'estado',
'table': 'table',
'unable to parse csv file': 'n\xc3\xa3o foi poss\xc3\xadvel carregar ficheiro csv',
}
languages/pt.py 0000644 0000765 0000024 00000005417 11202315701 013675 0 ustar mdipierro staff {
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'%s rows deleted': '%s linhas eliminadas',
'%s rows updated': '%s linhas actualizadas',
'Available databases and tables': 'Available databases and tables',
'Cannot be empty': 'Cannot be empty',
'Check to delete': 'Check to delete',
'Current request': 'Current request',
'Current response': 'Current response',
'Current session': 'Current session',
'Delete:': 'Delete:',
'Edit current record': 'Edit current record',
'Hello World': 'Ol\xc3\xa1 Mundo',
'Import/Export': 'Import/Export',
'Internal State': 'Internal State',
'Invalid Query': 'Consulta Inv\xc3\xa1lida',
'New Record': 'New Record',
'No databases in this application': 'No databases in this application',
'Query:': 'Query:',
'Rows in table': 'Rows in table',
'Rows selected': 'Rows selected',
'Sure you want to delete this object?': 'Tem a certeza que deseja eliminar este objecto?',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.',
'Update:': 'Update:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'Welcome to Gluonization': 'Bem vindo ao Web2py',
'Welcome to web2py': 'Welcome to web2py',
'click here for online examples': 'Clique aqui para exemplos online',
'click here for the administrative interface': 'Clique aqui para o painel administrativo',
'data uploaded': 'informa\xc3\xa7\xc3\xa3o enviada',
'database': 'database',
'database %s select': 'database %s select',
'db': 'bd',
'design': 'design',
'done!': 'conclu\xc3\xaddo!',
'export as csv file': 'export as csv file',
'insert new': 'insert new',
'insert new %s': 'insert new %s',
'invalid request': 'Pedido Inv\xc3\xa1lido',
'new record inserted': 'novo registo inserido',
'next 100 rows': 'next 100 rows',
'or import from csv file': 'or import from csv file',
'previous 100 rows': 'previous 100 rows',
'record does not exist': 'registo inexistente',
'record id': 'record id',
'selected': 'selected',
'state': 'estado',
'table': 'table',
'unable to parse csv file': 'n\xc3\xa3o foi poss\xc3\xadvel carregar ficheiro csv',
}
languages/ru-ru.py 0000644 0000765 0000024 00000022632 11225445437 014341 0 ustar mdipierro staff {
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"\xd0\x98\xd0\xb7\xd0\xbc\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x82\xd1\x8c" - \xd0\xbd\xd0\xb5\xd0\xbe\xd0\xb1\xd1\x8f\xd0\xb7\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8c\xd0\xbd\xd0\xbe\xd0\xb5 \xd0\xb2\xd1\x8b\xd1\x80\xd0\xb0\xd0\xb6\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xb2\xd0\xb8\xd0\xb4\xd0\xb0 "field1=\'\xd0\xbd\xd0\xbe\xd0\xb2\xd0\xbe\xd0\xb5 \xd0\xb7\xd0\xbd\xd0\xb0\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5\'". \xd0\xa0\xd0\xb5\xd0\xb7\xd1\x83\xd0\xbb\xd1\x8c\xd1\x82\xd0\xb0\xd1\x82\xd1\x8b \xd0\xbe\xd0\xbf\xd0\xb5\xd1\x80\xd0\xb0\xd1\x86\xd0\xb8\xd0\xb8 JOIN \xd0\xbd\xd0\xb5\xd0\xbb\xd1\x8c\xd0\xb7\xd1\x8f \xd0\xb8\xd0\xb7\xd0\xbc\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x82\xd1\x8c \xd0\xb8\xd0\xbb\xd0\xb8 \xd1\x83\xd0\xb4\xd0\xb0\xd0\xbb\xd0\xb8\xd1\x82\xd1\x8c.',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'%s rows deleted': '%s \xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xba \xd1\x83\xd0\xb4\xd0\xb0\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xbe',
'%s rows updated': '%s \xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xba \xd0\xb8\xd0\xb7\xd0\xbc\xd0\xb5\xd0\xbd\xd0\xb5\xd0\xbd\xd0\xbe',
'Available databases and tables': '\xd0\x91\xd0\xb0\xd0\xb7\xd1\x8b \xd0\xb4\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd1\x85 \xd0\xb8 \xd1\x82\xd0\xb0\xd0\xb1\xd0\xbb\xd0\xb8\xd1\x86\xd1\x8b',
'Cannot be empty': '\xd0\x9f\xd1\x83\xd1\x81\xd1\x82\xd0\xbe\xd0\xb5 \xd0\xb7\xd0\xbd\xd0\xb0\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xbd\xd0\xb5\xd0\xb4\xd0\xbe\xd0\xbf\xd1\x83\xd1\x81\xd1\x82\xd0\xb8\xd0\xbc\xd0\xbe',
'Change Password': '\xd0\xa1\xd0\xbc\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x82\xd0\xb5 \xd0\xbf\xd0\xb0\xd1\x80\xd0\xbe\xd0\xbb\xd1\x8c',
'Check to delete': '\xd0\xa3\xd0\xb4\xd0\xb0\xd0\xbb\xd0\xb8\xd1\x82\xd1\x8c',
'Check to delete:': '\xd0\xa3\xd0\xb4\xd0\xb0\xd0\xbb\xd0\xb8\xd1\x82\xd1\x8c:',
'Current request': '\xd0\xa2\xd0\xb5\xd0\xba\xd1\x83\xd1\x89\xd0\xb8\xd0\xb9 \xd0\xb7\xd0\xb0\xd0\xbf\xd1\x80\xd0\xbe\xd1\x81',
'Current response': '\xd0\xa2\xd0\xb5\xd0\xba\xd1\x83\xd1\x89\xd0\xb8\xd0\xb9 \xd0\xbe\xd1\x82\xd0\xb2\xd0\xb5\xd1\x82',
'Current session': '\xd0\xa2\xd0\xb5\xd0\xba\xd1\x83\xd1\x89\xd0\xb0\xd1\x8f \xd1\x81\xd0\xb5\xd1\x81\xd1\x81\xd0\xb8\xd1\x8f',
'Delete:': '\xd0\xa3\xd0\xb4\xd0\xb0\xd0\xbb\xd0\xb8\xd1\x82\xd1\x8c:',
'Edit Profile': '\xd0\xa0\xd0\xb5\xd0\xb4\xd0\xb0\xd0\xba\xd1\x82\xd0\xb8\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd1\x8c \xd0\xbf\xd1\x80\xd0\xbe\xd1\x84\xd0\xb0\xd0\xb9\xd0\xbb',
'Edit current record': '\xd0\xa0\xd0\xb5\xd0\xb4\xd0\xb0\xd0\xba\xd1\x82\xd0\xb8\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd1\x8c \xd1\x82\xd0\xb5\xd0\xba\xd1\x83\xd1\x89\xd1\x83\xd1\x8e \xd0\xb7\xd0\xb0\xd0\xbf\xd0\xb8\xd1\x81\xd1\x8c',
'Hello World': '\xd0\x97\xd0\xb0\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x82\xd0\xb0\xd0\xbb\xd0\xbe!',
'Import/Export': '\xd0\x98\xd0\xbc\xd0\xbf\xd0\xbe\xd1\x80\xd1\x82/\xd1\x8d\xd0\xba\xd1\x81\xd0\xbf\xd0\xbe\xd1\x80\xd1\x82',
'Internal State': '\xd0\x92\xd0\xbd\xd1\x83\xd1\x82\xd1\x80\xd0\xb5\xd0\xbd\xd0\xbd\xd0\xb5 \xd1\x81\xd0\xbe\xd1\x81\xd1\x82\xd0\xbe\xd1\x8f\xd0\xbd\xd0\xb8\xd0\xb5',
'Invalid Query': '\xd0\x9d\xd0\xb5\xd0\xb2\xd0\xb5\xd1\x80\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xb7\xd0\xb0\xd0\xbf\xd1\x80\xd0\xbe\xd1\x81',
'Invalid email': '\xd0\x9d\xd0\xb5\xd0\xb2\xd0\xb5\xd1\x80\xd0\xbd\xd1\x8b\xd0\xb9 email',
'Login': '\xd0\x92\xd1\x85\xd0\xbe\xd0\xb4',
'Logout': '\xd0\x92\xd1\x8b\xd1\x85\xd0\xbe\xd0\xb4',
'Lost Password': '\xd0\x97\xd0\xb0\xd0\xb1\xd1\x8b\xd0\xbb\xd0\xb8 \xd0\xbf\xd0\xb0\xd1\x80\xd0\xbe\xd0\xbb\xd1\x8c?',
'New Record': '\xd0\x9d\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x8f \xd0\xb7\xd0\xb0\xd0\xbf\xd0\xb8\xd1\x81\xd1\x8c',
'No databases in this application': '\xd0\x92 \xd0\xbf\xd1\x80\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xb6\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb8 \xd0\xbd\xd0\xb5\xd1\x82 \xd0\xb1\xd0\xb0\xd0\xb7 \xd0\xb4\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd1\x85',
"Password fields don't match": '\xd0\x9f\xd0\xb0\xd1\x80\xd0\xbe\xd0\xbb\xd0\xb8 \xd0\xbd\xd0\xb5 \xd1\x81\xd0\xbe\xd0\xb2\xd0\xbf\xd0\xb0\xd0\xb4\xd0\xb0\xd1\x8e\xd1\x82',
'Query:': '\xd0\x97\xd0\xb0\xd0\xbf\xd1\x80\xd0\xbe\xd1\x81:',
'Register': '\xd0\x97\xd0\xb0\xd1\x80\xd0\xb5\xd0\xb3\xd0\xb8\xd1\x81\xd1\x82\xd1\x80\xd0\xb8\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd1\x8c\xd1\x81\xd1\x8f',
'Rows in table': '\xd0\xa1\xd1\x82\xd1\x80\xd0\xbe\xd0\xba \xd0\xb2 \xd1\x82\xd0\xb0\xd0\xb1\xd0\xbb\xd0\xb8\xd1\x86\xd0\xb5',
'Rows selected': '\xd0\x92\xd1\x8b\xd0\xb4\xd0\xb5\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xbe \xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xba',
'Submit': '\xd0\x9e\xd1\x82\xd0\xbf\xd1\x80\xd0\xb0\xd0\xb2\xd0\xb8\xd1\x82\xd1\x8c',
'Sure you want to delete this object?': '\xd0\x9f\xd0\xbe\xd0\xb4\xd1\x82\xd0\xb2\xd0\xb5\xd1\x80\xd0\xb4\xd0\xb8\xd1\x82\xd0\xb5 \xd1\x83\xd0\xb4\xd0\xb0\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xbe\xd0\xb1\xd1\x8a\xd0\xb5\xd0\xba\xd1\x82\xd0\xb0',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"\xd0\x97\xd0\xb0\xd0\xbf\xd1\x80\xd0\xbe\xd1\x81" - \xd1\x8d\xd1\x82\xd0\xbe \xd1\x83\xd1\x81\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xb8\xd0\xb5 \xd0\xb2\xd0\xb8\xd0\xb4\xd0\xb0 "db.table1.field1==\'\xd0\xb7\xd0\xbd\xd0\xb0\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5\'". \xd0\x92\xd1\x8b\xd1\x80\xd0\xb0\xd0\xb6\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xb2\xd0\xb8\xd0\xb4\xd0\xb0 "db.table1.field1==db.table2.field2" \xd1\x84\xd0\xbe\xd1\x80\xd0\xbc\xd0\xb8\xd1\x80\xd1\x83\xd0\xb5\xd1\x82 SQL JOIN.',
'Update:': '\xd0\x98\xd0\xb7\xd0\xbc\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x82\xd1\x8c:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': '\xd0\x94\xd0\xbb\xd1\x8f \xd0\xbf\xd0\xbe\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd1\x81\xd0\xbb\xd0\xbe\xd0\xb6\xd0\xbd\xd1\x8b\xd1\x85 \xd0\xb7\xd0\xb0\xd0\xbf\xd1\x80\xd0\xbe\xd1\x81\xd0\xbe\xd0\xb2 \xd0\xb8\xd1\x81\xd0\xbf\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xb7\xd1\x83\xd0\xb9\xd1\x82\xd0\xb5 \xd0\xbe\xd0\xbf\xd0\xb5\xd1\x80\xd0\xb0\xd1\x82\xd0\xbe\xd1\x80\xd1\x8b "\xd0\x98": (...)&(...), "\xd0\x98\xd0\x9b\xd0\x98": (...)|(...), "\xd0\x9d\xd0\x95": ~(...).',
'User %(id)s Registered': '\xd0\x9f\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xb7\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8c %(id)s \xd0\xb7\xd0\xb0\xd1\x80\xd0\xb5\xd0\xb3\xd0\xb8\xd1\x81\xd1\x82\xd1\x80\xd0\xb8\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbd',
'Verify Password': '\xd0\x9f\xd0\xbe\xd0\xb2\xd1\x82\xd0\xbe\xd1\x80\xd0\xb8\xd1\x82\xd0\xb5 \xd0\xbf\xd0\xb0\xd1\x80\xd0\xbe\xd0\xbb\xd1\x8c',
'Welcome to web2py': '\xd0\x94\xd0\xbe\xd0\xb1\xd1\x80\xd0\xbe \xd0\xbf\xd0\xbe\xd0\xb6\xd0\xb0\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd1\x8c \xd0\xb2 web2py',
'click here for online examples': '\xd0\xbf\xd1\x80\xd0\xb8\xd0\xbc\xd0\xb5\xd1\x80\xd1\x8b \xd0\xbe\xd0\xbd-\xd0\xbb\xd0\xb0\xd0\xb9\xd0\xbd',
'click here for the administrative interface': '\xd0\xb0\xd0\xb4\xd0\xbc\xd0\xb8\xd0\xbd\xd0\xb8\xd1\x81\xd1\x82\xd1\x80\xd0\xb0\xd1\x82\xd0\xb8\xd0\xb2\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xb8\xd0\xbd\xd1\x82\xd0\xb5\xd1\x80\xd1\x84\xd0\xb5\xd0\xb9\xd1\x81',
'customize me!': '\xd0\xbd\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9\xd1\x82\xd0\xb5 \xd0\xb2\xd0\xbd\xd0\xb5\xd1\x88\xd0\xbd\xd0\xb8\xd0\xb9 \xd0\xb2\xd0\xb8\xd0\xb4!',
'data uploaded': '\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb5 \xd0\xb7\xd0\xb0\xd0\xb3\xd1\x80\xd1\x83\xd0\xb6\xd0\xb5\xd0\xbd\xd1\x8b',
'database': '\xd0\xb1\xd0\xb0\xd0\xb7\xd0\xb0 \xd0\xb4\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd1\x85',
'database %s select': '\xd0\xb2\xd1\x8b\xd0\xb1\xd0\xbe\xd1\x80 \xd0\xb1\xd0\xb0\xd0\xb7\xd1\x8b \xd0\xb4\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd1\x85 %s',
'db': '\xd0\x91\xd0\x94',
'design': '\xd0\xb4\xd0\xb8\xd0\xb7\xd0\xb0\xd0\xb9\xd0\xbd',
'done!': '\xd0\xb3\xd0\xbe\xd1\x82\xd0\xbe\xd0\xb2\xd0\xbe!',
'export as csv file': '\xd1\x8d\xd0\xba\xd1\x81\xd0\xbf\xd0\xbe\xd1\x80\xd1\x82 \xd0\xb2 csv-\xd1\x84\xd0\xb0\xd0\xb9\xd0\xbb',
'insert new': '\xd0\xb4\xd0\xbe\xd0\xb1\xd0\xb0\xd0\xb2\xd0\xb8\xd1\x82\xd1\x8c',
'insert new %s': '\xd0\xb4\xd0\xbe\xd0\xb1\xd0\xb0\xd0\xb2\xd0\xb8\xd1\x82\xd1\x8c %s',
'invalid request': '\xd0\xbd\xd0\xb5\xd0\xb2\xd0\xb5\xd1\x80\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xb7\xd0\xb0\xd0\xbf\xd1\x80\xd0\xbe\xd1\x81',
'new record inserted': '\xd0\xbd\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x8f \xd0\xb7\xd0\xb0\xd0\xbf\xd0\xb8\xd1\x81\xd1\x8c \xd0\xb4\xd0\xbe\xd0\xb1\xd0\xb0\xd0\xb2\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xb0',
'next 100 rows': '\xd1\x81\xd0\xbb\xd0\xb5\xd0\xb4\xd1\x83\xd1\x8e\xd1\x89\xd0\xb8\xd0\xb5 100 \xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xba',
'or import from csv file': '\xd0\xb8\xd0\xbb\xd0\xb8 \xd0\xb8\xd0\xbc\xd0\xbf\xd0\xbe\xd1\x80\xd1\x82 \xd0\xb8\xd0\xb7 csv-\xd1\x84\xd0\xb0\xd0\xb9\xd0\xbb\xd0\xb0',
'previous 100 rows': '\xd0\xbf\xd1\x80\xd0\xb5\xd0\xb4\xd1\x8b\xd0\xb4\xd1\x83\xd1\x89\xd0\xb8\xd0\xb5 100 \xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xba',
'record does not exist': '\xd0\xb7\xd0\xb0\xd0\xbf\xd0\xb8\xd1\x81\xd1\x8c \xd0\xbd\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd\xd0\xb0',
'record id': 'id \xd0\xb7\xd0\xb0\xd0\xbf\xd0\xb8\xd1\x81\xd0\xb8',
'selected': '\xd0\xb2\xd1\x8b\xd0\xb1\xd1\x80\xd0\xb0\xd0\xbd\xd0\xbe',
'state': '\xd1\x81\xd0\xbe\xd1\x81\xd1\x82\xd0\xbe\xd1\x8f\xd0\xbd\xd0\xb8\xd0\xb5',
'table': '\xd1\x82\xd0\xb0\xd0\xb1\xd0\xbb\xd0\xb8\xd1\x86\xd0\xb0',
'unable to parse csv file': '\xd0\xbd\xd0\xb5\xd1\x87\xd0\xb8\xd1\x82\xd0\xb0\xd0\xb5\xd0\xbc\xd1\x8b\xd0\xb9 csv-\xd1\x84\xd0\xb0\xd0\xb9\xd0\xbb',
}
models/ 0000755 0000765 0000024 00000000000 11261001573 012212 5 ustar mdipierro staff models/db.py 0000644 0000765 0000024 00000001117 11257571645 013172 0 ustar mdipierro staff if request.env.web2py_runtime_gae:
db = DAL('gae')
session.connect(request, response, db=db)
else:
db = DAL('sqlite://storage.sqlite')
from gluon.tools import *
auth=Auth(globals(),db) # authentication/authorization
auth.settings.hmac_key=''
auth.define_tables() # creates all needed tables
crud=Crud(globals(),db) # for CRUD helpers using auth
service=Service(globals()) # for json, xml, jsonrpc, xmlrpc, amfrpc
models/db_wiki.py 0000644 0000765 0000024 00000001424 11257571662 014215 0 ustar mdipierro staff from gluon.contrib.markdown import WIKI
db.define_table('page',
Field('name', writable=False),
Field('author', db.auth_user, readable=False, writable=False),
Field('saved_on', 'datetime', readable=False, writable=False),
Field('title'),
Field('body', 'text'),
Field('change_note', length=200))
db.page.name.requires=IS_NOT_IN_DB(db,'pages.name')
def get_pages(limitby=(0,1)):
if not request.args(0): request.args.append('main')
page_name = request.args(0) or 'main'
qset=db(db.page.name==page_name)
if request.vars._version:
qset=db(db.page.id==request.vars._version)
pages = qset.select(orderby=~db.page.saved_on,limitby=limitby)
if pages and pages.first().name!=page_name:
raise HTTP(404)
return pages
models/menu.py 0000644 0000765 0000024 00000005533 11230235356 013542 0 ustar mdipierro staff # coding: utf8
#########################################################################
## Customize your APP title, subtitle and menus here
#########################################################################
response.title = request.application
response.subtitle = T('customize me!')
##########################################
## this is the authentication menu
## remove if not necessary
##########################################
if 'auth' in globals():
if not auth.is_logged_in():
response.menu_auth = [
[T('Login'), False, auth.settings.login_url,
[
[T('Register'), False,
URL(request.application,'default','user/register')],
[T('Lost Password'), False,
URL(request.application,'default','user/retrieve_password')]]
],
]
else:
response.menu_auth = [
['User: '+auth.user.first_name,False,None,
[
[T('Logout'), False,
URL(request.application,'default','user/logout')],
[T('Edit Profile'), False,
URL(request.application,'default','user/profile')],
[T('Change Password'), False,
URL(request.application,'default','user/change_password')]]
],
]
##########################################
## this is the main application menu
## add/remove items as required
##########################################
response.menu = [
['Index', False,
URL(request.application,'default','index'), []],
]
##########################################
## this is here to provide shortcuts
## during development. remove in production
##########################################
response.menu_edit=[
['Edit', False, URL('admin', 'default', 'design/%s' % request.application),
[
['Controller', False,
URL('admin', 'default', 'edit/%s/controllers/default.py' \
% request.application)],
['View', False,
URL('admin', 'default', 'edit/%s/views/%s' \
% (request.application,response.view))],
['Layout', False,
URL('admin', 'default', 'edit/%s/views/layout.html' \
% request.application)],
['Stylesheet', False,
URL('admin', 'default', 'edit/%s/static/base.css' \
% request.application)],
['DB Model', False,
URL('admin', 'default', 'edit/%s/models/db.py' \
% request.application)],
['Menu Model', False,
URL('admin', 'default', 'edit/%s/models/menu.py' \
% request.application)],
['Database', False,
URL(request.application, 'appadmin', 'index')],
]
],
]
modules/ 0000755 0000765 0000024 00000000000 11201222575 012400 5 ustar mdipierro staff modules/__init__.py 0000644 0000765 0000024 00000000000 11201222575 014477 0 ustar mdipierro staff private/ 0000755 0000765 0000024 00000000000 11201222575 012402 5 ustar mdipierro staff sessions/ 0000755 0000765 0000024 00000000000 11252370231 012575 5 ustar mdipierro staff static/ 0000755 0000765 0000024 00000000000 11244522625 012225 5 ustar mdipierro staff static/background.gif 0000644 0000765 0000024 00000002265 11244521356 015040 0 ustar mdipierro staff GIF89a :::888555
333222777999### %%%
444666;;;***...,,,---///+++''')))!!!&&&111""" $$$000((( ! , @pH,&Ȥr) 8@R(>dLf0&y6|.}^$7554/;++ #%&&:LINSU ]WaZZ)Æ@8iq3gHbEQ,8$(S+} "B0+<ãF")#KLaோrKL7g$Ş=Pg/t(U4(P4eHu.RK.+`UUY!p1ZmWȜ2'r3+Fs͌ԨeY
\<5Ώ%\id^PF)UieeL(Oxbic&YvfFYC'gx>06~FiAhVZB-ik&BM:EiuܖEoj"\F&2ѭ*qd@ B]ƂtH Y #