2010-03-02 4 views
0

Je rencontre des difficultés pour créer une fonction globale accessible depuis toutes les classes. Je reçois une erreur depuis user.py qui indique:Fonction globale dans __init__.py non accessible avec Pylons + Python

NameError: global name 'connectCentral' is not defined 

Voici mon code actuel.

projet/modèle/__ __.py initialisation:

"""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) 

projet/modèle/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 

Suis-je manque une importation? Y a-t-il une meilleure manière de faire cela?

Merci.

Répondre

2

Vous devez qualifier le nom avec le module (ou package), il est, donc:

 try: 
      project.model.connectCentral() 

etc.

+0

Quand je fais cela, je reçois: NameError: nom 'projet' est non défini – ensnare

+0

Bizarre, le fichier 'import project.model' que vous avez au début devrait le définir. Essayez 'import project.model comme prom' à la place, puis utilisez' prom.connectCentral() '- que dit-il alors? –

+0

Bizarre ... de project.model import * fonctionne mais importe project.model comme proj rendements AttributeError: l'objet 'module' n'a pas d'attribut 'model' – ensnare

Questions connexes