class NotificationsDB(object): ''' Обработка базы данных запросов Notifications: +-----------+----------------+---------+ | user_id | notification | date | +-----------+----------------+---------+ ''' def __init__(self): self.TABLE = "Notifications" self.UID = "user_id" self.NTF = "notification" self.DATE = "date" self.sql = MySQL() def send_notification(self, notification): ''' Отправляется вопрос пользователя в базу данных notifications, Если бот не может на него ответить ''' args = (notification[self.UID], notification[self.NTF], notification[self.DATE]) string_format = "%s" for i in xrange(len(args) - 1): string_format += ",%s" self.sql.insert_into(self.TABLE, string_format, args)
def __init__(self, language='en'): # Create instance self.win = tk.Tk() self.i18n = I18N(language) # self.i18n = I18N(language) # Add a title self.win.title(self.i18n.title) # Callback methods now in different module self.callBacks = Callbacks(self) # Disable resizing the window self.win.resizable(0,0) # Create a Queue self.guiQueue = Queue() self.createWidgets() # populate Tab 2 Entries self.callBacks.defaultFileEntries() # create MySQL instance self.mySQL = MySQL() # create Logger instance fullPath = path.realpath(__file__) self.log = Logger(fullPath) # create Log Level instance self.level = LogLevel()
def __init__(self): self.TABLE = "Notifications" self.UID = "user_id" self.NTF = "notification" self.DATE = "date" self.sql = MySQL()
def video_poster(data): """ 视频截图更新 方法: video_poster 参数: UserKey[string] –用户登录后的会话ID。 VID[string] – 分配的视频ID Time[float] – 截图播放时间点 返回值: VID[string] – 视频ID Poster[string] – 视频截图地址 """ userId = UserService.user_id(data['UserKey']) db = MySQL() videoInstance = db.get('SELECT * FROM `video` WHERE `id` = %s', (data['VID'])) if videoInstance: fileName = "%s/%s.mp4" % (videoDirectory, videoInstance['id']) PosterBaseURL = Config.get('Video','PosterBaseURL') PosterURL = "%s/%s.jpg" % (PosterBaseURL, videoInstance['id']) Transcoder.VideoPoster(fileName, ("%s/%s.jpg" % (videoDirectory, videoInstance['id'])), ss=float(data['Time'])) return { 'VID' : videoInstance['id'], 'Poster' : PosterURL } return None
def video_poster(data): """ 视频截图更新 方法: video_poster 参数: UserKey[string] –用户登录后的会话ID。 VID[string] – 分配的视频ID Time[float] – 截图播放时间点 返回值: VID[string] – 视频ID Poster[string] – 视频截图地址 """ userId = UserService.user_id(data['UserKey']) db = MySQL() videoInstance = db.get('SELECT * FROM `video` WHERE `id` = %s', (data['VID'])) if videoInstance: fileName = "%s/%s.mp4" % (videoDirectory, videoInstance['id']) PosterBaseURL = Config.get('Video', 'PosterBaseURL') PosterURL = "%s/%s.jpg" % (PosterBaseURL, videoInstance['id']) Transcoder.VideoPoster( fileName, ("%s/%s.jpg" % (videoDirectory, videoInstance['id'])), ss=float(data['Time'])) return {'VID': videoInstance['id'], 'Poster': PosterURL} return None
def space_res_list(data): userId = UserService.user_id(data['UserKey']) if __test_auth_view(userId, data.get('Id', '')) > 0: db = MySQL() offset = long(data.get('Offset', 0)) sort = max(1, min(3, int(data.get('Sort', 1)))) order = int(data.get('Order', 0)) listMax = min(100, data.get('Max', 10)) resCount = db.get("SELECT COUNT(*) AS c FROM `space_resource` WHERE `space_id` = %s AND `res_type`=%s", (data.get('Id', ''), data.get('ResType', '')))['c'] resList = db.list("SELECT * FROM `space_resource` WHERE `space_id` = %s AND `res_type`=%s", (data.get('Id', ''), data.get('ResType', '')), sort='order_field%s'%sort, order='DESC' if order == 0 else 'ASC', offset=offset, pagesize=listMax ) results = [] for res in resList: results.append({ 'ResId': res['res_id'], 'OrderField1': res['order_field1'], 'OrderField2': res['order_field2'], 'OrderField3': res['order_field3'], }) return { 'Id': data.get('Id', ''), 'ResType': data.get('ResType', ''), 'Count': resCount, 'Offset': offset, 'Max': listMax, 'Sort': sort, 'Order': order, 'Results': results } else: raise Exception('没有权限或空间不存在')
def upload_progress(data): """ 获取视频上传进度 方法: upload_progress 参数: UserKey[string] –用户登录后的会话ID。 UploadId[string] – 分配的视频ID 返回值: Length[long] – 视频字节数,单位BYTES。 Saved[long] – 上传字节数,单位BYTES。 """ userId = UserService.user_id(data['UserKey']) db = MySQL() uploadSession = db.get( "SELECT * FROM `upload` WHERE `id`=%s and `owner_id` = %s", (data['UploadId'], userId)) if uploadSession == False: raise Exception("上传任务不存在或已过期!") return ({ 'length': long(uploadSession['length']), 'saved': long(uploadSession['saved']) })
def invite_list(data): userId = UserService.user_id(data['UserKey']) db = MySQL() inviteListInstance = db.list( 'SELECT * FROM `invite` WHERE `invite_date` >= NOW() - INTERVAL 60 DAY AND `is_pocket` = 0 AND `user_id` = %s AND `type` = %s', (userId, data.get('Type', None)), sort='invite_date', order='DESC') results = [] for invite in inviteListInstance: dealUser = UserService.user_get( invite['deal_user_id'], notRaise=True) if invite['deal_user_id'] else None results.append({ 'Code': invite['id'], 'InviteDate': invite['invite_date'], 'ReferId': invite['refer_id'], 'IsDeal': invite['is_deal'], 'DealUserId': invite['deal_user_id'] if dealUser else None, 'DealUser': dealUser['name'] if dealUser else None, 'DealDate': invite['deal_date'] if dealUser else None, 'IsPocket': invite['is_pocket'], 'PocketDate': invite['pocket_date'], }) return { 'Type': data.get('Type', None), 'Count': len(results), 'Results': results, }
def invite_list(data): userId = UserService.user_id(data['UserKey']) db = MySQL() inviteListInstance = db.list('SELECT * FROM `invite` WHERE `invite_date` >= NOW() - INTERVAL 60 DAY AND `is_pocket` = 0 AND `user_id` = %s AND `type` = %s', (userId, data.get('Type', None)), sort='invite_date', order='DESC') results = [] for invite in inviteListInstance: dealUser = UserService.user_get(invite['deal_user_id'], notRaise = True) if invite['deal_user_id'] else None results.append({ 'Code': invite['id'], 'InviteDate': invite['invite_date'], 'ReferId': invite['refer_id'], 'IsDeal': invite['is_deal'], 'DealUserId': invite['deal_user_id'] if dealUser else None, 'DealUser': dealUser['name'] if dealUser else None, 'DealDate': invite['deal_date'] if dealUser else None, 'IsPocket': invite['is_pocket'], 'PocketDate': invite['pocket_date'], }) return { 'Type': data.get('Type', None), 'Count': len(results), 'Results': results, }
def video_ready(data): """ 视频处理状态 方法: video_ready 参数: UserKey[string] –用户登录后的会话ID。 VID[string] – 视频ID 返回值: VID[string] – 视频ID Results[Array] – 视频对象列表,视频对象定义如下: Definition[string] - 清晰度 Ready[boolean] - 是否准备就绪 URL[string] – 视频所有者,默认为视频上传/分享者的手机号 Progress[float] – 处理进度 """ result = [] userId = UserService.user_id(data['UserKey']) db = MySQL() videoInstance = db.get('SELECT * FROM `video` WHERE `id` = %s', (data['VID'])) if videoInstance: VideoBaseURL = Config.get('Video','VideoBaseURL') videoTranscodeListInstance = db.list('SELECT * FROM `video_transcode` WHERE `video_id` = %s ORDER BY `video_width` DESC', (data['VID'])) for videoTranscodeInstance in videoTranscodeListInstance: result.append({ 'Definition': MediaProbe.definitionName(videoTranscodeInstance['video_height'], videoTranscodeInstance['video_width']), 'Ready' : videoTranscodeInstance['is_ready'] == 1, 'URL' : "%s/%s" % (VideoBaseURL, videoTranscodeInstance['file_name']), 'Progress' : float(videoTranscodeInstance['progress']), }) return result
def create_session(uid, datetime): '''Создать сессию''' tablename = "session{0}".format(uid) MySQL().create_table(tablename, ["datetime", "message", "answer"], ["datetime", "text", "text"]) args = (datetime, "start", None) form = "%s,%s,%s" MySQL().insert_into(tablename, form, args)
def __init__(self): self.TABLE = "questions" self.QUESTION = "question" self.ANSWER = "answer" self.NUMBER = "number" self.ALL = "*" self.COUNT = "COUNT(*)" self.sql = MySQL()
def list(userId=None): db = MySQL() if userId: return db.list( "SELECT * FROM `user_notify` WHERE `arrived` = 0 AND `user_id` = %s AND `create_date` >= NOW() - INTERVAL 7 DAY", (userId)) else: return db.list( "SELECT * FROM `user_notify` WHERE `arrived` = 0 AND `create_date` >= NOW() - INTERVAL 7 DAY" )
def __init__(self): self.TABLE = "devices" self.NAME = "name" self.DESCR = "description" #self.EM = "emoji" self.PATH = "path" self.NUMBER = "number" self.ALL = "*" self.COUNT = "COUNT(*)" self.sql = MySQL()
def __init__(self): self.TABLE = "USERS" self.UID = "user_id" self.FIRST_NAME = "first_name" self.LAST_NAME = "last_name" self.NUMBER = "phone_number" self.ALL = "*" self.COUNT = "COUNT(*)" self.sql = MySQL()
def invite_pocket(data): userId = UserService.user_id(data['UserKey']) db = MySQL() result = db.update( "UPDATE `invite` SET `is_pocket` = 1, `pocket_date` = now() WHERE `user_id` = %s AND `id` = %s AND `is_pocket` = 0", (userId, data.get('Code', None))) db.end() if result > 0: return {'Code': data.get('Code', None)} else: raise Exception('邀请码不存在或已处理')
def invite_pocket(data): userId = UserService.user_id(data['UserKey']) db = MySQL() result = db.update("UPDATE `invite` SET `is_pocket` = 1, `pocket_date` = now() WHERE `user_id` = %s AND `id` = %s AND `is_pocket` = 0", (userId, data.get('Code', None))) db.end() if result > 0: return { 'Code': data.get('Code', None) } else: raise Exception('邀请码不存在或已处理')
def __init__(self): # Create instance self.win = tk.Tk() # Add title self.win.title("MySQL GUI") self.win.resizable(0, 0) self.createWidgets() # Create the database instance self.mySQL = MySQL()
def invite_code(data): userId = UserService.user_id(data['UserKey']) db = MySQL() code = Utils.UUID() result = db.save("INSERT INTO `invite` (`id`, `user_id`, `type`, `refer_id`, `info`) VALUES (%s,%s,%s,%s,%s)", (code, userId, data.get('Type', None), data.get('ReferId', None), data.get('Info', None))) db.end() return { 'Code': code, }
def create(toUserId, notifyContent, sender=None, refId=None): notifyId = Utils.UUID() db = MySQL() db.save("INSERT INTO `user_notify` (`id`,`user_id`,`notify`,`sender`,`ref_id`) VALUES (%s,%s,%s,%s,%s)", (notifyId, toUserId, notifyContent, sender, refId)) db.end() try: NotifyTCPServer.notify_server_has_new(toUserId) except Exception as e: print "Error: %s" % e return notifyId
class UsersDB(object): ''' Обработка базы данных пользователей Users +-----------+------------+-----------+--------------+ | user_id | first_name | last_name | phone_number | +-----------+------------+-----------+--------------+ ''' def __init__(self): self.TABLE = "USERS" self.UID = "user_id" self.FIRST_NAME = "first_name" self.LAST_NAME = "last_name" self.NUMBER = "phone_number" self.ALL = "*" self.COUNT = "COUNT(*)" self.sql = MySQL() def create_new_user(self, userinfo): ''' Create New User in DB. userinfo = dict() ''' args = (userinfo[self.UID], userinfo[self.FIRST_NAME], userinfo[self.LAST_NAME], userinfo[self.NUMBER]) string_format = "%s" for i in xrange(len(args) - 1): string_format += ",%s" self.sql.insert_into(self.TABLE, string_format, args) def check_user_in_db(self, uid): ''' Check if user already exists in DB and get his contact ''' info = self.sql.select_from_where([self.ALL], self.TABLE, self.UID, uid) if len(info): return True, info[0] return False, None def create_user_dict_from_db_answer(self, answer): ''' answer list from Users to dict ''' res = {} res[self.UID] = answer[0].encode("utf-8") res[self.FIRST_NAME] = answer[1].encode("utf-8") res[self.LAST_NAME] = answer[2].encode("utf-8") res[self.NUMBER] = answer[3].encode("utf-8") return res
def reverseShortUrl(shortUrl): result = None splitIdx = shortUrl.rindex('/') num = NumberCodec.decode(shortUrl[splitIdx+1:].split('?')[0]) if splitIdx >= 0 else NumberCodec.decode(shortUrl.split('?')[0]) db = MySQL() # first find urlInstance = db.get(r"SELECT * FROM `short_urls` WHERE `id`=%s", num) if urlInstance: result = urlInstance['url'] return result
def space_rename(data): userId = UserService.user_id(data['UserKey']) db = MySQL() result = db.update("UPDATE `space` SET `name` = %s WHERE `id` = %s AND `user_id` = %s", (data.get('Name', ''), data.get('Id', ''), userId)) db.end() if result > 0: return { 'Id': data.get('Id', ''), 'Name': data.get('Name', ''), } else: raise Exception('更新失败或空间不存在')
def update_mysql(date : str): start = datetime.datetime.now() print('#### write date into mysql') result_file = common.RESULT_DIR + date + common.RESULT_CSV_SUFFIX if not os.path.exists(result_file): print('%s doesnot exist', result_file) return apps = AppResult(result_file) app_df = apps.get_dataframe().set_index('mac') db_list = [] for mac in app_df.index.drop_duplicates(): l = [] df = app_df.loc[mac] if len(df) == 1: l.append(df.app_name) else: l = df.app_name.tolist() res = get_package_json(l) db_list.append((mac, json.dumps(res))) print('#### get data time: ', datetime.datetime.now() - start) mysql = MySQL(host = common.SQL_SERVER, user = '******', pwd = '123456', db = common.SQL_DB) mysql.clear_fast_app() mysql.update_target_app(db_list = db_list) mysql.close() print('#### update sql time: ', datetime.datetime.now() - start)
def invite_code(data): userId = UserService.user_id(data['UserKey']) db = MySQL() code = Utils.UUID() result = db.save( "INSERT INTO `invite` (`id`, `user_id`, `type`, `refer_id`, `info`) VALUES (%s,%s,%s,%s,%s)", (code, userId, data.get('Type', None), data.get( 'ReferId', None), data.get('Info', None))) db.end() return { 'Code': code, }
def share_video(data): """ 分享视频 方法: share_video 参数: UserKey[string] –用户登录后的会话ID。 VID[string] – 分配的视频ID To[Array] – 分享对象列表,分享对象如下定义: Mobile[string] – 分享手机号,必填 Name[string] – 分享姓名,可选 返回值: sessionId[string] – 分配的分享会话ID Results[Array] – 分享结果对象列表,分享结果对象如下定义: Mobile[string] – 分享手机号 Signup[boolean] – 是否注册用户 """ userId = UserService.user_id(data['UserKey']) db = MySQL() videoInstance = db.get('SELECT * FROM `video` WHERE `id` = %s', (data['VID'])) if not videoInstance: raise Exception("视频不存在.") sessionId = Utils.UUID() results = [] for to in data.get('To', ()): toUserId = UserService.getUserIdByMobile(to.get('Mobile')) result = db.save("""INSERT INTO `share` (`session_id`,`owner_id`,`video_id`,`to_user_id`,`to_mobile`,`to_name`) VALUES (%s,%s,%s,%s,%s,%s)""" , (sessionId, userId, data['VID'], toUserId, to.get('Mobile'), to.get('Name'))) db.end() if toUserId: # create app notify NotifyService.create(toUserId, Utils.json_dumps({ 'Type' : 'share_video', 'From' : UserService.user_mobile(userId), 'To' : to.get('Mobile'), 'Date' : datetime.now(), 'VID' : data['VID'], }), sender = 'share_video', refId = sessionId) if result: results.append({ 'Mobile': to.get('Mobile'), 'Signup': toUserId != None }) return {'SessionId': sessionId, 'Results': results}
def user_validate(data): db = MySQL() code = str(randint(10000,99999)) valid_date = datetime.now() + timedelta(seconds=180) # # TODO: 发送短信到 data['Mobile'] , 验证码为 code, 过期时间 90秒 # result = db.save("INSERT INTO `validate` (`mobile`, `code`, `device`, `valid_date`) VALUES (%s,%s,%s,%s)", (data['Mobile'], code, data['Device'], valid_date.strftime('%Y-%m-%d %H:%M:%S'))) db.end() return valid_date
def __test_auth_view(userId, spaceId): db = MySQL() authorized = 0 # TEST AUTHORIZE spaceInstance = db.get('SELECT * FROM `space` WHERE `id` = %s', (spaceId)) if spaceInstance: if userId == spaceInstance['user_id']: authorized = 1 else: authorized = db.get('SELECT COUNT(*) AS c FROM `space_authorize` WHERE `space_id`=%s AND `user_id` = %s', (data.get('Id', ''), userId))['c'] else: authorized = -1 return authorized
def user_get(userId, notRaise = False): user = MySQL().get("SELECT * FROM `user` WHERE `id` = %s", userId) if user or notRaise: return user else: raise Exception("用户不存在.")
def user_id(userKey): validate = MySQL().get("SELECT * FROM `session` WHERE `id`=%s", userKey) if validate: return validate['user_id'] else: raise Exception("会话信息无效或超期.")
def space_authorized_resources(data): spaceIds = [] if data.get('SpaceId', None): spaceIds.append(data.get('SpaceId')) else: ownerId = data.get('OwnerId', None) for space in space_authorized_spaces(data)['Results']: if space['OwnerId'] == ownerId: spaceIds.append(space['Id']) if len(spaceIds) > 0: offset = long(data.get('Offset', 0)) sort = max(1, min(3, int(data.get('Sort', 1)))) order = int(data.get('Order', 0)) listMax = min(100, data.get('Max', 10)) prefixCountSQL = 'SELECT COUNT(*) AS c FROM `space_resource` WHERE `space_id` IN (%s)' % ', '.join(list(map(lambda x: '%s', spaceIds))) prefixSelectSQL = 'SELECT * FROM `space_resource` WHERE `space_id` IN (%s)' % ', '.join(list(map(lambda x: '%s', spaceIds))) db = MySQL() resCount = db.get(prefixCountSQL + " AND `res_type`=%s", tuple(spaceIds) + (data.get('ResType', None),)) ['c'] resList = db.list(prefixSelectSQL + " AND `res_type`=%s", tuple(spaceIds) + (data.get('ResType', None),), sort='order_field%s'%sort, order='DESC' if order == 0 else 'ASC', offset=offset, pagesize=listMax) results = [] for res in resList: spaceInstance = space_get(res['space_id']) results.append({ 'Id': res['space_id'], 'Name': spaceInstance['name'], 'ResId': res['res_id'], 'OrderField1': res['order_field1'], 'OrderField2': res['order_field2'], 'OrderField3': res['order_field3'], }) return { 'ResType': data.get('ResType', ''), 'Count': resCount, 'Offset': offset, 'Max': listMax, 'Sort': sort, 'Order': order, 'Results': results, } else: raise Exception('没有可访问的空间')
def space_list(data): userId = UserService.user_id(data['UserKey']) db = MySQL() spaceListInstance = db.list('SELECT * FROM `space` WHERE `user_id` = %s ORDER BY `index` ASC', (userId)) results = [] for space in spaceListInstance: results.append({ 'Id': space['id'], 'Name': space['name'], }) return { 'Count': len(results), 'Spaces': results, }
def space_unauthorize(data): userId = UserService.user_id(data['UserKey']) spaceInstance = space_get(data.get('Id', '')) if userId == spaceInstance['user_id']: db = MySQL() result = db.delete("DELETE FROM `space_authorize` WHERE `space_id`=%s AND `user_id`=%s", (data.get('Id', ''), data.get('UserId', ''))) db.end() if result > 0: return { 'Id': data.get('Id', ''), 'UserId': data.get('UserId', ''), } else: raise Exception('删除失败或授权不存在') else: raise Exception('没有权限或空间不存在')
def video_remove(data): """ 删除视频 方法: video_remove 参数: UserKey[string] –用户登录后的会话ID。 VID[string] – 分配的视频ID 返回值: VID[string] – 删除的视频ID """ userId = UserService.user_id(data['UserKey']) db = MySQL() videoInstance = db.get( 'SELECT * FROM `video` WHERE `owner_id`=%s and `id` = %s', (userId, data['VID'])) if not videoInstance: raise Exception("视频不存在.") db.delete("DELETE FROM `video` WHERE `owner_id`=%s and `id` = %s", (userId, data['VID'])) db.end() return {'VID': data['VID']}
def space_reindex(data): userId = UserService.user_id(data['UserKey']) db = MySQL() spaceId = data.get('Id', '') afterId = data.get('After', '') index = [] spaceListInstance = db.list('SELECT * FROM `space` WHERE `user_id` = %s ORDER BY `index` ASC', (userId)) for space in spaceListInstance: index.append(space['id']) if not spaceId in index: raise Exception('空间不存在') index.remove(spaceId) if afterId == 'HEAD': index.insert(0, spaceId) elif afterId in index: index.insert(index.index(afterId) + 1, spaceId) else: index.append(spaceId) for i,value in enumerate(index): db.update("UPDATE `space` SET `index` = %s WHERE `id` = %s", (i, value)) db.end() return { 'Id': spaceId, }
def StartTranscodeService(): import socket hostname = socket.gethostname() pid = os.getpid() f = open('transcoder.pid', 'wb') f.write(str(pid)) f.close() signal.signal(signal.SIGTERM, sig_handler) signal.signal(signal.SIGINT, sig_handler) db = MySQL() transcoder = Transcoder(Started = __Started, Progress = __Progress, Finished = __Finished, Error = __Error) uploadDirectory = applicationConfig.get('Server','Upload') videoDirectory = applicationConfig.get('Video','SavePath') if not os.path.exists(videoDirectory): os.makedirs(videoDirectory) while True: if __shutdown.wait(1): break; # exit thread if transcoder.Count() > 0: continue; # wait process taskList = db.list('SELECT * FROM `video_transcode` WHERE `transcoder` IS NULL ORDER BY `id` LIMIT 0,1 FOR UPDATE') for task in taskList: db.update("UPDATE `video_transcode` set `transcoder` = %s WHERE `id` = %s", (hostname, task['id'])) db2 = MySQL() videoInstance = db2.get("SELECT * FROM `video` WHERE `id`=%s", (task['video_id'])) if videoInstance: fileName = "%s/%s" % (uploadDirectory, videoInstance['upload_id']) destFileName = "%s/%s" % (videoDirectory, task['file_name']) transcoder.addTask({ 'file' : fileName, 'video_codec' : task['video_codec'], 'video_bitrate' : task['video_bitrate'], 'video_width' : task['video_width'], 'video_height' : task['video_height'], 'audio_codec' : task['audio_codec'], 'audio_channels': task['audio_channels'], 'audio_bitrate' : task['audio_bitrate'], 'output' : destFileName, }, arg = task['id']) db.end() while transcoder.Count() > 0: theading.sleep(1) print '.'
def space_authorize(data): userId = UserService.user_id(data['UserKey']) spaceInstance = space_get(data.get('Id', '')) if userId == spaceInstance['user_id']: allowEdit = min(1, max(0, int(data.get('AllowEdit', 0)))) db = MySQL() authorizeUser = UserService.user_get(data.get('UserId', '')) result = db.update("REPLACE INTO `space_authorize` (`space_id`, `user_id`, `allow_edit`) VALUES (%s,%s,%s)", (data.get('Id', ''), data.get('UserId', ''), allowEdit)) db.end() return { 'Id': spaceInstance['id'], 'Name': spaceInstance['name'], 'UserId': authorizeUser['id'], 'UserName': authorizeUser['name'], 'AllowEdit': allowEdit, } else: raise Exception('没有权限或空间不存在')
def space_create(data): userId = UserService.user_id(data['UserKey']) db = MySQL() spaceId = Utils.UUID() result = db.save("INSERT INTO `space` (`id`, `user_id`, `name`) VALUES (%s,%s,%s)", (spaceId, userId, data.get('Name', ''))) db.end() space_reindex({ 'UserKey': data['UserKey'], 'Id': spaceId, 'After': data.get('After', ''), }) return { 'Id': spaceId, 'Name': data.get('Name', '') }
def share_list(data): """ 获取分享列表 方法: share_list 参数: UserKey[string] –用户登录后的会话ID。 Offset[long] – 列表起始位置。 Max[long] – 列表最大条数 返回值: Count[long] – 列表数量(全部) Offset[long] – 列表起始位置。 Max[long] – 列表最大条数 Results[Array] – 视频对象列表,视频对象定义如下: to_time[date] – 创作日期 to_name[date] – 分享日期 VID[string] – 视频ID """ userId = UserService.user_id(data['UserKey']) db = MySQL() offset = data.get('Offset', 0) listMax = min(100, data.get('Max', 10)) count = long(db.get('SELECT COUNT(*) as c FROM `share_list` WHERE (`owner_id` = %s and flag=0) or (`to_user_id` = %s and flag = 1)', (userId,userId)).get('c')) results = [] shareListInstance = db.list('SELECT * FROM `share_list` WHERE (`owner_id` = %s and flag=0) or (`to_user_id` = %s and flag = 1) ORDER BY `to_time` DESC LIMIT %s,%s', (userId, userId, offset, listMax)) for shareInstance in shareListInstance: results.append({ 'ToTime' : shareInstance['to_time'], 'ToName' : shareInstance['to_name'], 'VID' : shareInstance['video_id'], 'Flag' : shareInstance['flag'], }) return { 'Count' : count, 'Offset' : offset, 'Max' : listMax, 'Results' : results, }
def space_res_unrelation(data): userId = UserService.user_id(data['UserKey']) db = MySQL() # TEST AUTHORIZE if __test_auth_edit(userId, data.get('Id', '')) > 0: result = db.delete("DELETE FROM `space_resource` WHERE `space_id`=%s AND `res_type`=%s AND `res_id`=%s", (data.get('Id', ''), data.get('ResType', ''), data.get('ResId', ''))) db.end() if result > 0: return { 'Id': data.get('Id', ''), 'ResType': data.get('ResType', ''), 'ResId': data.get('ResId', ''), } else: raise Exception('删除失败或资源不存在') else: raise Exception('没有权限或空间不存在')
def invite_deal(data): """ 接受邀请 参数: UserKey[string] – 用户会话ID Code[string] – 邀请码 返回值: Code[string] – 邀请码 """ userId = UserService.user_id(data['UserKey']) db = MySQL() result = db.update("UPDATE `invite` SET `is_deal` = 1, `deal_date` = now(), `deal_user_id` = %s WHERE `id` = %s AND `is_deal` = 0", (userId, data.get('Code', None))) db.end() if result > 0: return { 'Code': data.get('Code', None) } else: raise Exception('邀请码不存在或已处理')
def space_res_relation(data): userId = UserService.user_id(data['UserKey']) db = MySQL() # TEST AUTHORIZE if __test_auth_edit(userId, data.get('Id', '')) > 0: newId = Utils.UUID() result = db.update("INSERT INTO `space_resource` (`id`, `space_id`, `owner_id`, `res_type`, `res_id`, `order_field1`, `order_field2`, `order_field3`) VALUES (%s,%s,%s,%s,%s,%s,%s,%s)", (newId, data.get('Id', ''), userId, data.get('ResType', ''), data.get('ResId', ''), data.get('OrderField1', None), data.get('OrderField2', None), data.get('OrderField3', None))) db.end() if result > 0: return { 'Id': data.get('Id', ''), 'ResType': data.get('ResType', ''), 'ResId': data.get('ResId', ''), } else: raise Exception('更新失败或空间不存在') else: raise Exception('没有权限或空间不存在')
def space_res_order(data): userId = UserService.user_id(data['UserKey']) db = MySQL() # TEST AUTHORIZE if __test_auth_edit(userId, data.get('Id', '')) > 0: newId = Utils.UUID() result = db.update("UPDATE `space_resource` SET `order_field1`=%s, `order_field2`=%s, `order_field3`=%s WHERE `space_id`=%s AND `res_type`=%s AND `res_id`=%s", (data.get('OrderField1', None), data.get('OrderField2', None), data.get('OrderField3', None), data.get('Id', ''), userId, data.get('ResType', ''), data.get('ResId', ''))) db.end() if result > 0: return { 'Id': data.get('Id', ''), 'ResType': data.get('ResType', ''), 'ResId': data.get('ResId', ''), } else: raise Exception('更新失败或空间不存在') else: raise Exception('没有权限或空间不存在')
def space_authorize_list(data): userId = UserService.user_id(data['UserKey']) spaceInstance = space_get(data.get('Id', '')) if userId == spaceInstance['user_id']: db = MySQL() results=[] for item in db.list("SELECT DISTINCT * FROM `space_authorize` WHERE `space_id`=%s", data.get('Id', '')): authorizeUser = UserService.user_get(item['user_id']) results.append({ 'UserId': item['user_id'], 'UserName': authorizeUser['name'], 'AllowEdit': item['allow_edit'] }) return { 'Id': data.get('Id', ''), 'Name': spaceInstance['name'], 'Results': results } else: raise Exception('没有权限或空间不存在')
def invite_info(data): """ 邀请信息 参数: Code[string] – 邀请码 返回值: Code[string] – 邀请码 Type[string] - 邀请类型 ReferId[string] - 引用对象ID InviterId[string] – 邀请者UserId Inviter[string] – 邀请者姓名 InviteDate[date] – 邀请日期 Info[string] – 邀请信息 """ db = MySQL() invite = db.get('SELECT * FROM `invite` WHERE `id` = %s', (data.get('Code', None))) if not invite: raise Exception('邀请码不存在') inviter = UserService.user_get(invite['user_id'], notRaise = True) dealUser = UserService.user_get(invite['deal_user_id'], notRaise = True) if invite['deal_user_id'] else None return { 'Code': invite['id'], 'Type': invite['type'], 'Inviter': inviter['name'], 'InviterId': invite['user_id'], 'InviteDate': invite['invite_date'], 'ReferId': invite['refer_id'], 'IsDeal': invite['is_deal'], 'DealUser': dealUser['name'] if dealUser else None, 'DealUserId': invite['deal_user_id'] if dealUser else None, 'DealDate': invite['deal_date'] if dealUser else None, 'IsPocket': invite['is_pocket'], 'PocketDate': invite['pocket_date'] if invite['is_pocket'] else None, 'Info': invite['info'], }
def space_authorized_spaces(data): userId = UserService.user_id(data['UserKey']) userInstance = UserService.user_get(userId) db = MySQL() results=[] for item in db.list("SELECT DISTINCT * FROM `space_authorize` WHERE `user_id`=%s", userId): spaceInstance = space_get(item['space_id']) if spaceInstance: spaceOwner = UserService.user_get(spaceInstance['user_id'], notRaise=True) results.append({ 'Id': spaceInstance['id'], 'Name': spaceInstance['name'], 'Owner': spaceOwner['name'] if spaceOwner else None, 'OwnerId': spaceInstance['user_id'], 'AllowEdit': item['allow_edit'] }) return { 'Count': len(results), 'Results': results }
def video_update(data): """ 更新视频信息 参数: UserKey[string] –用户登录后的会话ID。 VID[string] – 视频ID Title[string] – 视频标题 Author[string] – 分享者/创作者名称 CreateTime[date] – 创作日期 Category[string] – 视频分类 Describe[string] – 视频描述 Tag[string] – 视频标签,标签内容有半角“,”(逗号)分割 AddrStr[string] - 视频位置信息 Longitude[float] - 视频位置 - 经度 Latitude[float] - 视频位置 - 纬度 返回值: VID[string] – 视频ID """ userId = UserService.user_id(data['UserKey']) videoId = data.get('VID', '') db = MySQL() db.update("UPDATE `video` set `title` = %s, `author` = %s, `create_date` = %s, `category` = %s, `describe` = %s, `tag` = %s WHERE `id` = %s AND `owner_id` = %s ", ( data.get('Title', ''), data.get('Author', ''), data.get('CreateTime', ''), data.get('Category', ''), data.get('Describe', ''), data.get('Tag', ''), videoId, userId)) db.end() return data.get('VID', '')
def get(self, numStr): num = NumberCodec.decode(numStr) db = MySQL() # first find urlInstance = db.get(r"SELECT * FROM `short_urls` WHERE `id`=%s", num) if urlInstance: self.redirect(urlInstance['url']) # log db.save(r"INSERT INTO `short_urls_log` (`url_id`) VALUES (%s)", (num)) db.end() else: raise tornado.web.HTTPError(404)
def createShortUrl(url): urlId = 0 db = MySQL() urlhash = Utils.MD5(url) # first find urlInstance = db.get(r"SELECT * FROM `short_urls` WHERE `hash`=%s", urlhash) if urlInstance: urlId = urlInstance['id'] # create if don't found if urlId == 0: result = db.save(r"INSERT INTO `short_urls` (`hash`, `url`) VALUES (%s,%s)", (urlhash, url)) urlId = db.getInsertId() db.end() return __short_url_prefix + NumberCodec.encode(urlId)