# -*- coding: utf-8 -*- from __future__ import absolute_import from flask import Flask, jsonify from flask_restful import reqparse, abort, Api, Resource import logging from mysql.mmysql import MysqlBase from prod_config import mysql_promotion_config import pdb log = logging.getLogger(__name__) parser = reqparse.RequestParser() parser.add_argument('id') parser.add_argument('name') parser.add_argument('contact') parser.add_argument('appid') parser.add_argument('appkey') parser.add_argument('status') parser.add_argument('tel') parser.add_argument('user') class Company(Resource): def __init__(self): self.args = parser.parse_args() self.mydb = MysqlBase(**mysql_promotion_config) def get(self): status = self.args['status'] id = self.args['id'] user = self.args['user'] all_data = [] try: if status: sql = f"select id,name,contact,tel,appid,appkey,status,user from company where status={status};" elif id: sql = f"select id,name,contact,tel,appid,appkey,status,user from company where id={id};" elif user: sql = f"select id,name,contact,tel,appid,appkey,status,user from company where user='{user}';" else: sql = f"select id,name,contact,tel,appid,appkey,status,user from company ;" data = self.mydb.query(sql) log.info(f"get data from db was {data}") if data: for line in data: if line: company = {} company['id'], company['name'], company['contact'], company['tel'], company['appid'], company[ 'appkey'], company['status'], company['user'] = line all_data.append(company) del company else: log.info(f"{data} not found in mysql !") return jsonify({'code': 200, 'message': []}) except Exception: log.error(f"get company status={status} failed! ", exc_info=True) return jsonify({'code': 500}) return jsonify({'code': 200, 'message': all_data}) def delete(self): id = self.args['id'] try: del_sql = f'update ad set in_used=0 where id={id};' self.mydb.change(del_sql) except Exception: log.error(f"remove {id} failed!", exc_info=True) return jsonify({'code': 500}) return jsonify({'code': 200}) def get_random(self, num=8): import random import string return ''.join(random.sample(string.ascii_letters + string.digits, num)) def get_appid(self): appid = self.get_random() # check appid not in db check_appid = f"select appid from company where appid='{appid}'" data = self.mydb.query(check_appid) if data: self.get_appid() return appid def get_companyid(self): max_id = f"select id from company order by id desc limit 1" data = self.mydb.query(max_id) log.info(f"1 {data}") try: max = int(data[0][0]) + 1 log.info(f"max id was {max}!") except Exception: log.error(f"error with get company id ", exc_info=True) max = 1001 return max def post(self): try: company = {} company['name'] = self.args['name'] company['contact'] = self.args['contact'] company['tel'] = self.args['tel'] company['user'] = self.args['user'] company['id'] = self.get_companyid() company['appid'] = self.get_appid() company['appkey'] = 'undefined' self.mydb.insert("company", company) except Exception: log.error("set values to company mysql failed!", exc_info=True) return jsonify({'code': 500}) return jsonify({'code': 200}) def put(self): try: company = {} company['id'] = self.args['id'] company['name'] = self.args['name'] company['contact'] = self.args['contact'] company['tel'] = self.args['tel'] company['user'] = self.args['user'] company['status'] = self.args['status'] or 0 company['appid'] = self.args['appid'] company['appkey'] = self.args['appkey'] sel_sql = f"select name from company where id={self.args['id']};" data = self.mydb.query(sel_sql) if data: condition = f"id='{self.args['id']}'" self.mydb.update("company", company, condition) return jsonify({'code': 200}) else: return jsonify({'code': 404, 'message': f"{self.args['id']} not found in mysql!"}) except Exception: log.error("update values to company mysql failed!", exc_info=True) return jsonify({'code': 500})