Пример #1
0
def validSession():
    try:
        userId = session.getSessionUserId()
        if userId is None:
            res = Response(False, '会话已失效', {})
        else:
            res = Response(True, '会话有效', {})
    except Exception as e:
        log('在处理会话验证请求时未能捕获的错误,错误信息:')
        log(e)
        res = Response(False, '服务器错误', {})
    return res.getJson()
def getNoteRaw():
    try:
        userId = session.getSessionUserId()
        if userId is None:
            res = Response(False, '登录状态失效', {})
        else:
            conn = database.conn
            with conn.cursor() as cur:
                try:
                    cur.execute('SELECT {0} FROM {1} WHERE {2}=%s'.format('username', 'accounts', 'id'), (userId,))
                except Exception as e:
                    log('在处理获取笔记原文请求时出现数据库查询错误,错误信息:')
                    log(e)
                    res = Response(False, '服务器错误', {})
                else:
                    result = cur.fetchone()

                    if result is None or len(result) == 0:
                        res = Response(False, '用户不存在', {})
                    else:
                        req = request.args
                        noteId = req.get('id')
                        if noteId is None or int(noteId) <= 0:
                            res = Response(False, '提交格式非法', {})
                        else:
                            noteContent = note.readNoteFile(noteId)
                            if noteContent is not None:
                                try:
                                    cur.execute(
                                        'SELECT {0},{1} FROM {2} WHERE {3}=%s'.format('name', 'last_update_time',
                                                                                      'notes',
                                                                                      'id'),
                                        noteId)
                                except Exception as e:
                                    log('在处理获取笔记原文请求时出现数据库查询错误,错误信息:')
                                    log(e)
                                    res = Response(False, '服务器错误', {})
                                else:
                                    result = cur.fetchone()
                                    title = result[0]
                                    res = Response(True, '获取成功', {'title': title,
                                                                  'content': noteContent})
                            else:
                                res = Response(False, '服务器错误', {})
    except Exception as e:
        log('在处理获取笔记原文请求时出现未捕获错误,错误信息:')
        log(e)
        res = Response(False, '服务器错误', {})
    return res.getJson()
def deleteNote():
    try:
        userId = session.getSessionUserId()
        if userId is None:
            res = Response(False, '登录状态失效', {})
        else:
            conn = database.conn
            with conn.cursor() as cur:
                try:
                    cur.execute('SELECT {0} FROM {1} WHERE {2}=%s'.format('username', 'accounts', 'id'), (userId,))
                except Exception as e:
                    log('在处理删除笔记请求时出现数据库查询错误,错误信息:')
                    log(e)
                    res = Response(False, '服务器错误', {})
                else:
                    result = cur.fetchone()

                    if result is None or len(result) == 0:
                        res = Response(False, '用户不存在', {})
                    else:
                        req = request.get_json()

                        noteId = req.get('id')

                        if noteId is None or int(noteId) <= 0:
                            res = Response(False, '提交格式非法', {})
                        else:
                            try:
                                cur.execute('DELETE FROM {0} WHERE {1}=%s'.format('notes', 'id'), (noteId,))
                                conn.commit()
                            except Exception as e:
                                log('在处理删除笔记请求时出现数据库提交错误,错误信息:')
                                log(e)
                                res = Response(False, '服务器错误', {})
                            else:
                                if note.deleteNoteFile(noteId) is True:
                                    res = Response(True, '删除成功', {})
                                else:
                                    res = Response(True, '删除失败', {})
    except Exception as e:
        log('在处理删除笔记请求时出现未捕获错误,错误信息:')
        log(e)
        res = Response(False, '服务器错误', {})
    return res.getJson()
def noteConvert():
    try:
        userId = session.getSessionUserId()
        if userId is None:
            res = Response(False, '登录状态失效', {})
        else:
            req = request.get_json()
            markdown = req['markdown']
            if markdown is None:
                res = Response(True, '转换成功', '')
            else:
                converter = MDConverter()
                result = converter.makeHtml(markdown)
                res = Response(True, '转换成功', result)
    except Exception as e:
        log('在处理转换笔记请求时出现未捕获错误,错误信息:')
        log(e)
        res = Response(False, '服务器错误', {})
    return res.getJson()
def getNoteList():
    try:
        userId = session.getSessionUserId()
        if userId is None:
            res = Response(False, '登录状态失效', {})
        else:
            conn = database.conn
            with conn.cursor() as cur:
                try:
                    cur.execute('SELECT {0} FROM {1} WHERE {2}=%s'.format('username', 'accounts', 'id'), (userId,))
                except Exception as e:
                    log('在处理获取笔记列表请求时出现数据库查询错误,错误信息:')
                    log(e)
                    res = Response(False, '服务器错误', {})
                else:
                    result = cur.fetchone()
                    if result is None or len(result) == 0:
                        res = Response(False, '用户不存在', {})
                    else:
                        try:
                            cur.execute('SELECT {0},{1},{2} FROM {3} WHERE {4}=%s'.format('id', 'name', 'last_update_time', 'notes','account_id'), (userId,))
                        except Exception as e:
                            log('在处理获取笔记列表请求时出现数据库查询错误,错误信息:')
                            log(e)
                            res = Response(False, '服务器错误', {})
                        else:
                            results = cur.fetchall()
                            data = []
                            for result in results:
                                data.append({
                                    'id': result[0],
                                    'name': result[1],
                                    'lastModified': str(result[2])
                                })
                            res = Response(True, '获取成功', data)
    except Exception as e:
        log('在处理获取笔记列表请求时出现未捕获错误,错误信息:')
        log(e)
        res = Response(False, '服务器错误', {})
    return res.getJson()
def submitNote():
    try:
        userId = session.getSessionUserId()
        if userId is None:
            res = Response(False, '登录状态失效', {})
        else:
            conn = database.conn
            with conn.cursor() as cur:
                try:
                    cur.execute('SELECT {0} FROM {1} WHERE {2}=%s'.format('username', 'accounts', 'id'), (userId,))
                except Exception as e:
                    log('在处理笔记提交请求时,数据库查询发生错误,错误信息:')
                    log(e)
                    res = Response(False, '服务器错误', {})
                else:
                    result = cur.fetchone()

                    if result is None or len(result) == 0:
                        res = Response(False, '用户不存在', {})
                    else:
                        req = request.get_json()

                        fileName = req['fileName']
                        noteContent = req['noteContent']
                        noteId = req['noteId']
                        nowTime = datetime.now()

                        if fileName is None or noteContent is None or noteId is None:
                            res = Response(False, '提交格式非法', {})
                        elif noteId == -1:  # 是一个新的笔记
                            try:
                                # 向数据库插入笔记信息
                                cur.execute(
                                    'INSERT INTO {0} ({1},{2},{3},{4}) VALUES (%s, %s, %s, %s)'.format(
                                        'notes', 'name', 'submit_time', 'last_update_time', 'account_id'),
                                    (fileName, nowTime, nowTime, userId))
                                conn.commit()
                            except Exception as e:
                                conn.rollback()
                                log('在处理笔记提交请求时,数据库提交发生错误,错误信息:')
                                log(e)
                                res = Response(False, '提交失败,请检查是否与之前的笔记名重复', {})
                            else:
                                try:
                                    # 写入笔记文件
                                    cur.execute('SELECT {0} FROM {1} WHERE {2}=%s'.format('id', 'notes', 'submit_time'),
                                                (nowTime,))
                                except Exception as e:
                                    log('在处理笔记提交请求时,数据库查询发生错误,错误信息:')
                                    log(e)
                                    res = Response(False, '服务器错误', {})
                                else:
                                    result = cur.fetchone()
                                    noteId = result[0]
                                    # 如果笔记文件写入失败了,就把数据库记录也删掉
                                    if not note.writeNoteFile(noteId, noteContent):
                                        res = Response(False, '服务器错误', {})
                                        try:
                                            cur.execute('DELETE FROM {0} WHERE {1}=%s'.format('notes', 'submit_time'),
                                                        (nowTime,))
                                            conn.commit()
                                        except Exception as e:
                                            log('在处理笔记提交请求时,数据库提交发生错误,错误信息:')
                                            log(e)
                                    else:
                                        res = Response(True, '提交成功', {})
                        else:  # 是修改以前的笔记
                            if not note.writeNoteFile(noteId, noteContent):
                                res = Response(False, '修改失败,请重试', {})
                            else:
                                try:
                                    cur.execute(
                                        'UPDATE {0} SET {1}=%s WHERE {2}=%s'.format('notes', 'last_update_time', 'id'),
                                        (nowTime, noteId))
                                    conn.commit()
                                except Exception as e:
                                    # 这一个数据库操作修改最后修改时间,不是特别要紧,没有必要把之前的所有操作回滚
                                    conn.rollback()
                                    log('在处理笔记提交请求时,数据库提交发生错误,错误信息:')
                                    log(e)
                                finally:
                                    res = Response(True, '修改成功', {})
    except Exception as e:
        log('在处理笔记提交请求时出现未捕获的错误,错误信息:')
        log(e)
        res = Response(False, '服务器错误', {})
    return res.getJson()