# -*- coding: utf-8 -*- from __future__ import absolute_import import logging from ops.base import my_unquote from flask import jsonify from flask_restful import reqparse, Resource from mysql.mmysql import MysqlBase from prod_config import mysql_promotion_config import json log = logging.getLogger(__name__) import pdb parser = reqparse.RequestParser() parser.add_argument('id') parser.add_argument('user') parser.add_argument('url') parser.add_argument('args') class PrivMaps(Resource): def __init__(self): self.args = parser.parse_args() self.mydb = MysqlBase(**mysql_promotion_config) def get(self): try: myargs = json.loads(my_unquote(self.args['args'])) except Exception: log.error(f"get args failed!", exc_info=True) args = {} if myargs: users = myargs.get('args', None) status = myargs.get('status', 0) else: users = None status = 0 all_data = [] try: if users: sql = f"select user,mapid,url,status from mymaps where user={users};" elif status: sql = f"select user,mapid,url,status from mymaps where status={status};" else: sql = f"SELECT user,mapid,url,status FROM mymaps ;" data = self.mydb.query(sql) log.info(f"get data from db was {data}") if data: for line in data: if line: mymaps = {} mymaps['user'], mymaps['mapid'], mymaps['url'], mymaps['status'] = line all_data.append(mymaps) del mymaps else: log.info(f"{data} not found in mysql !") return jsonify({'code': 200, 'message': []}) except Exception: log.error(f"get maps via args={args} failed! ", exc_info=True) return jsonify({'code': 500}) return jsonify({'code': 200, 'message': all_data}) def delete(self): myargs = my_unquote(self.args['args']) try: del_sql = f"update mymaps set status=0 where mapid={myargs['mapid']};" self.mydb.change(del_sql) return jsonify({'code': 200}) except Exception: log.error(f"remove {myargs} failed!", exc_info=True) return jsonify({'code': 500}) def get_newid(self): max_id = f"SELECT mapid FROM mymaps ORDER BY mapid 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 maps id ", exc_info=True) max = 1001 return max def post(self): # log.info(f"args={self.args}") pdb.set_trace() myargs = json.loads(my_unquote(self.args['args'])) log.info(f"2={myargs}") try: mymaps = {} mymaps['mapid'] = self.get_newid() mymaps['user'] = myargs['user'] mymaps['url'] = myargs['url'] self.mydb.insert("mymaps", mymaps) return jsonify({'code': 200}) except Exception: log.error("set values to maps mysql failed!", exc_info=True) return jsonify({'code': 500}) def put(self): log.info(f"args={self.args}") myargs = my_unquote(self.args['args']) log.info(f"2={myargs}") try: mymaps = {} mymaps['mapid'] = myargs['mapid'] mymaps['user'] = myargs['user'] mymaps['url'] = myargs['url'] mymaps['status'] = myargs.get('status', 1) sel_sql = f"select url from mymaps where mapid={myargs['mapid']};" data = self.mydb.query(sel_sql) if data: condition = f"mapid={myargs['mapid']}" self.mydb.update("mymaps", mymaps, condition) return jsonify({'code': 200}) else: return jsonify({'code': 404, 'message': f"{myargs['mapid']} not found in mysql!"}) except Exception: log.error("update values to company mysql failed!", exc_info=True) return jsonify({'code': 500})