This question has been flagged
4 Replies
6589 Views

I'm writing a controller for V7 and I have this problem. I want to get the database name and the cursor but I can't because there is no a "request" parameter like in V8 to get the cr value and I can't obtain database name from anywhere too. As you can see, I hardcoded the database name just for testing but I have to get it programatically or get the cursor value.  How can I do that? Following, the actual code:

class firmaController(http.Controller): 
_cp_path = '/x_firma'

@http.httprequest
def index(self, request, **post):

     db_name = 'GRP-MRREE'
     cr = openerp.pooler.get_db(db_name).cursor()
     bd_obj = openerp.pooler.get_pool(db_name)
     firma_obj = bd_obj.get('x_firma')
     id_transaccion = post['id_transaction']
     documento = firma_obj.invocar_ws_obtenerDocumentosFirmados(cr, SUPERUSER_ID, id_transaccion)
     cr.commit()
     cr.close()
     return werkzeug.utils.redirect('/')
firmaController()

Avatar
Discard

Hi Axel, I'm really new with openerp and particularly, with controllers. What do you mean with "authenticated sessions" and how can I do that? For what I've been doing with the debugger tool, request.session._db  is coming with False value. Do you have any example how to implement authenticated sessions?

Authenticated sessions are those that needs a previous login on the specific database for the user

Best Answer

Hi @Gustavo Seluja

Normally you need to work with authenticated sessions on your methods in a controller. If that is the case you could get the db_name from the OpenERPSession object like:

db_name = request.session._db

If you are not working with an authenticated session you could always get the db_name as a parameter in your method definition like:

class firmaController(http.Controller): 
    _cp_path = '/x_firma'
    @http.httprequest
    def index(self, request, db=None, **post):

Using the former your url need to add an ?db=db_name as a querystring

Hope this solve your problem

Avatar
Discard
Best Answer

How do I use C# to call the function?

def index(self, request, **post): 
Avatar
Discard