120 lines
4.7 KiB
Python
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
|
|
})
|