Přejít na obsah
Menu
You need to be registered to interact with the community.
This question has been flagged
6 Odpovědi
7148 Zobrazení

I use a python library in the form:

class SomeClass(object) 
    def __init__(self, arg1, arg2): ...     def fct1(self):
        ...    return something

Directly in python:

x = SomeClass(arg1,arg2)

create an object alright.

I would like to do the same in Odoo. I tried the following:

class SomeClass(models.Model)
  def connect(self, arg1, arg2):
...
def fct1(self):
...
return something

But 

x = connect(arg1,arg2)

returns :

NameError: global name 'connect' is not defined

How should I use my  python library?

TIA

Avatar
Zrušit
Nejlepší odpověď

Try this:

x = self.connect(arg1,arg2)

when you call in SomeClass or (when SomeClass is instance)

x = SomeClass.connect(arg1,arg2)


Example:

class MyClass(models.Model):
    _name = 'my.class'
    def _test(self,a,b):
        return a+b

class OtherClass(models.Model):
...
    MyClass = self.env['my.class'] # create instance
    result = MyClass._test(2,3)
...
print result
> 5


Example 2:  myclass.py in folder myaddons

class MyClass:
def __init__(self, name):
self.name = name
def _test(self,a,b):
return a+b

in other Odoo class:

from openerp.addons.myaddons.myclass import MyClass
...
x = MyClass('Hello')
y = x._test(2,3)
...
print x.name
> Hello
print y
> 5




 

Avatar
Zrušit
Autor

I tried it but it return "None" when I "print x". an instance is not created

Answer updated with instance creation example.

Autor

I am aware that I have to use self.env['my.class'] to access a method in a separate class in odoo. What I try to do is using python code that is not in odoo. How would I call a method that is under a class 'SomeClass(object)' having a __init__ constructor function (vs. a classic odoo model that is using 'models.Model' and do not have the __init__ function)?

Example 2

Autor

It works fine. Thank you a bunch for your help zbik!!

I thought that by declaring the code in the __init__.py code of that directory (models):

> import myclass

I could use it but it seem it is not the case and when importing it in the Odoo Class, the methods are available to be called.

Autor Nejlepší odpověď

It works fine. Thank you a bunch for your help zbik!!

I thought that by declaring the code in the __init__.py code of that directory (models):


import myclass

I could use it but it seem it is not the case and when importing it directly in the Odoo Class; the methods are available to be called.

Avatar
Zrušit
Related Posts Odpovědi Zobrazení Aktivita
0
bře 25
1374
4
dub 24
174271
0
pro 23
2171
5
čvc 25
228043
1
pro 22
3284