diff --git a/handler/priv_map.py b/handler/priv_map.py index eb1dd8b..0244eaa 100644 --- a/handler/priv_map.py +++ b/handler/priv_map.py @@ -1,93 +1,72 @@ # -*- coding: utf-8 -*- from __future__ import absolute_import -from flask import Flask, jsonify -from flask_restful import reqparse, abort, Api, Resource + 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 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') +parser.add_argument('url') +parser.add_argument('args') - -class Company(Resource): +class PrivMaps(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'] + args = my_unquote(self.args['args']) + users = args.get('args', None) + status = args.get('status', 0) 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}';" + 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 id,name,contact,tel,appid,appkey,status,user from company ;" + 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: - company = {} - company['id'], company['name'], company['contact'], company['tel'], company['appid'], company[ - 'appkey'], company['status'], company['user'] = line - all_data.append(company) - del company + 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 company status={status} failed! ", exc_info=True) + 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): - id = self.args['id'] + args = my_unquote(self.args['args']) try: - del_sql = f'update ad set in_used=0 where id={id};' + del_sql = f"update mymaps set status=0 where mapid={args['mapid']};" self.mydb.change(del_sql) + return jsonify({'code': 200}) except Exception: - log.error(f"remove {id} failed!", exc_info=True) + log.error(f"remove {args} 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" + 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: @@ -100,42 +79,36 @@ class Company(Resource): def post(self): + args = my_unquote(self.args['args']) 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) + mymaps = {} + mymaps['mapid'] = self.get_newid() + mymaps['user'] = args['user'] + mymaps['url'] = args['url'] + self.mydb.insert("mymaps", mymaps) + return jsonify({'code': 200}) except Exception: log.error("set values to company mysql failed!", exc_info=True) return jsonify({'code': 500}) - return jsonify({'code': 200}) def put(self): + args = my_unquote(self.args['args']) 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'] + mymaps = {} + mymaps['mapid'] = args['mapid'] + mymaps['user'] = args['user'] + mymaps['url'] = args['url'] + mymaps['status'] = args.get('status', 1) - sel_sql = f"select name from company where id={self.args['id']};" + sel_sql = f"select url from mymaps where mapid={args['mapid']};" data = self.mydb.query(sel_sql) if data: - condition = f"id='{self.args['id']}'" - self.mydb.update("company", company, condition) + condition = f"mapid={args['mapid']}" + self.mydb.update("mymaps", mymaps, condition) return jsonify({'code': 200}) else: - return jsonify({'code': 404, 'message': f"{self.args['id']} not found in mysql!"}) + return jsonify({'code': 404, 'message': f"{args['mapid']} not found in mysql!"}) except Exception: log.error("update values to company mysql failed!", exc_info=True) return jsonify({'code': 500}) diff --git a/ops/__init__.py b/ops/__init__.py new file mode 100644 index 0000000..7c68785 --- /dev/null +++ b/ops/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- \ No newline at end of file diff --git a/ops/base.py b/ops/base.py new file mode 100644 index 0000000..45ec066 --- /dev/null +++ b/ops/base.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +from urllib.parse import unquote, quote, urlencode + + +def my_unquote(data): + return unquote(str(data), 'utf-8') + + +def my_quote(data): + if isinstance(data, 'dict'): + return urlencode(data) + elif isinstance(data, 'str'): + return quote(data)