Skip to Content
Menu
This question has been flagged
6 Replies
6480 Views

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
Discard
Best Answer

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
Discard
Author

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

Answer updated with instance creation example.

Author

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

Author

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.

Author Best Answer

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
Discard
Related Posts Replies Views Activity
4
Apr 24
170726
0
Dec 23
606
5
Nov 24
217130
1
Dec 22
1692
2
Nov 22
1679