Ir al contenido
Menú
Se marcó esta pregunta

Hello guys I'm having a problem with the emails from calendar.event in "Accept", "Decline" or "View" buttons for the meeting invitation, when I accept or decline the answer is declared in Odoo because I can see that employee "accepted" or "declined" the invitation, my problem is when I click the buttons a new page appears in my web browser, this page should show the view of this meeting invitation inside Odoo.


But this page show me a "500 Interval Server Error" with this message in log:

                        QWebException: "'NoneType' object has no attribute '__getitem__'" while evaluating

                        "menu_data['children']"


Basically the buttons work, this ones accept or decline the invitation but I don't know why the page is not showed,

this is the main.py code from controllers folder:



import json

import openerp

import openerp.http as http

from openerp.http import request

import openerp.addons.web.controllers.main as webmain

from openerp.addons.web import http

from openerp.addons.web.http import request

from openerp.addons.website.models.website import unslug

import json



class meeting_invitation(http.Controller):


    @http.route('/calendar/meeting/accept', type='http', auth="calendar")

    def accept(self, db, token, action, id, **kwargs):

        registry = openerp.modules.registry.RegistryManager.get(db)

        attendee_pool = registry.get('calendar.attendee')

        with registry.cursor() as cr:

            attendee_id = attendee_pool.search(cr, openerp.SUPERUSER_ID, [('access_token', '=', token), ('state', '!=', 'accepted')])

            if attendee_id:

                attendee_pool.do_accept(cr, openerp.SUPERUSER_ID, attendee_id)

        return self.view(db, token, action, id, view='form')


    @http.route('/calendar/meeting/decline', type='http', auth="calendar")

    def declined(self, db, token, action, id):

        registry = openerp.modules.registry.RegistryManager.get(db)

        attendee_pool = registry.get('calendar.attendee')

        with registry.cursor() as cr:

            attendee_id = attendee_pool.search(cr, openerp.SUPERUSER_ID, [('access_token', '=', token), ('state', '!=', 'declined')])

            if attendee_id:

                attendee_pool.do_decline(cr, openerp.SUPERUSER_ID, attendee_id)

        return self.view(db, token, action, id, view='form')


    @http.route('/calendar/meeting/view', type='http', auth="calendar")

    def view(self, db, token, action, id, view='calendar'):

        registry = openerp.modules.registry.RegistryManager.get(db)

        meeting_pool = registry.get('calendar.event')

        attendee_pool = registry.get('calendar.attendee')

        partner_pool = registry.get('res.partner')

        with registry.cursor() as cr:

            attendee = attendee_pool.search_read(cr, openerp.SUPERUSER_ID, [('access_token', '=', token)], [])


            if attendee and attendee[0] and attendee[0].get('partner_id'):

                partner_id = int(attendee[0].get('partner_id')[0])

                tz = partner_pool.read(cr, openerp.SUPERUSER_ID, partner_id, ['tz'])['tz']

            else:

                tz = False


            attendee_data = meeting_pool.get_attendee(cr, openerp.SUPERUSER_ID, id, dict(tz=tz))


        if attendee:

            attendee_data['current_attendee'] = attendee[0]


        values = dict(

            init = """

                odoo.define('calendar.invitation_page', function (require) {

                    require('base_calendar.base_calendar').showCalendarInvitation('%s', '%s', '%s', '%s', '%s');

                });

            """ % (db, action, id, 'form', json.dumps(attendee_data))

        )


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


    # Function used, in RPC to check every 5 minutes, if notification to do for an event or not

    @http.route('/calendar/notify', type='json', auth="none")

    def notify(self):

        registry = request.registry

        uid = request.session.uid

        context = request.session.context

        with registry.cursor() as cr:

            res = registry.get("calendar.alarm_manager").get_next_notif(cr, uid, context=context)

            return res


    @http.route('/calendar/notify_ack', type='json', auth="none")

    def notify_ack(self, type=''):

        registry = request.registry

        uid = request.session.uid

        context = request.session.context

        with registry.cursor() as cr:

            res = registry.get("res.partner")._set_calendar_last_notif_ack(cr, uid, context=context)

            return res



What could be the problem? Anyone could help me? Thanks!!

Avatar
Descartar
Publicaciones relacionadas Respuestas Vistas Actividad
0
nov 17
3835
3
dic 15
10507
0
mar 15
3604
0
mar 15
4085
1
sept 16
3577