Skip to Content
Menu
This question has been flagged

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
Discard
Related Posts Replies Views Activity
0
Nov 17
3834
3
Dec 15
10501
0
Mar 15
3584
0
Mar 15
4049
1
Sep 16
3571