Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
    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()
Ejemplo n.º 3
0
    def __init__(self):
        self.TABLE = "Notifications"
        self.UID = "user_id"
        self.NTF = "notification"
        self.DATE = "date"

        self.sql = MySQL()
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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('没有权限或空间不存在')
Ejemplo n.º 7
0
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'])
    })
Ejemplo n.º 8
0
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,
    }
Ejemplo n.º 9
0
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,
	}
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
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)
Ejemplo n.º 12
0
 def __init__(self):
     self.TABLE = "questions"
     self.QUESTION = "question"
     self.ANSWER = "answer"
     self.NUMBER = "number"
     self.ALL = "*"
     self.COUNT = "COUNT(*)"
     self.sql = MySQL()
Ejemplo n.º 13
0
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"
        )
Ejemplo n.º 14
0
 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()
Ejemplo n.º 15
0
    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()
Ejemplo n.º 16
0
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('邀请码不存在或已处理')
Ejemplo n.º 17
0
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('邀请码不存在或已处理')
Ejemplo n.º 18
0
    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()
Ejemplo n.º 19
0
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,
	}
Ejemplo n.º 20
0
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
Ejemplo n.º 21
0
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
Ejemplo n.º 22
0
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
Ejemplo n.º 23
0
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('更新失败或空间不存在')
Ejemplo n.º 24
0
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)
Ejemplo n.º 25
0
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,
    }
Ejemplo n.º 26
0
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}
Ejemplo n.º 27
0
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
Ejemplo n.º 28
0
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
Ejemplo n.º 29
0
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("用户不存在.")
Ejemplo n.º 30
0
def user_id(userKey):
	validate = MySQL().get("SELECT * FROM `session` WHERE `id`=%s", userKey)

	if validate:
		return validate['user_id']
	else:
		raise Exception("会话信息无效或超期.")
Ejemplo n.º 31
0
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('没有可访问的空间')
Ejemplo n.º 32
0
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,
	}
Ejemplo n.º 33
0
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('没有权限或空间不存在')
Ejemplo n.º 34
0
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']}
Ejemplo n.º 35
0
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,
	}
Ejemplo n.º 36
0
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 '.'
Ejemplo n.º 37
0
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('没有权限或空间不存在')
Ejemplo n.º 38
0
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', '')
	}
Ejemplo n.º 39
0
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,
	}
Ejemplo n.º 40
0
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('没有权限或空间不存在')
Ejemplo n.º 41
0
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('邀请码不存在或已处理')
Ejemplo n.º 42
0
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('没有权限或空间不存在')
Ejemplo n.º 43
0
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('没有权限或空间不存在')
Ejemplo n.º 44
0
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('没有权限或空间不存在')
Ejemplo n.º 45
0
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'],
		}
Ejemplo n.º 46
0
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
	}
Ejemplo n.º 47
0
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', '')
Ejemplo n.º 48
0
	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)
Ejemplo n.º 49
0
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)