154 lines
6.1 KiB
Python
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}) |