144 lines
6.9 KiB
Python
144 lines
6.9 KiB
Python
# -*- 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 |