Skip to Content
Menu
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
To pytanie dostało ostrzeżenie
6 Odpowiedzi
7184 Widoki

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

Awatar
Odrzuć
Najlepsza odpowiedź

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




 

Awatar
Odrzuć
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 Najlepsza odpowiedź

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.

Awatar
Odrzuć
Powiązane posty Odpowiedzi Widoki Czynność
0
mar 25
1454
4
kwi 24
174334
0
gru 23
2209
5
lip 25
228315
1
gru 22
3327