Skip ke Konten
Menu
Pertanyaan ini telah diberikan tanda
1 Balas
9319 Tampilan

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
Buang
Jawaban Terbai

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

Avatar
Buang
Penulis

Really thanks...... @Axel Mendoza

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

Penulis

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.