Глобальная функция в __init__.py недоступна при использовании Pylons + Python - PullRequest
0 голосов
/ 02 марта 2010

У меня проблемы с созданием глобальной функции, доступной из всех классов. Я получаю сообщение об ошибке из user.py, в котором говорится:

NameError: global name 'connectCentral' is not defined

Вот мой текущий код.

проект / модель / __ init __.py:

    """The application's model objects"""
    import sqlalchemy as sa
    from sqlalchemy import orm
    from sqlalchemy import engine_from_config

    from pylons import config
    import central

    #Establish an on-demand connection to the central database
    def connectCentral():
        engine = engine_from_config(config, 'sqlalchemy.central.')
        central.engine = engine
        central.Session.configure(bind=engine)

проект / модель / user.py

    import project.model

    class User(object):
        def emailExists(self):
            try:
                connectCentral()
                emails = central.Session.query(User).filter_by(email=self.email).count()
            if (emails > 0):
                return False
            else:
                return True

        except NameError:
            self.errors['email'] = 'E-Mail not set'
            return False

Я пропускаю импорт? Есть ли лучший способ сделать это?

Спасибо.

1 Ответ

2 голосов
/ 02 марта 2010

Вам нужно указать имя с тем модулем (или пакетом), в котором он находится, поэтому:

        try:
            project.model.connectCentral()

и т.д.

...