# -*- coding: utf-8 -*- import json import math import logging import datetime from odoo import http, tools from .tool import MakeResponse _logger = logging.getLogger(__name__) class skillImprovement(http.Controller): @http.route(['/skill_improvement'], type='http', auth="public", website=True) def list(self, **kw): return http.request.render('tx_cms_upgrade.skillImprovement', {}) @http.route(['/skill_improvement_data', '/skill_improvement_data/page/'], type='http', auth="public", website=True) def listData(self, good_id=0, page=1, **kw): skill_obj = http.request.env["tx.skill.improvement"].sudo() _post_per_page = 9 page = int(page) goodList = [] good_id = int(good_id) good_ids = skill_obj.good_ids.sudo().search([("code", "=", "GF")])._get_dict_values() for index, item in enumerate(good_ids): item["active"] = True if item["id"] == good_id else False goodList.append(item) domain = [] if good_id: domain.append(("good_ids", "in", [good_id])) skillAll = skill_obj.search(domain) pager = tools.lazy( lambda: http.request.website.pager(url='/skill_improvement_data', total=skillAll.__len__(), page=page, step=_post_per_page, scope=_post_per_page, url_args=kw)) skillData = skillAll[ (page - 1) * _post_per_page:page * _post_per_page] records = [] for skill in skillData: records.append({ "id": skill.id, "imgUrl": http.request.website.image_url(skill, 'img'), "name": skill.name, "chapters": skill.chapters, "goodIds": [good_id.name for good_id in skill.good_ids], }) return MakeResponse.success({ "goodList": goodList, "records": records, "good_id": good_id, "pager": pager._value, }) @http.route('/skill_improvement_details/', type='http', auth="public", website=True) def object(self, obj, **kw): return http.request.render('tx_cms_upgrade.skillImprovementDetails', { 'object': obj }) @http.route('/skill_improvement/details', methods=['get'], auth='public', website=True) def record_details(self, recordId, **kw): record_obj = http.request.env["tx.skill.improvement"].sudo() obj = record_obj.sudo().browse([int(recordId)]) return MakeResponse.success({ "name": obj.name, "author": obj.author, "content": obj.content, }) # 有数了 -- 技能精进 列表 @http.route("/tx_base/api/refine/list", methods=['POST'], auth='public', csrf=False, website=True, cors="*") def scenes_list(self, **kw): params = json.loads(http.request.httprequest.data.decode("utf-8")) page_num = params.get("pageNum", 1) page_size = params.get("pageSize", 10) skill_name = params.get("skillName", "") course_type = params.get("courseType", []) model_obj = http.request.env["tx.skill.improvement"].sudo() records = [] domain = [] if course_type.__len__(): domain.append(("good_ids", "in", course_type)) if skill_name: domain.append(("name", "like", f"%{skill_name}%")) total = model_obj.search_count(domain) offset = (page_num - 1) * page_size if page_num > 1 else 0 dataAll = model_obj.search(domain, offset, page_size) for data in dataAll: records.append({ "id": data.id, "skillAvatar": f"""{data.get_base_url()}{http.request.website.image_url(data, 'img')}""", "skillName": f"{data.name}", "chapter": data.chapters, "author": data.author, "courseType": ",".join([good_id.name for good_id in data.good_ids]), }) pages = math.ceil(total / page_size) return MakeResponse.opontekr_success(records, total, pages) # 有数了 -- 技能精进 详情 @http.route("/tx_base/api/refine/info", methods=['GET'], auth='public', csrf=False, website=True, cors="*") def record_info(self, **kwargs): try: skillId = kwargs.get("skillId", False) model_obj = http.request.env["tx.skill.improvement"].sudo() record = model_obj.search([("id", "=", skillId)]) data = { "createTime": record.create_date.strftime("%Y-%m-%d") if record.create_date else datetime.date.today().strftime("%Y-%m-%d"), "skillName": record.name, "skillContent": record.content, } return MakeResponse.success(data) except Exception as e: _logger.error(e) return MakeResponse.error("参数错误")