debian/0000755000000000000000000000000011727611057007175 5ustar debian/web2py.apache0000644000000000000000000000311311641562546011551 0ustar 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/0000755000000000000000000000000011727611044010620 5ustar debian/patches/launcher0000644000000000000000000001022511672163156012351 0ustar 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_upgrading0000644000000000000000000000772611672156645013733 0ustar 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/subwsgihandler0000644000000000000000000000523711641562546013602 0ustar 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_file0000644000000000000000000000103311641562546013217 0ustar 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_gui0000644000000000000000000003614711727611044012207 0ustar 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_translations0000644000000000000000000000133211727361231015657 0ustar 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/series0000644000000000000000000000014711727365150012043 0ustar subwsgihandler launcher desktop_file avoid_upgrading gtk_gui fix_interpreters avoid_write_translations debian/patches/fix_interpreters0000644000000000000000000000400411727607704014145 0ustar 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/compat0000644000000000000000000000000211641562546010376 0ustar 7 debian/copyright0000644000000000000000000003214411727606707011142 0ustar 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.install0000644000000000000000000000005411641562546013232 0ustar gluon usr/share/python-support/python-gluon debian/README.Debian0000644000000000000000000000467411727607352011254 0ustar 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.dirs0000644000000000000000000000004611641562546012526 0ustar usr/share/python-support/python-gluon debian/control0000644000000000000000000000362611727606201010602 0ustar 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.install0000644000000000000000000000041511672160613013310 0ustar 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/watch0000644000000000000000000000007711641562546010235 0ustar version=3 http://www.web2py.com/examples/static/web2py_src.zip debian/python-gluon.docs0000644000000000000000000000002511641562546012512 0ustar debian/README.Debian debian/python-web2py.docs0000644000000000000000000000002511641562546012576 0ustar debian/README.Debian debian/web2py.10000644000000000000000000001014311641562546010471 0ustar .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.dirs0000644000000000000000000000017711641562546012617 0ustar usr/share/web2py/deposit usr/share/web2py/logs usr/share/web2py/site-packages usr/bin usr/share/applications usr/share/pixmaps debian/python-gluon.examples0000644000000000000000000000024011641562546013377 0ustar 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/0000755000000000000000000000000011641562546010500 5ustar debian/source/format0000644000000000000000000000001411641562546011706 0ustar 3.0 (quilt) debian/web2py.xpm0000644000000000000000000001331111641562546011135 0ustar /* 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.menu0000644000000000000000000000026611641562546012621 0ustar ?package(python-web2py):needs="X11" section="Applications/Web Development"\ title="web2py"\ icon="/usr/share/pixmaps/web2py.xpm"\ command="/usr/bin/web2py" debian/python-web2py.examples0000644000000000000000000000002711641562546013466 0ustar logging.example.conf debian/changelog0000644000000000000000000000720511727607477011066 0ustar 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-subdir0000644000000000000000000000057511641562546013050 0ustar 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/rules0000755000000000000000000000302411641562546010257 0ustar #!/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