# -*- 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('mapid') parser.add_argument('user') parser.add_argument('url') parser.add_argument('status') class PrivMaps(Resource): def __init__(self): self.args = parser.parse_args() self.mydb = MysqlBase(**mysql_promotion_config) def get(self): try: users = self.args['users'] status = self.args['status'] except Exception: log.info(f"get args Failed,{self.args}") return jsonify({'code': 500, "message": f"get args Failed,{self.args}"}) 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={self.args} failed! ", exc_info=True) return jsonify({'code': 500}) return jsonify({'code': 200, 'message': all_data}) def delete(self): try: mapid = self.args['mapid'] except Exception: log.info(f"get args Failed,{self.args}") return jsonify({'code': 500, "message": f"get args Failed,{self.args}"}) try: del_sql = f"update mymaps set status=0 where mapid={mapid};" self.mydb.change(del_sql) return jsonify({'code': 200}) except Exception: log.error(f"remove {self.args} 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): print(f"args={self.args}") try: mymaps = {} mymaps['mapid'] = self.get_newid() mymaps['user'] = self.args['user'] mymaps['url'] = self.args['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,"message":f"get args failed,{self.args}"}) def put(self): try: mymaps = {} mymaps['mapid'] = self.args['mapid'] mymaps['user'] = self.args['user'] mymaps['url'] = self.args['url'] mymaps['status'] = self.args['status'] sel_sql = f"select url from mymaps where mapid={self.args['mapid']};" data = self.mydb.query(sel_sql) if data: condition = f"mapid={self.args['mapid']}" self.mydb.update("mymaps", mymaps, condition) return jsonify({'code': 200}) else: return jsonify({'code': 404, 'message': f"{self.args['mapid']} not found in mysql!"}) except Exception: log.error("update values to company mysql failed!", exc_info=True) return jsonify({'code': 500})