Example #1
0
    add_rule(r"mute(.*)",               "mute.search")
    add_rule(r"取消静音",               "mute.cancel")
    add_rule(r"(.*)", "note.search")
    rules_loaded = True

class RulesHandler:

    @xauth.login_required()
    def GET(self):
        user_name = xauth.current_name()
        rules = list_search_rules(user_name)
        return xtemplate.render("search/search_rules.html", rules = rules)

def list_search_rules(user_name):
    list, count = MSG_DAO.list_by_tag(user_name, 'key', 0, 1000)

    for item in list:
        item.url = "/search?key=" + xutils.encode_uri_component(item.content)
    return list

xutils.register_func("search.list_rules", list_search_rules)
xutils.register_func("search.list_recent", list_search_history)

xurls = (
    r"/search/search", handler, 
    r"/search", handler,
    r"/search/rules", RulesHandler,
    r"/s/(.+)", handler
)

Example #2
0
    stat.removed_count = count_removed(user_name)
    stat.dict_count = count_dict(user_name)

    dbutil.put("user_stat:%s:note" % user_name, stat)
    return stat


def get_note_stat(user_name):
    stat = dbutil.get("user_stat:%s:note" % user_name)
    if stat is None:
        stat = refresh_note_stat(user_name)
    return stat


# write functions
xutils.register_func("note.create", create_note)
xutils.register_func("note.update", update_note)
xutils.register_func("note.update0", update0)
xutils.register_func("note.update_index", update_index)
xutils.register_func("note.move", move_note)
xutils.register_func("note.visit", visit_note)
xutils.register_func("note.delete", delete_note)
xutils.register_func("note.touch", touch_note)
xutils.register_func("note.update_tags", update_tags)
xutils.register_func("note.create_token", create_token)

# query functions
xutils.register_func("note.get_root", get_root)
xutils.register_func("note.get_by_id", get_by_id)
xutils.register_func("note.get_by_token", get_by_token)
xutils.register_func("note.get_by_id_creator", get_by_id_creator)
Example #3
0
def check_login(user_name=None):
    if has_login(user_name):
        return
    elif has_login():
        raise web.seeother("/unauthorized")
    # 跳转到登陆URL
    redirect_to_login()


def redirect_to_login():
    path = web.ctx.fullpath
    raise web.seeother("/login?target=" + xutils.encode_uri_component(path))


def login_required(user_name=None):
    """管理员验证装饰器"""
    def deco(func):
        def handle(*args, **kw):
            check_login(user_name)
            ret = func(*args, **kw)
            return ret

        return handle

    return deco


xutils.register_func("user.get_config_dict", get_user_config_dict)
xutils.register_func("user.get_config", get_user_config)
Example #4
0
File: fs.py Project: ydx2099/xnote
        basename, ext = os.path.splitext(fpath)
        encoded_fpath = xutils.encode_uri_component(fpath)

        if xutils.is_text_file(fpath):
            raise web.found("/code/edit?path=%s" % encoded_fpath)

        raise web.found("/fs_hex?path=%s" % encoded_fpath)


class TextHandler:
    @xauth.login_required("admin")
    def GET(self):
        return xtemplate.render("fs/page/txtreader.html")


xutils.register_func("fs.process_file_list", process_file_list)

xurls = (
    r"/fs_list/?",
    UserHomeHandler,
    r"/fs_edit",
    EditHandler,
    r"/fs_view",
    ViewHandler,
    r"/fs_text",
    TextHandler,
    r"/fs_api/remove",
    RemoveAjaxHandler,
    r"/fs_api/rename",
    RenameAjaxHandler,
    r"/fs_api/cut",
Example #5
0
        result.append(item)
    return result


def list_group():
    current_name = str(xauth.get_current_name())
    cache_key = "group.list#" + current_name
    value = cacheutil.get(cache_key)
    if value is None:
        sql = "SELECT * FROM file WHERE type = 'group' AND is_deleted = 0 AND creator = $creator ORDER BY name LIMIT 1000"
        value = list(xtables.get_file_table().query(
            sql, vars=dict(creator=current_name)))
        cacheutil.set(cache_key, value, expire=-1)
    return value


def list_recent_created(parent_id=None, limit=10):
    where = "is_deleted = 0 AND (creator = $creator OR is_public = 1)"
    if parent_id != None:
        where += " AND parent_id = %s" % parent_id
    db = xtables.get_file_table()
    return list(
        db.select(where=where,
                  vars=dict(creator=xauth.get_current_name()),
                  order="ctime DESC",
                  limit=limit))


xutils.register_func("note.list_group", list_group)
xutils.register_func("note.list_recent_created", list_recent_created)
Example #6
0
        self.show_next = True
        self.is_deleted = 0

        if tag == "log":
            self.name = T("memo")
            self.icon = "fa-file-text-o"


def get_message_tag(user, tag):
    msg_stat = get_message_stat(user)

    if tag == "log":
        return MessageTag(tag, msg_stat.log_count)


xutils.register_func("message.create", create_message)
xutils.register_func("message.update", update_message)
xutils.register_func("message.search", search_message)
xutils.register_func("message.delete", delete_message_by_id)
xutils.register_func("message.count", count_message)

xutils.register_func("message.find_by_id", get_message_by_id)
xutils.register_func("message.get_by_id", get_message_by_id)
xutils.register_func("message.get_by_content", get_by_content)
xutils.register_func("message.get_message_tag", get_message_tag)

xutils.register_func("message.list", list_message_page)
xutils.register_func("message.list_file", list_file_page)
xutils.register_func("message.list_link", list_link_page)
xutils.register_func("message.list_by_tag", list_by_tag)
xutils.register_func("message.list_by_date", list_by_date)
Example #7
0
File: dao.py Project: chernic/xnote
@xutils.timeit(name = "kv.message.list", logfile = True, logargs = True)
def kv_list_message_page(user, status, offset, limit):
    def filter_func(key, value):
        if status is None:
            return value.user == user
        return value.user == user and value.status == status
    chatlist = dbutil.prefix_list("message:%s" % user, filter_func, offset, limit, reverse = True)
    amount   = dbutil.prefix_count("message:%s" % user, filter_func)
    return chatlist, amount

def list_message_page(*args):
    return db_call("list_message_page", *args)

def list_file_page(user, offset, limit):
    def filter_func(key, value):
        if value.content is None:
            return False
        return value.content.find("file://") >= 0
    chatlist = dbutil.prefix_list("message:%s" % user, filter_func, offset, limit, reverse = True)
    amount   = dbutil.prefix_count("message:%s" % user, filter_func)
    return chatlist, amount

xutils.register_func("message.create", create_message)
xutils.register_func("message.search", search_message)
xutils.register_func("message.delete", delete_message_by_id)
xutils.register_func("message.count", count_message)
xutils.register_func("message.find_by_id", get_message_by_id)
xutils.register_func("message.list", list_message_page)
xutils.register_func("message.list_file", list_file_page)

Example #8
0

class PluginLogHandler:
    @xauth.login_required()
    def GET(self):
        user_name = xauth.current_name()
        logs = list_visit_logs(user_name)
        return logs


@xmanager.listen("sys.reload")
def reload_plugins(ctx):
    load_plugins()


xutils.register_func("plugin.find_plugins", find_plugins)
xutils.register_func("plugin.add_visit_log", add_visit_log)

xurls = (
    r"/plugins_list_new",
    PluginsGridHandler,
    r"/plugins_list",
    PluginsListHandler,
    r"/plugins_log",
    PluginLogHandler,
    r"/plugins/(.+)",
    LoadPluginHandler,
    r"/tools/(.+)",
    LoadInnerToolHandler,
)
Example #9
0
    sort_notes(notes)
    return notes

def list_by_type(creator, type, offset, limit):
    def list_func(key, value):
        return value.type == type and value.creator == creator and value.is_deleted == 0
    notes = dbutil.prefix_list("note_tiny:%s" % creator, list_func, offset, limit)
    sort_notes(notes)
    return notes

def count_by_type(creator, type):
    def count_func(key, value):
        return value.type == type and value.creator == creator and value.is_deleted == 0
    return dbutil.prefix_count("note_tiny:%s" % creator, count_func)

xutils.register_func("note.create", create_note)
xutils.register_func("note.update", update_note)
xutils.register_func("note.visit",  visit_note)
xutils.register_func("note.count",  count_note)
xutils.register_func("note.delete", delete_note)
xutils.register_func("note.get_by_id", get_by_id)
xutils.register_func("note.get_by_name", get_by_name)
xutils.register_func("note.get_by_id_creator", get_by_id_creator)
xutils.register_func("note.search_name", search_name)
xutils.register_func("note.search_content", search_content)

# list functions
xutils.register_func("note.list_path", list_path)
xutils.register_func("note.list_group", list_group)
xutils.register_func("note.list_note",  list_by_parent)
xutils.register_func("note.list_by_parent", list_by_parent)
Example #10
0
            else:
                return xtemplate.render("error.html",
                                        error="plugin `%s` not found!" % name)
        except:
            error = xutils.print_exc()
            return xtemplate.render("error.html", error=error)

    def POST(self, name=""):
        return self.GET(name)


class PluginLogHandler:
    @xauth.login_required()
    def GET(self):
        user_name = xauth.current_name()
        logs = list_visit_logs(user_name)
        return logs


@xmanager.listen("sys.reload")
def reload_plugins(ctx):
    load_plugins()


xutils.register_func("plugin.find_plugins", find_plugins)

xurls = (r"/plugins_list_new", PluginsListHandler, r"/plugins_list",
         PluginsListOldHandler, r"/plugins_new", NewPluginHandler,
         r"/plugins_new/command", NewCommandPlugin, r"/plugins_log",
         PluginLogHandler, r"/plugins/(.+)", LoadPluginHandler)
Example #11
0
def find_next_note(note):
    where = "parent_id = $parent_id AND name > $name ORDER BY name ASC LIMIT 1"
    table = xtables.get_file_table()
    return table.select_first(where=where,
                              vars=dict(name=note.name,
                                        parent_id=note.parent_id))


def update_priority(creator, id, value):
    table = xtables.get_file_table()
    rows = table.update(priority=value, where=dict(creator=creator, id=id))
    cache_key = "[%s]note.recent" % creator
    cacheutil.prefix_del(cache_key)
    return rows > 0


xutils.register_func("note.list_group", list_group)
xutils.register_func("note.list_tag", list_tag)
xutils.register_func("note.list_recent_created", list_recent_created)
xutils.register_func("note.list_recent_edit", list_recent_edit)
xutils.register_func("note.list_recent_viewed", list_recent_viewed)
xutils.register_func("note.list_by_date", list_by_date)
xutils.register_func("note.count_recent_edit", count_user_note)
xutils.register_func("note.count_user_note", count_user_note)
xutils.register_func("note.count_ungrouped", count_ungrouped)
xutils.register_func("note.get_by_id_creator", get_by_id_creator)
xutils.register_func("note.find_prev_note", find_prev_note)
xutils.register_func("note.find_next_note", find_next_note)
xutils.register_func("note.update_priority", update_priority)