# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. import json import logging import odoo import odoo.modules.registry from odoo import http from odoo.exceptions import AccessError from odoo.http import request from odoo.addons.web.controllers.utils import ensure_db _logger = logging.getLogger(__name__) class Home(http.Controller): @http.route('/web/room', type='http', auth="none") def web_login(self, room_id=None, **kw): ensure_db() values = {k: v for k, v in request.params.items()} if not room_id: values['error'] = "缺少会议号" response = request.render('room.website_form_room', values) response.headers['X-Frame-Options'] = 'SAMEORIGIN' response.headers['Content-Security-Policy'] = "frame-ancestors 'self'" return response if request.session.uid is not None: user_obj = request.env['res.users'].browse(request.session.uid) if user_obj: request.env["room.meeting.sign"].sudo().create({ "room_booking_id": room_id, "sign_user_name": user_obj.name, "user_type": "insiders", "sign_type": 'yes' }) values["message"] = "签到成功" response = request.render('room.website_form_room', values) response.headers['X-Frame-Options'] = 'SAMEORIGIN' response.headers['Content-Security-Policy'] = "frame-ancestors 'self'" return response values['room_id'] = int(room_id) record = request.env['room.booking'].sudo().browse(values['room_id']) new_partner = request.env["res.partner"].sudo().browse(record.other_company_id.id) values['child_ids'] = new_partner.child_ids if request.httprequest.method == 'POST': try: record = request.env['room.booking'].sudo().browse(values['room_id']) request.env["room.meeting.sign"].sudo().create({ "room_booking_id": record.id, "sign_user_name": values.get("name", ""), "user_type": "outsiders", "sign_type": 'yes' }) # pass values["message"] = "签到成功" except odoo.exceptions.AccessDenied as e: if e.args == odoo.exceptions.AccessDenied().args: values['error'] = "重复签到" else: values['error'] = "签到失败" response = request.render('room.website_form_room', values) response.headers['X-Frame-Options'] = 'SAMEORIGIN' response.headers['Content-Security-Policy'] = "frame-ancestors 'self'" return response @http.route('/web/room/partner/create', type='http', auth="none") def web_room_partner_create(self, room_id=None, **kw): ensure_db() values = {k: v for k, v in request.params.items()} if not (room_id or values['room_id']): values['error'] = "缺少会议号" response = request.render('room.partner_create_form_room', values) response.headers['X-Frame-Options'] = 'SAMEORIGIN' response.headers['Content-Security-Policy'] = "frame-ancestors 'self'" return response values['room_id'] = int(room_id) if request.httprequest.method == 'POST': record = request.env['room.booking'].sudo().browse(values['room_id']) other_company_id = record.other_company_id if not record.other_company_id: new_partner = request.env["res.partner"].sudo().create({ "name": values.get("name", ""), }) record.other_company_id = new_partner.id other_company_id = new_partner # pass values["message"] = values.get("name", "") + ": 创建成功,请继续添加人员!" values["partner_id"] = int(other_company_id.id) values["partner_name"] = other_company_id.name values.pop("name", "") response = request.render('room.partner_create_user_room', values) response.headers['X-Frame-Options'] = 'SAMEORIGIN' response.headers['Content-Security-Policy'] = "frame-ancestors 'self'" return response if values['room_id']: record = request.env['room.booking'].sudo().browse(values['room_id']) other_company_id = record.other_company_id if record.other_company_id: values["partner_id"] = int(other_company_id.id) values["partner_name"] = other_company_id.name values["message"] = other_company_id.name + ": 已存在,请继续添加人员!" new_partner = request.env["res.partner"].sudo().browse(int(values['partner_id'])) values["new_partner"] = new_partner.child_ids response = request.render('room.partner_create_user_room', values) response.headers['X-Frame-Options'] = 'SAMEORIGIN' response.headers['Content-Security-Policy'] = "frame-ancestors 'self'" return response response = request.render('room.partner_create_form_room', values) response.headers['X-Frame-Options'] = 'SAMEORIGIN' response.headers['Content-Security-Policy'] = "frame-ancestors 'self'" return response @http.route('/web/room/partner/user/create', type='http', auth="none") def web_room_partner_user_create(self, **kw): ensure_db() values = {k: v for k, v in request.params.items()} if request.httprequest.method == 'POST': new_obj = request.env["res.partner"].sudo().create({ "name": values.get("name", ""), "type": "contact", "parent_id": values['partner_id'] }) # pass values["message"] = values.get("name", "") + ": 创建成功" values["partner_id"] = int(values['partner_id']) new_partner = request.env["res.partner"].sudo().browse(int(values['partner_id'])) new_ids = new_partner.child_ids.ids + [new_obj.id] # record = request.env['room.booking'].sudo().browse(values['room_id']) # record.other_user_ids = new_ids new_all_obj = request.env["res.partner"].sudo().search([("id", "in", new_ids)]) values.pop("name", "") values["new_partner"] = new_all_obj response = request.render('room.partner_create_user_room', values) response.headers['X-Frame-Options'] = 'SAMEORIGIN' response.headers['Content-Security-Policy'] = "frame-ancestors 'self'" return response response = request.render('room.partner_create_form_room', values) response.headers['X-Frame-Options'] = 'SAMEORIGIN' response.headers['Content-Security-Policy'] = "frame-ancestors 'self'" return response