debian/ 0000755 0000000 0000000 00000000000 11727611057 007175 5 ustar debian/web2py.apache 0000644 0000000 0000000 00000003113 11641562546 011551 0 ustar WSGIRestrictStdout Off
ServerName my.server.name.org
WSGIDaemonProcess web2py user=www-data group=www-data
WSGIProcessGroup web2py
WSGIScriptAlias / /path/to/myweb2py/wsgihandler.py
AllowOverride None
Order Allow,Deny
Deny from all
Allow from all
AliasMatch ^/my_app_name/([^/]+)/static/(.*) \
/path/to/myweb2py/applications/$1/static/$2
Order Allow,Deny
Allow from all
Deny from all
CustomLog /var/log/apache2/web2py-access.log common
ErrorLog /var/log/apache2/web2py-error.log
ServerName my.server.name.org
WSGIScriptAlias / /path/to/myweb2py/wsgihandler.py
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
AllowOverride None
Order Allow,Deny
Deny from all
Allow from all
AliasMatch ^/my_app_name/([^/]+)/static/(.*) \
/path/to/myweb2py/applications/$1/static/$2
Order Allow,Deny
Allow from all
CustomLog /var/log/apache2/secure-web2py-access.log common
ErrorLog /var/log/apache2/secure-web2py-error.log
debian/patches/ 0000755 0000000 0000000 00000000000 11727611044 010620 5 ustar debian/patches/launcher 0000644 0000000 0000000 00000010225 11672163156 012351 0 ustar Index: web2py-1.99.4/web2py
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ web2py-1.99.4/web2py 2011-12-14 19:09:48.018663053 +0100
@@ -0,0 +1,124 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+##############################################################################
+# Module: web2py
+# Purpose: web2py launcher for use with Debian web2py package
+# Date: 15-Jan-2011.
+# Ver.: 13-Mar-2011.
+# Author: José L. Redrejo Rodríguez
+# Copyright: 2011 - José L. Redrejo Rodríguez
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+import os
+import sys
+import pwd
+from shutil import copytree
+import tarfile
+import re
+from gzip import open as gzopen
+
+
+def w2p_pack(filename, path):
+ if path[-1:] != '/':
+ path = path + '/'
+ tarname = filename + '.tar'
+ tar = tarfile.TarFile(tarname, 'w')
+ tar.add(path,"",True)
+ tar.close()
+ w2pfp = gzopen(filename, 'wb')
+ tarfp = open(tarname, 'rb')
+ w2pfp.write(tarfp.read())
+ w2pfp.close()
+ tarfp.close()
+ os.unlink(tarname)
+
+def create_dir(path):
+ if not os.path.exists(path):
+ try:
+ os.makedirs(path)
+ except:
+ print "Error trying to make %s directory to run web2py" % (path)
+ sys.exit(1)
+ return False
+ else:
+ return True
+
+def copy_skeleton(app_name):
+ new_dir=os.path.join(web2py_applications,app_name)
+ if not create_dir(new_dir):
+ for subfolder in ('controllers', 'languages','models','static','views','private'):
+ folder_path = os.path.join(new_dir, subfolder)
+ if not os.path.exists(folder_path):
+ original_path=os.path.join(web2py_skeleton,app_name,subfolder)
+ if os.path.exists(original_path):
+ os.symlink(original_path,folder_path)
+
+ for subfolder in ('databases','modules', 'cron', 'errors', 'sessions',
+ 'private', 'uploads'):
+ try:
+ os.mkdir(os.path.join(new_dir,subfolder))
+ except:
+ pass #the dir has been previously symlinked
+
+web2py_skeleton="/usr/share/web2py/applications"
+home_user=pwd.getpwuid(os.getuid())[5]
+current_path = os.getcwd()
+if not os.access(current_path,os.W_OK):
+ current_path=home_user
+
+if current_path == home_user:
+ web2py_dir=os.path.join(home_user,"web2py")
+else:
+ web2py_dir=current_path
+
+create_dir(os.path.join(web2py_dir,"deposit"))
+web2py_applications=os.path.join(web2py_dir,"applications")
+module_web2py_applications=os.path.join(web2py_applications,'__init__.py')
+
+#Create the applications dirs if required:
+create_dir(web2py_applications)
+if not os.path.exists(module_web2py_applications):open(module_web2py_applications, 'w').close()
+copy_skeleton("welcome")
+copy_skeleton("admin")
+copy_skeleton("examples")
+
+if not os.path.exists(os.path.join(web2py_dir,"welcome.w2p")):
+ w2p_pack(os.path.join(web2py_dir,"welcome.w2p"),os.path.join(web2py_skeleton,"welcome"))
+
+
+if not "-f" in sys.argv:
+ sys.argv.append("-f")
+ sys.argv.append(web2py_dir)
+
+
+try:
+ path = '/usr/share/web2py'
+ os.chdir(path)
+except NameError:
+ path = os.getcwd() # Seems necessary for py2exe
+
+try:
+ sys.path.remove(path)
+except ValueError:
+ pass
+sys.path.insert(0, path)
+
+# import gluon.import_all ##### This should be uncommented for py2exe.py
+import gluon.widget
+
+# Start Web2py and Web2py cron service!
+gluon.widget.start(cron=True)
debian/patches/avoid_upgrading 0000644 0000000 0000000 00000007726 11672156645 013733 0 ustar Index: web2py-1.99.4/applications/admin/views/default/site.html
===================================================================
--- web2py-1.99.4.orig/applications/admin/views/default/site.html 2011-12-14 15:45:47.000000000 +0100
+++ web2py-1.99.4/applications/admin/views/default/site.html 2011-12-14 18:32:10.695469587 +0100
@@ -59,14 +59,6 @@
{{if is_manager():}}
{{="Version %s.%s.%s (%s) %s" % myversion}}
- {{if session.check_version:}}
-
- {{=T('Checking for upgrades...')}}
- {{session.check_version=False}}
- {{else:}}
-
- {{=button("javascript:ajax('"+URL('check_version')+"',[],'check_version')", T('Check for upgrades'))}}
- {{pass}}
Running on {{=request.env.server_software}}
Index: web2py-1.99.4/applications/admin/controllers/default.py
===================================================================
--- web2py-1.99.4.orig/applications/admin/controllers/default.py 2011-12-14 18:31:44.647340425 +0100
+++ web2py-1.99.4/applications/admin/controllers/default.py 2011-12-14 18:32:15.447493151 +0100
@@ -14,11 +14,11 @@
import shutil
import platform
-if DEMO_MODE and request.function in ['change_password','pack','pack_plugin','upgrade_web2py','uninstall','cleanup','compile_app','remove_compiled_app','delete','delete_plugin','create_file','upload_file','update_languages','reload_routes']:
+if DEMO_MODE and request.function in ['change_password','pack','pack_plugin','uninstall','cleanup','compile_app','remove_compiled_app','delete','delete_plugin','create_file','upload_file','update_languages','reload_routes']:
session.flash = T('disabled in demo mode')
redirect(URL('site'))
-if not is_manager() and request.function in ['change_password','upgrade_web2py']:
+if not is_manager() and request.function in ['change_password']:
session.flash = T('disabled in multi user mode')
redirect(URL('site'))
@@ -69,11 +69,7 @@
if verify_password(request.vars.password):
session.authorized = True
login_record(True)
-
- if CHECK_VERSION:
- session.check_version = True
- else:
- session.check_version = False
+ session.check_version = False
session.last_time = t0
if isinstance(send, list): # ## why does this happen?
@@ -93,26 +89,6 @@
return dict(send=send)
-def check_version():
- """ Checks if web2py is up to date """
-
- session.forget()
- session._unlock(response)
-
- new_version, version_number = check_new_version(request.env.web2py_version,
- WEB2PY_VERSION_URL)
-
- if new_version == -1:
- return A(T('Unable to check for upgrades'), _href=WEB2PY_URL)
- elif new_version != True:
- return A(T('web2py is up to date'), _href=WEB2PY_URL)
- elif platform.system().lower() in ('windows','win32','win64') and os.path.exists("web2py.exe"):
- return SPAN('You should upgrade to version %s' % version_number)
- else:
- return sp_button(URL('upgrade_web2py'), T('upgrade now')) \
- + XML(' %s' % version_number)
-
-
def logout():
""" Logout handler """
session.authorized = None
@@ -250,18 +226,6 @@
session.flash = T('internal error')
redirect(URL('plugin',args=request.args))
-def upgrade_web2py():
- if 'upgrade' in request.vars:
- (success, error) = upgrade(request)
- if success:
- session.flash = T('web2py upgraded; please restart it')
- else:
- session.flash = T('unable to upgrade because "%s"', error)
- redirect(URL('site'))
- elif 'noupgrade' in request.vars:
- redirect(URL('site'))
- return dict()
-
def uninstall():
app = get_app()
if 'delete' in request.vars:
debian/patches/subwsgihandler 0000644 0000000 0000000 00000005237 11641562546 013602 0 ustar Index: web2py-1.96.1/subwsgihandler.py
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ web2py-1.96.1/subwsgihandler.py 2011-06-02 17:01:34.000000000 +0200
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Author: Fred Gansevles
+#
+# subwsgihandler.py -- a *hack* to make web2py sub-url mountable
+#
+# example apache config
+#
+# WSGIScriptAlias /web2py /usr/local/www/wsgi-scripts/web2py/subwsgihandler.py
+# WSGIDaemonProcess subweb2py user=www-data group=www-data \
+# home=/usr/local/www/wsgi-scripts processes=5 \
+# maximum-requests=10000
+#
+#
+# Order deny,allow
+# Allow from all
+# WSGIProcessGroup subweb2py
+#
+#
+# the web2p app is now mounted at http://localhost/web2py
+#
+
+import sys
+sys.path.insert(0, '')
+
+class SubWeb2py(object):
+ def __init__(self, application):
+ self.application = application
+
+ import gluon.html
+ self.gluon_html_URL = gluon.html.URL
+ gluon.html.URL = self.URL
+
+ def URL(self, *args, **kw):
+ # rewrite the generated URLs, so external referencens have the SCRIPT_NAME prefix
+ return self.script_name + self.gluon_html_URL(*args, **kw)
+
+ def start_response(self, status, headers, info=None):
+ # rewrite redirect URLs, so external referencens have the SCRIPT_NAME prefix
+ if not status.startswith('3'):
+ return self._start_response(status, headers, info)
+ # status: 3xx (redirect)
+ _headers = []
+ for key, value in headers:
+ if key == 'Set-Cookie':
+ # don't modify the cookie, it already has a modified location
+ return self._start_response(status, headers, info)
+ # relative URLs start with '/', absolute URLs start with 'http'
+ if key == 'Location' and value.startswith('/'):
+ value = self.script_name + value
+ _headers.append((key, value))
+ return self._start_response(status, _headers, info)
+
+ def __call__(self, environ, start_response):
+ self.script_name = environ['SCRIPT_NAME']
+ environ['SCRIPT_NAME'] = ''
+ if self.script_name and environ['REQUEST_URI'].startswith(self.script_name):
+ environ['REQUEST_URI'] = environ['REQUEST_URI'][len(self.script_name):]
+ self._start_response = start_response
+ return self.application(environ, self.start_response)
+
+from web2py.wsgihandler import application
+application = SubWeb2py(application)
debian/patches/desktop_file 0000644 0000000 0000000 00000001033 11641562546 013217 0 ustar Index: web2py-1.92.1/web2py.desktop
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ web2py-1.92.1/web2py.desktop 2011-02-20 18:04:52.000000000 +0000
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=web2py
+Comment=Enterprise web development framework using Python
+Comment[es]=Entorno empresarial de desarrollo web con Python
+Exec=web2py %U
+Icon=/usr/share/pixmaps/web2py.png
+Terminal=false
+Type=Application
+Categories=Development;
+StartupNotify=false
debian/patches/gtk_gui 0000644 0000000 0000000 00000036147 11727611044 012207 0 ustar Index: web2py-1.99.7/gluon/contrib/gtk_presentation.py
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ web2py-1.99.7/gluon/contrib/gtk_presentation.py 2012-03-13 10:23:02.450076782 +0100
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+This file is part of the web2py Web Framework
+Copyright 2011 José L. Redrejo Rodríguez
+License: LGPLv3 (http://www.gnu.org/licenses/lgpl.html)
+
+It creates a splash screen for web2py using gtk libraries
+"""
+import gtk
+import pango
+
+class Presentation(gtk.Window):
+
+ def __init__(self,logo,program_name,author,version):
+ """ Draw the splash screen using gtk"""
+ super(Presentation, self).__init__(gtk.WINDOW_POPUP)
+ self.set_position(gtk.WIN_POS_CENTER)
+ self.set_modal(True)
+ self.set_size_request(500,300)
+ self.set_title('web2py')
+ self.AppPaintable=True
+
+ image = gtk.Image()
+ image.set_from_file(logo)
+
+ box=gtk.VBox()
+ box.pack_start(image,False,False, 0)
+ self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("white"))
+ self.add(box)
+ image.show()
+ box.show()
+
+ box.pack_start(self.add_label('Welcome to...'),True,False, 0)
+ box.pack_start(self.add_label(program_name, 18,pango.AttrForeground(65535, 23807, 8191, 0, 31),True),True,False, 0)
+ box.pack_start(self.add_label(author),True,False, 0)
+ box.pack_start(self.add_label(version),True,False, 0)
+
+ self.show()
+
+ def add_label(self,text='Change Me', font_size=12, foreground=pango.AttrForeground(6655, 22783, 26367, 0, 50), bold=False):
+ label=gtk.Label(text)
+ plist=pango.AttrList()
+ fg_size=pango.AttrSize(font_size*1000,0,50)
+ fg_color=foreground
+ plist.insert(fg_color)
+ plist.insert(fg_size)
+ if bold:plist.insert(pango.AttrWeight(pango.WEIGHT_HEAVY, 0, -1))
+ label.set_attributes(plist)
+ label.show()
+ return label
+
Index: web2py-1.99.7/gluon/widget.py
===================================================================
--- web2py-1.99.7.orig/gluon/widget.py 2012-03-13 10:21:10.000000000 +0100
+++ web2py-1.99.7/gluon/widget.py 2012-03-13 10:23:41.987213834 +0100
@@ -33,6 +33,12 @@
except:
pass
+try:
+ import gtk
+ import gobject
+ import contrib.gtk_presentation
+except:
+ pass
try:
BaseException
@@ -89,9 +95,296 @@
print 'starting browser...'
try_start_browser('http://%s:%s' % (ip, port))
+def setup_gtk(*args):
+
+
+
+
+ class web2pyGtkDialog(gtk.Window):
+ """Main gtk window dialog"""
+ def __init__(self,options):
+
+ super(web2pyGtkDialog, self).__init__()
+ gobject.threads_init()
+ self.options=options
+ httplog = os.path.join(self.options.folder, 'httpserver.log')
+
+ self.set_title("web2py server")
+ vbox = gtk.VBox(False, 2)
+
+ # Building the Menu
+ self.menu = gtk.MenuBar()
+
+ servermenu = gtk.Menu()
+ severm = gtk.MenuItem("Server")
+ severm.set_submenu(servermenu)
+
+ item = lambda(x): try_start_browser(httplog)
+ log_item = gtk.MenuItem("View httpserver.log")
+ log_item .connect("activate", item)
+ quit_item = gtk.MenuItem("Quit (pid: %i)" % os.getpid())
+ quit_item.connect("activate", self.quit)
+ servermenu.append(log_item)
+ servermenu.append(quit_item)
+ self.menu.append(severm)
+
+ self.pagesmenu = gtk.Menu()
+ pagesm = gtk.MenuItem("Pages")
+ pagesm.set_submenu(self.pagesmenu)
+ self.menu.append(pagesm)
+
+ helpmenu = gtk.Menu()
+ helpm = gtk.MenuItem("Info")
+ helpm.set_submenu(helpmenu)
+ self.menu.append(helpm)
+
+ # Home Page
+ item = lambda(x): try_start_browser('http://www.web2py.com')
+ home_item= gtk.MenuItem('Home Page')
+ home_item.connect("activate", item)
+
+ # About
+ about=gtk.AboutDialog()
+ about.set_version(ProgramVersion)
+ about.set_copyright(ProgramAuthor)
+ about.set_program_name(ProgramName)
+ item = lambda(x): self.about_dialog(about)
+ about_item= gtk.MenuItem('About')
+ about_item.connect("activate", item)
+ helpmenu.append(home_item)
+ helpmenu.append(about_item)
+
+ vbox.pack_start(self.menu, False, False, 0)
+
+ table = gtk.Table(3, 2, True)
+ vbox.add(table)
+ # IP
+ ip_label = gtk.Label('Server IP:')
+ ip_label.set_alignment(xalign=0.0, yalign=0.5)
+ self.ip = gtk.Entry()
+ self.ip.set_text(self.options.ip)
+ table.attach(ip_label,0, 1, 0, 1)
+ table.attach(self.ip,1, 2, 0, 1)
+ ip_label.show()
+ self.ip.show()
+
+ # Port
+ port_label = gtk.Label('Server Port:')
+ port_label.set_alignment(xalign=0.0, yalign=0.5)
+ self.port_number = gtk.Entry()
+ self.port_number.set_text(str(self.options.port))
+ table.attach(port_label,0, 1, 1, 2)
+ table.attach(self.port_number,1, 2, 1, 2)
+ port_label.show()
+ self.port_number.show()
+
+ # Password
+ passwd_label = gtk.Label('Choose Password:')
+ passwd_label.set_alignment(xalign=0.0, yalign=0.5)
+ self.password = gtk.Entry()
+ self.password.set_visibility(False)
+ self.password.connect("activate", lambda e: self.start())
+ table.attach(passwd_label,0, 1, 2, 3)
+ table.attach(self.password ,1, 2, 2, 3)
+ passwd_label.show()
+ self.password.show()
+
+ # Prepare the canvas
+ self.canvas = gtk.DrawingArea()
+ self.canvas.set_size_request(300, 101)
+ self.canvas.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("black"))
+ vbox.add(self.canvas)
+ self.gc = None # initialized in realize-event handler
+ self.canvas.connect('expose-event', self.on_expose_event)
+ self.canvas.connect('realize', self.on_realize)
+ self.canvas.show()
+
+ # Prepare the frame
+ frame = gtk.HButtonBox()
+ vbox.add(frame)
+ frame.show()
+
+ # Start button
+ start_image=gtk.Image()
+ start_image.set_from_icon_name(gtk.STOCK_EXECUTE,gtk.ICON_SIZE_BUTTON)
+ self.button_start = gtk.Button(label='start server')
+ self.button_start.set_image(start_image)
+ frame.add(self.button_start)
+ self.button_start.show()
+ self.button_start.connect("clicked", self.start)
+
+ # Stopt button
+ stop_image=gtk.Image()
+ stop_image.set_from_icon_name(gtk.STOCK_STOP,gtk.ICON_SIZE_BUTTON)
+ self.button_stop = gtk.Button(label='stop server')
+ self.button_stop.set_image(stop_image)
+ self.button_stop.set_sensitive(False)
+ frame.add(self.button_stop)
+ self.button_stop.show()
+ self.button_stop.connect("clicked", self.stop)
+
+ self.add(vbox)
+ table.show()
+ self.password.grab_focus()
+ self.connect("destroy", self.quit)
+
+ def about_dialog(self,dialog):
+ dialog.run()
+ dialog.hide()
+
+ def error(self, message):
+ """ Show error message """
+ md = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT,
+ gtk.MESSAGE_WARNING, gtk.BUTTONS_CLOSE, message)
+ md.format_secondary_text('web2py start server')
+ md.run()
+ md.destroy()
+
+ def quit(self, menu_item):
+ """ Finish the program execution """
+
+ try:
+ self.server.stop()
+ except:
+ pass
+
+ gtk.main_quit()
+ sys.exit()
+
+ def start(self,item=None):
+ """ Start web2py server """
+
+ password = self.password.get_text()
+
+ if not password:
+ self.error('no password, no web admin interface')
+
+ ip = self.ip.get_text()
+
+ regexp = '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
+ if ip and not re.compile(regexp).match(ip):
+ return self.error('invalid host ip address')
+
+ try:
+ port = int(self.port_number.get_text())
+ except:
+ return self.error('invalid port number')
+
+ self.url = 'http://%s:%s' % (ip, port)
+ self.connect_pages()
+ self.button_start.set_sensitive(False)
+
+ try:
+ options = self.options
+ req_queue_size = options.request_queue_size
+ self.server = main.HttpServer(
+ ip,
+ port,
+ password,
+ pid_filename=options.pid_filename,
+ log_filename=options.log_filename,
+ profiler_filename=options.profiler_filename,
+ ssl_certificate=options.ssl_certificate,
+ ssl_private_key=options.ssl_private_key,
+ min_threads=options.minthreads,
+ max_threads=options.maxthreads,
+ server_name=options.server_name,
+ request_queue_size=req_queue_size,
+ timeout=options.timeout,
+ shutdown_timeout=options.shutdown_timeout,
+ path=options.folder,
+ interfaces=options.interfaces)
+
+ thread.start_new_thread(self.server.start, ())
+ except Exception, e:
+ self.button_start.set_sensitive(True)
+ return self.error(str(e))
+
+ self.button_stop.set_sensitive(True)
+ if not options.taskbar:
+ thread.start_new_thread(start_browser, (ip, port))
+
+ self.password.set_sensitive(False)
+ self.ip.set_sensitive(False)
+ self.port_number.set_sensitive(False)
+
+ gobject.timeout_add(1000, self.update_canvas)
+
+ def stop(self,item=None):
+ self.button_stop.set_sensitive(False)
+ self.button_start.set_sensitive(True)
+ self.password.set_sensitive(True)
+ self.ip.set_sensitive(True)
+ self.port_number.set_sensitive(True)
+ self.server.stop()
+
+ def connect_pages(self):
+ """ Connect pages """
+ def get_label(menu_item):
+ url=menu_item.get_child().get_label()
+ try_start_browser(url)
+
+ for arq in os.listdir('applications/'):
+ if os.path.exists('applications/%s/__init__.py' % arq):
+ url = self.url + '/' + arq
+ start_browser = lambda u =url: get_label(u)
+ page_item = gtk.MenuItem(url)
+ page_item.connect("activate", start_browser)
+ page_item.show()
+ self.pagesmenu.append(page_item)
+
+
+ def update_canvas(self):
+
+ self.queue_draw()
+ gobject.timeout_add(1000, self.update_canvas)
+
+ def on_expose_event(self, widget, event):
+
+ try:
+ t1 = os.path.getsize('httpserver.log')
+
+ except:
+ gobject.timeout_add(1000, self.update_canvas)
+ return
+
+ try:
+ fp = open('httpserver.log', 'r')
+ fp.seek(self.t0)
+ data = fp.read(t1 - self.t0)
+ fp.close()
+ value = self.p0[1:] + [10 +int( 90.0 / math.sqrt(1 + data.count('\n')))]
+ self.p0 = value
+ points=[]
+
+ for i in xrange(len(self.p0)-1):
+ points.append((i,value[i]))
+
+ self.t0 = t1
+ widget.window.draw_lines(self.gc, points)
+
+
+ except BaseException:
+ self.t0 = time.time()
+ self.t0 = t1
+ self.p0 = [100] * 320
+
+
+ def on_realize(self, widget):
+ self.gc = widget.window.new_gc()
+ self.gc.set_rgb_fg_color(gtk.gdk.color_parse("green"))
+ self.gc.set_line_attributes(1, gtk.gdk.LINE_SOLID,
+ gtk.gdk.CAP_PROJECTING, gtk.gdk.JOIN_MITER)
+
+
+ options=args[0]
+ mymain=web2pyGtkDialog(options)
+ gobject.timeout_add(5000, mymain.show_all)
+
+
def presentation(root):
- """ Draw the splash screen """
+ """ Draw the splash screen Tk"""
root.withdraw()
@@ -913,18 +1206,44 @@
if not options.nogui:
try:
- import Tkinter
- havetk = True
- except ImportError:
- logger.warn('GUI not available because Tk library is not installed')
- havetk = False
-
- if options.password == '' and havetk or options.taskbar and havetk:
+ import gtk
+ import gobject
+ import pango
+ havegtk=True
+ havetk=False
+ except:
+ logger.warn('Trying Tk GUI interface because gtk is not installed')
+ havegtk=False
try:
- root = Tkinter.Tk()
- except:
- pass
-
+ import Tkinter
+ havetk = True
+ except ImportError:
+ logger.warn('GUI not available because neither gtk nor Tk libraries are not installed')
+ havetk = False
+ haveUI=havegtk or havetk
+
+ splash = None
+ if options.password == '' and haveUI or options.taskbar and haveUI:
+ if havegtk:
+ splash=contrib.gtk_presentation.Presentation('splashlogo.gif', ProgramName,ProgramAuthor,ProgramVersion)
+ else:
+ try:
+ root = Tkinter.Tk()
+ except:
+ pass
+ #if gtk interface:
+ if splash:
+ # ensure it is rendered immediately
+ while gtk.events_pending():
+ gtk.main_iteration()
+
+ gobject.timeout_add(5000, splash.hide) # 5*1000 miliseconds
+ gobject.idle_add(setup_gtk,options)
+
+ gtk.main()
+ sys.exit()
+
+ #if tk interface:
if root:
root.focus_force()
if not options.quiet:
debian/patches/avoid_write_translations 0000644 0000000 0000000 00000001332 11727361231 015657 0 ustar Index: web2py-1.99.7/gluon/languages.py
===================================================================
--- web2py-1.99.7.orig/gluon/languages.py 2012-03-12 12:38:30.378575167 +0100
+++ web2py-1.99.7/gluon/languages.py 2012-03-12 12:48:07.666187086 +0100
@@ -291,7 +291,8 @@
if mt is None:
self.t[message] = mt = tokens[0]
if self.language_file and not is_gae:
- write_dict(self.language_file, self.t)
+ if not "/applications/welcome/" in self.language_file and not "/applications/admin/" in self.language_file:
+ write_dict(self.language_file, self.t)
if symbols or symbols == 0:
return mt % symbols
return mt
debian/patches/series 0000644 0000000 0000000 00000000147 11727365150 012043 0 ustar subwsgihandler
launcher
desktop_file
avoid_upgrading
gtk_gui
fix_interpreters
avoid_write_translations
debian/patches/fix_interpreters 0000644 0000000 0000000 00000004004 11727607704 014145 0 ustar Index: web2py-1.99.7/gluon/dal.py
===================================================================
--- web2py-1.99.7.orig/gluon/dal.py 2012-03-13 10:12:18.898896088 +0100
+++ web2py-1.99.7/gluon/dal.py 2012-03-13 10:12:23.015023024 +0100
@@ -1,4 +1,4 @@
-#!/bin/env python
+#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Index: web2py-1.99.7/gluon/main.py
===================================================================
--- web2py-1.99.7.orig/gluon/main.py 2012-03-13 10:12:18.886895718 +0100
+++ web2py-1.99.7/gluon/main.py 2012-03-13 10:12:23.015023024 +0100
@@ -1,4 +1,4 @@
-#!/bin/env python
+#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Index: web2py-1.99.7/gluon/rewrite.py
===================================================================
--- web2py-1.99.7.orig/gluon/rewrite.py 2012-03-13 10:12:18.878895471 +0100
+++ web2py-1.99.7/gluon/rewrite.py 2012-03-13 10:12:23.019023147 +0100
@@ -1,4 +1,4 @@
-#!/bin/env python
+#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Index: web2py-1.99.7/gluon/tools.py
===================================================================
--- web2py-1.99.7.orig/gluon/tools.py 2012-03-13 10:12:18.874895348 +0100
+++ web2py-1.99.7/gluon/tools.py 2012-03-13 10:12:23.019023147 +0100
@@ -1,4 +1,4 @@
-#!/bin/python
+#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Index: web2py-1.99.7/gluon/validators.py
===================================================================
--- web2py-1.99.7.orig/gluon/validators.py 2012-03-13 10:12:18.890895842 +0100
+++ web2py-1.99.7/gluon/validators.py 2012-03-13 10:12:23.019023147 +0100
@@ -1,4 +1,4 @@
-#!/bin/env python
+#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Index: web2py-1.99.7/gluon/tests/test_html.py
===================================================================
--- web2py-1.99.7.orig/gluon/tests/test_html.py 2012-03-13 10:12:48.563809623 +0100
+++ web2py-1.99.7/gluon/tests/test_html.py 2012-03-13 10:13:36.925292552 +0100
@@ -1,4 +1,4 @@
-#!/bin/python
+#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
debian/compat 0000644 0000000 0000000 00000000002 11641562546 010376 0 ustar 7
debian/copyright 0000644 0000000 0000000 00000032144 11727606707 011142 0 ustar This package was packaged for Debian by:
José L. Redrejo Rodríguez on
Sun, 30 Jan 2011 10:32:55 +0000 with the assistance of the Debian Python
Modules Team .
It was downloaded from:
http://www.web2py.com/examples/default/download
Upstream Author:
Massimo Di Pierro
Copyright:
Copyright (C) 2007-2011 Massimo Di Pierro
License:
Web2py is Licensed under the LGPL license version 3
see "/usr/share/common-licenses/LGPL-3".
Some sources include also code files with individual licenses:
Directory gluon/contrib/simplejson/*:
Copyright (c) 2006 Bob Ippolito
License: MIT
The complete text of this license is included below.
File gluon/contrib/rss2.py:
This is copyright (c) by Dalke Scientific Software, LLC.
License: BSD
The complete text of this license is included below.
Directory gluon/contrib/markdown/*:
Copyright (c) 2008 ActiveState Software Inc.
License: MIT
The complete text of this license is included below.
File gluon/contrib/pam.py:
Copyright (C) 2007-2009 Chris AtLee
License: MIT
The complete text of this license is included below.
File gluon/contrib/shell.py:
Copyright (C) by Google inc.
License: Apache 2.0
See "/usr/share/common-licenses/Apache-2.0"
File gluon/contrib/AuthorizeNet.py
Copyright (c) 2009-2010 John Conde
Massimo Di Pierro
License: GPL-3
File gluon/contrib/gae_memcache.py:
Developed by Robin Bhattacharyya (memecache for GAE)
License: GPL-3
Directory gluon/contrib/memcache/*
Copyright (c) Evan Martin
License: Python
The complete text of this license is included below.
File gluon/contrib/taskbar_widget.py
Copyright (c) 2008 Mark Larsen, Mark Hammond
License: Python
The complete text of this license is included below.
File gluon/contrib/gae_retry.py:
Copyright (C) 2009 twitter.com/rcb
License: MIT
The complete text of this license is included below.
Directory gluon/contrib/gateways/*
Copyright (c) 2002, 2003, 2005, 2006 Allan Saddi
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
Directory gluon/contrib/markdown/*:
Copyright (c) 2007-2008 ActiveState Corp.
http://code.google.com/p/python-markdown2/
License: MIT
The complete text of this license is included below.
Directory gluon/contrib/markmin/*:
Copyright (C) 2007-2011 Massimo Di Pierro
License: MIT/BSD/GPL
The complete text of the MIT license is included below.
See the complete text of BSD license below and
"/usr/share/common-licenses/GPL-3" for GPL text
File gluon/contrib/markmin/memdb.py:
Copyright (C) 2007-2011 Massimo Di Pierro
License: GPL-2
See "/usr/share/common-licenses/GPL-2"
Directory gluon/contrib/pyfpdf/*:
Copyright () 2004 Olivier Plathey
2005-2006 Max
2008-2010 Mariano Reingart
License: GPL-3
See "/usr/share/common-licenses/GPL-3"
Directory gluon/contrib/pymysql/*:
Copyright (c) 2010 PyMySQL contributors
License: MIT
The complete text of this license is included below.
Directory gluon/contrib/pyrtf/*:
Copyright (c) 2004-2010 Simon Cusack
Grant Edwards
Licenses GPL-3 and LGPL-3
See "/usr/share/common-licenses/GPL-3" and
"/usr/share/common-licenses/LGPL-3"
Directory gluon/contrib/pysimplesoap/*:
Copyright (c) 2010 Mariano Reingart
License: LGPL-3
See "/usr/share/common-licenses/LGPL-3"
File gluon/contrib/spreadsheet.py:
Copyright (C) 2007-2011 Massimo Di Pierro
License: GPL-2
See "/usr/share/common-licenses/GPL-2"
File gluon/rocket.py
Copyright (c) 2010 Timothy Farrell
This file is part of the https://launchpad.net/rocket project
License: MIT
The complete text of this license is included below.
Directory applications/admin/static/eamy/*:
Copyright (c) 2007-2008 Petr Krontorád, April-Child.com
License: MIT
The complete text of this license is included below.
Files applications/examples/static/js/calendar.js,
applications/admin/static/js/calendar.js:
Copyright (c) 2002-2005 Mihai Bazon
License: LGPL-2
See "/usr/share/common-licenses/LGPL-2"
File applications/admin/static/js/jquery.timeentry.js:
Copyright (c) 2007-2010 Keith Wood
http://keith-wood.name/timeEntry.html
Dual-licensed under GPL-2 and MIT licenses.
See "/usr/share/common-licenses/GPL-2" and the MIT text included
below.
File applications/admin/static/js/jqueryMultiSelect.js:
Copyright (c) 2011 A Beautiful Site, LLC.
http://abeautifulsite.net/blog/2011/01/jquery-selectbox-plugin/
Dual-licensed under GPL-2 and MIT licenses.
See "/usr/share/common-licenses/GPL-2" and the MIT text included
below.
File applications/admin/static/js/jquery.hotkeys.js:
Copyright (c) 2007-2008 Tzury Bar Yochay
Dual-licensed under GPL-2 and MIT licenses.
See "/usr/share/common-licenses/GPL-2" and the MIT text included
below.
File applications/welcome/static/js/dd_belatedpng.js:
Copyright (c) Drew Dille
License: MIT
The complete text of this license is included below.
File applications/welcome/static/js/modernizr-1.6.min.js:
Copyright (c) 2009–2010 Faruk Ateş
http://www.modernizr.com/license/
Dual-licensed under the BSD or MIT licenses.
See BSD and MIT licences texts included below.
File applications/welcome/static/js/superfish.js:
Copyright (c) 2008 Joel Birch
Dual-licensed under GPL-2 and MIT licenses.
See "/usr/share/common-licenses/GPL-2" and the MIT text included
below.
Directory applications/admin/static/edit_area/plugins/zencoding/*:
Copyright (c) 2010-2011 Sergey Chikuyonok
http://code.google.com/p/zen-coding/
License: MIT
The complete text of this license is included below.
Directory applications/admin/static/edit_area/*:
Copyright (c) 2008, Christophe Dolivet
Licensed under Apache, BSD and LGPL-2
See license text of BSD below,
"/usr/share/common-licenses/Apache-2" and
"/usr/share/common-licenses/LGPL-2"
The Debian packaging is:
Copyright (C) 2011 José L. Redrejo Rodríguez
and is licensed under the GPL version 3,
see "/usr/share/common-licenses/GPL-3".
-----------------------------------------------------------------------
MIT LICENSE
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----------------------------------------------------------------------
BSD LICENSE
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-----------------------------------------------------------------------
PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
1. This LICENSE AGREEMENT is between the Python Software Foundation
("PSF"), and the Individual or Organization ("Licensee") accessing and
otherwise using this software ("Python") in source or binary form and
its associated documentation.
2. Subject to the terms and conditions of this License Agreement, PSF hereby
grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
analyze, test, perform and/or display publicly, prepare derivative works,
distribute, and otherwise use Python alone or in any derivative version,
provided, however, that PSF's License Agreement and PSF's notice of copyright,
i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Python Software Foundation; All Rights Reserved" are retained in Python alone or
in any derivative version prepared by Licensee.
3. In the event Licensee prepares a derivative work that is based on
or incorporates Python or any part thereof, and wants to make
the derivative work available to others as provided herein, then
Licensee hereby agrees to include in any such work a brief summary of
the changes made to Python.
4. PSF is making Python available to Licensee on an "AS IS"
basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
INFRINGE ANY THIRD PARTY RIGHTS.
5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
6. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.
7. Nothing in this License Agreement shall be deemed to create any
relationship of agency, partnership, or joint venture between PSF and
Licensee. This License Agreement does not grant permission to use PSF
trademarks or trade name in a trademark sense to endorse or promote
products or services of Licensee, or any third party.
8. By copying, installing or otherwise using Python, Licensee
agrees to be bound by the terms and conditions of this License
Agreement.
debian/python-gluon.install 0000644 0000000 0000000 00000000054 11641562546 013232 0 ustar gluon usr/share/python-support/python-gluon
debian/README.Debian 0000644 0000000 0000000 00000004674 11727607352 011254 0 ustar web2py for Debian
-----------------
The documentation directory contains examples:
/usr/share/doc/python-web2py/examples of configuration files to
deploy Web2py applications when using different servers or environment.
The Web2py documentation contains the recipes showing how to use these
configuration files: http://web2py.com/book/default/chapter/11
Apache2 configuration for web2py
-------------------------------
To use Apache2 to serve web2py sites, these packages must be installed:
apache2-server libapache2-mod-wsgi libapache2-mod-python
Two Apache2 configuration files are provided at /usr/share/doc/python-gluon/examples/
web2py.apache and web2py.apache-subdir.
The former allows one to configure a new site running web2py, and the later
is to add a web2py application as a subdir of a running apache server.
To use these files:
If using web2py.apache:
- Add the file /usr/share/doc/python-gluon/examples/wsgihandler.py
to the directory where your web2py application dir is located.
- Replace all the entries of "my_app_name" in web2py.apache by your
web2py application name.
- Replace all the entries of "/path/to/myweb2py/" in web2py.apache
by the path to the directory where web2py applications are installed.
- Ensure this directory is owned by www-data to be able to write
the caches and uploaded files when needed.
- Move web2py.apache to /etc/apache2/sites-available/web2py
- Execute "a2site web2py" and restart apache
If using web2py.apache-subdir:
- Add the file /usr/share/doc/python-gluon/examples/subwsgihandler.py
to the directory where your web2py application dir is located.
- Replace all the entries of "my_sub_dir" in web2py.apache-subdir by
the name of the apache subdirectory you desire to use.
- Replace all the entries of "/path/to/myweb2py/" in
web2py.apache-subdir by the path to the directory where web2py
applications are installed.
- Ensure this directory is owned by www-data to be able to write
the caches and uploaded files when needed.
- Add the contents of the modified web2py.apache-subdir to the right
site file at /etc/apache2/sites-available/ and restart apache
In order to make Debian packages for web2py applications, the current
policy to package web applications must be followed. See
http://webapps-common.alioth.debian.org/draft/html/
-- José L. Redrejo Rodríguez Sun, 30 Jan 2011 10:32:55 +0000
debian/python-gluon.dirs 0000644 0000000 0000000 00000000046 11641562546 012526 0 ustar usr/share/python-support/python-gluon
debian/control 0000644 0000000 0000000 00000003626 11727606201 010602 0 ustar Source: web2py
Section: python
Priority: optional
Maintainer: José L. Redrejo Rodríguez
Uploaders: Debian Python Modules Team
Build-Depends: debhelper (>= 7.0.50~), python-support, python (>= 2.5)
Build-Depends-Indep: libjs-jquery, python-feedparser
Standards-Version: 3.9.3
Homepage: http://www.web2py.com
Vcs-Svn: svn://svn.debian.org/python-modules/packages/web2py/trunk/
Vcs-Browser: http://svn.debian.org/viewsvn/python-modules/packages/web2py/trunk/
Package: python-web2py
Architecture: all
Depends: ${misc:Depends}, ${python:Depends}, python-gluon
Recommends: libjs-jquery, python-gtk2 | python-tk
Description: High-level Python web development framework
web2py is a free, open-source web framework for agile development of
secure database-driven web applications; it is written in Python and
programmable in Python. Web2py is a full-stack framework, meaning that
it contains all the components you need to build fully functional web
applications. Web2py was inspired by Ruby on Rails and Django, and
follows a Model View Controller design.
.
This package includes an example site, an internal web server and the
administration tools to develop web sites with web2py.
Package: python-gluon
Architecture: all
Depends: ${misc:Depends}, ${python:Depends}
Recommends: python-feedparser
Suggests: memcached
Description: High-level Python web development framework
web2py is a free, open-source web framework for agile development of
secure database-driven web applications; it is written in Python and
programmable in Python. Web2py is a full-stack framework, meaning that
it contains all the components you need to build fully functional web
applications. Web2py was inspired by Ruby on Rails and Django, and
follows a Model View Controller design.
.
This package include the python modules needed to run web applications
developed with Web2py
debian/python-web2py.install 0000644 0000000 0000000 00000000415 11672160613 013310 0 ustar applications/examples/static/images/favicon.png usr/share/pixmaps
applications usr/share/web2py
VERSION usr/share/web2py
web2py.py usr/share/web2py
splashlogo.gif usr/share/web2py
web2py usr/bin
web2py.desktop usr/share/applications
debian/web2py.xpm usr/share/pixmaps
debian/watch 0000644 0000000 0000000 00000000077 11641562546 010235 0 ustar version=3
http://www.web2py.com/examples/static/web2py_src.zip
debian/python-gluon.docs 0000644 0000000 0000000 00000000025 11641562546 012512 0 ustar debian/README.Debian
debian/python-web2py.docs 0000644 0000000 0000000 00000000025 11641562546 012576 0 ustar debian/README.Debian
debian/web2py.1 0000644 0000000 0000000 00000010143 11641562546 010471 0 ustar .TH "web2py" "1" "January 30, 2011" "Debian" "User Commands"
.SH "NAME"
web2py \- web2py Web Framework server launcher
.SH "SYNOPSIS"
.B web2py
.RI [ options ]
.SH "DESCRIPTION"
\fBweb2py\fP is a the startup script to launch web2py server running applications located the current directory. If the user has not write permissions on this directory, web2py will server applications located at ~/web2py
\fBATTENTION:\fP unless \fB\-\-nogui\fP option or a password is specified
(\fB\-a\fP "passwd") web2py will attempt to run a GUI. In this case command line options are ignored.
.SH "OPTIONS"
These programs follow the usual GNU command line syntax, with long
options starting with two dashes (`\-').
A summary of options is included below.
For a complete description, see the Info files.
.TP
.B \-\-version
Show version of program and exit.
.TP
.B \-h, \-\-help
Show summary of options and exit.
.TP
.B \-i IP, \-\-ip=IP
Ip address of the server (defaults: 127.0.0.1)
.TP
.B \-p PORT, \-\-port=PORT
Port of server (defaults:8000)
.TP
.B \-a PASSWORD, \-\-password=PASSWORD
Password to be used for administration (use \-a "" to reuse the last password))
.TP
.B \-c SSL_CERTIFICATE, \-\-ssl_certificate=SSL_CERTIFICATE
File that contains ssl certificate
.TP
.B \-k SSL_PRIVATE_KEY, \-\-ssl_private_key=SSL_PRIVATE_KEY
File that contains ssl private key
.TP
.B \-d PID_FILENAME, \-\-pid_filename=PID_FILENAME
File to store the pid of the server
.TP
.B \-l LOG_FILENAME, \-\-log_filename=LOG_FILENAME
File to log connections
.TP
.B \-n NUMTHREADS, \-\-numthreads=NUMTHREADS
Number of threads (deprecated)
.TP
.B \-\-minthreads=MINTHREADS
Minimum number of server threads
.TP
.B \-\-maxthreads=MAXTHREADS
Maximum number of server threads
.TP
.B \-s SERVER_NAME, \-\-server_name=SERVER_NAME
Server name for the web server
.TP
.B \-q REQUEST_QUEUE_SIZE, \-\-request_queue_size=REQUEST_QUEUE_SIZE
Max number of queued requests when server unavailable
.TP
.B \-o TIMEOUT, \-\-timeout=TIMEOUT
Timeout for individual request (Defaults: 10 seconds)
.TP
.B \-z SHUTDOWN_TIMEOUT, \-\-shutdown_timeout=SHUTDOWN_TIMEOUT
Timeout on shutdown of server (Defaults: 5 seconds)
.TP
.B \-f FOLDER, \-\-folder=FOLDER
Folder from which to run web2py
.TP
.B \-v, \-\-verbose
Increase \-\-test verbosity
.TP
.B \-Q, \-\-quiet
Disable all output
.TP
.B \-D DEBUGLEVEL, \-\-debug=DEBUGLEVEL
Set debug output level (0\-100, 0 means all, 100 means none; default is 30)
.TP
.B \-S APPNAME, \-\-shell=APPNAME
Run web2py in interactive shell or IPython (if installed) with specified appname (if app does not exist it will be created).
.TP
.B \-P, \-\-plain
Only use plain python shell; should be used with \fB\-\-shell\fP option
.TP
.B \-M, \-\-import_models
Auto import model files; default is False; should be used with \fB\-\-shell\fP option
.TP
.B \-R PYTHON_FILE, \-\-run=PYTHON_FILE
Run PYTHON_FILE in web2py environment; should be used with \fB\-\-shell\fP option
.TP
.B \-T TEST_PATH, \-\-test=TEST_PATH
Run doctests in web2py environment; TEST_PATH like a/c/f (c,f optional)
.TP
.B \-C, \-\-cron
Trigger a cron run manually; usually invoked from a system crontab
.TP
.B \-\-softcron
Triggers the use of softcron
.TP
.B \-N, \-\-no\-cron
Do not start cron automatically
.TP
.B \-J, \-\-cronjob
Identify cron\-initiated command
.TP
.B \-L CONFIG, \-\-config=CONFIG
Config file
.TP
.B \-F PROFILER_FILENAME, \-\-profiler=PROFILER_FILENAME
Profiler filename
.TP
.B \-\-nogui
Text\-only, no GUI
.TP
.B \-A ARGS, \-\-args=ARGS
Should be followed by a list of arguments to be passed to script, to be used with \fB\-S\fP, \fB\-A\fP must be the last option
.TP
.B \-\-interfaces=INTERFACES
Allows multiple interfaces to be served
.br
.SH "AVAILABILITY"
The latest version of web2py can always be obtained from
\fBhttp://www.web2py.com/examples/default/download\fR
.SH "DOCUMENTATION"
The Official web2py book is available at
\fBhttp://www.web2py.com/book\fR
.SH "AUTHOR"
web2py was written by Massimo Di Pierro >.
.PP
This manual page was written by José L. Redrejo Rodríguez ,
for the Debian project (and may be used by others).
debian/python-web2py.dirs 0000644 0000000 0000000 00000000177 11641562546 012617 0 ustar usr/share/web2py/deposit
usr/share/web2py/logs
usr/share/web2py/site-packages
usr/bin
usr/share/applications
usr/share/pixmaps
debian/python-gluon.examples 0000644 0000000 0000000 00000000240 11641562546 013377 0 ustar wsgihandler.py
subwsgihandler.py
debian/web2py.apache
debian/web2py.apache-subdir
router.example.py
*.yaml
routes.example.py
appengine_config.py
gaehandler.py
debian/source/ 0000755 0000000 0000000 00000000000 11641562546 010500 5 ustar debian/source/format 0000644 0000000 0000000 00000000014 11641562546 011706 0 ustar 3.0 (quilt)
debian/web2py.xpm 0000644 0000000 0000000 00000013311 11641562546 011135 0 ustar /* XPM */
static char *web_py[] = {
/* columns rows colors chars-per-pixel */
"32 32 222 2",
" c #101615",
". c #22312E",
"X c #23312F",
"o c #243330",
"O c #243331",
"+ c #273835",
"@ c #283836",
"# c #2A3B38",
"$ c #2A3C39",
"% c #2B3C39",
"& c #2B3D3A",
"* c #2C3E3A",
"= c #334744",
"- c #334845",
"; c #334945",
": c #344945",
"> c #344946",
", c #344A46",
"< c #354A46",
"1 c #496762",
"2 c #4A6863",
"3 c #4B6863",
"4 c #4B6964",
"5 c #4C6964",
"6 c #4C6A65",
"7 c #4D6A65",
"8 c #4E6B66",
"9 c #4E6C67",
"0 c #4F6C68",
"q c #506C68",
"w c #506D68",
"e c #526E69",
"r c #536F6B",
"t c #54706C",
"y c #55716C",
"u c #56726E",
"i c #57726E",
"p c #57736E",
"a c #58736F",
"s c #58746F",
"d c #597470",
"f c #597570",
"g c #5B7671",
"h c #5B7672",
"j c #5C7773",
"k c #5D7874",
"l c #5E7874",
"z c #5F7975",
"x c #607A76",
"c c #617B77",
"v c #637D78",
"b c #637D79",
"n c #647D79",
"m c #657E7B",
"M c #667F7B",
"N c #67807C",
"B c #68817D",
"V c #69827E",
"C c #6A837F",
"Z c #6B837F",
"A c #6B8480",
"S c #6D8581",
"D c #6E8682",
"F c #6E8683",
"G c #708884",
"H c #728985",
"J c #728986",
"K c #738A86",
"L c #758C88",
"P c #768C89",
"I c #768D89",
"U c #778E8A",
"Y c #788E8A",
"T c #788F8B",
"R c #798F8B",
"E c #7B918D",
"W c #7B918E",
"Q c #7B918F",
"! c #7C928F",
"~ c #7D928F",
"^ c #7D938F",
"/ c #7D9390",
"( c #7E9390",
") c #7F9591",
"_ c #809592",
"` c #809593",
"' c #819693",
"] c #829693",
"[ c #829793",
"{ c #829794",
"} c #839794",
"| c #849996",
" . c #859A97",
".. c #869B97",
"X. c #879B97",
"o. c #869A98",
"O. c #879B98",
"+. c #889C99",
"@. c #889C9A",
"#. c #899D9B",
"$. c #8DA09E",
"%. c #8EA19E",
"&. c #8EA19F",
"*. c #90A29F",
"=. c #90A39F",
"-. c #8FA2A0",
";. c #90A3A1",
":. c #91A4A2",
">. c #92A5A3",
",. c #93A5A4",
"<. c #96A8A4",
"1. c #96A8A5",
"2. c #96A8A6",
"3. c #97A9A6",
"4. c #98AAA7",
"5. c #99AAA7",
"6. c #97A9A8",
"7. c #98AAA8",
"8. c #9AABAA",
"9. c #9AACAA",
"0. c #9BACAB",
"q. c #9CADAC",
"w. c #9CAEAC",
"e. c #9CAEAD",
"r. c #9DAEAD",
"t. c #9EAFAE",
"y. c #9EB0AF",
"u. c #9FB0AF",
"i. c #9FB1B0",
"p. c #A0B0AD",
"a. c #A0B1AE",
"s. c #A1B2AF",
"d. c #A2B2AF",
"f. c #A0B1B0",
"g. c #A2B3B0",
"h. c #A3B3B0",
"j. c #A6B6B3",
"k. c #A7B7B4",
"l. c #A9B8B5",
"z. c #AAB9B6",
"x. c #ABB9B7",
"c. c #ABBAB7",
"v. c #ADBCB9",
"b. c #AEBCBA",
"n. c #AEBDBA",
"m. c #B0BEBB",
"M. c #B0BEBC",
"N. c #B1BFBD",
"B. c #B3C1BE",
"V. c #B4C2BF",
"C. c #B5C3C0",
"Z. c #B9C6C3",
"A. c #BAC7C4",
"S. c #BCC8C6",
"D. c #BCC9C6",
"F. c #BDC9C7",
"G. c #BECAC8",
"H. c #BECBC8",
"J. c #BFCBC8",
"K. c #C0CCCA",
"L. c #C3CECC",
"P. c #C5D1CE",
"I. c #C6D1CE",
"U. c #C8D3D1",
"Y. c #CAD5D3",
"T. c #CBD5D3",
"R. c #CBD6D4",
"E. c #CED9D6",
"W. c #CFD9D6",
"Q. c #CFDAD7",
"!. c #D0DAD8",
"~. c #D1DAD8",
"^. c #D2DCD9",
"/. c #D5DEDC",
"(. c #D5DFDC",
"). c #D5DFDD",
"_. c #D7E0DD",
"`. c #D7E1DE",
"'. c #D8E1DF",
"]. c #D9E2DF",
"[. c #DAE3E1",
"{. c #DBE4E2",
"}. c #DDE5E3",
"|. c #DEE5E3",
" X c #DEE5E4",
".X c #DEE6E4",
"XX c #DFE7E5",
"oX c #DFE8E5",
"OX c #E0E8E6",
"+X c #E0E9E6",
"@X c #E1E9E7",
"#X c #E3EBE8",
"$X c #E3EBE9",
"%X c #E4EDEA",
"&X c #E5EDEA",
"*X c #E6EDEB",
"=X c #E6EEEC",
"-X c #E6EFEC",
";X c #E7EFEC",
":X c #E7EFED",
">X c #E8EFED",
",X c #E8F0ED",
" > > - @ pX",
"# 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 O ",
"= 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 & ",
", 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 i m B N g 5 1 1 1 1 * ",
", 1 { E.S.7 1 1 8 I.Q.l.1 1 1 n T.R.M j @.w.r.f.y.e.-.c 1 1 1 * ",
", 1 S ,X3XZ 1 1 I ,XtX@Xy 1 1 *.tXXXr &.i.0.;.#.$.8.f.9.l 1 1 * ",
", 1 7 /.tX1.1 1 a.tX$X3X( 1 1 G.tXB.1 x ` f 1 1 1 u ,.f.( 1 1 * ",
", 1 1 h.tXU.1 4 W.6X~.tXz.1 p OX6X} 1 1 1 1 1 1 1 r :.f.| 1 1 * ",
", 1 1 K 4X#Xl b =XOX} 3X).6 ~ 6X+Xs 1 1 1 1 t V _ 6.u.t.C 1 1 * ",
", 1 1 0 `.9X..=.8XF.w .X-XA c.tXZ.1 1 1 l o.0.u.f.t.7.J 2 1 1 * ",
", 1 1 1 c.tXV.D.wX%.1 C.wX3.].9XO.1 1 F 9.f.q.>.! N e 1 1 1 1 * ",
", 1 1 1 R 3XOX&X;Xb 1 X.9X|.:X*Xa 1 x 0.u.o.h 1 1 1 1 1 1 1 1 * ",
", 1 1 1 q }.,X2X^.1 1 z $X%XwXK.1 1 .f.2.T L L L L L L L P 3 * ",
", 1 1 1 1 M.tXtXg.1 1 1 Y.tX9X%.1 5 7.f.f.f.f.f.f.f.f.f.f.f.6 * ",
", 1 1 1 1 S n.v.B 1 1 1 ) m.n.h 1 3 Q / / / / / / / / / / W 3 * ",
", 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 * ",
", 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 * ",
", 1 1 1 1 1 Y ] ] ] ] ] ] ] [ [ D 1 1 1 1 1 1 1 d ' ' c 1 1 1 * ",
", 1 1 1 1 1 /.tXtXtXtXtXtXtXtXyXqXX.1 1 1 1 1 y P.eXoXD 1 1 1 * ",
", 1 1 1 1 1 /.tX{.W.W.E.E.E.^.4XtX5XG 1 1 1 9 S.0X%X^ 1 1 1 1 * ",
", 1 1 1 1 1 /.tX4.1 1 1 1 1 1 H uXtX Xv 1 7 b.9X1X+.1 1 1 1 1 * ",
", 1 1 1 1 1 /.tX4.1 1 1 1 1 1 w 5XtXiX!.k h.9XXrX'.,XwXj.4 1 1 1 1 1 1 * ",
", 1 1 1 1 1 /.tXtXwXwXwXwXwXtXtX3Xx.E &XtX9XN.6 1 1 1 1 1 1 1 * ",
", 1 1 1 1 1 /.tX_.J.J.H.H.H.A.k.^ 6 1 d.tX[.e 1 1 1 1 1 1 1 1 * ",
", 1 1 1 1 1 /.tX4.1 1 1 1 1 1 1 1 1 1 1.tX/.1 1 1 1 1 1 1 1 1 * ",
", 1 1 1 1 1 /.tX4.1 1 1 1 1 1 1 1 1 1 1.tX(.1 1 1 1 1 1 1 1 1 * ",
", 1 1 1 1 1 /.tX4.1 1 1 1 1 1 1 1 1 1 1.tX(.1 1 1 1 1 1 1 1 1 * ",
", 1 1 1 1 1 p.C.U 1 1 1 1 1 1 1 1 1 1 L C.s.1 1 1 1 1 1 1 1 1 * ",
"; 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 $ ",
"+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 . ",
"pXo & * * * * * * * * * * * * * * * * * * * * * * * * * * % X pX"
};
debian/python-web2py.menu 0000644 0000000 0000000 00000000266 11641562546 012621 0 ustar ?package(python-web2py):needs="X11" section="Applications/Web Development"\
title="web2py"\
icon="/usr/share/pixmaps/web2py.xpm"\
command="/usr/bin/web2py"
debian/python-web2py.examples 0000644 0000000 0000000 00000000027 11641562546 013466 0 ustar logging.example.conf
debian/changelog 0000644 0000000 0000000 00000007205 11727607477 011066 0 ustar web2py (1.99.7-1) unstable; urgency=low
* New upstream release
* Refreshed gtk_gui and fix_interpreters patches
-- José L. Redrejo Rodríguez Mon, 12 Mar 2012 12:44:02 +0100
web2py (1.99.4-1) unstable; urgency=low
* New upstream release
* Refreshed gtk_gui and avoid_upgrading patches
* Fixed bug in debian/patches/launcher (Closes: #650721)
-- José L. Redrejo Rodríguez Wed, 14 Dec 2011 18:14:45 +0100
web2py (1.99.2.1-1) unstable; urgency=low
* Updated upstream sources with real 1.99.2 version
* Ensure python-gtk2 is not needed to run web2py, fixing
debian/patches/gtk_gui (Closes: #646931)
* Refreshed debian/patches/avoid_updating patch
-- José L. Redrejo Rodríguez Fri, 04 Nov 2011 10:12:01 +0100
web2py (1.99.2-2) unstable; urgency=low
* Fixed paths in Vcs* fields (Closes: #643924)
-- José L. Redrejo Rodríguez Sat, 01 Oct 2011 12:01:56 +0200
web2py (1.99.2-1) unstable; urgency=low
* New upstream version
* Reverted transition to dh_python2 because of bad placement of
files causing importing problems (Closes: #637971)
-- José L. Redrejo Rodríguez Mon, 26 Sep 2011 10:28:59 +0200
web2py (1.98.2-1) unstable; urgency=low
* New upstream version
* Transition to dh_python2:
- Removed python-support from build dependencies in debian/control
- Bumped python version dependencies to 2.6.6-3 in debian/control
-- José L. Redrejo Rodríguez Mon, 08 Aug 2011 13:20:06 +0200
web2py (1.97.1-1) unstable; urgency=low
* New upstream version
* Refreshed debian/patches/launcher to fix bug when used for first time
* Moved most examples from python-web2py to python-gluon package
-- José L. Redrejo Rodríguez Mon, 27 Jun 2011 10:14:46 +0200
web2py (1.96.4-2) unstable; urgency=low
* Refreshed debian/patches/launcher: new module importing now works
-- José L. Redrejo Rodríguez Fri, 10 Jun 2011 13:51:18 +0200
web2py (1.96.4-1) unstable; urgency=low
* New upstream version
-- José L. Redrejo Rodríguez Wed, 08 Jun 2011 08:26:32 +0200
web2py (1.96.3-1) unstable; urgency=low
* New upstream version
-- José L. Redrejo Rodríguez Sun, 05 Jun 2011 11:18:24 +0200
web2py (1.96.2-1) unstable; urgency=low
* New upstream version
-- José L. Redrejo Rodríguez Sat, 04 Jun 2011 11:28:42 +0200
web2py (1.96.1-1) unstable; urgency=low
* New upstream version
* Move wsgihandler.py from python-web2py to examples of python-gluon
* Added subwsgihandler.py to python-gluon examples (as a patch)
* Added web2py.apache-subdir and updated web2py.apache and README.Debian
* Refreshed debian/patches/avoid_upgrading
-- José L. Redrejo Rodríguez Thu, 02 Jun 2011 16:55:29 +0200
web2py (1.95.1-1) unstable; urgency=low
* New upstream version
* Improved web2py launcher
* Removed debian/patches/welcome_without_sessions
* debian/rules: fix some files in the welcome application
-- José L. Redrejo Rodríguez Mon, 25 Apr 2011 16:39:57 +0200
web2py (1.94.6-1) unstable; urgency=low
* New upstream version
* debian/patches/avoid_write_translations avoid web2py trying to
rewrite language files whenever a string is translated
-- José L. Redrejo Rodríguez Fri, 08 Apr 2011 13:18:32 +0200
web2py (1.92.1-1) unstable; urgency=low
* Initial release (Closes: #583384)
-- José L. Redrejo Rodríguez Sun, 30 Jan 2011 10:32:55 +0000
debian/web2py.apache-subdir 0000644 0000000 0000000 00000000575 11641562546 013050 0 ustar WSGIScriptAlias /my_sub_dir /path/to/myweb2py/subwsgihandler.py
WSGIDaemonProcess web2py user=www-data group=www-data \
home=/var processes=5 \
maximum-requests=10000
Order deny,allow
Allow from all
WSGIProcessGroup web2py
debian/rules 0000755 0000000 0000000 00000003024 11641562546 010257 0 ustar #!/usr/bin/make -f
# -*- makefile -*-
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
PREFIX = debian/python-web2py/usr/share/web2py
%:
dh $@
override_dh_clean:
#unset executable permissions in several files:
find applications/ -type f -exec chmod -x {} \;
chmod -x gluon/contrib/pyfpdf/template.py
chmod -x gluon/contrib/AuthorizeNet.py
dh_clean
override_dh_install:
dh_install
#admin app must be upgraded only via a Debian package:
rm -f $(PREFIX)/applications/admin/view/default/upgrade_web2py.html
# no additional licensing files wanted
find debian/ -name LICENSE -delete
find debian/ -name LICENSE.txt -delete
find debian/ -name license.txt -delete
#created with web2py first run:
#touch $(PREFIX)/welcome.w2p
#icon for desktop file:
mv debian/python-web2py/usr/share/pixmaps/favicon.png debian/python-web2py/usr/share/pixmaps/web2py.png
# Remove embedded Javascript libraries
find $(PREFIX)/applications -name jquery.js -exec \
ln -sf /usr/share/javascript/jquery/jquery.js {} \;
# Removed embedded Feedparser module
# For a Lenny backport, pyshared dir must be changed:
#dh_link -p python-gluon /usr/share/python-support/python-feedparser/feedparser.py usr/share/python-support/python-gluon/gluon/contrib/feedparser.py
dh_link -p python-gluon /usr/share/pyshared/feedparser.py usr/share/python-support/python-gluon/gluon/contrib/feedparser.py
override_dh_installman:
dh_installman debian/web2py.1 -ppython-web2py
override_dh_link:
#avoid relative links for jquery.js libraries