This question has been flagged
1 Reply
8374 Views

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

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

Avatar
Discard
Author

Really thanks...... @Axel Mendoza

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

Author

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.