Beispiel #1
0
    def GET(self, board_name):
        if board_name == '*' or board_name == '^root':
            v = board_actions()
            return v.subboard_list_get()

        board_id = board._get_board_id_from_path(board_name)
        if board_id < 0:
            #try to find regex match
            board_id = board._get_board_id_from_regex_path(board_name)
            if board_id < 0:
                raise web.notfound(util.render().error(lang='ko', error_message=_('INVALID_BOARD'), help_context='error'))
            else:
                path = board._get_path_from_board_id(board_id)
                raise web.seeother(util.link(path))

        board_info = board.get_board_info(board_id)
        if board_info.bType == 0: # 디렉터리
            v = board_actions()
            return v.subboard_list_get(board_name, board_id)
        elif board_info.bType == 2: # 넘겨주기
            board_id = board._get_board_id_from_path(board_info.bDescription)
            if board_id < 0 or board_info.bDescription.strip() == '':
                raise web.notfound(util.render().error(lang='ko', error_message=_('INVALID_ALIAS'), help_context='error'))
            else:
                raise web.seeother(util.link(board_info.bDescription))

        #processing new_article
        if web.ctx.session.has_key('uid'):
            uid = web.ctx.session.uid
            user.update_unreaded_articles_board(uid, board_id)

        qs = web.ctx.query
        if len(qs) > 0:
            qs = qs[1:]
            qs = parse_qs(qs)


        t = article._get_total_page_count(board_id, config.page_size)
        if qs:
            page = int(qs['page'][0])
        else:
            page = t

        a = article.get_article_list(board_id, config.page_size, page)
        m = article.get_marked_article(board_id)

        return util.render().board(lang="ko",
            title = board_info.bName,
            board_path = board_info.bName[1:],
            board_desc = board_info.bDescription,
            stylesheet = board_info.stylesheet,
            articles=a, marked_articles = m,
            total_page = t, page = page, feed = True,
            help_context = 'board')
Beispiel #2
0
    def select(self, query_string):
        board_id = -1
        if query_string.has_key('board'):
            try:
                board_id = int(query_string['board'][0])
            except ValueError:
                raise web.notfound(render['default'].error(error_message = _('NO_SUCH_BOARD'), help_context='error'))
        else:
            raise web.redirect('/*')
        path = board._get_path_from_board_id(board_id)
        if path == '':
            raise web.notfound(render['default'].error(error_message = _('NO_SUCH_BOARD'), help_context='error'))

        raise web.redirect(posixpath.join(path, '*'))
Beispiel #3
0
    def view(self, query_string):
        board_id = -1
        article_id = -1
        if query_string.has_key('board'):
            try:
                board_id = int(query_string['board'][0])
            except ValueError:
                raise web.notfound(render['default'].error(error_message = _('NO_SUCH_BOARD'), help_context='error'))
        else:
            raise web.notfound(render['default'].error(error_message = _('NO_BOARD_SPECIFIED'), help_context='error'))
        if query_string.has_key('serial'):
            article_id = query_string['serial'][0]
        else:
            raise web.notfound(render['default'].error(error_message = _('NO_ARTICLE_SPECIFIED'), help_context='error'))
        path = board._get_path_from_board_id(board_id)
        if path == '':
            raise web.notfound(render['default'].error(error_message = _('NO_SUCH_BOARD'), help_context='error'))

        raise web.redirect(posixpath.join(path, '+read', article_id))
Beispiel #4
0
    def feed(self, query_string):
        board_id = -1
        if query_string.has_key('board'):
            try:
                board_id = int(query_string['board'][0])
            except ValueError:
                raise web.notfound(render['default'].error(error_message = _('NO_SUCH_BOARD'), help_context='error'))
        else:
            raise web.notfound(render['default'].error(error_message = _('NO_ARTICLE_SPECIFIED'), help_context='error'))
        feed_size = 20
        if query_string.has_key('numentries'):
            feed_size = int(query_string['numentries'][0])
        feed_type = 'atom'
        if query_string.has_key('rss'):
            feed_type = 'rss'
        path = board._get_path_from_board_id(board_id)
        if path == '':
            raise web.notfound(render['default'].error(error_message = _('NO_SUCH_BOARD'), help_context='error'))

        raise web.redirect(posixpath.join(path, '+%s?size=%s' % (feed_type, feed_size)))
Beispiel #5
0
    def list(self, query_string):
        board_id = -1
        if query_string.has_key('board'):
            try:
                board_id = int(query_string['board'][0])
            except ValueError:
                raise web.notfound(render['default'].error(error_message = _('NO_SUCH_BOARD'), help_context='error'))
        else:
            raise web.notfound(render['default'].error(error_message = _('NO_BOARD_SPECIFIED'), help_context='error'))
        if query_string.has_key('page'):
            page_no = int(query_string['page'][0])
        else:
            page_no = 0

        path = board._get_path_from_board_id(board_id)
        if path == '':
            raise web.notfound(render['default'].error(error_message = _('NO_SUCH_BOARD'), help_context='error'))

        if page_no > 0:
            raise web.redirect('%s?page=%s' % (path, page_no))
        else:
            raise web.redirect('%s' % path)
Beispiel #6
0
    def all_get(self, board_name, board_id, current_uid = -1):
        board_id = board._get_board_id_from_path(board_name)
        if board_id < 0:
            path = board._get_path_from_board_id(board_id)
            raise web.seeother(util.link(path))

        board_info = board.get_board_info(board_id)
        board_name = board_info.bName;

        if web.ctx.session.has_key('uid'):
            uid = web.ctx.session.uid
            user.update_unreaded_articles_board(uid, board_id)

        qs = web.ctx.query
        if len(qs) > 0:
            qs = qs[1:]
            qs = parse_qs(qs)

        t = article._get_recurse_page_count(board_name, config.page_size)
        if qs:
            page = int(qs['page'][0])
        else:
            page = t

        a = article.get_recurse_article_list(board_name, 
            config.page_size, page)
        m = article.get_marked_article(board_id)

        return util.render().board(lang="ko",
            title = board_info.bName,
            board_path = board_info.bName[1:],
            board_desc = board_info.bDescription,
            stylesheet = board_info.stylesheet,
            articles=a, marked_articles = m,
            total_page = t, page = page, feed = True,
            help_context = 'board')