El jueves, 1 de octubre de 2015, 11:26:29 (UTC+1), Sergi Almacellas
Abellana escribió:
>
> El 01/10/15 a les 12:12, Antonio Roncero ha escrit:
> >
> >
> > El jueves, 1 de octubre de 2015, 11:07:33 (UTC+1), Antonio Roncero
> escribió:
> >
> > Hola,
> >
> > Estoy teniendo problemas al acceder al pool con este codigo (creo
> > que esta bien)
> >
> > |
> > ...
> >
> > user = fields.Selection('get_users','User')
> >
> > @classmethod
> > def get_users(cls):
> > pool = Pool()
> > user_obj = pool.get('service.user')
> > users = user_obj.search([])
> > ret = []
> > for user in users:
> > ret.append(user.id <http://user.id>,user.name
> > <http://user.name>)
> > return ret
> > |
> >
> >
> >
> > El tema es que me da el error que no existe la key 'services' (que
> > es el nombre de la base de datos que estoy usando) en la linea
> > return self._pool[self.database_name][type][name]
> >
> > |
> > [Thu Oct 01 09:50:46 2015]
> > ERROR:trytond.protocols.dispatcher:Exception calling
> > model.service.email.get_users from 1@::1:36509/services
> > Traceback (most recent call last):
> > File "/home/dev/tryton/trytond/protocols/dispatcher.py", line
> > 161, in dispatch
> > result = rpc.result(meth(*c_args, **c_kwargs))
> > File
> > "/home/dev/tryton/trytond/modules/service_email/service_email.py",
> > line 15, in get_users
> > User = pool.get('service.user')
> > File "/home/dev/tryton/trytond/pool.py", line 168, in get
> > return self._pool[self.database_name][type][name]
> > KeyError: 'services'
> > |
> >
> > Que puede estar mal? porque la base de datos existe y se llama así.
> >
> >
> >
> > Con el debug, la variable self._pool es un diccionario vacio, el tema es
> > ¿por que?
> >
> >
> > Gracias
> >
> Tiene pinta que tienes un error de código que proboca que no se pueda
> inciar el pool de la base de datos. Revisa los logs del servidor.
>
Pongo el codigo, es algo muy simple para jugar con los el tipo reference,
la idea es que el write del service.email cree el registro service.service
con el reference
Modulo service
__init__.py
from trytond.pool import Pool
from .service import User, Service
from .party import Party
def register():
Pool.register(
User,
Service,
Party,
module='service', type_='model')
service.py
from trytond.model import Workflow, ModelView, ModelSQL, fields
from pool import Pool
__all__ =['Service','User']
class Service(ModelSQL, ModelView):
"Module Service"
__name__ = 'service.service'
name = fields.Char('Service', required=True)
user = fields.Many2One('service.user','User')
type = fields.Reference('Type',selection='models_get')
@classmethod
def models_get(cls):
return [('service.service','Service')]
class User(ModelSQL, ModelView):
"Module Service User"
__name__ = 'service.user'
name = fields.Char('User', required=True)
party = fields.Many2One('party.party','Party')
services = fields.One2Many('service.service','user','Services')
Modulo service_email
__init__.py
from trytond.pool import Pool
from .service_email import ServiceEmailUser
def register():
Pool.register(
ServiceEmailUser,
module='service_email', type_='model')
service_email.py
from trytond.model import ModelView, ModelSQL, fields
from pool import Pool
__all__ =['ServiceEmailUser']
class ServiceEmailUser(ModelSQL, ModelView):
"Module Service"
__name__ = 'service.email'
quota = fields.Float('Quota')
user = fields.Selection('get_users','User')
@classmethod
def get_users(cls):
pool = Pool()
User = pool.get('service.user')
users = User.search([])
ret = []
for user in users:
ret.append(user.id,user.name)
return ret
>
> Si nos los adjuntas en ese hilo te podremos dar mas información ;)
>
/usr/bin/python2.7 /home/dev/tryton/bin/trytond -c
/home/dev/tryton/trytond.conf
[Thu Oct 01 10:32:00 2015]
INFO:trytond.server:using /home/dev/tryton/trytond.conf as configuration
file
[Thu Oct 01 10:32:00 2015] INFO:trytond.server:initialising distributed
objects services
[Thu Oct 01 10:32:00 2015] INFO:trytond.server:starting JSON-RPC protocol
on localhost:8000
[Thu Oct 01 10:32:03 2015] INFO:database:connect to "services"
[Thu Oct 01 10:32:03 2015] INFO:modules:ir:registering classes
[Thu Oct 01 10:32:03 2015] INFO:modules:res:registering classes
[Thu Oct 01 10:32:03 2015] INFO:modules:webdav:registering classes
[Thu Oct 01 10:32:03 2015] INFO:modules:tests:registering classes
[Thu Oct 01 10:32:03 2015] INFO:modules:currency:registering classes
[Thu Oct 01 10:32:03 2015] INFO:modules:product:registering classes
[Thu Oct 01 10:32:03 2015] INFO:modules:country:registering classes
[Thu Oct 01 10:32:03 2015] INFO:modules:party:registering classes
[Thu Oct 01 10:32:03 2015] INFO:modules:service:registering classes
[Thu Oct 01 10:32:03 2015] INFO:modules:workout:registering classes
[Thu Oct 01 10:32:03 2015] INFO:modules:company:registering classes
[Thu Oct 01 10:32:03 2015] INFO:modules:stock:registering classes
[Thu Oct 01 10:32:03 2015] INFO:modules:service_email:registering classes
[Thu Oct 01 10:32:03 2015] INFO:modules:account:registering classes
[Thu Oct 01 10:32:03 2015] INFO:modules:activity:registering classes
[Thu Oct 01 10:32:03 2015] INFO:modules:account_product:registering classes
[Thu Oct 01 10:32:03 2015] INFO:modules:account_invoice:registering classes
[Thu Oct 01 10:32:03 2015] INFO:modules:account_payment_type:registering
classes
[Thu Oct 01 10:32:03 2015] INFO:modules:account_invoice_stock:registering
classes
[Thu Oct 01 10:32:03 2015] INFO:modules:sale:registering classes
[Thu Oct 01 10:32:03 2015] INFO:modules:sale_opportunity:registering classes
[Thu Oct 01 10:32:03 2015]
INFO:modules:sale_opportunity_activity:registering classes
[Thu Oct 01 10:32:03 2015] INFO:pool:init pool for "services"
[Thu Oct 01 10:32:03 2015] INFO:modules:ir
[Thu Oct 01 10:32:03 2015] INFO:modules:res
[Thu Oct 01 10:32:03 2015] INFO:modules:country
[Thu Oct 01 10:32:03 2015] INFO:modules:party
[Thu Oct 01 10:32:03 2015] INFO:modules:service
[Thu Oct 01 10:32:03 2015] INFO:modules:service_email
[Thu Oct 01 10:32:07 2015] INFO:trytond.protocols.dispatcher:successful
login 'admin' from ::1:36763 using JSON-RPC on database 'services'
[Thu Oct 01 10:32:13 2015] ERROR:trytond.protocols.dispatcher:Exception
calling model.service.email.get_users from 1@::1:36763/services
Traceback (most recent call last):
File "/home/dev/tryton/trytond/protocols/dispatcher.py", line 161, in
dispatch
result = rpc.result(meth(*c_args, **c_kwargs))
File "/home/dev/tryton/trytond/modules/service_email/service_email.py",
line 15, in get_users
User = pool.get('service.user')
File "/home/dev/tryton/trytond/pool.py", line 168, in get
return self._pool[self.database_name][type][name]
KeyError: 'services'
>
> --
> Sergi Almacellas Abellana
> www.koolpi.com
> Twitter: @pokoli_srk
>