Help

3

How can I do search without the env attribute?

Avatar
Sebin Siby

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
1 Answer
3
Avatar
Axel Mendoza
Best Answer

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

3 Comments
Avatar
Discard
Avatar
Sebin Siby
-

Really thanks...... @Axel Mendoza

Avatar
Axel Mendoza
-

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

Avatar
Sebin Siby
-

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