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

Hi,


I did overridden the "web_login" function defined in the "Home" class in the "web" module and I need to search a record from that function  but I am getting an internal server error that says,

AttributeError: 'Home (extended by Website, Home, AuthSignupHome)' object has no attribute 'env'


My function is as follows,


class Home(openerp.addons.web.controllers.main.Home):

        @http.route('/web/login', type='http', auth="none")

        def web_login(self, redirect=None, **kw):

                ensure_db()

                request.params['login_success'] = False

                if request.httprequest.method == 'GET' and redirect and request.session.uid:

                        return http.redirect_with_hash(redirect)

                if not request.uid:

                        request.uid = openerp.SUPERUSER_ID

                values = request.params.copy()

                try:

                        values['databases'] = http.db_list()

                except openerp.exceptions.AccessDenied:

                        values['databases'] = None

                if request.httprequest.method == 'POST':

                        old_uid = request.uid

                        uid = request.session.authenticate(request.session.db, request.params['login'], request.params['password'])

                        if uid is not False:

                                user = self.env['res.users'].search([('id', '=', uid)]) 

                                if user.is_blocked != True:

                                        request.params['login_success'] = True

                                        if not redirect:

                                                 redirect = '/web'

                                        return http.redirect_with_hash(redirect)

                                 else:

                                        values['error'] = "You have pending customer payments and your system access is blocked.!! Please contact the administrator.!!"

                                        return request.render('web.login', values)

                          request.uid = old_uid

                          values['error'] = "Wrong login/password"

                    return request.render('web.login', values)



How can I do "user = self.env['res.users'].search([('id', '=', uid)])" this in that function or is there any other way to implement this??


Thanks...





 


Avatar
Zrušit
Nejlepší odpověď

Use request.env instead of self.env and you will be ok

Avatar
Zrušit
Autor

Really thanks...... @Axel Mendoza

Solved? If ok, please accept the answer too, :)

Autor

Yes It's worked. But I don't have that much karma to accept your answer.

in my case, i had to use "http.request.env['model.name'].sudo().search([])", without "sudo", i can't get the records, i don't know why?.

Thanks,
Monish.