# -*- coding: utf-8 -*- import json import logging import datetime from odoo import http _logger = logging.getLogger(__name__) def _get_option_data(option_obj): options = [{"id": 0, "name": option_obj._description}] result = option_obj.search([]) for r in result: options.append({"id": r.id, "name": r.name}) return options class SASACSurvey(http.Controller): @http.route('/tx/survey/test/', type='http', auth='public', website=True) def index(self, access_token, **kw): user = http.request.env.user user_id = 0 user_name = "" if user.id != 4: user_id = user.id user_name = user.name survey_sudo = http.request.env["tx.sasac.survey"].sudo() recommend_sudo = http.request.env["tx.recommend.company"].sudo() industry_sudo = http.request.env["tx.industry"].sudo() link_sudo = http.request.env["tx.business.link"].sudo() location_sudo = http.request.env["tx.scene.location"].sudo() survey_id = survey_sudo.search([("access_token", "=", access_token)]) recommend_options = _get_option_data(recommend_sudo) industry_options = _get_option_data(industry_sudo) link_options = _get_option_data(link_sudo) location_options = _get_option_data(location_sudo) scene_list = survey_id.scene_ids return http.request.render("tx_opentekr_survey.sasac_survey_page", { "userId": user_id, "userName": user_name, "survey": survey_id, "imgUrl": http.request.website.image_url(survey_id, 'img'), "recommendOptions": recommend_options, "industryOptions": industry_options, "linkOptions": link_options, "locationOptions": location_options, "sceneList": scene_list, }) @http.route('/tx/survey/read_scene', type='json', auth='user') def read_scene_list(self, **kw): scene_sudo = http.request.env["tx.sasac.survey.scene"].sudo() scene_list = scene_sudo try: record_id = kw.get("recordId", False) recommend_id = kw.get("recommend", False) industry_id = kw.get("industry", False) link_id = kw.get("link", False) location_id = kw.get("location", False) domain = [("survey_id", "=", record_id)] if recommend_id: domain.append(("rc_id", "=", recommend_id)) if industry_id: domain.append(("industry_id", "=", industry_id)) if link_id: domain.append(("link_id", "=", link_id)) if location_id: domain.append(("location_id", "=", location_id)) scene_list = scene_sudo.search(domain) except Exception as e: _logger.error(e) finally: return {"sceneList": scene_list.read(['id', 'name'])} @http.route('/tx/survey/form_scene', type='json', auth='public') def form_scene_data(self, **kw): scene_sudo = http.request.env["tx.sasac.survey.scene"].sudo() scene_data = {"httpCode": 0} uid = http.request.env.uid if uid == 4: return {"sceneData": scene_data} try: record_id = kw.get("recordId", False) domain = [("id", "=", record_id)] scene_id = scene_sudo.search(domain) technology_ids = [technology_id.name for technology_id in scene_id.technology_ids] scene_data = { "httpCode": 1, "id": scene_id.id, "code": scene_id.code, "name": scene_id.name, "companyName": scene_id.company_name, "vodUrl": f"{scene_id.get_base_url()}/web/content?model={scene_id._name}&id={scene_id.id}&field=vod", "rcName": scene_id.rc_id.name, "industryName": scene_id.industry_id.name, "linkName": scene_id.link_id.name, "locationName": scene_id.location_id.name, "technologyList": ", ".join(technology_ids), } except Exception as e: _logger.error(e) finally: return {"sceneData": scene_data} @http.route('/tx/survey/scene_get/create', type='json', auth='user') def scene_get_create(self, **kw): get_sudo = http.request.env["tx.sasac.survey.scene.get"].sudo() scene_sudo = http.request.env["tx.sasac.survey.scene"].sudo() record_id = kw.get("recordId", False) code = 0 scene_id = scene_sudo.browse([record_id]) get_id = get_sudo.create({ "user_id": http.request.env.user.id, "scene_id": scene_id.id, "get_date": datetime.date.today() }) if get_id.__len__(): code = 1 return code