120 lines
3.3 KiB
Python
120 lines
3.3 KiB
Python
# -*- 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('args')
|
|
|
|
class PrivMaps(Resource):
|
|
def __init__(self):
|
|
self.args = parser.parse_args()
|
|
self.mydb = MysqlBase(**mysql_promotion_config)
|
|
|
|
|
|
def get(self):
|
|
users = self.args['users']
|
|
status = self.args['status']
|
|
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):
|
|
mapid = self.args['mapid']
|
|
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(self.args)
|
|
pdb.set_trace()
|
|
mapid = self.args['mapid']
|
|
# log.info(f"args={self.args}")
|
|
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})
|