# -*- 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/', 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/', 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})