OdooDigitizationService/addons/tx_cms/controllers/expert_database.py

120 lines
4.7 KiB
Python

# -*- coding: utf-8 -*-
import os
import logging
from odoo import http, tools
from .tool import MakeResponse
_logger = logging.getLogger(__name__)
class expertDatabase(http.Controller):
@http.route(['/expert_database'], type='http', auth="public", website=True)
def list(self, **kw):
return http.request.render('tx_cms.expertDatabase', {})
@http.route(['/expert_database_data', '/expert_database_data/page/<int:page>'], type='http', auth="public",
website=True)
def listData(self, good_id=0, industry_id=0, service_id=0, initial_letter="", page=1, **kw):
database_obj = http.request.env["tx.expert.database"].sudo()
_post_per_page = 9
page = int(page)
goodList = []
serviceList = []
industryList = []
initialLetterList = [{"id": 0,
"name": "全部",
"active": False if initial_letter else True}]
level = {"primary": "初级", "middle": "中级", "senior": "高级"}
good_id = int(good_id)
service_id = int(service_id)
industry_id = int(industry_id)
good_ids = database_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)
service_ids = database_obj.service_ids.sudo().search([("code", "=", "GS")])._get_dict_values()
for index, item in enumerate(service_ids):
item["active"] = True if item["id"] == service_id else False
serviceList.append(item)
industry_ids = database_obj.industry_ids.sudo().search([("code", "=", "GI")])._get_dict_values()
for index, item in enumerate(industry_ids):
item["active"] = True if item["id"] == industry_id else False
industryList.append(item)
domain = []
if industry_id:
domain.append(("industry_ids", "in", [industry_id]))
if good_id:
domain.append(("good_ids", "in", [good_id]))
if service_id:
domain.append(("service_ids", "in", [service_id]))
if initial_letter and initial_letter != "全部":
domain.append(("initial_letter", "=", initial_letter))
databaseAll = database_obj.search(domain)
letter_list = []
for database in databaseAll:
if database.initial_letter not in letter_list:
letter_list.append(database.initial_letter)
index = 1
for letter in letter_list:
initialLetterList.append({
"id": index,
"name": letter,
"active": True if initial_letter == letter else False})
index += 1
if initialLetterList.__len__() == 1:
initialLetterList[0]["active"] = True
pager = tools.lazy(
lambda: http.request.website.pager(url='/expert_database_data', total=databaseAll.__len__(),
page=page, step=_post_per_page, scope=_post_per_page,
url_args=kw))
databaseData = databaseAll[(page - 1) * _post_per_page:page * _post_per_page]
records = []
for database in databaseData:
records.append({
"id": database.id,
"imgUrl": http.request.website.image_url(database, 'img'),
"name": database.name,
"companyName": database.company_name,
"briefIntroduction": str(database.brief_introduction),
"level": database.level,
"serviceIds": [service_id.name for service_id in database.service_ids],
"typeIds": [type_id.name for type_id in database.type_ids],
"goodIds": [good_id.name for good_id in database.good_ids],
"industryIds": [industry_id.name for industry_id in database.industry_ids],
})
return MakeResponse.success({
"goodList": goodList,
"serviceList": serviceList,
"industryList": industryList,
"initialLetterList": initialLetterList,
"records": records,
"good_id": good_id,
"service_id": service_id,
"industry_id": industry_id,
"initial_letter": initial_letter,
"pager": pager._value,
'level': level,
})
@http.route('/expert_database_details/<model("tx.expert.database"):obj>', type='http', auth="public",
website=True)
def object(self, obj, **kw):
return http.request.render('tx_cms.expertDatabaseDetails', {
'object': obj
})