OdooDigitizationService/addons/tx_cms/controllers/collection_demand_scenarios.py

154 lines
6.1 KiB
Python

# -*- coding: utf-8 -*-
import json
import logging
import datetime
import requests
from odoo import http, tools
from .tool import MakeResponse
_logger = logging.getLogger(__name__)
class CollectionDemandScenarios(http.Controller):
@http.route('/tx/login', methods=['post'], auth='public', csrf=False, website=True, cors="*")
def login(self, redirect=None, **kwargs):
try:
data = json.dumps({
'params': {
'db': http.request.session.db,
'login': http.request.params['login'],
'password': http.request.params['password'],
},
})
headers = {
"Content-Type": "application/json",
}
response = requests.post(url=f"{http.request.env.user.get_base_url()}/web/session/authenticate", data=data, headers=headers)
session = response.cookies["session_id"]
loginData = response.json()
uid = loginData['result']['uid']
users = http.request.env["res.users"].sudo().search([('id', '=', uid)])
return MakeResponse.success({"userId": uid, "UserName": users.name, 'session': session})
except Exception as e:
_logger.error(e)
return MakeResponse.error("账号/密码错误")
@http.route('/tx/signup', methods=['post'], auth='public', csrf=False, website=True, cors="*")
def signup(self, redirect=None, **kwargs):
try:
login = http.request.params['login']
name = http.request.params['name']
password = http.request.params['password']
confirm_password = http.request.params['confirm_password']
if password != confirm_password:
return MakeResponse.error("两次密码不相同")
user = http.request.env['res.users'].sudo().create({
"login": login,
"name": name,
"password": password,
})
return MakeResponse.success({"userId": user.id, "UserName": user.name})
except Exception as e:
_logger.error(e)
return MakeResponse.error("数据错误")
@http.route('/tx/user/logout', methods=['post'], auth='user', csrf=False, sitemap=False, cors="*")
def logout(self):
http.request.session.logout(keep_db=True)
return MakeResponse.success('退出登录')
@http.route('/collection_demand_scenarios', type='http', auth="public", website=True)
def list(self, **kw):
uid = http.request.uid
if uid == 4:
return http.request.redirect('/web/login')
state = {"draft": "草稿",
"approve": "待审核",
"pass": "通过",
"reject": "驳回"}
records = http.request.env["tx.collection.demand.scenarios"].search([("create_uid", "=", uid)])
return http.request.render('tx_cms.collectionDemandScenarios', {"records": records, "state": state})
@http.route('/collection_demand_scenarios/list', type='http', auth="user", website=True)
def record_list(self, **kw):
uid = http.request.uid
if uid == 4:
return http.request.redirect('/web/login')
state = {"draft": "草稿",
"approve": "待审核",
"pass": "通过",
"reject": "驳回"}
data = http.request.env["tx.collection.demand.scenarios"].search([("create_uid", "=", uid)])
records = []
if data.__len__():
for r in data:
records.append({
"id": r.id,
"name": r.name,
"describe": r.describe,
"state": r.state,
"doneDate": r.done_date.__str__(),
})
return MakeResponse.success({
"records": records,
"state": state,
})
@http.route('/collection_demand_scenarios_details/<model("tx.collection.demand.scenarios"):obj>', type='http', auth="public",
website=True)
def collection_demand_scenarios_details(self, obj, **kw):
return http.request.render('tx_cms.collectionDemandScenariosDetails', {
'object': obj
})
@http.route('/collection_demand_scenarios/details', methods=['get'], auth='user', website=True)
def record_details(self, recordId, **kw):
record_obj = http.request.env["tx.collection.demand.scenarios"].sudo()
obj = record_obj.sudo().browse([int(recordId)])
return MakeResponse.success({
"name": obj.name,
"companyName": obj.company_name,
"doneDate": obj.done_date.__str__(),
"amount": obj.amount,
"provideCompanyName": obj.provide_company_name,
"describe": obj.describe,
"ask": obj.ask,
"content": obj.content,
})
@http.route('/collection_demand_scenarios/new', type='http', auth="public", website=True)
def listNew(self, **kw):
uid = http.request.uid
if uid == 4:
return http.request.redirect('/web/login')
return http.request.render('tx_cms.collectionDemandScenariosNew', {})
@http.route('/collection_demand_scenarios/create/<string:model_name>', type='http', auth="user", methods=['POST'], website=True, csrf=False)
def listCreate(self, model_name, **kw):
uid = http.request.uid
if uid == 4:
return http.request.redirect('/web/login')
data = {
"name": kw.get("name", False),
"describe": kw.get("describe", False),
"content": kw.get("content", False),
"ask": kw.get("ask", False),
"amount": kw.get("amount", False),
}
if kw.get("done_date", False):
data["done_date"] = datetime.datetime.strptime(kw.get("done_date", False), '%Y年%m月%d')
if kw.get("img", False):
data["demand_file"] = kw.get("img", False).read()
data["demand_file_name"] = kw.get("img", False).filename
demand_id = http.request.env["tx.collection.demand.scenarios"].create(data)
return json.dumps({'id': demand_id.id})