Hi,

got a perfectly working project (on MacOSX).
If I try running it on Ubuntu 6.04 with python 2.4.4 I get the following
error, right after logging in:
Page handler: <bound method Root.index of <ntime.controllers.Root object
at 0xb73e3bec>>
Traceback (most recent call last):
  File
"/usr/local/lib/python2.4/site-packages/CherryPy-2.2.1-py2.4.egg/cherrypy/_cphttptools.py",
line 105, in _run
    self.main()
  File
"/usr/local/lib/python2.4/site-packages/CherryPy-2.2.1-py2.4.egg/cherrypy/_cphttptools.py",
line 254, in main
    body = page_handler(*virtual_path, **self.params)
  File "<string>", line 3, in index
  File
"/usr/local/lib/python2.4/site-packages/TurboGears-1.0.4b2-py2.4.egg/turbogears/controllers.py",
line 342, in expose
    output = database.run_with_transaction(
  File "<string>", line 5, in run_with_transaction
  File
"/usr/local/lib/python2.4/site-packages/TurboGears-1.0.4b2-py2.4.egg/turbogears/database.py",
line 316, in so_rwt
    retval = func(*args, **kw)
  File "<string>", line 5, in _expose
  File
"/usr/local/lib/python2.4/site-packages/TurboGears-1.0.4b2-py2.4.egg/turbogears/controllers.py",
line 359, in <lambda>
    mapping, fragment, args, kw)))
  File
"/usr/local/lib/python2.4/site-packages/TurboGears-1.0.4b2-py2.4.egg/turbogears/controllers.py",
line 386, in _execute_func
    output = errorhandling.try_call(func, *args, **kw)
  File
"/usr/local/lib/python2.4/site-packages/TurboGears-1.0.4b2-py2.4.egg/turbogears/errorhandling.py",
line 72, in try_call
    return func(self, *args, **kw)
  File "<string>", line 3, in index
  File
"/usr/local/lib/python2.4/site-packages/TurboGears-1.0.4b2-py2.4.egg/turbogears/identity/conditions.py",
line 235, in require
    return fn(self, *args, **kwargs)
  File "/home/nr/nTime2/ntime/controllers.py", line 43, in index
  File
"/usr/local/lib/python2.4/site-packages/SQLObject-0.9.2-py2.4.egg/sqlobject/dbconnection.py",
line 840, in queryAll
    return self._dbConnection._queryAll(self._connection, s)
  File
"/usr/local/lib/python2.4/site-packages/SQLObject-0.9.2-py2.4.egg/sqlobject/dbconnection.py",
line 348, in _queryAll
    self._executeRetry(conn, c, s)
  File
"/usr/local/lib/python2.4/site-packages/SQLObject-0.9.2-py2.4.egg/sqlobject/mysql/mysqlconnection.py",
line 135, in _executeRetry
    raise ProgrammingError(ErrorMessage(e))
ProgrammingError: Table 'ntime.Worktime' doesn't exist


phpmyadmin shows me the "worktime" - Table (but with small 'W'), and it
works fine on MacOSX

anyone any idea?



have a nice weekend,

Nicolas




my prod.cnf:

[global]
# This is where all of your settings go for your development environment
# Settings that are the same for both development and production
# (such as template engine, encodings, etc.) all go in
# ntime/config/app.cfg

# DATABASE

# pick the form for your database
# sqlobject.dburi="postgres://[EMAIL PROTECTED]/databasename"
# sqlobject.dburi="mysql://username:[EMAIL PROTECTED]:port/databasename"
# sqlobject.dburi="sqlite:///file_name_and_path"

sqlobject.dburi="mysql://ntime:[EMAIL PROTECTED]:3306/ntime"

#sqlobject.dburi="sqlite://%(current_dir_uri)s/devdata.sqlite"

# if you are using a database or table type without transactions
# (MySQL default, for example), you should turn off transactions
# by prepending notrans_ on the uri
#
sqlobject.dburi="notrans_mysql://username:[EMAIL PROTECTED]:port/databasename"

# for Windows users, sqlite URIs look like:
# sqlobject.dburi="sqlite:///drive_letter:/path/to/file"

# SERVER

# Some server parameters that you may want to tweak
# server.socket_port=8080

# Enable the debug output at the end on pages.
# log_debug_info_filter.on = False

server.environment="production"
autoreload.package="ntime"

# Auto-Reload after code modification
# autoreload.on = True

# Set to True if you'd like to abort execution if a controller gets an
# unexpected parameter. False by default
tg.strict_parameters = True

# LOGGING
# Logging configuration generally follows the style of the standard
# Python logging module configuration. Note that when specifying
# log format messages, you need to use *() for formatting variables.
# Deployment independent log configuration is in ntime/config/log.cfg
[logging]

[[loggers]]
[[[ntime]]]
level='DEBUG'
qualname='ntime'
handlers=['debug_out']

[[[allinfo]]]
level='INFO'
handlers=['debug_out']

[[[access]]]
level='INFO'
qualname='turbogears.access'
handlers=['access_out']
propagate=0


my model.py:

from datetime import datetime
from turbogears.database import PackageHub
from sqlobject import *
from turbogears import identity

hub = PackageHub('ntime')
__connection__ = hub

# class YourDataClass(SQLObject):
#     pass


class Worktime(SQLObject):
    start = DateTimeCol()
    end = DateTimeCol( default=None )
    startdate = DateCol()
    user = ForeignKey("User")


# identity models.
class Visit(SQLObject):
    """
    A visit to your site
    """
    class sqlmeta:
        table = 'visit'

    visit_key = StringCol(length=40, alternateID=True,
                          alternateMethodName='by_visit_key')
    created = DateTimeCol(default=datetime.now)
    expiry = DateTimeCol()

    def lookup_visit(cls, visit_key):
        try:
            return cls.by_visit_key(visit_key)
        except SQLObjectNotFound:
            return None
    lookup_visit = classmethod(lookup_visit)


class VisitIdentity(SQLObject):
    """
    A Visit that is link to a User object
    """
    visit_key = StringCol(length=40, alternateID=True,
                          alternateMethodName='by_visit_key')
    user_id = IntCol()


class Group(SQLObject):
    """
    An ultra-simple group definition.
    """
    # names like "Group", "Order" and "User" are reserved words in SQL
    # so we set the name to something safe for SQL
    class sqlmeta:
        table = 'tg_group'

    group_name = UnicodeCol(length=16, alternateID=True,
                            alternateMethodName='by_group_name')
    display_name = UnicodeCol(length=255)
    created = DateTimeCol(default=datetime.now)

    # collection of all users belonging to this group
    users = RelatedJoin('User', intermediateTable='user_group',
                        joinColumn='group_id', otherColumn='user_id')

    # collection of all permissions for this group
    permissions = RelatedJoin('Permission', joinColumn='group_id',
                              intermediateTable='group_permission',
                              otherColumn='permission_id')


class User(SQLObject):
    """
    Reasonably basic User definition.
    Probably would want additional attributes.
    """
    # names like "Group", "Order" and "User" are reserved words in SQL
    # so we set the name to something safe for SQL
    class sqlmeta:
        table = 'tg_user'

    user_name = UnicodeCol(length=16, alternateID=True,
                           alternateMethodName='by_user_name')
    email_address = UnicodeCol(length=255, alternateID=True,
                               alternateMethodName='by_email_address')
    display_name = UnicodeCol(length=255)
    password = UnicodeCol(length=40)
    created = DateTimeCol(default=datetime.now)
    worktimes = SQLMultipleJoin("Worktime", joinColumn = 'user_id')

    # groups this user belongs to
    groups = RelatedJoin('Group', intermediateTable='user_group',
                         joinColumn='user_id', otherColumn='group_id')

    def _get_permissions(self):
        perms = set()
        for g in self.groups:
            perms = perms | set(g.permissions)
        return perms

    def _set_password(self, cleartext_password):
        "Runs cleartext_password through the hash algorithm before saving."
        password_hash = identity.encrypt_password(cleartext_password)
        self._SO_set_password(password_hash)

    def set_password_raw(self, password):
        "Saves the password as-is to the database."
        self._SO_set_password(password)


class Permission(SQLObject):
    """
    A relationship that determines what each Group can do
    """
    permission_name = UnicodeCol(length=16, alternateID=True,
                                 alternateMethodName='by_permission_name')
    description = UnicodeCol(length=255)

    groups = RelatedJoin('Group',
                         intermediateTable='group_permission',
                         joinColumn='permission_id',
                         otherColumn='group_id')


-------------------------------------------------------------------------
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell.  From the desktop to the data center, Linux is going
mainstream.  Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
_______________________________________________
sqlobject-discuss mailing list
sqlobject-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss

Reply via email to