Compare commits
246 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6128d03d4b | ||
|
|
dd27abc770 | ||
|
|
9e7b2b0b0b | ||
|
|
e09655b112 | ||
|
|
399b57d13e | ||
|
|
2941aa13da | ||
|
|
c1e5571de8 | ||
|
|
a828cb2124 | ||
|
|
5a848e51a3 | ||
|
|
8477b77c56 | ||
|
|
9bee5906d9 | ||
|
|
70ccecb1ab | ||
|
|
f2b8cdf684 | ||
|
|
ef6814d452 | ||
|
|
1abdb0b5d8 | ||
|
|
ef6eb2cb04 | ||
|
|
be3343e4af | ||
|
|
8dcb4326c6 | ||
|
|
d5d2cf55de | ||
|
|
818494d0f3 | ||
|
|
1779cf1a64 | ||
|
|
c439355c1a | ||
|
|
b58b7da18f | ||
|
|
afaf57f6da | ||
|
|
7a8b5695bc | ||
|
|
2d62c6ce88 | ||
|
|
263b1d0156 | ||
|
|
e199d0b495 | ||
|
|
632946ac79 | ||
|
|
0663088d7f | ||
|
|
943e3b4de8 | ||
|
|
b21cfb53f3 | ||
|
|
df2d09706c | ||
|
|
118e57dd15 | ||
|
|
f06c60b963 | ||
|
|
bf23e7bb0e | ||
|
|
001b77b5f3 | ||
|
|
23bcfe4239 | ||
|
|
0077f29d71 | ||
|
|
ddc99b3552 | ||
|
|
cf278d3741 | ||
|
|
21b0bac625 | ||
|
|
e1cbaf1cb3 | ||
|
|
b3175d092e | ||
|
|
d8bdc47542 | ||
|
|
d16b90c04f | ||
|
|
f4ffac58ae | ||
|
|
c856c2b0e2 | ||
|
|
405527672c | ||
|
|
f434ebec8a | ||
|
|
8852df7a7a | ||
|
|
fcea326855 | ||
|
|
5e1527a8e2 | ||
|
|
7c515f48f6 | ||
|
|
0bf55f18d6 | ||
|
|
2fb3a78d75 | ||
|
|
3f56a0ad70 | ||
|
|
b501d77903 | ||
|
|
252835d8e7 | ||
|
|
4529ee5ead | ||
|
|
3269e1a3f5 | ||
|
|
1457e12f70 | ||
|
|
603f54fade | ||
|
|
04626f83cf | ||
|
|
b23131b3d6 | ||
|
|
fc3e9d95b8 | ||
|
|
b1e397c223 | ||
|
|
41fd73e26c | ||
|
|
975949ab18 | ||
|
|
cef31f1277 | ||
|
|
040966850c | ||
|
|
79b2685fba | ||
|
|
a87ee9a966 | ||
|
|
3ee6ddb081 | ||
|
|
4b587c45df | ||
|
|
134d9a11c8 | ||
|
|
08f04814ba | ||
|
|
178f48799a | ||
|
|
109206e721 | ||
|
|
9d8fce0687 | ||
|
|
5368a14c43 | ||
|
|
f119f1fcb2 | ||
|
|
c52e75624c | ||
|
|
66f6549817 | ||
|
|
62df950f50 | ||
|
|
7318d28f1a | ||
|
|
a79ad25001 | ||
|
|
bf27c8c394 | ||
|
|
bbaf151f25 | ||
|
|
41448926cb | ||
|
|
2fa6b644ad | ||
|
|
9824ead2e7 | ||
|
|
eefdd6f887 | ||
|
|
623bbc4349 | ||
|
|
f307d32288 | ||
|
|
eaa34a7f9f | ||
|
|
77a5c01ac9 | ||
|
|
ec41d49454 | ||
|
|
2be479fc9f | ||
|
|
5887e43248 | ||
|
|
c5e1ddea20 | ||
|
|
aca4947927 | ||
|
|
7de0a3b53f | ||
|
|
508e96c486 | ||
|
|
5d9f17d414 | ||
|
|
a5d7827fc7 | ||
|
|
313f7292f8 | ||
|
|
95709e582d | ||
|
|
755275f8ef | ||
|
|
84a33f1a50 | ||
|
|
ca5c79c980 | ||
|
|
09e53f495d | ||
|
|
4ede2de037 | ||
|
|
800bd53870 | ||
|
|
4c87932f06 | ||
|
|
8276b30c32 | ||
|
|
6f87a20e26 | ||
|
|
41162c794e | ||
|
|
6034368364 | ||
|
|
19c41b308d | ||
|
|
f5638c8f6b | ||
|
|
904ca403a2 | ||
|
|
d244c34282 | ||
|
|
1715bccac4 | ||
|
|
abf3ca54bf | ||
|
|
2440932579 | ||
|
|
02e14d91e1 | ||
|
|
e9547d219a | ||
|
|
70bb497b96 | ||
|
|
398fc6de37 | ||
|
|
50692a4fd3 | ||
|
|
11b441b777 | ||
|
|
62f5372876 | ||
|
|
fba90d31f4 | ||
|
|
9375ea7378 | ||
|
|
e697bdaf90 | ||
|
|
7bddd67a61 | ||
|
|
93c05240b7 | ||
|
|
2f1db7dfa2 | ||
|
|
0389a45034 | ||
|
|
ec53580a76 | ||
|
|
09c8b5eced | ||
|
|
928fd364cf | ||
|
|
55a2f4a6b2 | ||
|
|
6e0da9cea7 | ||
|
|
9364aa2036 | ||
|
|
48806ccd8f | ||
|
|
80582daaa0 | ||
|
|
33c6dd9656 | ||
|
|
1c8790271d | ||
|
|
f8cba1e5c4 | ||
|
|
f2aacd93c8 | ||
|
|
02b02f73bd | ||
|
|
af69716bf0 | ||
|
|
433ef09d2c | ||
|
|
2859994bbe | ||
|
|
5cf2c9696d | ||
|
|
b517282238 | ||
|
|
842a8d613b | ||
|
|
2226862ea9 | ||
|
|
e87ef4bc3a | ||
|
|
b28cc5b5c3 | ||
|
|
ef4e465222 | ||
|
|
1cdda4f7f6 | ||
|
|
de7aeceac8 | ||
|
|
e04d16bdc1 | ||
|
|
c5547091cf | ||
|
|
83abe91e3a | ||
|
|
4f29733fae | ||
|
|
6b8ccff2a4 | ||
|
|
e7fee6a417 | ||
|
|
63972386c2 | ||
|
|
5c626c6d95 | ||
|
|
46b8ad3fdd | ||
|
|
7111b3dcb2 | ||
|
|
285013a64a | ||
|
|
bcf288f55d | ||
|
|
88c98cad5c | ||
|
|
2203e0e49f | ||
|
|
540bda993f | ||
|
|
65b9c9ce17 | ||
|
|
5f9a097505 | ||
|
|
b33efddb77 | ||
|
|
577c45d183 | ||
|
|
077eb4263d | ||
|
|
2904dae2c3 | ||
|
|
225380d00b | ||
|
|
fc295bb617 | ||
|
|
6438200923 | ||
|
|
8c7955e107 | ||
|
|
68284be7b0 | ||
|
|
0d8dc294e9 | ||
|
|
cfe9c74eb1 | ||
|
|
e73029ce37 | ||
|
|
a053df7b75 | ||
|
|
a22aac1e65 | ||
|
|
6f2be48e25 | ||
|
|
39dd86d6fb | ||
|
|
bc59d58a3e | ||
|
|
1aab089205 | ||
|
|
ea1d9acfad | ||
|
|
90222d7867 | ||
|
|
e6b7388758 | ||
|
|
52672530b7 | ||
|
|
911cf430a9 | ||
|
|
d7624b95f8 | ||
|
|
09271bff5f | ||
|
|
f239882d32 | ||
|
|
9076053f7e | ||
|
|
c97cac19f0 | ||
|
|
b5e8cad672 | ||
|
|
d502275fc8 | ||
|
|
98c70d8a70 | ||
|
|
b7ba4a15f1 | ||
|
|
3585ef828e | ||
|
|
14083907e5 | ||
|
|
c358d2a851 | ||
|
|
319490edc1 | ||
|
|
7fce2d04af | ||
|
|
c3f11dc976 | ||
|
|
246b5293e5 | ||
|
|
d383da31c8 | ||
|
|
eaaa9203f7 | ||
|
|
7176524e4f | ||
|
|
e740451b69 | ||
|
|
4d9eaf1ac4 | ||
|
|
dfd5752814 | ||
|
|
d2de59c05d | ||
|
|
ba917605ac | ||
|
|
98c2788203 | ||
|
|
8d865f1c5f | ||
|
|
61be442614 | ||
|
|
bb338ef19c | ||
|
|
c313611e0d | ||
|
|
716c697a60 | ||
|
|
d1ed9ab88c | ||
|
|
32eb1bc27d | ||
|
|
16e3e7c35e | ||
|
|
9e794b1929 | ||
|
|
ae60debc90 | ||
|
|
18414ab8c2 | ||
|
|
4ed36cfb1f | ||
|
|
fda67e1be5 | ||
|
|
4130f87c62 | ||
|
|
f50380af73 | ||
|
|
a3df59fceb |
35
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
35
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Desktop (please complete the following information):**
|
||||
- OS: [e.g. iOS]
|
||||
- Browser [e.g. chrome, safari]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Smartphone (please complete the following information):**
|
||||
- Device: [e.g. iPhone6]
|
||||
- OS: [e.g. iOS8.1]
|
||||
- Browser [e.g. stock browser, safari]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
17
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
17
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -1,3 +1,6 @@
|
||||
[submodule "gluon/packages/dal"]
|
||||
path = gluon/packages/dal
|
||||
url = https://github.com/web2py/pydal.git
|
||||
[submodule "gluon/packages/yatl"]
|
||||
path = gluon/packages/yatl
|
||||
url = https://github.com/web2py/yatl
|
||||
|
||||
22
.travis.yml
22
.travis.yml
@@ -4,20 +4,22 @@ sudo: required
|
||||
|
||||
cache: pip
|
||||
|
||||
dist: "trusty"
|
||||
dist: "xenial"
|
||||
|
||||
services:
|
||||
- mysql
|
||||
|
||||
python:
|
||||
- '2.7'
|
||||
- '3.5'
|
||||
- '3.6'
|
||||
- '3.6-dev'
|
||||
- '3.7'
|
||||
- '3.7-dev'
|
||||
- 'pypy-5.3.1'
|
||||
- 'pypy3.5-5.7.1-beta'
|
||||
- 'pypy3.5'
|
||||
|
||||
matrix:
|
||||
allow_failures:
|
||||
- python: 'pypy3.5-5.7.1-beta'
|
||||
- python: '3.6-dev'
|
||||
- python: '3.7-dev'
|
||||
|
||||
@@ -27,11 +29,9 @@ install:
|
||||
before_script:
|
||||
- pip install coverage
|
||||
- pip install codecov
|
||||
- mysql -e 'create database pydal;'
|
||||
- psql -c 'create database pydal;' -U postgres
|
||||
- psql -c 'create extension postgis;' -U postgres -d pydal;
|
||||
- psql -c 'SHOW SERVER_VERSION' -U postgres
|
||||
|
||||
before_install:
|
||||
- mysql -e 'create database pydal;'
|
||||
|
||||
script: export COVERAGE_PROCESS_START=gluon/tests/coverage.ini; ./web2py.py --run_system_tests --with_coverage
|
||||
|
||||
@@ -41,9 +41,3 @@ after_success:
|
||||
|
||||
notifications:
|
||||
email: true
|
||||
|
||||
addons:
|
||||
postgresql: "9.4"
|
||||
apt:
|
||||
packages:
|
||||
- postgresql-9.4-postgis-2.3
|
||||
|
||||
10
CHANGELOG
10
CHANGELOG
@@ -1,3 +1,13 @@
|
||||
## 2.18.1-2.18.3
|
||||
- pydal 19.02
|
||||
- made template its own module (Yet Another Template Language)
|
||||
- improved python 3.4-3.7 support
|
||||
- bug fixes
|
||||
|
||||
## 2.17.1-2
|
||||
- pydal 18.08
|
||||
- many small bug fixes
|
||||
|
||||
## 2.16.1
|
||||
- pydal 17.11
|
||||
- bootstrap 4
|
||||
|
||||
29
Makefile
29
Makefile
@@ -6,17 +6,18 @@ clean:
|
||||
rm -f httpserver.log
|
||||
rm -f parameters*.py
|
||||
rm -f -r applications/*/compiled
|
||||
find ./ -name '*~' -exec rm -f {} \;
|
||||
find ./ -name '*.orig' -exec rm -f {} \;
|
||||
find ./ -name '*.rej' -exec rm -f {} \;
|
||||
find ./ -name '#*' -exec rm -f {} \;
|
||||
find ./ -name 'Thumbs.db' -exec rm -f {} \;
|
||||
# find ./gluon/ -name '.*' -exec rm -f {} \;
|
||||
find ./gluon/ -name '*class' -exec rm -f {} \;
|
||||
find ./applications/admin/ -name '.*' -exec rm -f {} \;
|
||||
find ./applications/examples/ -name '.*' -exec rm -f {} \;
|
||||
find ./applications/welcome/ -name '.*' -exec rm -f {} \;
|
||||
find ./ -name '*.pyc' -exec rm -f {} \;
|
||||
find . -name '*~' -exec rm -f {} \;
|
||||
find . -name '*.orig' -exec rm -f {} \;
|
||||
find . -name '*.rej' -exec rm -f {} \;
|
||||
find . -name '#*' -exec rm -f {} \;
|
||||
find . -name 'Thumbs.db' -exec rm -f {} \;
|
||||
find . -name '.tox' -exec rm -rf {} \;
|
||||
find . -name '__pycache__' -exec rm -rf {} \;
|
||||
find gluon/ -name '*class' -exec rm -f {} \;
|
||||
find applications/admin/ -name '.*' -exec rm -f {} \;
|
||||
find applications/examples/ -name '.*' -exec rm -f {} \;
|
||||
find applications/welcome/ -name '.*' -exec rm -f {} \;
|
||||
find . -name '*.pyc' -exec rm -f {} \;
|
||||
tests:
|
||||
python web2py.py --run_system_tests
|
||||
coverage:
|
||||
@@ -44,9 +45,9 @@ rmfiles:
|
||||
rm -rf applications/examples/uploads/*
|
||||
src:
|
||||
### Use semantic versioning
|
||||
echo 'Version 2.16.1-stable+timestamp.'`date +%Y.%m.%d.%H.%M.%S` > VERSION
|
||||
echo 'Version 2.18.3-stable+timestamp.'`date +%Y.%m.%d.%H.%M.%S` > VERSION
|
||||
### rm -f all junk files
|
||||
#make clean
|
||||
make clean
|
||||
# make rmfiles
|
||||
### make welcome layout and appadmin the default
|
||||
cp applications/welcome/views/appadmin.html applications/admin/views
|
||||
@@ -56,7 +57,7 @@ src:
|
||||
### build web2py_src.zip
|
||||
echo '' > NEWINSTALL
|
||||
mv web2py_src.zip web2py_src_old.zip | echo 'no old'
|
||||
cd ..; zip -r --exclude=**.git** web2py/web2py_src.zip web2py/web2py.py web2py/anyserver.py web2py/fabfile.py web2py/gluon/* web2py/extras/* web2py/handlers/* web2py/examples/* web2py/README.markdown web2py/LICENSE web2py/CHANGELOG web2py/NEWINSTALL web2py/VERSION web2py/MANIFEST.in web2py/scripts/*.sh web2py/scripts/*.py web2py/applications/admin web2py/applications/examples/ web2py/applications/welcome web2py/applications/__init__.py web2py/site-packages/__init__.py web2py/gluon/tests/*.sh web2py/gluon/tests/*.py
|
||||
cd ..; zip -r --exclude=**.git** --exclude=**.tox** --exclude=**_pycache__** web2py/web2py_src.zip web2py/web2py.py web2py/anyserver.py web2py/fabfile.py web2py/gluon/* web2py/extras/* web2py/handlers/* web2py/examples/* web2py/README.markdown web2py/LICENSE web2py/CHANGELOG web2py/NEWINSTALL web2py/VERSION web2py/MANIFEST.in web2py/scripts/*.sh web2py/scripts/*.py web2py/applications/admin web2py/applications/examples/ web2py/applications/welcome web2py/applications/__init__.py web2py/site-packages/__init__.py web2py/gluon/tests/*.sh web2py/gluon/tests/*.py
|
||||
|
||||
mdp:
|
||||
make src
|
||||
|
||||
2
VERSION
2
VERSION
@@ -1 +1 @@
|
||||
Version 2.16.1-stable+timestamp.2018.03.08.10.23.01
|
||||
Version 2.18.3-stable+timestamp.2019.03.03.15.06.20
|
||||
|
||||
20
anyserver.py
20
anyserver.py
@@ -43,8 +43,8 @@ class Servers:
|
||||
|
||||
@staticmethod
|
||||
def cherrypy(app, address, **options):
|
||||
from cherrypy import wsgiserver
|
||||
server = wsgiserver.CherryPyWSGIServer(address, app)
|
||||
from cheroot.wsgi import Server as WSGIServer
|
||||
server = WSGIServer(address, app)
|
||||
server.start()
|
||||
|
||||
@staticmethod
|
||||
@@ -212,16 +212,16 @@ def mongrel2_handler(application, conn, debug=False):
|
||||
|
||||
while True:
|
||||
if debug:
|
||||
print "WAITING FOR REQUEST"
|
||||
print("WAITING FOR REQUEST")
|
||||
|
||||
# receive a request
|
||||
req = conn.recv()
|
||||
if debug:
|
||||
print "REQUEST BODY: %r\n" % req.body
|
||||
print("REQUEST BODY: %r\n" % req.body)
|
||||
|
||||
if req.is_disconnect():
|
||||
if debug:
|
||||
print "DISCONNECT"
|
||||
print("DISCONNECT")
|
||||
continue # effectively ignore the disconnect from the client
|
||||
|
||||
# Set a couple of environment attributes a.k.a. header attributes
|
||||
@@ -247,7 +247,7 @@ def mongrel2_handler(application, conn, debug=False):
|
||||
environ['wsgi.input'] = req.body
|
||||
|
||||
if debug:
|
||||
print "ENVIRON: %r\n" % environ
|
||||
print("ENVIRON: %r\n" % environ)
|
||||
|
||||
# SimpleHandler needs file-like stream objects for
|
||||
# requests, errors and responses
|
||||
@@ -282,10 +282,10 @@ def mongrel2_handler(application, conn, debug=False):
|
||||
|
||||
# return the response
|
||||
if debug:
|
||||
print "RESPONSE: %r\n" % response
|
||||
print("RESPONSE: %r\n" % response)
|
||||
if errors:
|
||||
if debug:
|
||||
print "ERRORS: %r" % errors
|
||||
print("ERRORS: %r" % errors)
|
||||
data = "%s\r\n\r\n%s" % (data, errors)
|
||||
conn.reply_http(
|
||||
req, data, code=code, status=status, headers=headers)
|
||||
@@ -355,8 +355,8 @@ def main():
|
||||
dest='workers',
|
||||
help='number of workers number')
|
||||
(options, args) = parser.parse_args()
|
||||
print 'starting %s on %s:%s...' % (
|
||||
options.server, options.ip, options.port)
|
||||
print('starting %s on %s:%s...' % (
|
||||
options.server, options.ip, options.port))
|
||||
run(options.server, options.ip, options.port,
|
||||
logging=options.logging, profiler=options.profiler_dir,
|
||||
options=options)
|
||||
|
||||
@@ -185,9 +185,9 @@ def select():
|
||||
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+)')
|
||||
regex = re.compile(r'(?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>.+)')
|
||||
regex = re.compile(r'(?P<table>\w+)\.(?P<field>\w+)=(?P<value>.+)')
|
||||
if request.vars.query:
|
||||
match = regex.match(request.vars.query)
|
||||
if match:
|
||||
@@ -224,20 +224,20 @@ def select():
|
||||
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 '',
|
||||
_name='query', _value=request.vars.query or '', _class="form-control",
|
||||
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',
|
||||
or '', _class="form-control")), TR(T('Delete:'), INPUT(_name='delete_check',
|
||||
_class='delete', _type='checkbox', value=False), ''),
|
||||
TR('', '', INPUT(_type='submit', _value=T('submit')))),
|
||||
TR('', '', INPUT(_type='submit', _value=T('submit'), _class="btn btn-primary"))),
|
||||
_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+)\..+')
|
||||
regex = re.compile(request.args[0] + r'\.(?P<table>\w+)\..+')
|
||||
match = regex.match(form.vars.query.strip())
|
||||
if match:
|
||||
table = match.group('table')
|
||||
@@ -274,7 +274,7 @@ def select():
|
||||
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')))
|
||||
INPUT(_type='submit', _value=T('import'), _class="btn btn-primary"))
|
||||
else:
|
||||
formcsv = None
|
||||
if formcsv and formcsv.process().accepted:
|
||||
@@ -392,7 +392,7 @@ def ccache():
|
||||
cache.disk.clear()
|
||||
session.flash += T("Disk Cleared")
|
||||
redirect(URL(r=request))
|
||||
|
||||
|
||||
try:
|
||||
from pympler.asizeof import asizeof
|
||||
except ImportError:
|
||||
@@ -588,7 +588,7 @@ def manage():
|
||||
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]
|
||||
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():
|
||||
@@ -604,13 +604,13 @@ def manage():
|
||||
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
|
||||
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=[]
|
||||
method_hooks = []
|
||||
for op in list_op:
|
||||
functions = []
|
||||
for f in getattr(db[t], op):
|
||||
@@ -630,16 +630,16 @@ def hooks():
|
||||
except:
|
||||
pass
|
||||
if len(functions):
|
||||
method_hooks.append({'name':op, 'functions':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})
|
||||
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(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
|
||||
@@ -652,10 +652,10 @@ def hooks():
|
||||
def d3_graph_model():
|
||||
""" See https://www.facebook.com/web2py/posts/145613995589010 from Bruno Rocha
|
||||
and also the app_admin bg_graph_model function
|
||||
|
||||
|
||||
Create a list of table dicts, called "nodes"
|
||||
"""
|
||||
|
||||
|
||||
nodes = []
|
||||
links = []
|
||||
|
||||
@@ -665,20 +665,20 @@ def d3_graph_model():
|
||||
fields = []
|
||||
for field in db[tablename]:
|
||||
f_type = field.type
|
||||
if not isinstance(f_type,str):
|
||||
if not isinstance(f_type, str):
|
||||
disp = ' '
|
||||
elif f_type == 'string':
|
||||
disp = field.length
|
||||
disp = field.length
|
||||
elif f_type == 'id':
|
||||
disp = "PK"
|
||||
disp = "PK"
|
||||
elif f_type.startswith('reference') or \
|
||||
f_type.startswith('list:reference'):
|
||||
disp = "FK"
|
||||
else:
|
||||
disp = ' '
|
||||
fields.append(dict(name= field.name, type=field.type, disp = disp))
|
||||
fields.append(dict(name=field.name, type=field.type, disp=disp))
|
||||
|
||||
if isinstance(f_type,str) and (
|
||||
if isinstance(f_type, str) and (
|
||||
f_type.startswith('reference') or
|
||||
f_type.startswith('list:reference')):
|
||||
referenced_table = f_type.split()[1].split('.')[0]
|
||||
|
||||
@@ -562,7 +562,11 @@ def enable():
|
||||
os.unlink(filename)
|
||||
return SPAN(T('Disable'), _style='color:green')
|
||||
else:
|
||||
safe_open(filename, 'wb').write('disabled: True\ntime-disabled: %s' % request.now)
|
||||
if PY2:
|
||||
safe_open(filename, 'wb').write('disabled: True\ntime-disabled: %s' % request.now)
|
||||
else:
|
||||
str_ = 'disabled: True\ntime-disabled: %s' % request.now
|
||||
safe_open(filename, 'wb').write(str_.encode('utf-8'))
|
||||
return SPAN(T('Enable'), _style='color:red')
|
||||
|
||||
|
||||
@@ -642,7 +646,10 @@ def edit():
|
||||
# show settings tab and save prefernces
|
||||
if 'settings' in request.vars:
|
||||
if request.post_vars: # save new preferences
|
||||
post_vars = request.post_vars.items()
|
||||
if PY2:
|
||||
post_vars = request.post_vars.items()
|
||||
else:
|
||||
post_vars = list(request.post_vars.items())
|
||||
# Since unchecked checkbox are not serialized, we must set them as false by hand to store the correct preference in the settings
|
||||
post_vars += [(opt, 'false') for opt in preferences if opt not in request.post_vars]
|
||||
if config.save(post_vars):
|
||||
|
||||
534
applications/admin/languages/de.py
Executable file → Normal file
534
applications/admin/languages/de.py
Executable file → Normal file
@@ -2,92 +2,92 @@
|
||||
{
|
||||
'!langcode!': 'de',
|
||||
'!langname!': 'Deutsch',
|
||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"Update" ist ein optionaler Ausdruck wie "Feld1 = \'newvalue". JOIN Ergebnisse können nicht aktualisiert oder gelöscht werden',
|
||||
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
|
||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"Update" ist ein optionaler Ausdruck wie "feld1=\'newvalue\'". JOIN Ergebnisse können nicht aktualisiert oder gelöscht werden',
|
||||
'"User Exception" debug mode. ': '"Benutzerausnahme" Debug-Modus.',
|
||||
'%s': '%s',
|
||||
'%s %%{row} deleted': '%s %%{row} Zeilen gelöscht',
|
||||
'%s %%{row} updated': '%s %%{row} Zeilen aktualisiert',
|
||||
'%s selected': '%s selected',
|
||||
'%s students registered': '%s students registered',
|
||||
'%s %%{row} deleted': '%s %%{Reihe} gelöscht',
|
||||
'%s %%{row} updated': '%s %%{Reihe} aktualisiert',
|
||||
'%s selected': '%s ausgewählt',
|
||||
'%s students registered': '%s Studenten registriert',
|
||||
'%Y-%m-%d': '%d.%m.%Y',
|
||||
'%Y-%m-%d %H:%M:%S': '%d.%m.%Y %H:%M:%S',
|
||||
'(requires internet access)': '(Benötigt Internetzugang)',
|
||||
'(requires internet access, experimental)': '(Benötigt Internetzugang)',
|
||||
'(requires internet access)': '(Erfordert Internetzugang)',
|
||||
'(requires internet access, experimental)': '(Erfordert Internetzugang, experimentell)',
|
||||
'(something like "it-it")': '(so etwas wie "it-it")',
|
||||
'(version %s)': '(version %s)',
|
||||
'?': '?',
|
||||
'@markmin\x01(file **gluon/contrib/plural_rules/%s.py** is not found)': '(Datei **gluon/contrib/plural_rules/%s.py** wurde nicht gefunden)',
|
||||
'@markmin\x01An error occured, please [[reload %s]] the page': 'Ein Fehler ist aufgetreten, bitte [[reload %s]] sie die Seite erneut',
|
||||
'@markmin\x01Searching: **%s** %%{file}': '@markmin\x01Suche: **%s** Dateien',
|
||||
'@markmin\x01An error occured, please [[reload %s]] the page': 'Ein Fehler ist aufgetreten, bitte [[laden %s]] Sie die Seite neu',
|
||||
'@markmin\x01Searching: **%s** %%{file}': 'Suche: **% s ** %% {Datei}',
|
||||
'A new version of web2py is available': 'Eine neue Version von web2py ist verfügbar',
|
||||
'A new version of web2py is available: %s': 'Eine neue Version von web2py ist verfügbar: %s',
|
||||
'Abort': 'Abbrechen',
|
||||
'Abort': 'Verwerfen',
|
||||
'About': 'Über',
|
||||
'About application': 'Über die Anwendung',
|
||||
'Accept Terms': 'Accept Terms',
|
||||
'Add breakpoint': 'Add breakpoint',
|
||||
'Accept Terms': 'Nutzerbedingungen akzeptieren',
|
||||
'Add breakpoint': 'Breakpoint hinzufügen',
|
||||
'Additional code for your application': 'Zusätzlicher Code für Ihre Anwendung',
|
||||
'Admin design page': 'Admin design page',
|
||||
'admin disabled because no admin password': 'admin ist deaktiviert, weil kein Admin-Passwort gesetzt ist',
|
||||
'admin disabled because not supported on google app engine': 'admin disabled because not supported on google app engine',
|
||||
'admin disabled because not supported on google apps engine': 'admin ist deaktiviert, es existiert dafür keine Unterstützung auf der google apps engine',
|
||||
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
|
||||
'admin disabled because unable to access password file': 'admin ist deaktiviert, weil kein Zugriff auf die Passwortdatei besteht',
|
||||
'Admin design page': 'Admin-Design-Seite',
|
||||
'admin disabled because no admin password': 'Admin ist deaktiviert, da kein Admin-Passwort gesetzt ist',
|
||||
'admin disabled because not supported on google app engine': 'Admin deaktiviert, da auf Google App Engine nicht unterstützt',
|
||||
'admin disabled because not supported on google apps engine': 'Admin deaktiviert, da es auf Google Apps Engine nicht unterstützt wird.',
|
||||
'admin disabled because too many invalid login attempts': 'Admin deaktiviert, weil zu viele ungültige Anmeldeversuche',
|
||||
'admin disabled because unable to access password file': 'Admin deaktiviert, da der Zugriff auf die Kennwortdatei nicht möglich ist',
|
||||
'Admin is disabled because insecure channel': 'Appadmin ist deaktiviert, wegen der Benutzung eines unsicheren Kanals',
|
||||
'Admin is disabled because unsecure channel': 'Appadmin ist deaktiviert, wegen der Benutzung eines unsicheren Kanals',
|
||||
'Admin language': 'Admin-Sprache',
|
||||
'Admin versioning page': 'Admin versioning page',
|
||||
'administrative interface': 'Administrative Schnittstelle',
|
||||
'Admin versioning page': 'Admin-Versionierungsseite',
|
||||
'administrative interface': 'Administratives Interface',
|
||||
'Administrator Password:': 'Administrator Passwort:',
|
||||
'An error occured, please %s the page': 'Ein Fehler ist aufgetereten, bitte %s die Seite',
|
||||
'and rename it (required):': 'und benenne sie um (erforderlich):',
|
||||
'and rename it:': ' und benenne sie um:',
|
||||
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
|
||||
'and rename it (required):': 'und benenne sie se um (erforderlich):',
|
||||
'and rename it:': ' und benenne sie es um:',
|
||||
'App does not exist or you are not authorized': 'App existiert nicht oder Sie sind nicht autorisiert',
|
||||
'appadmin': 'appadmin',
|
||||
'appadmin is disabled because insecure channel': 'Appadmin ist deaktiviert, wegen der Benutzung eines unsicheren Kanals',
|
||||
'Application': 'Anwendung',
|
||||
'application "%s" uninstalled': 'Anwendung "%s" deinstalliert',
|
||||
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
|
||||
'Application cannot be generated in demo mode': 'Anwendung kann nicht im Demo-Modus erstellt werden',
|
||||
'application compiled': 'Anwendung kompiliert',
|
||||
'Application exists already': 'Application exists already',
|
||||
'Application exists already': 'Anwendung existiert bereits',
|
||||
'application is compiled and cannot be designed': 'Die Anwendung ist kompiliert und kann deswegen nicht mehr geändert werden',
|
||||
'Application name:': 'Name der Anwendung:',
|
||||
'Application updated via git pull': 'Application updated via git pull',
|
||||
'Application name:': 'Anwendungsname:',
|
||||
'Application updated via git pull': 'Die Anwendung wurde über Git Pull updated',
|
||||
'are not used': 'werden nicht verwendet',
|
||||
'are not used yet': 'werden bisher nicht verwendet',
|
||||
'Are you sure you want to delete file "%s"?': 'Sind Sie sich sicher, dass Sie diese Datei löschen wollen "%s"?',
|
||||
'Are you sure you want to delete plugin "%s"?': 'Are you sure you want to delete plugin "%s"?',
|
||||
'Are you sure you want to delete file "%s"?': 'Sind Sie sich sicher, dass Sie die Datei "%s" löschen wollen?',
|
||||
'Are you sure you want to delete plugin "%s"?': 'Möchten Sie das Plugin "%s" wirklich löschen?',
|
||||
'Are you sure you want to delete this object?': 'Sind Sie sich sicher, dass Sie dieses Objekt löschen wollen?',
|
||||
'Are you sure you want to uninstall application "%s"': 'Sind Sie sich sicher, dass Sie diese Anwendung deinstallieren wollen "%s"',
|
||||
'Are you sure you want to uninstall application "%s"?': 'Sind Sie sich sicher, dass Sie diese Anwendung deinstallieren wollen "%s"?',
|
||||
'Are you sure you want to uninstall application "%s"': 'Sind Sie sich sicher, dass Sie die Anwendung "%s" deinstallieren wollen',
|
||||
'Are you sure you want to uninstall application "%s"?': 'Sind Sie sich sicher, dass Sie die Anwendung "%s" deinstallieren wollen?',
|
||||
'Are you sure you want to upgrade web2py now?': 'Sind Sie sich sicher, dass Sie web2py jetzt upgraden möchten?',
|
||||
'Are you sure?': 'Are you sure?',
|
||||
'arguments': 'arguments',
|
||||
'Are you sure?': 'Bist du sicher?',
|
||||
'arguments': 'Argumente',
|
||||
'at char %s': 'bei Zeichen %s',
|
||||
'at line %s': 'in Linie %s',
|
||||
'ATTENTION:': 'ATTENTION:',
|
||||
'ATTENTION:': 'BEACHTUNG:',
|
||||
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ACHTUNG: Die Einwahl benötigt eine sichere (HTTPS) Verbindung. Es sei denn sie läuft Lokal (localhost).',
|
||||
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ACHTUNG: Testen ist nicht threadsicher. Führen Sie also nicht mehrere Tests gleichzeitig aus.',
|
||||
'ATTENTION: This is an experimental feature and it needs more testing.': 'ACHTUNG: Dies ist eine experimentelle Funktion und benötigt noch weitere Tests.',
|
||||
'ATTENTION: you cannot edit the running application!': 'ACHTUNG: Eine laufende Anwendung kann nicht editiert werden!',
|
||||
'Authentication': 'Authentifizierung',
|
||||
'Autocomplete Python Code': 'Autocomplete Python Code',
|
||||
'Autocomplete Python Code': 'Python-Code automatisch vervollständigen',
|
||||
'Available databases and tables': 'Verfügbare Datenbanken und Tabellen',
|
||||
'Available Databases and Tables': 'Available Databases and Tables',
|
||||
'Available Databases and Tables': 'Verfügbare Datenbanken und Tabellen',
|
||||
'back': 'Zurück',
|
||||
'Back to the plugins list': 'Back to the plugins list',
|
||||
'Back to wizard': 'Back to wizard',
|
||||
'Back to the plugins list': 'Zurück zur Plugin-Liste',
|
||||
'Back to wizard': 'Zurück zum Wizard',
|
||||
'Basics': 'Basics',
|
||||
'beautify': 'Verschönern',
|
||||
'Begin': 'Begin',
|
||||
'Begin': 'Start',
|
||||
'breakpoint': 'breakpoint',
|
||||
'Breakpoints': 'Breakpoints',
|
||||
'breakpoints': 'breakpoints',
|
||||
'Bulk Register': 'Bulk Register',
|
||||
'Bulk Student Registration': 'Bulk Student Registration',
|
||||
'Cache': 'Cache',
|
||||
'Bulk Register': 'Masse-registrierung',
|
||||
'Bulk Student Registration': 'Massen-Studenten registrierung',
|
||||
'Cache': 'Zwischenspeicher',
|
||||
'cache': 'Zwischenspeicher',
|
||||
'Cache Cleared': 'Cache Cleared',
|
||||
'Cache Cleared': 'Cache geleert',
|
||||
'Cache Keys': 'Cache Keys',
|
||||
'cache, errors and sessions cleaned': 'Zwischenspeicher (cache), Fehler und Sitzungen (sessions) gelöscht',
|
||||
'call': 'Aufruf',
|
||||
@@ -95,10 +95,10 @@
|
||||
'Cancel': 'Abbrechen',
|
||||
'Cannot be empty': 'Darf nicht leer sein',
|
||||
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'Nicht Kompilierbar: Es sind Fehler in der Anwendung. Beseitigen Sie die Fehler und versuchen Sie es erneut.',
|
||||
'Cannot compile: there are errors in your app:': 'Cannot compile: there are errors in your app:',
|
||||
'Cannot compile: there are errors in your app:': 'Kompilieren nicht möglich: Es gibt Fehler in Ihrer App:',
|
||||
'cannot create file': 'Kann Datei nicht erstellen',
|
||||
'cannot upload file "%(filename)s"': 'Kann Datei nicht Hochladen "%(filename)s"',
|
||||
'Change Admin Password': 'Change Admin Password',
|
||||
'Change Admin Password': 'Admin-Passwort ändern',
|
||||
'Change admin password': 'Administrator-Passwort ändern',
|
||||
'change editor settings': 'Editoreinstellungen ändern',
|
||||
'Change Password': 'Passwort ändern',
|
||||
@@ -109,30 +109,30 @@
|
||||
'Check to delete': 'Markiere zum löschen',
|
||||
'Checking for upgrades...': 'Überprüfe auf Updates...',
|
||||
'Clean': 'Leeren',
|
||||
'Clear': 'Clear',
|
||||
'Clear CACHE?': 'Clear CACHE?',
|
||||
'Clear DISK': 'Clear DISK',
|
||||
'Clear RAM': 'Clear RAM',
|
||||
'Clear': 'Leeren',
|
||||
'Clear CACHE?': 'CACHE leeren?',
|
||||
'Clear DISK': 'DISK leeren',
|
||||
'Clear RAM': 'RAM leeren',
|
||||
'click here for online examples': 'hier klicken für online Beispiele',
|
||||
'click here for the administrative interface': 'hier klicken für die Administrationsoberfläche ',
|
||||
'Click row to expand traceback': 'Klicke auf die Zeile für Fehlerverfolgung',
|
||||
'Click row to view a ticket': 'Click row to view a ticket',
|
||||
'Click row to view a ticket': 'Klicke auf eine Zeile, um ein Ticket anzusehen',
|
||||
'click to check for upgrades': 'hier klicken um nach Upgrades zu suchen',
|
||||
'Client IP': 'Client IP',
|
||||
'code': 'code',
|
||||
'Code listing': 'Code listing',
|
||||
'code': 'Code',
|
||||
'Code listing': 'Codeauflistung',
|
||||
'collapse/expand all': 'alles zu- bzw. aufklappen',
|
||||
'Command': 'Command',
|
||||
'Comment:': 'Comment:',
|
||||
'Command': 'Befehl',
|
||||
'Comment:': 'Kommentar:',
|
||||
'Commit': 'Commit',
|
||||
'Commit form': 'Commit form',
|
||||
'Committed files': 'Committed files',
|
||||
'Commit form': 'Formular ausfüllen',
|
||||
'Committed files': 'Festgelegte Dateien',
|
||||
'Compile': 'kompilieren',
|
||||
'Compile (all or nothing)': 'Compile (all or nothing)',
|
||||
'Compile (skip failed views)': 'Compile (skip failed views)',
|
||||
'Compile (all or nothing)': 'Kompilieren (alles oder nichts)',
|
||||
'Compile (skip failed views)': 'Kompilieren (Fehlgeschlagene Ansichten überspringen)',
|
||||
'compiled application removed': 'kompilierte Anwendung gelöscht',
|
||||
'Condition': 'Condition',
|
||||
'continue': 'continue',
|
||||
'Condition': 'Bedingung',
|
||||
'continue': 'fortsetzen',
|
||||
'Controller': 'Controller',
|
||||
'Controllers': 'Controllers',
|
||||
'controllers': 'controllers',
|
||||
@@ -142,11 +142,11 @@
|
||||
'create file with filename:': 'Erzeuge Datei mit Dateinamen:',
|
||||
'create new application:': 'Erzeuge neue Anwendung:',
|
||||
'Create new simple application': 'Erzeuge neue Anwendung',
|
||||
'Create/Upload': 'Create/Upload',
|
||||
'Create/Upload': 'Erstellen/Uploaden',
|
||||
'created by': 'Erstellt von',
|
||||
'Created by:': 'Created by:',
|
||||
'Created On': 'Created On',
|
||||
'Created on:': 'Created on:',
|
||||
'Created by:': 'Erstellt von:',
|
||||
'Created On': 'Erstellt am',
|
||||
'Created on:': 'Erstellt am:',
|
||||
'crontab': 'crontab',
|
||||
'Current request': 'Aktuelle Anfrage (request)',
|
||||
'Current response': 'Aktuelle Antwort (response)',
|
||||
@@ -157,7 +157,7 @@
|
||||
'data uploaded': 'Daten hochgeladen',
|
||||
'Database': 'Datenbank',
|
||||
'database': 'Datenbank',
|
||||
'Database %s select': 'Database %s select',
|
||||
'Database %s select': 'Database %s ausgewählt',
|
||||
'database %s select': 'Datenbank %s ausgewählt',
|
||||
'Database administration': 'Database administration',
|
||||
'database administration': 'Datenbankadministration',
|
||||
@@ -173,49 +173,49 @@
|
||||
'delete plugin': 'Plugin löschen',
|
||||
'Delete this file (you will be asked to confirm deletion)': 'Diese Datei löschen (mit Bestätigungsdialog)',
|
||||
'Delete:': 'Löschen:',
|
||||
'deleted after first hit': 'deleted after first hit',
|
||||
'deleted after first hit': 'nach dem ersten Treffer gelöscht',
|
||||
'Demo': 'Demo',
|
||||
'Deploy': 'Installieren',
|
||||
'Deploy on Google App Engine': 'Auf Google App Engine installieren',
|
||||
'Deploy to OpenShift': 'Auf OpenShift installieren',
|
||||
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
|
||||
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
|
||||
'Deploy to pythonanywhere': 'Bereitstellen für pythonanywhere',
|
||||
'Deploy to PythonAnywhere': 'Bereitstellen für PythonAnywhere',
|
||||
'Deployment form': 'Deployment form',
|
||||
'Deployment Interface': 'Deployment Interface',
|
||||
'Description': 'Beschreibung',
|
||||
'Description:': 'Description:',
|
||||
'Description:': 'Beschreibung:',
|
||||
'design': 'design',
|
||||
'DESIGN': 'DESIGN',
|
||||
'Design for': 'Design für',
|
||||
'Detailed traceback description': 'Detaillierte traceback Beschreibung',
|
||||
'details': 'details',
|
||||
'direction: ltr': 'direction: ltr',
|
||||
'directory not found': 'directory not found',
|
||||
'details': 'Details',
|
||||
'direction: ltr': 'Richtung: ltr',
|
||||
'directory not found': 'Verzeichnis nicht gefunden',
|
||||
'Disable': 'Deaktivieren',
|
||||
'Disabled': 'Disabled',
|
||||
'disabled in demo mode': 'disabled in demo mode',
|
||||
'disabled in GAE mode': 'disabled in GAE mode',
|
||||
'disabled in multi user mode': 'disabled in multi user mode',
|
||||
'Disabled': 'Deaktiviert',
|
||||
'disabled in demo mode': 'Im Demo Modus deaktiviert',
|
||||
'disabled in GAE mode': 'Im GAE Modus deaktiviert',
|
||||
'disabled in multi user mode': 'Im Multi-User-Modus deaktiviert',
|
||||
'DISK': 'DISK',
|
||||
'Disk Cache Keys': 'Disk Cache Keys',
|
||||
'Disk Cleared': 'Disk Cleared',
|
||||
'Display line numbers': 'Display line numbers',
|
||||
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
|
||||
'Disk Cleared': 'Disk geleert',
|
||||
'Display line numbers': 'Zeilennummern anzeigen',
|
||||
'DO NOT use the "Pack compiled" feature.': 'Verwenden Sie NICHT die Funktion "Pack kompiliert".',
|
||||
'docs': 'docs',
|
||||
'Docs': 'Docs',
|
||||
'documentation': 'Dokumentation',
|
||||
'done!': 'fertig!',
|
||||
'Downgrade': 'Downgrade',
|
||||
'Download .w2p': 'Download .w2p',
|
||||
'Download as .exe': 'Download as .exe',
|
||||
'Download as .exe': 'Downloade als .exe',
|
||||
'download layouts': 'Layouts herunterladen',
|
||||
'Download layouts from repository': 'Download layouts from repository',
|
||||
'Download layouts from repository': 'Layouts aus dem Repository herunterladen',
|
||||
'download plugins': 'Plugins herunterladen',
|
||||
'Download plugins from repository': 'Download plugins from repository',
|
||||
'Download plugins from repository': 'Plugins aus dem Repository herunterladen',
|
||||
'E-mail': 'E-mail',
|
||||
'EDIT': 'BEARBEITEN',
|
||||
'Edit': 'Bearbeiten',
|
||||
'edit all': 'edit all',
|
||||
'edit all': 'Alles bearbeiten',
|
||||
'Edit application': 'Bearbeite Anwendung',
|
||||
'edit controller': 'Bearbeite Controller',
|
||||
'edit controller:': 'bearbeite Controller:',
|
||||
@@ -228,12 +228,12 @@
|
||||
'Editing file': 'Bearbeite Datei',
|
||||
'Editing file "%s"': 'Bearbeite Datei "%s"',
|
||||
'Editing Language file': 'Sprachdatei bearbeiten',
|
||||
'Editing Plural Forms File': 'Editing Plural Forms File',
|
||||
'Editing Plural Forms File': 'Bearbeiten von Plural formen Datei',
|
||||
'Editor': 'Editor',
|
||||
'Email Address': 'Email Address',
|
||||
'Enable': 'Aktivieren',
|
||||
'Enable Close-Tag': 'Enable Close-Tag',
|
||||
'Enable Code Folding': 'Enable Code Folding',
|
||||
'Enable Close-Tag': 'Aktiviere Close-Tag',
|
||||
'Enable Code Folding': 'Aktiviere Code Folding',
|
||||
'Enterprise Web Framework': 'Enterprise Web Framework',
|
||||
'Error': 'Fehler',
|
||||
'Error logs for "%(app)s"': 'Fehlerprotokoll für "%(app)s"',
|
||||
@@ -241,8 +241,8 @@
|
||||
'Error ticket': 'Error ticket',
|
||||
'Errors': 'Fehlermeldungen',
|
||||
'escape': 'escape',
|
||||
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
|
||||
'Exception %s': 'Exception %s',
|
||||
'Exception %(extype)s: %(exvalue)s': 'Ausnahme %(extype)s: %(exvalue)s',
|
||||
'Exception %s': 'Ausnahme %s',
|
||||
'Exception instance attributes': 'Attribute der Ausnahmeinstanz',
|
||||
'Exit Fullscreen': 'Vollbild beenden',
|
||||
'Expand Abbreviation': 'Kürzel erweitern',
|
||||
@@ -254,7 +254,7 @@
|
||||
'extends': 'erweitert',
|
||||
'failed to compile file because:': 'Datei konnte nicht kompiliert werden, da:',
|
||||
'failed to reload module': 'neu laden des Moduls fehlgeschlagen',
|
||||
'failed to reload module because:': 'failed to reload module because:',
|
||||
'failed to reload module because:': 'Modul konnte nicht geladen werden, weil:',
|
||||
'File': 'Datei',
|
||||
'file "%(filename)s" created': 'Datei "%(filename)s" erstellt',
|
||||
'file "%(filename)s" deleted': 'Datei "%(filename)s" gelöscht',
|
||||
@@ -263,166 +263,166 @@
|
||||
'file "%s" of %s restored': 'Datei "%s" von %s wiederhergestellt',
|
||||
'file changed on disk': 'Datei auf Festplatte geändert',
|
||||
'file does not exist': 'Datei existiert nicht',
|
||||
'file not found': 'file not found',
|
||||
'file not found': 'Datei nicht gefunden',
|
||||
'file saved on %(time)s': 'Datei gespeichert am %(time)s',
|
||||
'file saved on %s': 'Datei gespeichert auf %s',
|
||||
'filename': 'filename',
|
||||
'Filename': 'Filename',
|
||||
'Files added': 'Files added',
|
||||
'filename': 'dateiname',
|
||||
'Filename': 'Dateiname',
|
||||
'Files added': 'Dateien hinzugefügt',
|
||||
'filter': 'Filter',
|
||||
'Find Next': 'Nächster',
|
||||
'Find Previous': 'Vorheriger',
|
||||
'First name': 'Vorname',
|
||||
'Form has errors': 'Form has errors',
|
||||
'Form has errors': 'Das Formular hat Fehler',
|
||||
'Frames': 'Frames',
|
||||
'Functions with no doctests will result in [passed] tests.': 'Funktionen ohne doctests erzeugen [passed] in Tests',
|
||||
'GAE Email': 'GAE Email',
|
||||
'GAE Output': 'GAE Output',
|
||||
'GAE Password': 'GAE Password',
|
||||
'Generate': 'Generate',
|
||||
'Get from URL:': 'Get from URL:',
|
||||
'GAE Password': 'GAE Passwort',
|
||||
'Generate': 'Generieren',
|
||||
'Get from URL:': 'Von URL abrufen:',
|
||||
'Git Pull': 'Git Pull',
|
||||
'Git Push': 'Git Push',
|
||||
'Globals##debug': 'Globals##debug',
|
||||
'Globals##debug': 'Globales##debug',
|
||||
'Go to Matching Pair': 'Gehe zum übereinstimmenden Paar',
|
||||
'go!': 'go!',
|
||||
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
|
||||
'Google Application Id': 'Google Application Id',
|
||||
'Goto': 'Goto',
|
||||
'Google Application Id': 'Google-Anwendungs-ID',
|
||||
'Goto': 'Gehe zu',
|
||||
'graph model': 'graph model',
|
||||
'Graph Model': 'Graph Model',
|
||||
'Group ID': 'Gruppen ID',
|
||||
'Hello World': 'Hallo Welt',
|
||||
'Help': 'Hilfe',
|
||||
'here': 'here',
|
||||
'here': 'Hier',
|
||||
'Hide/Show Translated strings': 'Zeige/Verstecke übersetzte Strings',
|
||||
'Highlight current line': 'Highlight current line',
|
||||
'Hits': 'Hits',
|
||||
'Highlight current line': 'Aktuelle Zeile markieren',
|
||||
'Hits': 'Treffer',
|
||||
'Home': 'Startseite',
|
||||
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
|
||||
'honored only if the expression evaluates to true': 'Wird nur berücksichtigt, wenn der Ausdruck als true ausgewertet wird',
|
||||
'htmledit': 'htmledit',
|
||||
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
|
||||
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
|
||||
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
|
||||
'If start the downgrade, be patient, it may take a while to rollback': 'Wenn Sie das Downgrade starten, haben Sie etwas Geduld. Das Rollback kann einige Zeit dauern',
|
||||
'If start the upgrade, be patient, it may take a while to download': 'Wenn Sie das Upgrade starten, haben Sie etwas Geduld. Das Herunterladen kann einige Zeit dauern',
|
||||
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\r\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
|
||||
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'Falls der obere Test eine Fehler-Ticketnummer enthält deutet das auf einen Fehler in der Ausführung des Controllers hin, noch bevor der Doctest ausgeführt werden konnte. Gewöhnlich Führen fehlerhafte Einrückungen oder fehlerhafter Code ausserhalb der Funktion zu solchen Fehlern. Ein grüner Titel deutet darauf hin, dass alle Test(wenn sie vorhanden sind) erfolgreich durchlaufen wurden. In diesem Fall werden die Testresultate nicht angezeigt.',
|
||||
'If you answer "yes", be patient, it may take a while to download': 'Wenn Sie mit "Ja" antworten, seien Sie bitte geduldig. Der Download könnte eine Weile dauern.',
|
||||
'If you answer yes, be patient, it may take a while to download': 'Wenn Sie mit Ja antworten, seien Sie bitte geduldig. Der Download könnte eine Weile dauern.',
|
||||
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
|
||||
'import': 'import',
|
||||
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'Wenn Ihre Anwendung eine andere Datenbank als sqlite verwendet, müssen Sie ihre DAL in pythonanywhere konfigurieren.',
|
||||
'import': 'Import',
|
||||
'Import/Export': 'Importieren/Exportieren',
|
||||
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
|
||||
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'Verwenden Sie in der Entwicklung den Standard-Rocket-Webserver, der derzeit von diesem Debugger unterstützt wird.',
|
||||
'includes': 'Einfügen',
|
||||
'Indent with tabs': 'Indent with tabs',
|
||||
'Indent with tabs': 'Einrücken mit Tabulatoren',
|
||||
'Index': 'Index',
|
||||
'index': 'index',
|
||||
'insert new': 'neu Einfügen',
|
||||
'insert new %s': 'neu Einfügen %s',
|
||||
'inspect attributes': 'Attribute inspizieren',
|
||||
'Install': 'Installieren',
|
||||
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
|
||||
'Installation of %(plugin)s for %(app)s': 'Installation von %(Plugin)s für %(App)s',
|
||||
'Installed applications': 'Installierte Anwendungen',
|
||||
'Interaction at %s line %s': 'Interaction at %s line %s',
|
||||
'Interactive console': 'Interactive console',
|
||||
'Interaction at %s line %s': 'Interaktion bei %s Zeile %s',
|
||||
'Interactive console': 'Interaktive Konsole',
|
||||
'internal error': 'Interner Fehler',
|
||||
'internal error: %s': 'internal error: %s',
|
||||
'internal error: %s': 'interner Error: %s',
|
||||
'Internal State': 'Interner Status',
|
||||
'Invalid action': 'Ungültige Aktion',
|
||||
'Invalid application name': 'Invalid application name',
|
||||
'invalid circular reference': 'invalid circular reference',
|
||||
'Invalid application name': 'Ungültiger Anwendungsname',
|
||||
'invalid circular reference': 'ungültiger Zirkelverweis',
|
||||
'Invalid email': 'Ungültige Email',
|
||||
'Invalid git repository specified.': 'Invalid git repository specified.',
|
||||
'Invalid git repository specified.': 'Ungültiges git-Repository angegeben.',
|
||||
'invalid password': 'Ungültiges Passwort',
|
||||
'invalid password.': 'invalid password.',
|
||||
'invalid password.': 'Ungültiges Passwort.',
|
||||
'Invalid Query': 'Ungültige Abfrage',
|
||||
'invalid request': 'Ungültige Anfrage',
|
||||
'Invalid request': 'Invalid request',
|
||||
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
|
||||
'Invalid request': 'Ungültige Anfrage',
|
||||
'invalid table names (auth_* tables already defined)': 'Ungültige Tabellennamen (auth_* Tabellen bereits definiert)',
|
||||
'invalid ticket': 'Ungültiges Ticket',
|
||||
'Key': 'Key',
|
||||
'Key bindings': 'Tastenbelegungen',
|
||||
'Key bindings for ZenCoding Plugin': 'Key bindings for ZenCoding Plugin',
|
||||
'Key bindings for ZenCoding Plugin': 'Tastenbelegungen für das ZenCoding Plugin',
|
||||
'Key bindings for ZenConding Plugin': 'Tastenbelegungen für das ZenConding Plugin',
|
||||
'Keyboard shortcuts': 'Tastenkombination',
|
||||
'kill process': 'kill process',
|
||||
'kill process': 'Prozess zu töten',
|
||||
'language file "%(filename)s" created/updated': 'Sprachdatei "%(filename)s" erstellt/aktualisiert',
|
||||
'Language files (static strings) updated': 'Sprachdatei (statisch Strings) aktualisiert',
|
||||
'languages': 'Sprachen',
|
||||
'Languages': 'Sprachen',
|
||||
'languages updated': 'Sprachen aktualisiert',
|
||||
'Last name': 'Nachname',
|
||||
'Last Revision': 'Last Revision',
|
||||
'Last Revision': 'Letzete Revision',
|
||||
'Last saved on:': 'Zuletzt gespeichert am:',
|
||||
'Layout': 'Layout',
|
||||
'License for': 'Lizenz für',
|
||||
'License:': 'License:',
|
||||
'Line Nr': 'Line Nr',
|
||||
'Line number': 'Line number',
|
||||
'lists by exception': 'lists by exception',
|
||||
'License:': 'Lizenz:',
|
||||
'Line Nr': 'Zeilen Nr',
|
||||
'Line number': 'Zeilennummer',
|
||||
'lists by exception': 'Listen nach Ausnahme',
|
||||
'lists by ticket': 'nach Ticket aufgelistet',
|
||||
'Loading...': 'Loading...',
|
||||
'Loading...': 'Laden...',
|
||||
'loading...': 'lade...',
|
||||
'Local Apps': 'Local Apps',
|
||||
'locals': 'locals',
|
||||
'Locals##debug': 'Locals##debug',
|
||||
'Local Apps': 'Lokale Apps',
|
||||
'locals': 'lokales',
|
||||
'Locals##debug': 'Lokales##debug',
|
||||
'located in the file': 'befindet sich in der Datei',
|
||||
'login': 'anmelden',
|
||||
'Login': 'Anmelden',
|
||||
'Login successful': 'Login successful',
|
||||
'Login successful': 'Login erfolgreich',
|
||||
'Login to the Administrative Interface': 'An das Administrations-Interface anmelden',
|
||||
'Login/Register': 'Login/Register',
|
||||
'Login/Register': 'Login/Registrieren',
|
||||
'Logout': 'Abmelden',
|
||||
'lost password': 'lost password',
|
||||
'lost password': 'Passwort vergessen',
|
||||
'Lost Password': 'Passwort vergessen',
|
||||
'lost password?': 'Passwort vergessen?',
|
||||
'Main Menu': 'Hauptmenü',
|
||||
'Manage': 'Verwalten',
|
||||
'Manage %(action)s': 'Manage %(action)s',
|
||||
'Manage Access Control': 'Manage Access Control',
|
||||
'Manage Admin Users/Students': 'Manage Admin Users/Students',
|
||||
'Manage Cache': 'Manage Cache',
|
||||
'Manage Students': 'Manage Students',
|
||||
'Manage %(action)s': '%(action)s verwalten',
|
||||
'Manage Access Control': 'Zugriffskontrolle verwalten',
|
||||
'Manage Admin Users/Students': 'Admin-User/Studenten verwalten',
|
||||
'Manage Cache': 'Cache verwalten',
|
||||
'Manage Students': 'Studenten verwalten',
|
||||
'Match Pair': 'Paare finden',
|
||||
'Memberships': 'Memberships',
|
||||
'Memberships': 'Mitgliedschaften',
|
||||
'Menu Model': 'Menü Modell',
|
||||
'merge': 'verbinden',
|
||||
'Merge Lines': 'Zeilen zusammenfügen',
|
||||
'Models': 'Modelle',
|
||||
'models': 'Modelle',
|
||||
'Modified On': 'Modified On',
|
||||
'Modified On': 'Geändert am',
|
||||
'Modules': 'Module',
|
||||
'modules': 'Module',
|
||||
'Multi User Mode': 'Multi User Mode',
|
||||
'Multi User Mode': 'Multi-User-Modus',
|
||||
'Name': 'Name',
|
||||
'new application "%s" created': 'neue Anwendung "%s" erzeugt',
|
||||
'new application "%s" imported': 'new application "%s" imported',
|
||||
'New Application Wizard': 'New Application Wizard',
|
||||
'new application "%s" imported': 'Neue Anwendung "%s" importiert',
|
||||
'New Application Wizard': 'Neuer Anwendungs Assistent',
|
||||
'New application wizard': 'Neue Anwendung per Assistent',
|
||||
'new plugin installed': 'Neues Plugin wurde installiert',
|
||||
'New plugin installed: %s': 'New plugin installed: %s',
|
||||
'New plugin installed: %s': 'Neues Plugin installiert: %s',
|
||||
'New Record': 'Neuer Datensatz',
|
||||
'new record inserted': 'Neuer wurde Datensatz eingefügt',
|
||||
'New simple application': 'Neue einfache Anwendung',
|
||||
'next': 'next',
|
||||
'next %s rows': 'next %s rows',
|
||||
'next': 'Nächste',
|
||||
'next %s rows': 'nächste %s Zeilen',
|
||||
'next 100 rows': 'nächsten 100 Zeilen',
|
||||
'Next Edit Point': 'nächster Bearbeitungsschritt',
|
||||
'NO': 'NEIN',
|
||||
'no changes': 'no changes',
|
||||
'no changes': 'keine Änderungen',
|
||||
'No databases in this application': 'Keine Datenbank in dieser Anwendung',
|
||||
'No Interaction yet': 'No Interaction yet',
|
||||
'no match': 'no match',
|
||||
'No Interaction yet': 'Noch keine Interaktion',
|
||||
'no match': 'keine Übereinstimmung',
|
||||
'no package selected': 'Kein Paket ausgewählt',
|
||||
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
|
||||
'no permission to uninstall "%s"': 'Keine Berechtigung zum Deinstallieren von "%s"',
|
||||
'No ticket_storage.txt found under /private folder': 'Kein ticket_storage.txt unter /private folder gefunden',
|
||||
'Node:': 'Node:',
|
||||
'Not Authorized': 'Not Authorized',
|
||||
'Not supported': 'Not supported',
|
||||
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
|
||||
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
|
||||
'Node:': 'Hinweis:',
|
||||
'Not Authorized': 'Nicht berechtigt',
|
||||
'Not supported': 'Nicht unterstützt',
|
||||
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Hinweis: Wenn Sie einen Fehler mit dem Github-Statuscode 128 erhalten, stellen Sie sicher, dass das System und der Account, von dem Sie das Deployment durchführen, über einen entsprechenden ssh-Schlüssel im Account "openshift" verfügen.',
|
||||
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": 'In der Produktion müssen Sie Ihren Webserver so konfigurieren, dass er einen Prozess und mehrere Threads verwendet, um diesen Debugger zu verwenden.',
|
||||
'online designer': 'Online Designer',
|
||||
'Open new app in new window': 'Open new app in new window',
|
||||
'Open new app in new window': 'Neue App in neuem Fenster öffnen',
|
||||
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
|
||||
'OpenShift Output': 'OpenShift Output',
|
||||
'OpenShift Output': 'OpenShift Ausgabe',
|
||||
'or alternatively': 'oder Alternativ',
|
||||
'Or Get from URL:': 'oder von folgender URL herunterladen:',
|
||||
'or import from csv file': 'oder importieren von cvs Datei',
|
||||
@@ -430,52 +430,52 @@
|
||||
'or provide application url:': 'oder geben Sie eine Anwendungs-URL an:',
|
||||
'Origin': 'Herkunft',
|
||||
'Original/Translation': 'Original/übersetzung',
|
||||
'Overview': 'Overview',
|
||||
'Overview': 'Übersicht',
|
||||
'Overwrite installed app': 'Installierte Anwendungen überschreiben',
|
||||
'Pack all': 'Verpacke alles',
|
||||
'Pack compiled': 'Verpacke kompiliert',
|
||||
'Pack custom': 'Verpacke individuell',
|
||||
'pack plugin': 'Plugin verpacken',
|
||||
'Password': 'Passwort',
|
||||
'password changed': 'password changed',
|
||||
'Past revisions': 'Past revisions',
|
||||
'Path to appcfg.py': 'Path to appcfg.py',
|
||||
'Path to local openshift repo root.': 'Path to local openshift repo root.',
|
||||
'password changed': 'passwort geändert',
|
||||
'Past revisions': 'Vergangene Revisionen',
|
||||
'Path to appcfg.py': 'Pfad zu appcfg.py',
|
||||
'Path to local openshift repo root.': 'Pfad zum lokalen OpenShift-Repo-root.',
|
||||
'Peeking at file': 'Dateiansicht',
|
||||
'Permission': 'Permission',
|
||||
'Permissions': 'Permissions',
|
||||
'Please': 'Please',
|
||||
'Permission': 'Berechtigung',
|
||||
'Permissions': 'Berechtigungen',
|
||||
'Please': 'Bitte',
|
||||
'please wait!': 'Bitte warten!',
|
||||
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
|
||||
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" deleted',
|
||||
'Please wait, giving pythonanywhere a moment...': 'Bitte warten Sie, und geben Sie pythonanywhere einen Moment Zeit...',
|
||||
'plugin "%(plugin)s" deleted': 'Plugin "%(plugin) s" wurde gelöscht',
|
||||
'Plugin "%s" in application': 'Plugin "%s" in Anwendung',
|
||||
'plugin not specified': 'plugin not specified',
|
||||
'Plugin page': 'Plugin page',
|
||||
'plugin not specified': 'Plugin nicht angegeben',
|
||||
'Plugin page': 'Plugin seite',
|
||||
'plugins': 'plugins',
|
||||
'Plugins': 'Plugins',
|
||||
'Plural Form #%s': 'Plural Form #%s',
|
||||
'Plural-Forms:': 'Plural-Forms:',
|
||||
'Plural Form #%s': 'Plural Formen #%s',
|
||||
'Plural-Forms:': 'Plural Formen:',
|
||||
'Powered by': 'Unterstützt von',
|
||||
'Preferences saved correctly': 'Preferences saved correctly',
|
||||
'Preferences saved on session only': 'Preferences saved on session only',
|
||||
'previous %s rows': 'previous %s rows',
|
||||
'Preferences saved correctly': 'Einstellungen korrekt gespeichert',
|
||||
'Preferences saved on session only': 'Einstellungen nur in der Sitzung gespeichert',
|
||||
'previous %s rows': 'vorherige %s Zeilen',
|
||||
'previous 100 rows': 'vorherige 100 zeilen',
|
||||
'Previous Edit Point': 'vorheriger Bearbeitungsschritt',
|
||||
'Private files': 'Private files',
|
||||
'private files': 'private files',
|
||||
'Private files': 'Private Dateien',
|
||||
'private files': 'private Dateien',
|
||||
'Project Progress': 'Projekt Fortschritt',
|
||||
'Pull': 'Pull',
|
||||
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
|
||||
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
|
||||
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull fehlgeschlagen, bestimmte Dateien konnten nicht ausgecheckt werden. Überprüfen Sie die Protokolle für Details.',
|
||||
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull ist nicht möglich, weil Sie nicht gespeicherte Dateien haben. Reparieren Sie sie im Arbeitsbaum und versuchen Sie es erneut.',
|
||||
'Push': 'Push',
|
||||
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
|
||||
'pygraphviz library not found': 'pygraphviz library not found',
|
||||
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push fehlgeschlagen, es sind nicht fusionierte Einträge im Cache. Beheben Sie fusionierungsprobleme manuell und versuchen Sie es erneut.',
|
||||
'pygraphviz library not found': 'pygraphviz Bibliothek nicht gefunden',
|
||||
'PythonAnywhere Apps': 'PythonAnywhere Apps',
|
||||
'PythonAnywhere Password': 'PythonAnywhere Password',
|
||||
'PythonAnywhere Password': 'PythonAnywhere Passwort',
|
||||
'Query:': 'Abfrage:',
|
||||
'RAM': 'RAM',
|
||||
'RAM Cache Keys': 'RAM Cache Keys',
|
||||
'Ram Cleared': 'Ram Cleared',
|
||||
'Ram Cleared': 'Ram geleert',
|
||||
'Rapid Search': 'Schnelle Suche',
|
||||
'Record': 'Record',
|
||||
'record': 'Datensatz',
|
||||
@@ -483,91 +483,91 @@
|
||||
'record id': 'Datensatz id',
|
||||
'Record ID': 'Datensatz ID',
|
||||
'Record id': 'Record id',
|
||||
'refresh': 'refresh',
|
||||
'refresh': 'Aktualisieren',
|
||||
'Register': 'Registrieren',
|
||||
'register': 'Registrierung',
|
||||
'Registration key': 'Registrierungsschlüssel',
|
||||
'reload': 'Neu laden',
|
||||
'Reload routes': 'Routen neu laden',
|
||||
'Remove compiled': 'Bytecode löschen',
|
||||
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
|
||||
'Removed Breakpoint on %s at line %s': 'Breakpoint entfernt an %s auf Zeile %s',
|
||||
'Replace': 'Ersetzen',
|
||||
'Replace All': 'Alle Ersetzen',
|
||||
'Repository (%s)': 'Repository (%s)',
|
||||
'Repository (%s)': 'Speiche-Archiv (%s)',
|
||||
'request': 'Anfrage',
|
||||
'requires distutils, but not installed': 'requires distutils, but not installed',
|
||||
'requires python-git, but not installed': 'requires python-git, but not installed',
|
||||
'requires distutils, but not installed': 'erfordert distutils, aber nicht installiert',
|
||||
'requires python-git, but not installed': 'rfordert Python-Git, aber nicht installiert',
|
||||
'Reset Password key': 'Passwortschlüssel zurücksetzen',
|
||||
'Resolve Conflict file': 'bereinige Konflikt-Datei',
|
||||
'response': 'Antwort',
|
||||
'restart': 'restart',
|
||||
'restart': 'Neustart',
|
||||
'restore': 'wiederherstellen',
|
||||
'return': 'return',
|
||||
'Revert': 'Revert',
|
||||
'return': 'Zurück',
|
||||
'Revert': 'Zurückkehren',
|
||||
'revert': 'zurückkehren',
|
||||
'reverted to revision %s': 'reverted to revision %s',
|
||||
'reverted to revision %s': 'Zurück zur revision %s',
|
||||
'Revision %s': 'Revision %s',
|
||||
'Revision:': 'Revision:',
|
||||
'Role': 'Rolle',
|
||||
'Roles': 'Roles',
|
||||
'Roles': 'Rollen',
|
||||
'Rows in table': 'Zeilen in Tabelle',
|
||||
'Rows in Table': 'Rows in Table',
|
||||
'Rows in Table': 'Zeilen in der Tabelle',
|
||||
'Rows selected': 'Zeilen ausgewählt',
|
||||
'rules are not defined': 'Regeln sind nicht definiert',
|
||||
'Run tests': 'Run tests',
|
||||
'Run tests in this file': 'Run tests in this file',
|
||||
'Run tests': 'Tests ausführen',
|
||||
'Run tests in this file': 'Führen Sie Tests in dieser Datei aus',
|
||||
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Tests in dieser Datei ausführen (um alle Dateien auszuführen, kann auch der Button 'test' genutzt werden)",
|
||||
'Running on %s': 'läuft auf %s',
|
||||
'Save': 'Speichern',
|
||||
'save': 'Speichern',
|
||||
'Save file:': 'Speichere Datei:',
|
||||
'Save file: %s': 'Speichere Datei: %s',
|
||||
'Save model as...': 'Save model as...',
|
||||
'Save model as...': 'Modell speichern als...',
|
||||
'Save via Ajax': 'via Ajax speichern',
|
||||
'Saved file hash:': 'Gespeicherter Datei-Hash:',
|
||||
'Screenshot %s': 'Screenshot %s',
|
||||
'Search': 'Search',
|
||||
'Screenshot %s': 'Bildschirmfoto %s',
|
||||
'Search': 'Suche',
|
||||
'Select Files to Package': 'Dateien zum Paketieren wählen',
|
||||
'selected': 'ausgewählt(e)',
|
||||
'session': 'Sitzung',
|
||||
'session expired': 'Sitzung abgelaufen',
|
||||
'Session saved correctly': 'Session saved correctly',
|
||||
'Session saved on session only': 'Session saved on session only',
|
||||
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
|
||||
'Session saved correctly': 'Sitzung korrekt gespeichert',
|
||||
'Session saved on session only': 'Sitzung gespeichert auf Nur Sitzung',
|
||||
'Set Breakpoint on %s at line %s: %s': 'Setze Breakpoint auf %s an Linie %s: %s',
|
||||
'shell': 'Shell',
|
||||
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
|
||||
'Singular Form': 'Singular Form',
|
||||
'Singular Form': 'Einzahl',
|
||||
'Site': 'Seite',
|
||||
'Size of cache:': 'Size of cache:',
|
||||
'skip to generate': 'skip to generate',
|
||||
'Size of cache:': 'Größe des Caches:',
|
||||
'skip to generate': 'überspringen, um zu generieren',
|
||||
'some files could not be removed': 'einige Dateien konnten nicht gelöscht werden',
|
||||
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
|
||||
'Sorry, could not find mercurial installed': 'Sorry, could not find mercurial installed',
|
||||
'source : db': 'source : db',
|
||||
'Something went wrong please wait a few minutes before retrying': 'Es ist ein Fehler aufgetreten. Bitte warten Sie einige Minuten, bevor Sie es erneut versuchen',
|
||||
'Sorry, could not find mercurial installed': 'Leider konnte mercurial nicht installiert werden',
|
||||
'source : db': 'Quelle : db',
|
||||
'source : filesystem': 'Quelle : Dateisystem',
|
||||
'Start a new app': 'Start a new app',
|
||||
'Start a new app': 'Starten Sie eine neue App',
|
||||
'Start searching': 'Suche beginnen',
|
||||
'Start wizard': 'Assistent starten',
|
||||
'state': 'Status',
|
||||
'Static': 'Statisch',
|
||||
'static': 'statische Dateien',
|
||||
'Static files': 'statische Dateien',
|
||||
'Statistics': 'Statistics',
|
||||
'Step': 'Step',
|
||||
'step': 'step',
|
||||
'stop': 'stop',
|
||||
'Statistics': 'Statistiken',
|
||||
'Step': 'Schritt',
|
||||
'step': 'schritt',
|
||||
'stop': 'Halt',
|
||||
'Stylesheet': 'Stylesheet',
|
||||
'submit': 'Absenden',
|
||||
'Submit': 'Submit',
|
||||
'successful': 'successful',
|
||||
'Submit': 'Einreichen',
|
||||
'successful': 'erfolgreich',
|
||||
'Sure you want to delete this object?': 'Wollen Sie das Objekt wirklich löschen?',
|
||||
'switch to : db': 'wechsel zu : db',
|
||||
'switch to : filesystem': 'switch to : filesystem',
|
||||
'Tab width (# characters)': 'Tab width (# characters)',
|
||||
'switch to : filesystem': 'wechseln zu : filesystem',
|
||||
'Tab width (# characters)': 'Tabulatorbreite (# characters)',
|
||||
'table': 'Tabelle',
|
||||
'Table': 'Table',
|
||||
'Table': 'Tabelle',
|
||||
'Table name': 'Tabellen Name',
|
||||
'Temporary': 'Temporary',
|
||||
'Temporary': 'Temporär',
|
||||
'test': 'Test',
|
||||
'test_def': 'test_def',
|
||||
'test_for': 'test_for',
|
||||
@@ -576,8 +576,8 @@
|
||||
'Testing application': 'Teste die Anwendung',
|
||||
'Testing controller': 'Teste Controller',
|
||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'Die "query" ist eine Bedingung wie "db.table1.field1 == \'Wert\'". Etwas wie "db.table1.field1 db.table2.field2 ==" führt zu einem SQL JOIN.',
|
||||
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
|
||||
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
|
||||
'The app exists, was created by wizard, continue to overwrite!': 'Die App existiert, wurde von Wizard erstellt, weiter überschreiben!',
|
||||
'The app exists, was NOT created by wizard, continue to overwrite!': 'Die App existiert, wurde NICHT vom Assistenten erstellt, weiter überschreiben!',
|
||||
'the application logic, each URL path is mapped in one exposed function in the controller': 'Die Logik der Anwendung, jeder URL-Pfad wird auf eine Funktion abgebildet die der Controller zur Verfügung stellt',
|
||||
'The application logic, each URL path is mapped in one exposed function in the controller': 'Die Logik der Anwendung, jeder URL-Pfad wird auf eine Funktion abgebildet die der Controller zur Verfügung stellt',
|
||||
'the data representation, define database tables and sets': 'Die Datenrepräsentation definiert Mengen von Tabellen und Datenbanken',
|
||||
@@ -585,39 +585,39 @@
|
||||
'The output of the file is a dictionary that was rendered by the view': 'Die Ausgabe der Datei ist ein "dictionary" und wurde vom "view" gerendert',
|
||||
'The presentations layer, views are also known as templates': 'Die Präsentationsschicht, Views sind auch bekannt als Vorlagen/Templates',
|
||||
'the presentations layer, views are also known as templates': 'Die Präsentationsschicht, Views sind auch bekannt als Vorlagen/Templates',
|
||||
'Theme': 'Theme',
|
||||
'Theme': 'Thema',
|
||||
'There are no controllers': 'Keine Controller vorhanden',
|
||||
'There are no models': 'Keine Modelle vorhanden',
|
||||
'There are no modules': 'Keine Module vorhanden',
|
||||
'There are no plugins': 'Keine Plugins vorhanden',
|
||||
'There are no private files': 'Keine privaten Dateien vorhanden',
|
||||
'There are no static files': 'Keine statischen Dateien vorhanden',
|
||||
'There are no translators': 'There are no translators',
|
||||
'There are no translators': 'Es gibt keine Übersetzer',
|
||||
'There are no translators, only default language is supported': 'Keine übersetzungen vorhanden, nur die voreingestellte Sprache wird Unterstützt',
|
||||
'There are no views': 'Keine Views vorhanden',
|
||||
'These files are not served, they are only available from within your app': 'Diese Dateien werden nicht ausgeliefert, sie sind nur innerhalb Ihrer App verfügbar',
|
||||
'These files are served without processing, your images go here': 'Diese Dateien werden ohne Verarbeitung ausgeliefert. Beispielsweise Bilder kommen hier hin.',
|
||||
'these files are served without processing, your images go here': 'Diese Dateien werden ohne Verarbeitung ausgeliefert. Beispielsweise Bilder kommen hier hin.',
|
||||
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
|
||||
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": 'Dieser Debugger funktioniert möglicherweise nicht ordnungsgemäß, wenn Sie keinen Thread-Webserver haben oder mehrere Daemon-Prozesse verwenden.',
|
||||
'This is a copy of the scaffolding application': 'Dies ist eine Kopie einer Grundgerüst-Anwendung',
|
||||
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
|
||||
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
|
||||
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'Dies ist eine experimentelle Funktion und muss noch getestet werden. Wenn Sie sich für ein Downgrade entscheiden, tun Sie dies auf eigene Gefahr',
|
||||
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'Dies ist eine experimentelle Funktion und muss noch getestet werden. Wenn Sie sich für ein Upgrade entscheiden, tun Sie dies auf eigene Gefahr',
|
||||
'This is the %(filename)s template': 'Dies ist das Template %(filename)s',
|
||||
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
|
||||
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
|
||||
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
|
||||
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
|
||||
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
|
||||
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": 'Auf dieser Seite können Sie Ihre Änderungen in ein OpenShift-App-Repo übernehmen und in Ihre Cloud-Instanz verschieben. Dies setzt voraus, dass Sie die Anwendungsinstanz bereits mit dem web2py-Skelett erstellt haben und dieses Repo auf einem Dateisystem haben, auf das diese web2py-Instanz zugreifen kann. Für diese Funktionalität muss GitPython installiert sein und sich auf dem Python-Pfad der Runtime befinden, in der web2py ausgeführt wird.',
|
||||
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'Diese Seite kann Ihre Anwendung in die Cloud der Google App Engine Computing hochladen. Beachten Sie, dass Sie zunächst Indexe lokal erstellen müssen. Dies geschieht, indem Sie den Google Appserver installieren und die App einmalig lokal ausführen. Andernfalls treten Fehler bei der Auswahl von Datensätzen auf. Achtung: Die Bereitstellung kann abhängig von der Netzwerkgeschwindigkeit sehr lange dauern. Achtung: Ihre app.yaml wird überschrieben. SENDEN SIE NICHT ZWEIMAL EIN.',
|
||||
'this page to see if a breakpoint was hit and debug interaction is required.': 'Auf dieser Seite können Sie sehen, ob ein breakpoint getroffen wurde und eine Debug-Interaktion erforderlich ist.',
|
||||
'This will pull changes from the remote repo for application "%s"?': 'Dadurch werden Änderungen vom Remote-Repo für die Anwendung "% s" übernommen?',
|
||||
'This will push changes to the remote repo for application "%s".': 'Dadurch werden Änderungen an das Remote-Repo für die Anwendung "% s" übertragen.',
|
||||
'Ticket': 'Ticket',
|
||||
'Ticket ID': 'Ticket ID',
|
||||
'Ticket Missing': 'Ticket Missing',
|
||||
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
||||
'Ticket Missing': 'Ticket fehlt',
|
||||
'Time in Cache (h:m:s)': 'Zeit im Cache (h:m:s)',
|
||||
'Timestamp': 'Zeitstempel',
|
||||
'TM': 'TM',
|
||||
'to previous version.': 'zu einer früheren Version.',
|
||||
'To create a plugin, name a file/folder plugin_[name]': 'Um ein Plugin zu erstellen benennen Sie eine(n) Datei/Ordner plugin_[Name]',
|
||||
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
|
||||
'to use the debugger!': 'to use the debugger!',
|
||||
'To emulate a breakpoint programatically, write:': 'Um einen breapoint programmatisch zu emulieren, schreiben Sie:',
|
||||
'to use the debugger!': 'um den Debugger zuverwenden!',
|
||||
'toggle breakpoint': 'Breakpoint aktivieren/deaktivieren',
|
||||
'Toggle comment': ' Kommentar ein-/ausblenden',
|
||||
'Toggle Fullscreen': 'Vollbild ein-/ausschalten',
|
||||
@@ -628,31 +628,31 @@
|
||||
'try something like': 'Versuchen Sie so etwas wie',
|
||||
'Try the mobile interface': 'Testen Sie das Interface für Handys',
|
||||
'try view': 'Versuche view',
|
||||
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
|
||||
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
|
||||
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Geben Sie den PDB-Debuggerbefehl hier ein und drücken Sie die Eingabetaste, um ihn auszuführen.',
|
||||
'Type some Python code in here and hit Return (Enter) to execute it.': 'Geben Sie hier einen Python-Code ein und drücken Sie die Eingabetaste, um ihn auszuführen.',
|
||||
'Unable to check for upgrades': 'Überprüfen von Upgrades nicht möglich',
|
||||
'unable to create application "%s"': 'Erzeugen von Anwendung "%s" nicht möglich',
|
||||
'unable to delete file "%(filename)s"': 'Löschen von Dateien "%(filename)s" nicht möglich',
|
||||
'unable to delete file plugin "%(plugin)s"': 'unable to delete file plugin "%(plugin)s"',
|
||||
'Unable to determine the line number!': 'Unable to determine the line number!',
|
||||
'unable to delete file plugin "%(plugin)s"': 'Datei-Plugin "%(plugin)s" kann nicht gelöscht werden',
|
||||
'Unable to determine the line number!': 'Die Zeilennummer kann nicht ermittelt werden!',
|
||||
'Unable to download': 'Herunterladen nicht möglich',
|
||||
'Unable to download app': 'Herunterladen der Anwendung nicht möglich',
|
||||
'Unable to download app because:': 'Unable to download app because:',
|
||||
'unable to download layout': 'unable to download layout',
|
||||
'unable to download plugin: %s': 'unable to download plugin: %s',
|
||||
'Unable to download the list of plugins': 'Unable to download the list of plugins',
|
||||
'unable to install plugin "%s"': 'unable to install plugin "%s"',
|
||||
'Unable to download app because:': 'App kann nicht heruntergeladen werden, weil:',
|
||||
'unable to download layout': 'Layout kann nicht heruntergeladen werden',
|
||||
'unable to download plugin: %s': 'Folgendes Plugin konnte nicht heruntergeladen werden: %s',
|
||||
'Unable to download the list of plugins': 'Die Liste der Plugins kann nicht heruntergeladen werden',
|
||||
'unable to install plugin "%s"': 'Plugin "%s" kann nicht installiert werden',
|
||||
'unable to parse csv file': 'Analysieren der cvs Datei nicht möglich',
|
||||
'unable to uninstall "%s"': 'Deinstallieren von "%s" nicht möglich',
|
||||
'unable to upgrade because "%s"': 'unable to upgrade because "%s"',
|
||||
'unable to upgrade because "%s"': 'Upgrade wegen "%s" nicht möglich',
|
||||
'uncheck all': 'Auswahl entfernen',
|
||||
'Uninstall': 'Deinstallieren',
|
||||
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
|
||||
'Unsupported webserver working mode: %s': 'Nicht unterstützte Webserver-Arbeitsmodell: %s',
|
||||
'update': 'Aktualisieren',
|
||||
'update all languages': 'Aktualisiere alle Sprachen',
|
||||
'Update:': 'Aktualisiere:',
|
||||
'Upgrade': 'Upgrade',
|
||||
'upgrade now to %s': 'upgrade now to %s',
|
||||
'upgrade now to %s': 'Upgrade jetzt zu %s',
|
||||
'upgrade web2py now': 'web2py jetzt upgraden',
|
||||
'upload': 'upload',
|
||||
'Upload': 'Upload',
|
||||
@@ -670,7 +670,7 @@
|
||||
'User ID': 'Benutzer ID',
|
||||
'Username': 'Username',
|
||||
'Users': 'Users',
|
||||
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
|
||||
'Using the shell may lock the database to other users of this app.': 'Durch die Verwendung des Shell kann die Datenbank für andere Benutzer dieser App gesperrt werden.',
|
||||
'variables': 'Variablen',
|
||||
'Version': 'Version',
|
||||
'Version %s.%s.%s (%s) %s': 'Version %s.%s.%s (%s) %s',
|
||||
@@ -680,35 +680,35 @@
|
||||
'view': 'Ansicht',
|
||||
'Views': 'Ansichten',
|
||||
'views': 'Ansichten',
|
||||
'Warning!': 'Warning!',
|
||||
'WARNING:': 'WARNING:',
|
||||
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
|
||||
'Warning!': 'Warnung!',
|
||||
'WARNING:': 'WARNUNG:',
|
||||
'WARNING: The following views could not be compiled:': 'WARNUNG: Die folgenden Ansichten konnten nicht kompiliert werden:',
|
||||
'Web Framework': 'Web Framework',
|
||||
'web2py Admin Password': 'web2py Admin Password',
|
||||
'web2py apps to deploy': 'web2py apps to deploy',
|
||||
'web2py Admin Password': 'Administratorkennwort für web2py',
|
||||
'web2py apps to deploy': 'Web2py-Apps zur Bereitstellung',
|
||||
'web2py Debugger': 'web2py Debugger',
|
||||
'web2py downgrade': 'web2py downgrade',
|
||||
'web2py downgrade': 'web2py Downgrade',
|
||||
'web2py is up to date': 'web2py ist aktuell',
|
||||
'web2py online debugger': 'web2py online debugger',
|
||||
'web2py online debugger': 'web2py Online-Debugger',
|
||||
'web2py Recent Tweets': 'Neuste Tweets von web2py',
|
||||
'web2py upgrade': 'web2py upgrade',
|
||||
'web2py upgraded; please restart it': 'web2py upgraded; please restart it',
|
||||
'web2py upgrade': 'web2py-Upgrade',
|
||||
'web2py upgraded; please restart it': 'web2py aktualisiert bitte neu starten',
|
||||
'Welcome %s': 'Willkommen %s',
|
||||
'Welcome to web2py': 'Willkommen zu web2py',
|
||||
'Which called the function': 'welche die Funktion aufrief',
|
||||
'Working...': 'Working...',
|
||||
'Working...': 'Arbeitet...',
|
||||
'Wrap with Abbreviation': 'mit Kürzel einhüllen',
|
||||
'WSGI reference name': 'WSGI reference name',
|
||||
'WSGI reference name': 'WSGI Referenzname',
|
||||
'xml': 'xml',
|
||||
'YES': 'JA',
|
||||
'Yes': 'Yes',
|
||||
'Yes': 'JA',
|
||||
'You are successfully running web2py': 'web2by wird erfolgreich ausgeführt',
|
||||
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
|
||||
'You can inspect variables using the console below': 'You can inspect variables using the console below',
|
||||
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'Sie können Breakpoint auch im Bearbeitungsfenster festlegen und entfernen, indem Sie die Schaltfläche Breakpoint umschalten verwenden',
|
||||
'You can inspect variables using the console below': 'Sie können Variablen mit der folgenden Konsole überprüfen',
|
||||
'You can modify this application and adapt it to your needs': 'Sie können diese Anwendung verändern und Ihren Bedürfnissen anpassen',
|
||||
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
|
||||
'You have one more login attempt before you are locked out': 'Sie haben einen weiteren Anmeldeversuch, bevor Sie gesperrt werden',
|
||||
'You need to set up and reach a': 'You need to set up and reach a',
|
||||
'You only need these if you have already registered': 'You only need these if you have already registered',
|
||||
'You only need these if you have already registered': 'Sie benötigen diese nur, wenn Sie sich bereits registriert haben.',
|
||||
'You visited the url': 'Sie besuchten die URL',
|
||||
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
|
||||
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Ihre Bewerbung wird blockiert, bis Sie auf eine Aktionsschaltfläche klicken (next, step, continue usw.).',
|
||||
}
|
||||
|
||||
@@ -216,6 +216,7 @@
|
||||
'Enable': 'Enable',
|
||||
'Enable Close-Tag': 'Enable Close-Tag',
|
||||
'Enable Code Folding': 'Enable Code Folding',
|
||||
'Enter an integer between %(min)g and %(max)g': 'Enter an integer between %(min)g and %(max)g',
|
||||
'Enterprise Web Framework': 'Enterprise Web Framework',
|
||||
'Error': 'Error',
|
||||
'Error logs for "%(app)s"': 'Log degli errori per "%(app)s"',
|
||||
|
||||
@@ -29,5 +29,14 @@ jQuery(function(){
|
||||
}
|
||||
hoverMenu(); // first page load
|
||||
jQuery(window).resize(hoverMenu); // on resize event
|
||||
jQuery('ul.nav li.dropdown a').click(function(){window.location=jQuery(this).attr('href');});
|
||||
jQuery('ul.nav li.dropdown a').click(function(){
|
||||
if(jQuery(this).attr("target")){
|
||||
window.open(
|
||||
jQuery(this).attr('href'),
|
||||
jQuery(this).attr('target') // <- This is what makes it open in a new window.
|
||||
);
|
||||
} else {
|
||||
window.location=jQuery(this).attr('href');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -9,16 +9,19 @@
|
||||
});
|
||||
//--></script>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
||||
{{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>
|
||||
<li class="nav-item"><a href="#alltables" data-toggle="tab" class="nav-link active">Tables</a></li>
|
||||
<li class="nav-item"><a href="#hooks" data-toggle="tab" class="nav-link">Hooks</a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="alltables">
|
||||
<table class="table">
|
||||
<table class="table table-striped">
|
||||
{{for db in sorted(databases):}}
|
||||
{{for table in databases[db].tables:}}
|
||||
{{qry='%s.%s.id>0'%(db,table)}}
|
||||
@@ -37,10 +40,10 @@
|
||||
{{pass}}
|
||||
<tr>
|
||||
<th style="font-size: 1.75em;">
|
||||
{{=A("%s.%s" % (db,table),_href=URL('select',args=[db],vars=dict(query=qry)))}}
|
||||
» {{=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")}}
|
||||
{{=A(str(T('New Record')),_href=URL('insert',args=[db,table]),_class="btn btn-primary")}}
|
||||
</td>
|
||||
</tr>
|
||||
{{pass}}
|
||||
@@ -61,28 +64,31 @@
|
||||
</pre>
|
||||
{{pass}}
|
||||
{{if table:}}
|
||||
{{=A(str(T('New Record')),_href=URL('insert',args=[request.args[0],table]),_class="btn btn-default")}}<br/><br/>
|
||||
{{=A(str(T('New Record')),_href=URL('insert',args=[request.args[0],table]),_class="btn btn-primary", _role="button")}}<br/><br/>
|
||||
<hr />
|
||||
<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/>
|
||||
<p class="text-muted">{{=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 start>0:}}{{=A(T('previous %s rows') % step,_href=URL('select',args=request.args[0],vars=dict(start=start-step)),_class="btn btn-primary")}}{{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-primary")}}{{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')}}
|
||||
{{=SQLTABLE(rows,linkto,upload,orderby=True,_class='table table-striped table-bordered 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>
|
||||
<br/><br/>
|
||||
<hr />
|
||||
<h3>{{=T("Import/Export")}}</h3><br/>
|
||||
<a href="{{=URL('csv',args=request.args[0],vars=dict(query=query))}}" class="btn btn-primary">{{=T("export as csv file")}}</a>
|
||||
{{=formcsv or ''}}
|
||||
|
||||
{{elif request.function=='insert':}}
|
||||
@@ -268,3 +274,6 @@
|
||||
{{pass}}
|
||||
</div>
|
||||
{{pass}}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -63,12 +63,12 @@
|
||||
<h3 class="not_paused">{{=T("No Interaction yet")}}</h3>
|
||||
<div class="help span7 alert alert-block alert-info">
|
||||
<ul class="unstyled">
|
||||
<li>{{=T("You need to set up and reach a")}} {{=A(T("breakpoint"), _href=URL('breakpoints'))}} {{=T('to use the debugger!')}}</li>
|
||||
<li>{{=T.M("You need to set up and reach a [[breakpoint %s]] to use the debugger!') %URL('breakpoints')}}</li>
|
||||
<li>{{=T('To emulate a breakpoint programatically, write:')}}
|
||||
{{=CODE("from gluon.debug import dbg\n"
|
||||
"dbg.set_trace() # stop here!\n",
|
||||
counter=None)}}</li>
|
||||
<li>{{=T('Please')}} {{=A(T("refresh"), _href=URL('interact'))}} {{=T('this page to see if a breakpoint was hit and debug interaction is required.')}}</li>
|
||||
<li>{{=T.M('Please [[refresh %s]] this page to see if a breakpoint was hit and debug interaction is required.') %URL('interact')}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
{{pass}}
|
||||
|
||||
@@ -85,7 +85,7 @@ def deletefile(arglist):
|
||||
{{=peekfile('models',m)}}
|
||||
</span>
|
||||
<span class="extras">
|
||||
{{if len(defines[m]):}}{{=T("defines tables")}} {{pass}}{{=XML(', '.join([B(table).xml() for table in defines[m]]))}}
|
||||
{{if len(defines[m]):}}{{=T("defines tables")}} {{pass}}{{=XML(b', '.join([B(table).xml() for table in defines[m]]))}}
|
||||
</span>
|
||||
</li>
|
||||
{{pass}}
|
||||
@@ -118,7 +118,7 @@ for c in controllers: controller_functions+=[c[:-3]+'/%s.html'%x for x in functi
|
||||
{{=peekfile('controllers',c)}}
|
||||
</span>
|
||||
<span class="extras celled">
|
||||
{{if functions[c]:}}{{=T("exposes")}} {{pass}}{{=XML(', '.join([A(f,_href=URL(a=app,c=c[:-3],f=f)).xml() for f in functions[c]]))}}
|
||||
{{if functions[c]:}}{{=T("exposes")}} {{pass}}{{=XML(b', '.join([A(f,_href=URL(a=app,c=c[:-3],f=f)).xml() for f in functions[c]]))}}
|
||||
</span>
|
||||
</li>
|
||||
{{pass}}
|
||||
@@ -145,7 +145,7 @@ for c in controllers: controller_functions+=[c[:-3]+'/%s.html'%x for x in functi
|
||||
</span>
|
||||
<span class="extras celled">
|
||||
{{if c in extend:}}{{=T("extends")}} <b>{{=extend[c]}}</b> {{pass}}
|
||||
{{if include[c]:}}{{=T("includes")}} {{pass}}{{=XML(', '.join([B(f).xml() for f in include[c]]))}}
|
||||
{{if include[c]:}}{{=T("includes")}} {{pass}}{{=XML(b', '.join([B(f).xml() for f in include[c]]))}}
|
||||
</span>
|
||||
</li>
|
||||
{{pass}}
|
||||
|
||||
@@ -185,9 +185,9 @@ def select():
|
||||
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+)')
|
||||
regex = re.compile(r'(?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>.+)')
|
||||
regex = re.compile(r'(?P<table>\w+)\.(?P<field>\w+)=(?P<value>.+)')
|
||||
if request.vars.query:
|
||||
match = regex.match(request.vars.query)
|
||||
if match:
|
||||
@@ -224,20 +224,20 @@ def select():
|
||||
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 '',
|
||||
_name='query', _value=request.vars.query or '', _class="form-control",
|
||||
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',
|
||||
or '', _class="form-control")), TR(T('Delete:'), INPUT(_name='delete_check',
|
||||
_class='delete', _type='checkbox', value=False), ''),
|
||||
TR('', '', INPUT(_type='submit', _value=T('submit')))),
|
||||
TR('', '', INPUT(_type='submit', _value=T('submit'), _class="btn btn-primary"))),
|
||||
_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+)\..+')
|
||||
regex = re.compile(request.args[0] + r'\.(?P<table>\w+)\..+')
|
||||
match = regex.match(form.vars.query.strip())
|
||||
if match:
|
||||
table = match.group('table')
|
||||
@@ -274,7 +274,7 @@ def select():
|
||||
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')))
|
||||
INPUT(_type='submit', _value=T('import'), _class="btn btn-primary"))
|
||||
else:
|
||||
formcsv = None
|
||||
if formcsv and formcsv.process().accepted:
|
||||
@@ -392,7 +392,7 @@ def ccache():
|
||||
cache.disk.clear()
|
||||
session.flash += T("Disk Cleared")
|
||||
redirect(URL(r=request))
|
||||
|
||||
|
||||
try:
|
||||
from pympler.asizeof import asizeof
|
||||
except ImportError:
|
||||
@@ -588,7 +588,7 @@ def manage():
|
||||
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]
|
||||
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():
|
||||
@@ -604,13 +604,13 @@ def manage():
|
||||
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
|
||||
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=[]
|
||||
method_hooks = []
|
||||
for op in list_op:
|
||||
functions = []
|
||||
for f in getattr(db[t], op):
|
||||
@@ -630,16 +630,16 @@ def hooks():
|
||||
except:
|
||||
pass
|
||||
if len(functions):
|
||||
method_hooks.append({'name':op, 'functions':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})
|
||||
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(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
|
||||
@@ -652,10 +652,10 @@ def hooks():
|
||||
def d3_graph_model():
|
||||
""" See https://www.facebook.com/web2py/posts/145613995589010 from Bruno Rocha
|
||||
and also the app_admin bg_graph_model function
|
||||
|
||||
|
||||
Create a list of table dicts, called "nodes"
|
||||
"""
|
||||
|
||||
|
||||
nodes = []
|
||||
links = []
|
||||
|
||||
@@ -665,20 +665,20 @@ def d3_graph_model():
|
||||
fields = []
|
||||
for field in db[tablename]:
|
||||
f_type = field.type
|
||||
if not isinstance(f_type,str):
|
||||
if not isinstance(f_type, str):
|
||||
disp = ' '
|
||||
elif f_type == 'string':
|
||||
disp = field.length
|
||||
disp = field.length
|
||||
elif f_type == 'id':
|
||||
disp = "PK"
|
||||
disp = "PK"
|
||||
elif f_type.startswith('reference') or \
|
||||
f_type.startswith('list:reference'):
|
||||
disp = "FK"
|
||||
else:
|
||||
disp = ' '
|
||||
fields.append(dict(name= field.name, type=field.type, disp = disp))
|
||||
fields.append(dict(name=field.name, type=field.type, disp=disp))
|
||||
|
||||
if isinstance(f_type,str) and (
|
||||
if isinstance(f_type, str) and (
|
||||
f_type.startswith('reference') or
|
||||
f_type.startswith('list:reference')):
|
||||
referenced_table = f_type.split()[1].split('.')[0]
|
||||
|
||||
@@ -9,16 +9,19 @@
|
||||
});
|
||||
//--></script>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
||||
{{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>
|
||||
<li class="nav-item"><a href="#alltables" data-toggle="tab" class="nav-link active">Tables</a></li>
|
||||
<li class="nav-item"><a href="#hooks" data-toggle="tab" class="nav-link">Hooks</a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="alltables">
|
||||
<table class="table">
|
||||
<table class="table table-striped">
|
||||
{{for db in sorted(databases):}}
|
||||
{{for table in databases[db].tables:}}
|
||||
{{qry='%s.%s.id>0'%(db,table)}}
|
||||
@@ -37,10 +40,10 @@
|
||||
{{pass}}
|
||||
<tr>
|
||||
<th style="font-size: 1.75em;">
|
||||
{{=A("%s.%s" % (db,table),_href=URL('select',args=[db],vars=dict(query=qry)))}}
|
||||
» {{=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")}}
|
||||
{{=A(str(T('New Record')),_href=URL('insert',args=[db,table]),_class="btn btn-primary")}}
|
||||
</td>
|
||||
</tr>
|
||||
{{pass}}
|
||||
@@ -61,28 +64,31 @@
|
||||
</pre>
|
||||
{{pass}}
|
||||
{{if table:}}
|
||||
{{=A(str(T('New Record')),_href=URL('insert',args=[request.args[0],table]),_class="btn btn-default")}}<br/><br/>
|
||||
{{=A(str(T('New Record')),_href=URL('insert',args=[request.args[0],table]),_class="btn btn-primary", _role="button")}}<br/><br/>
|
||||
<hr />
|
||||
<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/>
|
||||
<p class="text-muted">{{=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 start>0:}}{{=A(T('previous %s rows') % step,_href=URL('select',args=request.args[0],vars=dict(start=start-step)),_class="btn btn-primary")}}{{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-primary")}}{{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')}}
|
||||
{{=SQLTABLE(rows,linkto,upload,orderby=True,_class='table table-striped table-bordered 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>
|
||||
<br/><br/>
|
||||
<hr />
|
||||
<h3>{{=T("Import/Export")}}</h3><br/>
|
||||
<a href="{{=URL('csv',args=request.args[0],vars=dict(query=query))}}" class="btn btn-primary">{{=T("export as csv file")}}</a>
|
||||
{{=formcsv or ''}}
|
||||
|
||||
{{elif request.function=='insert':}}
|
||||
@@ -268,3 +274,6 @@
|
||||
{{pass}}
|
||||
</div>
|
||||
{{pass}}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -62,16 +62,16 @@
|
||||
</center>
|
||||
|
||||
<p style="text-align:left;">
|
||||
The source code version works on all supported platforms, including Linux, but it requires Python 2.6, or 2.7 (recommended).
|
||||
It runs on Windows and most Unix systems, including <b>Linux</b> and <b>BSD</b>.
|
||||
The source code version works on Windows and most Unix systems, including <b>Linux</b>, <b>BSD</b> and <b>Mac</b> . It requires Python 2.6 (no more supported), Python 2.7 (stable) or Python 3.5+ (recommended for new projects) already installed on your system.
|
||||
There are also binary packages for Windows and Mac OS X. They include the Python 2.7 interpreter so you do not need to have it pre-installed.
|
||||
</p>
|
||||
|
||||
<h3>Instructions</h3>
|
||||
<p>After download, unzip it and click on web2py.exe (windows) or web2py.app (osx).
|
||||
To run from source, type:</p>
|
||||
{{=CODE("python2.7 web2py.py", language=None, counter='>', _class='boxCode')}}
|
||||
<p>With the binary packages, after download, just unzip it and then click on web2py.exe (windows) or web2py.app (osx).
|
||||
If you prefer to run it from source with your own Python interpreter alreay installed, type:</p>
|
||||
{{=CODE("python web2py.py", language=None, counter='>', _class='boxCode')}}
|
||||
<p>or for more info type:</p>
|
||||
{{=CODE("python2.7 web2py.py -h", language=None, counter='>', _class='boxCode')}}
|
||||
{{=CODE("python web2py.py -h", language=None, counter='>', _class='boxCode')}}
|
||||
|
||||
|
||||
<h3>Caveats</h3>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<div class="twothirds">
|
||||
<div class="padded">
|
||||
<h3><img src="{{=URL('static/images', 'web2py_logo.png')}}"> Web Framework</h3>
|
||||
<p>Free open source full-stack framework for rapid development of fast, scalable, <a href="http://www.web2py.com/book/default/chapter/01#Security" target="_blank">secure</a> and portable database-driven web-based applications. Written and programmable in <a href="http://www.python.org" target="_blank">Python</a>.</p>
|
||||
<p>Free open source full-stack framework for rapid development of fast, scalable, <a href="http://www.web2py.com/book/default/chapter/01#Security" target="_blank">secure</a> and portable database-driven web-based applications. Written and programmable in <a href="http://www.python.org" target="_blank">Python</a> (version 3 and 2.7).</p>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
@@ -18,7 +18,7 @@
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a class="noeffect" href="http://link.packtpub.com/SUlnrN">
|
||||
<a class="noeffect" href="https://www.packtpub.com/web-development/web2py-application-development-cookbook">
|
||||
<img src="{{=URL('static','images/book-recipes.png')}}" />
|
||||
</a>
|
||||
</td>
|
||||
|
||||
@@ -111,6 +111,7 @@
|
||||
</li><li>Ovidio Marinho Falcao Neto (tests and plugin developer)
|
||||
</li><li>Pai (internationalization)
|
||||
</li><li>Paolo Caruccio (SQLFORM.grid query)
|
||||
</li><li>Paolo Pastori
|
||||
</li><li>Patrick Breitenbach
|
||||
</li><li><a href="mailto:phyo.arkarlwin@star-nix.net">Phyo Arkar Lwin</a> (web hosting and Jython tester)
|
||||
</li><li>Pierre Thibault (<a href="http://code.google.com/p/neo-web2py2eclipse/">Eclipse integration</a> and custom import)
|
||||
|
||||
@@ -185,9 +185,9 @@ def select():
|
||||
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+)')
|
||||
regex = re.compile(r'(?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>.+)')
|
||||
regex = re.compile(r'(?P<table>\w+)\.(?P<field>\w+)=(?P<value>.+)')
|
||||
if request.vars.query:
|
||||
match = regex.match(request.vars.query)
|
||||
if match:
|
||||
@@ -237,7 +237,7 @@ def select():
|
||||
|
||||
tb = None
|
||||
if form.accepts(request.vars, formname=None):
|
||||
regex = re.compile(request.args[0] + '\.(?P<table>\w+)\..+')
|
||||
regex = re.compile(request.args[0] + r'\.(?P<table>\w+)\..+')
|
||||
match = regex.match(form.vars.query.strip())
|
||||
if match:
|
||||
table = match.group('table')
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
#crontab
|
||||
16
applications/welcome/languages/de.py
Executable file → Normal file
16
applications/welcome/languages/de.py
Executable file → Normal file
@@ -5,17 +5,17 @@
|
||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"Update" ist ein optionaler Ausdruck wie "feld1=\'newvalue\'". JOIN Ergebnisse können nicht aktualisiert oder gelöscht werden',
|
||||
'%s %%(shop)': '%s %%(shop)',
|
||||
'%s %%(shop[0])': '%s %%(shop[0])',
|
||||
'%s %%{quark[0]}': '%s %%{quark[0]}',
|
||||
'%s %%{quark[0]}': '%s %%{Quark[0]}',
|
||||
'%s %%{row} deleted': '%s %%{row} gelöscht',
|
||||
'%s %%{row} updated': '%s %%{row} aktualisiert',
|
||||
'%s %%{shop[0]}': '%s %%{shop[0]}',
|
||||
'%s %%{shop}': '%s %%{shop}',
|
||||
'%s %%{shop[0]}': '%s %%{Shop[0]}',
|
||||
'%s %%{shop}': '%s %%{Shop}',
|
||||
'%s selected': '%s ausgewählt',
|
||||
'%Y-%m-%d': '%Y-%m-%d',
|
||||
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
||||
'(**%.0d MB**)': '(**%.0d MB**)',
|
||||
'**%(items)s** %%{item(items)}, **%(bytes)s** %%{byte(bytes)}': '**%(items)s** %%{item(items)}, **%(bytes)s** %%{byte(bytes)}',
|
||||
'**%(items)s** items, **%(bytes)s** %%{byte(bytes)}': '**%(items)s** items, **%(bytes)s** %%{byte(bytes)}',
|
||||
'**%(items)s** %%{item(items)}, **%(bytes)s** %%{byte(bytes)}': '**%(items)s** %%{Item(Items)}, **%(bytes)s** %%{Byte(Bytes)}',
|
||||
'**%(items)s** items, **%(bytes)s** %%{byte(bytes)}': '**%(items)s** Items, **%(bytes)s** %%{byte(bytes)}',
|
||||
'**not available** (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)': '**nicht verfügbar** (benötigt die Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] Bibliothek)',
|
||||
'?': '?',
|
||||
'@markmin\x01**Hello World**': '**Hallo Welt**',
|
||||
@@ -94,7 +94,7 @@
|
||||
'Hello World': 'Hallo Welt',
|
||||
'Hello World ## Kommentar': 'Hallo Welt ',
|
||||
'Hello World## Kommentar': 'Hallo Welt',
|
||||
'Helping web2py': 'Helping web2py',
|
||||
'Helping web2py': 'web2py Helfen',
|
||||
'Hit Ratio: **%(ratio)s%%** (**%(hits)s** %%{hit(hits)} and **%(misses)s** %%{miss(misses)})': 'Trefferquote: **%(ratio)s%%** (**%(hits)s** %%{hit(hits)} und **%(misses)s** %%{miss(misses)})',
|
||||
'Home': 'Startseite',
|
||||
'How did you get here?': 'Wie sind Sie hier her gelangt?',
|
||||
@@ -164,7 +164,7 @@
|
||||
'record does not exist': 'Eintrag existiert nicht',
|
||||
'Record ID': 'ID des Eintrags',
|
||||
'Record id': 'id des Eintrags',
|
||||
'Register': 'Register',
|
||||
'Register': 'Registrieren',
|
||||
'Registration identifier': 'Registrierungsbezeichnung',
|
||||
'Registration key': 'Registierungsschlüssel',
|
||||
'Registration successful': 'Registrierung erfolgreich',
|
||||
@@ -211,7 +211,7 @@
|
||||
'Welcome': 'Willkommen',
|
||||
'Welcome to web2py!': 'Willkommen bei web2py!',
|
||||
'Which called the function %s located in the file %s': 'Welche die Funktion %s in der Datei %s aufrief',
|
||||
'Working...': 'Arbeite...',
|
||||
'Working...': 'Arbeitet...',
|
||||
'You are successfully running web2py': 'web2py wird erfolgreich ausgeführt',
|
||||
'You can modify this application and adapt it to your needs': 'Sie können diese Anwendung verändern und Ihren Bedürfnissen anpassen',
|
||||
'You visited the url %s': 'Sie haben die URL %s besucht',
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
'Cannot be empty': 'Non può essere vuoto',
|
||||
'Change password': 'Cambia Password',
|
||||
'change password': 'Cambia password',
|
||||
'Change Password': 'Change Password',
|
||||
'Check to delete': 'Seleziona per cancellare',
|
||||
'Clear': 'Resetta',
|
||||
'Clear CACHE?': 'Resetta CACHE?',
|
||||
@@ -60,6 +61,7 @@
|
||||
'Community': 'Community',
|
||||
'Components and Plugins': 'Componenti and Plugin',
|
||||
'Config.ini': 'Config.ini',
|
||||
'Confirm Password': 'Confirm Password',
|
||||
'contains': 'contiene',
|
||||
'Controller': 'Controller',
|
||||
'Copyright': 'Copyright',
|
||||
@@ -102,6 +104,7 @@
|
||||
'enter a number between %(min)g and %(max)g': 'enter a number between %(min)g and %(max)g',
|
||||
'Enter an integer between %(min)g and %(max)g': 'Enter an integer between %(min)g and %(max)g',
|
||||
'enter an integer between %(min)g and %(max)g': 'inserisci un intero tra %(min)g e %(max)g',
|
||||
'Enter an integer greater than or equal to %(min)g': 'Enter an integer greater than or equal to %(min)g',
|
||||
'Errors': 'Errori',
|
||||
'Errors in form, please check it out.': 'Errori nel form, ricontrollalo',
|
||||
'export as csv file': 'esporta come file CSV',
|
||||
@@ -154,6 +157,7 @@
|
||||
'Lost Password': 'Password Smarrita',
|
||||
'Lost password?': 'Password smarrita?',
|
||||
'lost password?': 'dimenticato la password?',
|
||||
'Lost your password?': 'Lost your password?',
|
||||
'Main Menu': 'Menu principale',
|
||||
'Manage %(action)s': 'Manage %(action)s',
|
||||
'Manage Access Control': 'Manage Access Control',
|
||||
|
||||
@@ -22,11 +22,12 @@
|
||||
'Administrative interface': 'Interface administrativa',
|
||||
'Ajax Recipes': 'Receitas de Ajax',
|
||||
'An error occured, please [[reload %s]] the page': 'An error occured, please [[reload %s]] the page',
|
||||
'API Example': 'API Example',
|
||||
'appadmin is disabled because insecure channel': 'Administração desativada porque o canal não é seguro',
|
||||
'Are you sure you want to delete this object?': 'Você tem certeza que quer apagar este objeto?',
|
||||
'Available Databases and Tables': 'Bancos de dados e tabelas disponíveis',
|
||||
'Buy this book': 'Compre o livro',
|
||||
"Buy web2py's book": 'Compre o livro do web2buy',
|
||||
"Buy web2py's book": 'Compre o livro do web2py',
|
||||
'cache': 'cache',
|
||||
'Cache': 'Cache',
|
||||
'Cache Cleared': 'Cache limpo',
|
||||
@@ -82,6 +83,7 @@
|
||||
'Forms and Validators': 'Formulários e Validadores',
|
||||
'Free Applications': 'Aplicações gratuitas',
|
||||
'Graph Model': 'Graph Model',
|
||||
'Grid Example': 'Exemplo de Grade',
|
||||
'Group ID': 'ID do Grupo',
|
||||
'Groups': 'Grupos',
|
||||
'Hello World': 'Olá Mundo',
|
||||
@@ -106,26 +108,27 @@
|
||||
'Layouts': 'Layouts',
|
||||
'Live chat': 'Chat ao vivo',
|
||||
'Live Chat': 'Chat ao vivo',
|
||||
'Log In': 'Log In',
|
||||
'Log In': 'Entrar',
|
||||
'login': 'Entrar',
|
||||
'Login': 'Autentique-se',
|
||||
'Login': 'Entrar',
|
||||
'logout': 'Sair',
|
||||
'Lost Password': 'Esqueceu sua senha?',
|
||||
'lost password?': 'esqueceu sua senha?',
|
||||
'Lost your password?': 'Esqueceu sua senha?',
|
||||
'Main Menu': 'Menu Principal',
|
||||
'Manage %(action)s': 'Manage %(action)s',
|
||||
'Manage Access Control': 'Manage Access Control',
|
||||
'Manage %(action)s': 'Gerenciar %(action)s',
|
||||
'Manage Access Control': 'Gerenciar controle de acesso',
|
||||
'Manage Cache': 'Gerenciar Cache',
|
||||
'Memberships': 'Memberships',
|
||||
'Memberships': 'Grupos',
|
||||
'Menu Model': 'Modelo de Menu',
|
||||
'My Sites': 'Meus sites',
|
||||
'Name': 'Nome',
|
||||
'New Record': 'Novo Registro',
|
||||
'new record inserted': 'novo registro inserido',
|
||||
'next %s rows': 'next %s rows',
|
||||
'next %s rows': 'próximas %s ´linhas',
|
||||
'next 100 rows': 'próximas 100 linhas',
|
||||
'No databases in this application': 'Não há bancos de dados nesta aplicação',
|
||||
'Number of entries: **%s**': 'Number of entries: **%s**',
|
||||
'Number of entries: **%s**': 'Número de entradas: **%s**',
|
||||
'Object or table name': 'Nome do objeto do da tabela',
|
||||
'Online book': 'Online book',
|
||||
'Online examples': 'Exemplos online',
|
||||
@@ -140,35 +143,37 @@
|
||||
'Plugins': 'Plugins',
|
||||
'Powered by': 'Desenvolvido com',
|
||||
'Preface': 'Prefácio',
|
||||
'previous %s rows': 'previous %s rows',
|
||||
'previous %s rows': '%s linhas anteriores',
|
||||
'previous 100 rows': '100 linhas anteriores',
|
||||
'pygraphviz library not found': 'pygraphviz library not found',
|
||||
'pygraphviz library not found': 'biblioteca pygraphviz não encontrada',
|
||||
'Python': 'Python',
|
||||
'Query:': 'Consulta:',
|
||||
'Quick Examples': 'Exemplos rápidos',
|
||||
'RAM': 'RAM',
|
||||
'RAM Cache Keys': 'RAM Cache Keys',
|
||||
'Ram Cleared': 'Ram Cleared',
|
||||
'Ram Cleared': 'Ram Limpa',
|
||||
'RAM contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.': 'RAM contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.',
|
||||
'Recipes': 'Receitas',
|
||||
'Record': 'Registro',
|
||||
'record does not exist': 'registro não existe',
|
||||
'Record ID': 'ID do Registro',
|
||||
'Record id': 'id do registro',
|
||||
'Register': 'Registre-se',
|
||||
'register': 'Registre-se',
|
||||
'Register': 'Registre-se',
|
||||
'Registration identifier': 'Idenficador de registro',
|
||||
'Registration key': 'Chave de registro',
|
||||
'Remember me (for 30 days)': 'Mantenha-me logado (por 30 dias)',
|
||||
'Reset Password key': 'Resetar chave de senha',
|
||||
'Resources': 'Recursos',
|
||||
'Role': 'Papel',
|
||||
'Roles': 'Roles',
|
||||
'Rows in Table': 'Linhas na tabela',
|
||||
'Rows selected': 'Linhas selecionadas',
|
||||
'Save model as...': 'Save model as...',
|
||||
'Save model as...': 'Salvar modelo como...',
|
||||
'Semantic': 'Semântico',
|
||||
'Services': 'Serviço',
|
||||
'Sign Up': 'Sign Up',
|
||||
'Sign Up': 'Cadastrar',
|
||||
'Sign up': 'Cadastrar',
|
||||
'Size of cache:': 'Tamanho do cache:',
|
||||
'state': 'estado',
|
||||
'Statistics': 'Estatísticas',
|
||||
@@ -204,6 +209,7 @@
|
||||
'Welcome to web2py': 'Bem-vindo ao web2py',
|
||||
'Welcome to web2py!': 'Bem-vindo ao web2py!',
|
||||
'Which called the function %s located in the file %s': 'Que chamou a função %s localizada no arquivo %s',
|
||||
'Wiki Example': 'Wiki Example',
|
||||
'Working...': 'Trabalhando...',
|
||||
'You are successfully running web2py': 'Você está executando o web2py com sucesso',
|
||||
'You are successfully running web2py.': 'Você está executando o web2py com sucesso.',
|
||||
|
||||
@@ -130,7 +130,7 @@ response.google_analytics_id = configuration.get('google.analytics_id')
|
||||
# -------------------------------------------------------------------------
|
||||
if configuration.get('scheduler.enabled'):
|
||||
from gluon.scheduler import Scheduler
|
||||
scheduler = Scheduler(db, heartbeat=configuration.get('heartbeat'))
|
||||
scheduler = Scheduler(db, heartbeat=configuration.get('scheduler.heartbeat'))
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Define your tables below (or better in another model file) for example
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
label, th {
|
||||
font-weigth: bold;
|
||||
white-space: nowrap;
|
||||
@@ -20,6 +19,9 @@ div.w2p_flash {
|
||||
margin: 0 0 20px;
|
||||
padding: 15px 35px 15px 15px;
|
||||
}
|
||||
.nav-item a {
|
||||
white-space: nowrap;
|
||||
}
|
||||
div.w2p_flash.alert:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
@@ -348,3 +350,13 @@ td.w2p_fc,
|
||||
.icon.pen:before { content: "\f040";}
|
||||
.icon.arrowright:before { content: "\f061";}
|
||||
.icon.magnifier:before { content: "\f002";}
|
||||
|
||||
.web2py_table_selectable_actions {
|
||||
padding-top: 10px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.web2py_table_selectable_actions input {
|
||||
padding: 5px 7px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
});
|
||||
}
|
||||
var ul = this;
|
||||
$(ul).find(":text").addClass('form-control').wrap("<div class='input-group'></div>").after('<div class="input-group-addon"><i class="glyphicon glyphicon-plus"></i></div><div class="input-group-addon"><i class="glyphicon glyphicon-minus"></i></div>').keypress(function(e) {
|
||||
$(ul).find(":text").addClass('form-control').wrap("<div class='input-group'></div>").after('<div class="input-group-append"><i class="fa fa-plus-circle"></i></div> <div class="input-group-append"><i class="fa fa-minus-circle"></i></div>').keypress(function(e) {
|
||||
return (e.which == 13) ? pe(ul, e) : true;
|
||||
}).next().click(function(e) {
|
||||
pe(ul, e);
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
});
|
||||
//--></script>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
||||
{{if request.function=='index':}}
|
||||
<h2>{{=T("Available Databases and Tables")}}</h2>
|
||||
{{if not databases:}}{{=T("No databases in this application")}}{{pass}}
|
||||
@@ -271,3 +274,6 @@
|
||||
{{pass}}
|
||||
</div>
|
||||
{{pass}}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,47 +1,51 @@
|
||||
{{extend 'layout.html'}}
|
||||
|
||||
{{block header}}
|
||||
<div class="jumbotron jumbotron-fluid" style="background-color: #333; color:white; padding:30px;word-wrap:break-word;">
|
||||
<div class="jumbotron jumbotron-fluid background" style="background-color: #333; color:white; padding:30px;word-wrap:break-word;">
|
||||
<div class="container center">
|
||||
<h1 class="display-5">/{{=request.application}}/{{=request.controller}}/{{=request.function}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
{{if 'message' in globals():}}
|
||||
<h2>{{=message}}</h2>
|
||||
<p class="lead">{{=T('How did you get here?')}}</p>
|
||||
<ol style="word-wrap:break-word;">
|
||||
<li>{{=T('You are successfully running web2py')}}</li>
|
||||
<li>{{=XML(T('You visited the url %s', A(request.env.path_info,_href=request.env.path_info)))}}</li>
|
||||
<li>{{=XML(T('Which called the function %s located in the file %s',
|
||||
(A(request.function+'()',_href='#'),
|
||||
A('web2py/applications/%(application)s/controllers/%(controller)s.py' % request,
|
||||
_href=URL('admin','default','peek', args=(request.application,'controllers',request.controller+'.py'))))))}}</li>
|
||||
<li>{{=XML(T('The output of the file is a dictionary that was rendered by the view %s',
|
||||
A('web2py/applications/%(application)s/views/%(controller)s/index.html' % request,
|
||||
_href=URL('admin','default','peek',args=(request.application,'views',request.controller,'index.html')))))}}</li>
|
||||
<li>{{=T('You can modify this application and adapt it to your needs')}}</li>
|
||||
</ol>
|
||||
<div class="jumbotron jumbotron-fluid" style="padding:30px;word-wrap:break-word;">
|
||||
<div class="container center">
|
||||
<a class="btn btn-primary" href="{{=URL('admin','default','index')}}">
|
||||
<i class="fa fa-cog"></i>
|
||||
{{=T("admin")}}
|
||||
</a>
|
||||
<a class="btn btn-secondary" href="{{=URL('examples','default','index')}}">{{=T("Online examples")}}</a>
|
||||
<a class="btn btn-secondary" href="http://web2py.com">web2py.com</a>
|
||||
<a class="btn btn-secondary" href="http://web2py.com/book">{{=T('Documentation')}}</a>
|
||||
<a class="btn btn-secondary" href="{{=URL('default','api_get_user_email')}}">{{=T('API Example')}}</a>
|
||||
<a class="btn btn-secondary" href="{{=URL('default','grid/auth_user')}}">{{=T('Grid Example')}}</a>
|
||||
<a class="btn btn-secondary" href="{{=URL('default','wiki')}}">{{=T('Wiki Example')}}</a>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{{if 'message' in globals():}}
|
||||
<h2>{{=message}}</h2>
|
||||
<p class="lead">{{=T('How did you get here?')}}</p>
|
||||
<ol style="word-wrap:break-word;">
|
||||
<li>{{=T('You are successfully running web2py')}}</li>
|
||||
<li>{{=XML(T('You visited the url %s', A(request.env.path_info,_href=request.env.path_info)))}}</li>
|
||||
<li>{{=XML(T('Which called the function %s located in the file %s',
|
||||
(A(request.function+'()',_href='#'),
|
||||
A('web2py/applications/%(application)s/controllers/%(controller)s.py' % request,
|
||||
_href=URL('admin','default','peek', args=(request.application,'controllers',request.controller+'.py'))))))}}</li>
|
||||
<li>{{=XML(T('The output of the file is a dictionary that was rendered by the view %s',
|
||||
A('web2py/applications/%(application)s/views/%(controller)s/index.html' % request,
|
||||
_href=URL('admin','default','peek',args=(request.application,'views',request.controller,'index.html')))))}}</li>
|
||||
<li>{{=T('You can modify this application and adapt it to your needs')}}</li>
|
||||
</ol>
|
||||
<div class="jumbotron jumbotron-fluid" style="padding:30px;word-wrap:break-word;">
|
||||
<div class="container center">
|
||||
<a class="btn btn-primary" href="{{=URL('admin','default','index')}}">
|
||||
<i class="fa fa-cog"></i>
|
||||
{{=T("admin")}}
|
||||
</a>
|
||||
<a class="btn btn-secondary" href="{{=URL('examples','default','index')}}">{{=T("Online examples")}}</a>
|
||||
<a class="btn btn-secondary" href="http://web2py.com">web2py.com</a>
|
||||
<a class="btn btn-secondary" href="http://web2py.com/book">{{=T('Documentation')}}</a>
|
||||
<a class="btn btn-secondary" href="{{=URL('default','api_get_user_email')}}">{{=T('API Example')}}</a>
|
||||
<a class="btn btn-secondary" href="{{=URL('default','grid/auth_user')}}">{{=T('Grid Example')}}</a>
|
||||
<a class="btn btn-secondary" href="{{=URL('default','wiki')}}">{{=T('Wiki Example')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
{{elif 'content' in globals():}}
|
||||
{{=content}}
|
||||
{{else:}}
|
||||
{{=BEAUTIFY(response._vars)}}
|
||||
{{pass}}
|
||||
</div>
|
||||
</div>
|
||||
{{elif 'content' in globals():}}
|
||||
{{=content}}
|
||||
{{else:}}
|
||||
{{=BEAUTIFY(response._vars)}}
|
||||
{{pass}}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,28 +1,26 @@
|
||||
{{extend 'layout.html'}}
|
||||
|
||||
<h2>
|
||||
{{=T('Sign Up') if request.args(0) == 'register' else T('Log In') if request.args(0) == 'login' else T(request.args(0).replace('_',' ').title())}}
|
||||
</h2>
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div id="web2py_user_form" class="col-lg-6">
|
||||
{{
|
||||
if request.args(0)=='login':
|
||||
if not 'register' in auth.settings.actions_disabled:
|
||||
form.add_button(T('Sign Up'),URL(args='register', vars={'_next': request.vars._next} if request.vars._next else None),_class='btn btn-default btn-secondary')
|
||||
pass
|
||||
if not 'request_reset_password' in auth.settings.actions_disabled:
|
||||
form.add_button(T('Lost Password'),URL(args='request_reset_password'),_class='btn btn-default btn-secondary')
|
||||
pass
|
||||
pass
|
||||
=form
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div id="web2py_user_form" class="col-lg-6" style="background-color:white; margin: 0 auto 5px auto; box-shadow: 0 0 5px #a1a1a1; border-radius:5px;padding: 20px">
|
||||
<h2>
|
||||
{{=T('Sign Up') if request.args(0) == 'register' else T('Log In') if request.args(0) == 'login' else T(request.args(0).replace('_',' ').title())}}
|
||||
</h2>
|
||||
{{=form}}
|
||||
{{if request.args(0)=='login' and not 'register' in auth.settings.actions_disabled:}}
|
||||
<a href="{{=URL('user/register')}}">{{=T('Register')}}</a>
|
||||
<br/>
|
||||
{{pass}}
|
||||
{{if request.args(0)=='login' and not 'retrieve_password' in auth.settings.actions_disabled:}}
|
||||
<a href="{{=URL('user/retrieve_password')}}">{{=T('Lost your password?')}}</a>
|
||||
{{pass}}
|
||||
{{if request.args(0)=='register':}}
|
||||
<a href="{{=URL('user/login')}}">{{=T('Login')}}</a>
|
||||
{{pass}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
{{block page_js}}
|
||||
<script>
|
||||
jQuery("#web2py_user_form input:visible:enabled:first").focus();
|
||||
|
||||
17
applications/welcome/views/generic.csv
Normal file
17
applications/welcome/views/generic.csv
Normal file
@@ -0,0 +1,17 @@
|
||||
{{"""Usage:
|
||||
|
||||
def controller():
|
||||
return {"": db().select(db.thing.ALL)}
|
||||
|
||||
And then visit that controller with a .csv extention name
|
||||
"""
|
||||
}}{{if len(response._vars)==1:}}{{
|
||||
# Not yet find a Python 2/3 compatible StringIO pattern,
|
||||
# we avoid this solution http://web2py.com/books/default/chapter/29/10/services#CSV
|
||||
# Here we buffer the entire csv file instead (it is your controller's job to limit the volume anyway),
|
||||
# based on: http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#CSV-one-Table-at-a-time-
|
||||
|
||||
content = response._vars[next(iter(response._vars))]
|
||||
response.headers['Content-Type'] = 'application/vnd.ms-excel'
|
||||
response.write(str(content), escape=False)
|
||||
}}{{pass}}
|
||||
|
Can't render this file because it contains an unexpected character in line 1 and column 3.
|
@@ -5,7 +5,7 @@ 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()
|
||||
html=BODY(BEAUTIFY(response._vars))
|
||||
pass
|
||||
=pdf_from_html(html)
|
||||
}}
|
||||
|
||||
@@ -35,13 +35,13 @@
|
||||
<body>
|
||||
<div class="w2p_flash alert alert-dismissable">{{=response.flash or ''}}</div>
|
||||
<!-- Navbar ======================================= -->
|
||||
<nav class="navbar navbar-expand-lg navbar-light bg-faded">
|
||||
<a class="navbar-brand" href="http://web2py.com">web2py</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div id="navbarNavDropdown" class="collapse navbar-collapse">
|
||||
<ul class="navbar-nav">
|
||||
<nav class="navbar navbar-light navbar-expand-md bg-faded bg-dark navbar-dark justify-content-center">
|
||||
<a href="http://web2py.com" class="navbar-brand d-flex w-50 mr-auto">web2py</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="navbar-collapse collapse w-100" id="navbarNavDropdown">
|
||||
<ul class="navbar-nav w-100 justify-content-center">
|
||||
{{for _item in response.menu or []:}}
|
||||
{{if len(_item)<4 or not _item[3]:}}
|
||||
<li class="nav-item {{if _item[1]:}}active{{pass}}">
|
||||
@@ -57,13 +57,13 @@
|
||||
</div>
|
||||
</li>
|
||||
{{pass}}
|
||||
{{pass}}
|
||||
{{pass}}
|
||||
</ul>
|
||||
<form class="form-inline my-2 my-lg-0">
|
||||
<input class="form-control mr-sm-2" type="text" placeholder="Search">
|
||||
</form>
|
||||
<form class="form-inline my-2 my-lg-0">
|
||||
<input class="form-control mr-sm-2" type="text" placeholder="Search">
|
||||
</form>
|
||||
{{if 'auth' in globals():}}
|
||||
<ul class="navbar-nav ml-lg-auto">
|
||||
<ul class="nav navbar-nav ml-auto w-100 justify-content-end">
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
{{if auth.user:}}{{=auth.user.first_name}}{{else:}}LOGIN{{pass}}
|
||||
@@ -86,25 +86,19 @@
|
||||
{{pass}}
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
{{pass}}
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Masthead ===================================== -->
|
||||
<!-- Masthead ===================================== -->
|
||||
{{block header}}
|
||||
{{end}}
|
||||
<!-- Main ========================================= -->
|
||||
<!-- Begin page content -->
|
||||
<div class="container-fluid main-container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{{block center}}
|
||||
{{include}}
|
||||
{{end}}
|
||||
{{=response.toolbar() if response.show_toolbar else ''}}
|
||||
</div>
|
||||
</div>
|
||||
{{include}}
|
||||
{{=response.toolbar() if response.show_toolbar else ''}}
|
||||
</div>
|
||||
|
||||
{{block footer}} <!-- this is default footer -->
|
||||
|
||||
@@ -14,6 +14,10 @@ environment:
|
||||
COVERAGE_PROCESS_START: gluon/tests/coverage.ini
|
||||
PYTHON_ARCH: "64"
|
||||
|
||||
- PYTHON: "C:/Python37"
|
||||
COVERAGE_PROCESS_START: gluon/tests/coverage.ini
|
||||
PYTHON_ARCH: "64"
|
||||
|
||||
clone_depth: 50
|
||||
|
||||
init:
|
||||
|
||||
27
docker/alpine/web2py-gevent/Dockerfile
Executable file
27
docker/alpine/web2py-gevent/Dockerfile
Executable file
@@ -0,0 +1,27 @@
|
||||
FROM alpine:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN apk add --no-cache python py-pip py-setuptools unzip wget py-gevent && \
|
||||
pip install --upgrade pip && \
|
||||
pip install virtualenv
|
||||
|
||||
RUN addgroup -S web2py && \
|
||||
adduser -D -S -G web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s gevent -i 0.0.0.0 -p 8000
|
||||
41
docker/alpine/web2py-gevent/README.md
Executable file
41
docker/alpine/web2py-gevent/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Alpine/web2py-gevent
|
||||
docker build -t your_username/alpine-web2py-gevent .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name alpine-web2py-gevent your_username/alpine-web2py-gevent
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Alpine/web2py-gevent
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Alpine/web2py-gevent
|
||||
docker login -u your_username
|
||||
docker build -t your_username/alpine-web2py-gevent .
|
||||
docker push your_username/alpine-web2py-gevent
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/alpine-web2py-gevent .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name alpine-web2py-gevent your_username/alpine-web2py-gevent
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/alpine/web2py-gevent/docker-compose.yml
Executable file
12
docker/alpine/web2py-gevent/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-gevent:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
27
docker/alpine/web2py-gunicorn/Dockerfile
Executable file
27
docker/alpine/web2py-gunicorn/Dockerfile
Executable file
@@ -0,0 +1,27 @@
|
||||
FROM alpine:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN apk add --no-cache python py-pip py-setuptools unzip wget py-gunicorn && \
|
||||
pip install --upgrade pip && \
|
||||
pip install virtualenv
|
||||
|
||||
RUN addgroup -S web2py && \
|
||||
adduser -D -S -G web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s gunicorn -i 0.0.0.0 -p 8000
|
||||
41
docker/alpine/web2py-gunicorn/README.md
Executable file
41
docker/alpine/web2py-gunicorn/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Alpine/web2py-gunicorn
|
||||
docker build -t your_username/alpine-web2py-gunicorn .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name alpine-web2py-gunicorn your_username/alpine-web2py-gunicorn
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Alpine/web2py-gunicorn
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Alpine/web2py-gunicorn
|
||||
docker login -u your_username
|
||||
docker build -t your_username/alpine-web2py-gunicorn .
|
||||
docker push your_username/alpine-web2py-gunicorn
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/alpine-web2py-gunicorn .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name alpine-web2py-gunicorn your_username/alpine-web2py-gunicorn
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/alpine/web2py-gunicorn/docker-compose.yml
Executable file
12
docker/alpine/web2py-gunicorn/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-gunicorn:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
27
docker/alpine/web2py-paste/Dockerfile
Executable file
27
docker/alpine/web2py-paste/Dockerfile
Executable file
@@ -0,0 +1,27 @@
|
||||
FROM alpine:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN apk add --no-cache python py-pip py-setuptools unzip wget && \
|
||||
pip install --upgrade pip && \
|
||||
pip install virtualenv paste
|
||||
|
||||
RUN addgroup -S web2py && \
|
||||
adduser -D -S -G web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s paste -i 0.0.0.0 -p 8000
|
||||
41
docker/alpine/web2py-paste/README.md
Executable file
41
docker/alpine/web2py-paste/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Alpine/web2py-paste
|
||||
docker build -t your_username/alpine-web2py-paste .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name alpine-web2py-paste your_username/alpine-web2py-paste
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Alpine/web2py-paste
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Alpine/web2py-paste
|
||||
docker login -u your_username
|
||||
docker build -t your_username/alpine-web2py-paste .
|
||||
docker push your_username/alpine-web2py-paste
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/alpine-web2py-paste .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name alpine-web2py-paste your_username/alpine-web2py-paste
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/alpine/web2py-paste/docker-compose.yml
Executable file
12
docker/alpine/web2py-paste/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-paste:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
22
docker/alpine/web2py-rocket-ssl/Dockerfile
Executable file
22
docker/alpine/web2py-rocket-ssl/Dockerfile
Executable file
@@ -0,0 +1,22 @@
|
||||
FROM alpine:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN apk add --no-cache python py-pip py-setuptools unzip wget openssl && \
|
||||
pip install --upgrade pip && \
|
||||
pip install virtualenv
|
||||
|
||||
RUN wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /web2py/applications/examples && \
|
||||
cd /web2py && \
|
||||
openssl genrsa 1024 > web2py.key && chmod 400 web2py.key && \
|
||||
openssl req -new -x509 -nodes -sha1 -days 1780 -subj '/C=ID/ST=Jakarta/L=Jakarta/O=stifix/OU=IT/CN=stifix.com' -key web2py.key > web2py.crt && \
|
||||
openssl x509 -noout -fingerprint -text < web2py.crt > web2py.info && \
|
||||
chmod 755 -R /web2py
|
||||
|
||||
WORKDIR /web2py
|
||||
|
||||
EXPOSE 443
|
||||
|
||||
CMD python /web2py/web2py.py --nogui --no-banner -a 'a' -c web2py.crt -k web2py.key -i 0.0.0.0 -p 443
|
||||
41
docker/alpine/web2py-rocket-ssl/README.md
Executable file
41
docker/alpine/web2py-rocket-ssl/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Alpine/web2py-rocket-ssl
|
||||
docker build -t your_username/alpine-web2py-rocket-ssl .
|
||||
docker run -d -v applications:/web2py/applications -p 443:443 --name alpine-web2py-rocket-ssl your_username/alpine-web2py-rocket-ssl
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Alpine/web2py-rocket-ssl
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Alpine/web2py-rocket-ssl
|
||||
docker login -u your_username
|
||||
docker build -t your_username/alpine-web2py-rocket-ssl .
|
||||
docker push your_username/alpine-web2py-rocket-ssl
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/alpine-web2py-rocket-ssl .
|
||||
docker run -d -v applications:/web2py/applications -p 443:443 --name alpine-web2py-rocket-ssl your_username/
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/alpine/web2py-rocket-ssl/docker-compose.yml
Executable file
12
docker/alpine/web2py-rocket-ssl/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-rocket-ssl:
|
||||
build: .
|
||||
ports:
|
||||
- "443:443"
|
||||
volumes:
|
||||
- applications:/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
27
docker/alpine/web2py-rocket/Dockerfile
Executable file
27
docker/alpine/web2py-rocket/Dockerfile
Executable file
@@ -0,0 +1,27 @@
|
||||
FROM alpine:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN apk add --no-cache python py-pip py-setuptools unzip wget && \
|
||||
pip install --upgrade pip && \
|
||||
pip install virtualenv
|
||||
|
||||
RUN addgroup -S web2py && \
|
||||
adduser -D -S -G web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && python /home/web2py/web2py/web2py.py --nogui --no-banner -a 'a' -i 0.0.0.0 -p 8000
|
||||
41
docker/alpine/web2py-rocket/README.md
Executable file
41
docker/alpine/web2py-rocket/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Alpine/web2py-rocket
|
||||
docker build -t your_username/alpine-web2py-rocket .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name alpine-web2py-rocket your_username/alpine-web2py-rocket
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Alpine/web2py-rocket
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Alpine/web2py-rocket
|
||||
docker login -u your_username
|
||||
docker build -t your_username/alpine-web2py-rocket .
|
||||
docker push your_username/alpine-web2py-rocket
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/alpine-web2py-rocket .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name alpine-web2py-rocket your_username/
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/alpine/web2py-rocket/docker-compose.yml
Executable file
12
docker/alpine/web2py-rocket/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-rocket:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
27
docker/alpine/web2py-tornado/Dockerfile
Executable file
27
docker/alpine/web2py-tornado/Dockerfile
Executable file
@@ -0,0 +1,27 @@
|
||||
FROM alpine:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN apk add --no-cache python py-pip py-setuptools unzip wget py-tornado && \
|
||||
pip install --upgrade pip && \
|
||||
pip install virtualenv
|
||||
|
||||
RUN addgroup -S web2py && \
|
||||
adduser -D -S -G web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s tornado -i 0.0.0.0 -p 8000
|
||||
41
docker/alpine/web2py-tornado/README.md
Executable file
41
docker/alpine/web2py-tornado/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Alpine/web2py-tornado
|
||||
docker build -t your_username/alpine-web2py-tornado .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name alpine-web2py-tornado your_username/alpine-web2py-tornado
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Alpine/web2py-tornado
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Alpine/web2py-tornado
|
||||
docker login -u your_username
|
||||
docker build -t your_username/alpine-web2py-tornado .
|
||||
docker push your_username/alpine-web2py-tornado
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/alpine-web2py-tornado .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name alpine-web2py-tornado your_username/
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/alpine/web2py-tornado/docker-compose.yml
Executable file
12
docker/alpine/web2py-tornado/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-tornado:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
27
docker/alpine/web2py-waitress/Dockerfile
Executable file
27
docker/alpine/web2py-waitress/Dockerfile
Executable file
@@ -0,0 +1,27 @@
|
||||
FROM alpine:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN apk add --no-cache python py-pip py-setuptools unzip wget py-waitress && \
|
||||
pip install --upgrade pip && \
|
||||
pip install virtualenv
|
||||
|
||||
RUN addgroup -S web2py && \
|
||||
adduser -D -S -G web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s waitress -i 0.0.0.0 -p 8000
|
||||
41
docker/alpine/web2py-waitress/README.md
Executable file
41
docker/alpine/web2py-waitress/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Alpine/web2py-waitress
|
||||
docker build -t your_username/alpine-web2py-waitress .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name alpine-web2py-waitress your_username/alpine-web2py-waitress
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Alpine/web2py-waitress
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Alpine/web2py-waitress
|
||||
docker login -u your_username
|
||||
docker build -t your_username/alpine-web2py-waitress .
|
||||
docker push your_username/alpine-web2py-waitress
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/alpine-web2py-waitress .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name alpine-web2py-waitress your_username/alpine-web2py-waitress
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/alpine/web2py-waitress/docker-compose.yml
Executable file
12
docker/alpine/web2py-waitress/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-waitress:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
27
docker/alpine/web2py-wsgiref/Dockerfile
Executable file
27
docker/alpine/web2py-wsgiref/Dockerfile
Executable file
@@ -0,0 +1,27 @@
|
||||
FROM alpine:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN apk add --no-cache python py-pip py-setuptools unzip wget && \
|
||||
pip install --upgrade pip && \
|
||||
pip install virtualenv wsgiref
|
||||
|
||||
RUN addgroup -S web2py && \
|
||||
adduser -D -S -G web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s wsgiref -i 0.0.0.0 -p 8000
|
||||
41
docker/alpine/web2py-wsgiref/README.md
Executable file
41
docker/alpine/web2py-wsgiref/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Alpine/web2py-wsgiref
|
||||
docker build -t your_username/alpine-web2py-wsgiref .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name alpine-web2py-wsgiref your_username/alpine-web2py-wsgiref
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Alpine/web2py-wsgiref
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Alpine/web2py-wsgiref
|
||||
docker login -u your_username
|
||||
docker build -t your_username/alpine-web2py-wsgiref .
|
||||
docker push your_username/alpine-web2py-wsgiref
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/alpine-web2py-wsgiref .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name alpine-web2py-wsgiref your_username/alpine-web2py-wsgiref
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/alpine/web2py-wsgiref/docker-compose.yml
Executable file
12
docker/alpine/web2py-wsgiref/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-wsgiref:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
28
docker/centos/web2py-eventlet/Dockerfile
Executable file
28
docker/centos/web2py-eventlet/Dockerfile
Executable file
@@ -0,0 +1,28 @@
|
||||
FROM centos:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN yum install -y epel-release && \
|
||||
yum install -y python python-pip python-setuptools unzip wget python-eventlet --nogpgcheck && \
|
||||
pip install --upgrade pip && \
|
||||
pip install virtualenv
|
||||
|
||||
RUN groupadd -r web2py && \
|
||||
useradd -m -r -g web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s eventlet -i 0.0.0.0 -p 8000
|
||||
41
docker/centos/web2py-eventlet/README.md
Executable file
41
docker/centos/web2py-eventlet/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Centos/web2py-eventlet
|
||||
docker build -t your_username/centos-web2py-eventlet .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name centos-web2py-eventlet your_username/centos-web2py-eventlet
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Centos/web2py-eventlet
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Centos/web2py-eventlet
|
||||
docker login -u your_username
|
||||
docker build -t your_username/centos-web2py-eventlet .
|
||||
docker push your_username/centos-web2py-eventlet
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/centos-web2py-eventlet .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name centos-web2py-eventlet your_username/centos-web2py-eventlet
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/centos/web2py-eventlet/docker-compose.yml
Executable file
12
docker/centos/web2py-eventlet/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-eventlet:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
28
docker/centos/web2py-gevent/Dockerfile
Executable file
28
docker/centos/web2py-gevent/Dockerfile
Executable file
@@ -0,0 +1,28 @@
|
||||
FROM centos:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN yum install -y epel-release && \
|
||||
yum install -y python python-pip python-setuptools unzip wget python-gevent --nogpgcheck && \
|
||||
pip install --upgrade pip && \
|
||||
pip install virtualenv
|
||||
|
||||
RUN groupadd -r web2py && \
|
||||
useradd -m -r -g web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s gevent -i 0.0.0.0 -p 8000
|
||||
41
docker/centos/web2py-gevent/README.md
Executable file
41
docker/centos/web2py-gevent/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Centos/web2py-gevent
|
||||
docker build -t your_username/centos-web2py-gevent .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name centos-web2py-gevent your_username/centos-web2py-gevent
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Centos/web2py-gevent
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Centos/web2py-gevent
|
||||
docker login -u your_username
|
||||
docker build -t your_username/centos-web2py-gevent .
|
||||
docker push your_username/centos-web2py-gevent
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/centos-web2py-gevent .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name centos-web2py-gevent your_username/centos-web2py-gevent
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/centos/web2py-gevent/docker-compose.yml
Executable file
12
docker/centos/web2py-gevent/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-gevent:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
28
docker/centos/web2py-gunicorn/Dockerfile
Executable file
28
docker/centos/web2py-gunicorn/Dockerfile
Executable file
@@ -0,0 +1,28 @@
|
||||
FROM centos:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN yum install -y epel-release && \
|
||||
yum install -y python python-pip python-setuptools unzip wget python-gunicorn --nogpgcheck && \
|
||||
pip install --upgrade pip && \
|
||||
pip install virtualenv
|
||||
|
||||
RUN groupadd -r web2py && \
|
||||
useradd -m -r -g web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s gunicorn -i 0.0.0.0 -p 8000
|
||||
41
docker/centos/web2py-gunicorn/README.md
Executable file
41
docker/centos/web2py-gunicorn/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Centos/web2py-gunicorn
|
||||
docker build -t your_username/centos-web2py-gunicorn .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name centos-web2py-gunicorn your_username/centos-web2py-gunicorn
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Centos/web2py-gunicorn
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Centos/web2py-gunicorn
|
||||
docker login -u your_username
|
||||
docker build -t your_username/centos-web2py-gunicorn .
|
||||
docker push your_username/centos-web2py-gunicorn
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/centos-web2py-gunicorn .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name centos-web2py-gunicorn your_username/centos-web2py-gunicorn
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/centos/web2py-gunicorn/docker-compose.yml
Executable file
12
docker/centos/web2py-gunicorn/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-gunicorn:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
28
docker/centos/web2py-paste/Dockerfile
Executable file
28
docker/centos/web2py-paste/Dockerfile
Executable file
@@ -0,0 +1,28 @@
|
||||
FROM centos:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN yum install -y epel-release && \
|
||||
yum install -y python python-pip python-setuptools unzip wget python-paste --nogpgcheck && \
|
||||
pip install --upgrade pip && \
|
||||
pip install virtualenv
|
||||
|
||||
RUN groupadd -r web2py && \
|
||||
useradd -m -r -g web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s paste -i 0.0.0.0 -p 8000
|
||||
41
docker/centos/web2py-paste/README.md
Executable file
41
docker/centos/web2py-paste/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Centos/web2py-paste
|
||||
docker build -t your_username/centos-web2py-paste .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name centos-web2py-paste your_username/centos-web2py-paste
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Centos/web2py-paste
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Centos/web2py-paste
|
||||
docker login -u your_username
|
||||
docker build -t your_username/centos-web2py-paste .
|
||||
docker push your_username/centos-web2py-paste
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/centos-web2py-paste .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name centos-web2py-paste your_username/centos-web2py-paste
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/centos/web2py-paste/docker-compose.yml
Executable file
12
docker/centos/web2py-paste/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-paste:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
28
docker/centos/web2py-rocket/Dockerfile
Executable file
28
docker/centos/web2py-rocket/Dockerfile
Executable file
@@ -0,0 +1,28 @@
|
||||
FROM centos:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN yum install -y epel-release && \
|
||||
yum install -y python python-pip python-setuptools unzip wget --nogpgcheck && \
|
||||
pip install --upgrade pip && \
|
||||
pip install virtualenv
|
||||
|
||||
RUN groupadd -r web2py && \
|
||||
useradd -m -r -g web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && python /home/web2py/web2py/web2py.py --nogui --no-banner -a 'a' -i 0.0.0.0 -p 8000
|
||||
41
docker/centos/web2py-rocket/README.md
Executable file
41
docker/centos/web2py-rocket/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Centos/web2py-rocket
|
||||
docker build -t your_username/centos-web2py-rocket .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name centos-web2py-rocket your_username/centos-web2py-rocket
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Centos/web2py-rocket
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Centos/web2py-rocket
|
||||
docker login -u your_username
|
||||
docker build -t your_username/centos-web2py-rocket .
|
||||
docker push your_username/centos-web2py-rocket
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/centos-web2py-rocket .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name centos-web2py-rocket your_username/centos-web2py-rocket
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/centos/web2py-rocket/docker-compose.yml
Executable file
12
docker/centos/web2py-rocket/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-rocket:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
28
docker/centos/web2py-tornado/Dockerfile
Executable file
28
docker/centos/web2py-tornado/Dockerfile
Executable file
@@ -0,0 +1,28 @@
|
||||
FROM centos:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN yum install -y epel-release && \
|
||||
yum install -y python python-pip python-setuptools unzip wget python-tornado --nogpgcheck && \
|
||||
pip install --upgrade pip && \
|
||||
pip install virtualenv
|
||||
|
||||
RUN groupadd -r web2py && \
|
||||
useradd -m -r -g web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s tornado -i 0.0.0.0 -p 8000
|
||||
41
docker/centos/web2py-tornado/README.md
Executable file
41
docker/centos/web2py-tornado/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Centos/web2py-tornado
|
||||
docker build -t your_username/centos-web2py-tornado .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name centos-web2py-tornado your_username/centos-web2py-tornado
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Centos/web2py-tornado
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Centos/web2py-tornado
|
||||
docker login -u your_username
|
||||
docker build -t your_username/centos-web2py-tornado .
|
||||
docker push your_username/centos-web2py-tornado
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/centos-web2py-tornado .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name centos-web2py-tornado your_username/centos-web2py-tornado
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/centos/web2py-tornado/docker-compose.yml
Executable file
12
docker/centos/web2py-tornado/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-tornado:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
28
docker/centos/web2py-twisted/Dockerfile
Executable file
28
docker/centos/web2py-twisted/Dockerfile
Executable file
@@ -0,0 +1,28 @@
|
||||
FROM centos:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN yum install -y epel-release && \
|
||||
yum install -y python python-pip python-setuptools unzip wget python-twisted-web --nogpgcheck && \
|
||||
pip install --upgrade pip && \
|
||||
pip install virtualenv
|
||||
|
||||
RUN groupadd -r web2py && \
|
||||
useradd -m -r -g web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s twisted -i 0.0.0.0 -p 8000
|
||||
41
docker/centos/web2py-twisted/README.md
Executable file
41
docker/centos/web2py-twisted/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Centos/web2py-twisted
|
||||
docker build -t your_username/centos-web2py-twisted .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name centos-web2py-twisted your_username/centos-web2py-twisted
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Centos/web2py-twisted
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Centos/web2py-twisted
|
||||
docker login -u your_username
|
||||
docker build -t your_username/centos-web2py-twisted .
|
||||
docker push your_username/centos-web2py-twisted
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/centos-web2py-twisted .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name centos-web2py-twisted your_username/centos-web2py-twisted
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/centos/web2py-twisted/docker-compose.yml
Executable file
12
docker/centos/web2py-twisted/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-twisted:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
28
docker/centos/web2py-waitress/Dockerfile
Executable file
28
docker/centos/web2py-waitress/Dockerfile
Executable file
@@ -0,0 +1,28 @@
|
||||
FROM centos:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN yum install -y epel-release && \
|
||||
yum install -y python python-pip python-setuptools unzip wget python-waitress --nogpgcheck && \
|
||||
pip install --upgrade pip && \
|
||||
pip install virtualenv
|
||||
|
||||
RUN groupadd -r web2py && \
|
||||
useradd -m -r -g web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s waitress -i 0.0.0.0 -p 8000
|
||||
41
docker/centos/web2py-waitress/README.md
Executable file
41
docker/centos/web2py-waitress/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Centos/web2py-waitress
|
||||
docker build -t your_username/centos-web2py-waitress .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name centos-web2py-waitress your_username/centos-web2py-waitress
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Centos/web2py-waitress
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Centos/web2py-waitress
|
||||
docker login -u your_username
|
||||
docker build -t your_username/centos-web2py-waitress .
|
||||
docker push your_username/centos-web2py-waitress
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/centos-web2py-waitress .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name centos-web2py-waitress your_username/centos-web2py-waitress
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/centos/web2py-waitress/docker-compose.yml
Executable file
12
docker/centos/web2py-waitress/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-waitress:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
28
docker/centos/web2py-wsgiref/Dockerfile
Executable file
28
docker/centos/web2py-wsgiref/Dockerfile
Executable file
@@ -0,0 +1,28 @@
|
||||
FROM centos:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN yum install -y epel-release && \
|
||||
yum install -y python python-pip python-setuptools unzip wget --nogpgcheck && \
|
||||
pip install --upgrade pip && \
|
||||
pip install virtualenv wsgiref
|
||||
|
||||
RUN groupadd -r web2py && \
|
||||
useradd -m -r -g web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s wsgiref -i 0.0.0.0 -p 8000
|
||||
41
docker/centos/web2py-wsgiref/README.md
Executable file
41
docker/centos/web2py-wsgiref/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Centos/web2py-wsgiref
|
||||
docker build -t your_username/centos-web2py-wsgiref .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name centos-web2py-wsgiref your_username/centos-web2py-wsgiref
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Centos/web2py-wsgiref
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Centos/web2py-wsgiref
|
||||
docker login -u your_username
|
||||
docker build -t your_username/centos-web2py-wsgiref .
|
||||
docker push your_username/centos-web2py-wsgiref
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/centos-web2py-wsgiref .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name centos-web2py-wsgiref your_username/centos-web2py-wsgiref
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/centos/web2py-wsgiref/docker-compose.yml
Executable file
12
docker/centos/web2py-wsgiref/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-wsgiref:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
27
docker/debian/web2py-diesel/Dockerfile
Executable file
27
docker/debian/web2py-diesel/Dockerfile
Executable file
@@ -0,0 +1,27 @@
|
||||
FROM debian:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN apt update && \
|
||||
apt install -y python python-pip python-setuptools unzip wget && \
|
||||
pip install virtualenv diesel
|
||||
|
||||
RUN groupadd -r web2py && \
|
||||
useradd -m -r -g web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s diesel -i 0.0.0.0 -p 8000
|
||||
41
docker/debian/web2py-diesel/README.md
Executable file
41
docker/debian/web2py-diesel/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Debian/web2py-diesel
|
||||
docker build -t your_username/debian-web2py-diesel .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name debian-web2py-diesel your_username/debian-web2py-diesel
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Debian/web2py-diesel
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Debian/web2py-diesel
|
||||
docker login -u your_username
|
||||
docker build -t your_username/debian-web2py-diesel .
|
||||
docker push your_username/debian-web2py-diesel
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/debian-web2py-diesel .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name debian-web2py-diesel your_username/debian-web2py-diesel
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/debian/web2py-diesel/docker-compose.yml
Executable file
12
docker/debian/web2py-diesel/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-diesel:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
27
docker/debian/web2py-eventlet/Dockerfile
Executable file
27
docker/debian/web2py-eventlet/Dockerfile
Executable file
@@ -0,0 +1,27 @@
|
||||
FROM debian:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN apt update && \
|
||||
apt install -y python python-pip python-setuptools unzip wget python-eventlet && \
|
||||
pip install virtualenv
|
||||
|
||||
RUN groupadd -r web2py && \
|
||||
useradd -m -r -g web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s eventlet -i 0.0.0.0 -p 8000
|
||||
41
docker/debian/web2py-eventlet/README.md
Executable file
41
docker/debian/web2py-eventlet/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Debian/web2py-eventlet
|
||||
docker build -t your_username/debian-web2py-eventlet .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name debian-web2py-eventlet your_username/debian-web2py-eventlet
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Debian/web2py-eventlet
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Debian/web2py-eventlet
|
||||
docker login -u your_username
|
||||
docker build -t your_username/debian-web2py-eventlet .
|
||||
docker push your_username/debian-web2py-eventlet
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/debian-web2py-eventlet .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name debian-web2py-eventlet your_username/debian-web2py-eventlet
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/debian/web2py-eventlet/docker-compose.yml
Executable file
12
docker/debian/web2py-eventlet/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-eventlet:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
27
docker/debian/web2py-gevent/Dockerfile
Executable file
27
docker/debian/web2py-gevent/Dockerfile
Executable file
@@ -0,0 +1,27 @@
|
||||
FROM debian:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN apt update && \
|
||||
apt install -y python python-pip python-setuptools unzip wget python-gevent && \
|
||||
pip install virtualenv
|
||||
|
||||
RUN groupadd -r web2py && \
|
||||
useradd -m -r -g web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s gevent -i 0.0.0.0 -p 8000
|
||||
41
docker/debian/web2py-gevent/README.md
Executable file
41
docker/debian/web2py-gevent/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Debian/web2py-gevent
|
||||
docker build -t your_username/debian-web2py-gevent .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name debian-web2py-gevent your_username/debian-web2py-gevent
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Debian/web2py-gevent
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Debian/web2py-gevent
|
||||
docker login -u your_username
|
||||
docker build -t your_username/debian-web2py-gevent .
|
||||
docker push your_username/debian-web2py-gevent
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/debian-web2py-gevent .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name debian-web2py-gevent your_username/debian-web2py-gevent
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/debian/web2py-gevent/docker-compose.yml
Executable file
12
docker/debian/web2py-gevent/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-gevent:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
27
docker/debian/web2py-gunicorn/Dockerfile
Executable file
27
docker/debian/web2py-gunicorn/Dockerfile
Executable file
@@ -0,0 +1,27 @@
|
||||
FROM debian:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN apt update && \
|
||||
apt install -y python python-pip python-setuptools unzip wget python-gunicorn && \
|
||||
pip install virtualenv
|
||||
|
||||
RUN groupadd -r web2py && \
|
||||
useradd -m -r -g web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s gunicorn -i 0.0.0.0 -p 8000
|
||||
41
docker/debian/web2py-gunicorn/README.md
Executable file
41
docker/debian/web2py-gunicorn/README.md
Executable file
@@ -0,0 +1,41 @@
|
||||
# Start Service
|
||||
systemctl start docker
|
||||
|
||||
# Docker
|
||||
cd /Docker/Debian/web2py-gunicorn
|
||||
docker build -t your_username/debian-web2py-gunicorn .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name debian-web2py-gunicorn your_username/debian-web2py-gunicorn
|
||||
docker ps
|
||||
docker volume ls
|
||||
docker volume inspect applications
|
||||
|
||||
# Docker Compose
|
||||
pip install docker-compose
|
||||
cd /Docker/Debian/web2py-gunicorn
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
docker volume ls
|
||||
docker volume inspect root_applications
|
||||
|
||||
# Docker Cloud
|
||||
cd /Docker/Debian/web2py-gunicorn
|
||||
docker login -u your_username
|
||||
docker build -t your_username/debian-web2py-gunicorn .
|
||||
docker push your_username/debian-web2py-gunicorn
|
||||
|
||||
# Shell (Copy the content of the file into this scaffolding shell and replace the variable text $ with \$ )
|
||||
cat << EOF > docker-compose.yml
|
||||
|
||||
EOF
|
||||
cat docker-compose.yml
|
||||
|
||||
cat << EOF > Dockerfile
|
||||
|
||||
EOF
|
||||
cat Dockerfile
|
||||
|
||||
docker build -t your_username/debian-web2py-gunicorn .
|
||||
docker run -d -v applications:/home/web2py/web2py/applications -p 8000:8000 --name debian-web2py-gunicorn your_username/debian-web2py-gunicorn
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose ps
|
||||
12
docker/debian/web2py-gunicorn/docker-compose.yml
Executable file
12
docker/debian/web2py-gunicorn/docker-compose.yml
Executable file
@@ -0,0 +1,12 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
web2py-gunicorn:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- applications:/home/web2py/web2py/applications
|
||||
|
||||
volumes:
|
||||
applications:
|
||||
27
docker/debian/web2py-paste/Dockerfile
Executable file
27
docker/debian/web2py-paste/Dockerfile
Executable file
@@ -0,0 +1,27 @@
|
||||
FROM debian:latest
|
||||
|
||||
#LABEL your_label
|
||||
|
||||
RUN apt update && \
|
||||
apt install -y python python-pip python-setuptools unzip wget python-paste && \
|
||||
pip install virtualenv
|
||||
|
||||
RUN groupadd -r web2py && \
|
||||
useradd -m -r -g web2py web2py
|
||||
|
||||
USER web2py
|
||||
|
||||
RUN virtualenv /home/web2py && \
|
||||
rm -rf /home/web2py/web2py && \
|
||||
cd /home/web2py/ && \
|
||||
rm -f web2py_src.zip && \
|
||||
wget -c http://web2py.com/examples/static/web2py_src.zip && \
|
||||
unzip -o web2py_src.zip && \
|
||||
rm -rf /home/web2py/web2py/applications/examples && \
|
||||
chmod 755 -R /home/web2py/web2py
|
||||
|
||||
WORKDIR /home/web2py/web2py
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD . /home/web2py/bin/activate && /usr/bin/python /home/web2py/web2py/anyserver.py -s paste -i 0.0.0.0 -p 8000
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user