コード例 #1
0
ファイル: wiki.py プロジェクト: dinxx/reddit
    def GET_wiki_page(self, pv, page_name):
        """Return the content of a wiki page

        If `v` is given, show the wiki page as it was at that version
        If both `v` and `v2` are given, show a diff of the two

        """
        message = None

        if c.errors.get(('PAGE_NAME_NORMALIZED', 'page')):
            url = join_urls(c.wiki_base_url, page_name)
            return self.redirect(url)

        page, version, version2 = pv

        if not page:
            is_api = c.render_style in extensions.API_TYPES
            if this_may_revise():
                if is_api:
                    self.handle_error(404, 'PAGE_NOT_CREATED')
                errorpage = WikiNotFound(page=page_name)
                request.environ['usable_error_content'] = errorpage.render()
            elif is_api:
                self.handle_error(404, 'PAGE_NOT_FOUND')
            self.abort404()

        if version:
            edit_by = version.get_author()
            edit_date = version.date
        else:
            edit_by = page.get_author()
            edit_date = page._get('last_edit_date')

        diffcontent = None
        if not version:
            content = page.content
            if c.is_wiki_mod and page.name in page_descriptions:
                message = page_descriptions[page.name]
        else:
            message = _("viewing revision from %s") % timesince(version.date)
            if version2:
                t1 = timesince(version.date)
                t2 = timesince(version2.date)
                timestamp1 = _("%s ago") % t1
                timestamp2 = _("%s ago") % t2
                message = _("comparing revisions from %(date_1)s and %(date_2)s") \
                          % {'date_1': t1, 'date_2': t2}
                diffcontent = make_htmldiff(version.content, version2.content, timestamp1, timestamp2)
                content = version2.content
            else:
                message = _("viewing revision from %s ago") % timesince(version.date)
                content = version.content

        renderer = RENDERERS_BY_PAGE.get(page.name, 'wiki') 

        return WikiPageView(content, alert=message, v=version, diff=diffcontent,
                            may_revise=this_may_revise(page), edit_by=edit_by,
                            edit_date=edit_date, page=page.name,
                            renderer=renderer).render()
コード例 #2
0
ファイル: wiki.py プロジェクト: redraccoonz/reddit
    def GET_wiki_page(self, pv, page_name):
        message = None

        if c.errors.get(("PAGE_NAME_NORMALIZED", "page")):
            url = join_urls(c.wiki_base_url, page_name)
            return self.redirect(url)

        page, version, version2 = pv

        if not page:
            is_api = c.render_style in extensions.API_TYPES
            if this_may_revise():
                if is_api:
                    self.handle_error(404, "PAGE_NOT_CREATED")
                errorpage = WikiNotFound(page=page_name)
                request.environ["usable_error_content"] = errorpage.render()
            elif is_api:
                self.handle_error(404, "PAGE_NOT_FOUND")
            self.abort404()

        if version:
            edit_by = version.get_author()
            edit_date = version.date
        else:
            edit_by = page.get_author()
            edit_date = page._get("last_edit_date")

        diffcontent = None
        if not version:
            content = page.content
            if c.is_wiki_mod and page.name in page_descriptions:
                message = page_descriptions[page.name]
        else:
            message = _("viewing revision from %s") % timesince(version.date)
            if version2:
                t1 = timesince(version.date)
                t2 = timesince(version2.date)
                timestamp1 = _("%s ago") % t1
                timestamp2 = _("%s ago") % t2
                message = _("comparing revisions from %(date_1)s and %(date_2)s") % {"date_1": t1, "date_2": t2}
                diffcontent = make_htmldiff(version.content, version2.content, timestamp1, timestamp2)
                content = version2.content
            else:
                message = _("viewing revision from %s ago") % timesince(version.date)
                content = version.content

        renderer = RENDERERS_BY_PAGE.get(page.name, "wiki")

        return WikiPageView(
            content,
            alert=message,
            v=version,
            diff=diffcontent,
            may_revise=this_may_revise(page),
            edit_by=edit_by,
            edit_date=edit_date,
            page=page.name,
            renderer=renderer,
        ).render()
コード例 #3
0
    def GET_wiki_page(self, pv, page_name):
        """Return the content of a wiki page

        If `v` is given, show the wiki page as it was at that version
        If both `v` and `v2` are given, show a diff of the two

        """
        message = None

        if c.errors.get(('PAGE_NAME_NORMALIZED', 'page')):
            url = join_urls(c.wiki_base_url, page_name)
            return self.redirect(url)

        page, version, version2 = pv

        if not page:
            is_api = c.render_style in extensions.API_TYPES
            if this_may_revise():
                if is_api:
                    self.handle_error(404, 'PAGE_NOT_CREATED')
                errorpage = WikiNotFound(page=page_name)
                request.environ['usable_error_content'] = errorpage.render()
            elif is_api:
                self.handle_error(404, 'PAGE_NOT_FOUND')
            self.abort404()

        if version:
            edit_by = version.get_author()
            edit_date = version.date
        else:
            edit_by = page.get_author()
            edit_date = page._get('last_edit_date')

        diffcontent = None
        if not version:
            content = page.content
            if c.is_wiki_mod and page.name in page_descriptions:
                message = page_descriptions[page.name]
        else:
            message = _("viewing revision from %s") % timesince(version.date)
            if version2:
                t1 = timesince(version.date)
                t2 = timesince(version2.date)
                timestamp1 = _("%s ago") % t1
                timestamp2 = _("%s ago") % t2
                message = _("comparing revisions from %(date_1)s and %(date_2)s") \
                          % {'date_1': t1, 'date_2': t2}
                diffcontent = make_htmldiff(version.content, version2.content, timestamp1, timestamp2)
                content = version2.content
            else:
                message = _("viewing revision from %s ago") % timesince(version.date)
                content = version.content

        renderer = RENDERERS_BY_PAGE.get(page.name, 'wiki') 

        return WikiPageView(content, alert=message, v=version, diff=diffcontent,
                            may_revise=this_may_revise(page), edit_by=edit_by,
                            edit_date=edit_date, page=page.name,
                            renderer=renderer).render()
コード例 #4
0
ファイル: wiki.py プロジェクト: aldarund/reddit
 def GET_wiki_discussions(self, page, num, after, reverse, count):
     page_url = add_sr("%s/%s" % (c.wiki_base_url, page.name))
     builder = url_links_builder(page_url, num=num, after=after,
                                 reverse=reverse, count=count)
     listing = LinkListing(builder).listing()
     return WikiDiscussions(listing, page=page.name,
                            may_revise=this_may_revise(page)).render()
コード例 #5
0
ファイル: wiki.py プロジェクト: wigg234/reddit
 def GET_wiki_discussions(self, page, num, after, reverse, count):
     page_url = add_sr("%s/%s" % (c.wiki_base_url, page.name))
     builder = url_links_builder(page_url, num=num, after=after,
                                 reverse=reverse, count=count)
     listing = LinkListing(builder).listing()
     return WikiDiscussions(listing, page=page.name,
                            may_revise=this_may_revise(page)).render()
コード例 #6
0
ファイル: wiki.py プロジェクト: aldarund/reddit
 def GET_wiki_revisions(self, num, after, reverse, count, page):
     revisions = page.get_revisions()
     wikiuser = c.user if c.user_is_loggedin else None
     builder = WikiRevisionBuilder(revisions, user=wikiuser, sr=c.site,
                                   num=num, reverse=reverse, count=count,
                                   after=after, skip=not c.is_wiki_mod,
                                   wrap=default_thing_wrapper())
     listing = WikiRevisionListing(builder).listing()
     return WikiRevisions(listing, page=page.name, may_revise=this_may_revise(page)).render()
コード例 #7
0
ファイル: wiki.py プロジェクト: weiqiyiji/reddit
 def GET_wiki_discussions(self, page, num, after, reverse, count):
     page_url = add_sr("%s/%s" % (c.wiki_base_url, page.name))
     links = url_links(page_url)
     builder = IDBuilder([link._fullname for link in links],
                         num=num, after=after, reverse=reverse,
                         count=count, skip=False)
     listing = LinkListing(builder).listing()
     return WikiDiscussions(listing, page=page.name,
                            may_revise=this_may_revise(page)).render()
コード例 #8
0
ファイル: wiki.py プロジェクト: wigg234/reddit
 def GET_wiki_revisions(self, num, after, reverse, count, page):
     revisions = page.get_revisions()
     wikiuser = c.user if c.user_is_loggedin else None
     builder = WikiRevisionBuilder(revisions, user=wikiuser, sr=c.site,
                                   num=num, reverse=reverse, count=count,
                                   after=after, skip=not c.is_wiki_mod,
                                   wrap=default_thing_wrapper())
     listing = WikiRevisionListing(builder).listing()
     return WikiRevisions(listing, page=page.name, may_revise=this_may_revise(page)).render()
コード例 #9
0
ファイル: wiki.py プロジェクト: kusl/reddit
 def GET_wiki_revisions(self, num, after, reverse, count, page):
     revisions = page.get_revisions()
     builder = WikiRevisionBuilder(
         revisions,
         num=num,
         reverse=reverse,
         count=count,
         after=after,
         skip=not c.is_wiki_mod,
         wrap=default_thing_wrapper(),
     )
     listing = WikiRevisionListing(builder).listing()
     return WikiRevisions(listing, page=page.name, may_revise=this_may_revise(page)).render()
コード例 #10
0
 def GET_wiki_discussions(self, page, num, after, reverse, count):
     """Retrieve a list of discussions about this wiki `page`"""
     page_url = add_sr("%s/%s" % (c.wiki_base_url, page.name))
     builder = url_links_builder(page_url,
                                 num=num,
                                 after=after,
                                 reverse=reverse,
                                 count=count)
     listing = LinkListing(builder).listing()
     return WikiDiscussions(listing,
                            page=page.name,
                            may_revise=this_may_revise(page),
                            sr_path=not c.site.is_homepage).render()
コード例 #11
0
ファイル: builder.py プロジェクト: Acceto/reddit
    def wrap_items(self, items):
        from r2.lib.validator.wiki import this_may_revise
        types = {}
        wrapped = []
        extended = self.show_extended and c.is_wiki_mod
        extended = extended and this_may_revise(self.page)
        for item in items:
            w = self.wrap(item)
            w.show_extended = extended
            w.show_compare = self.show_extended
            types.setdefault(w.render_class, []).append(w)
            wrapped.append(w)
        
        user = c.user
        for cls in types.keys():
            cls.add_props(user, types[cls])

        return wrapped
コード例 #12
0
ファイル: builder.py プロジェクト: drewshaver/reddit
    def wrap_items(self, items):
        from r2.lib.validator.wiki import this_may_revise
        types = {}
        wrapped = []
        extended = self.show_extended and c.is_wiki_mod
        extended = extended and this_may_revise(self.page)
        for item in items:
            w = self.wrap(item)
            w.show_extended = extended
            w.show_compare = self.show_extended
            types.setdefault(w.render_class, []).append(w)
            wrapped.append(w)

        user = c.user
        for cls in types.keys():
            cls.add_props(user, types[cls])

        return wrapped
コード例 #13
0
ファイル: wiki.py プロジェクト: weiqiyiji/reddit
    def GET_wiki_page(self, pv, page_name):
        message = None

        if c.errors.get(('PAGE_NAME_NORMALIZED', 'page')):
            url = join_urls(c.wiki_base_url, page_name)
            return self.redirect(url)

        page, version, version2 = pv

        if not page:
            if c.render_style in extensions.API_TYPES:
                self.handle_error(404, 'PAGE_NOT_CREATED')
            return WikiNotFound(page=page_name).render()

        if version:
            edit_by = version.get_author()
            edit_date = version.date
        else:
            edit_by = page.get_author()
            edit_date = page._get('last_edit_date')

        diffcontent = None
        if not version:
            content = page.content
            if c.is_wiki_mod and page.name in page_descriptions:
                message = page_descriptions[page.name]
        else:
            message = _("viewing revision from %s") % timesince(version.date)
            if version2:
                t1 = timesince(version.date)
                t2 = timesince(version2.date)
                timestamp1 = _("%s ago") % t1
                timestamp2 = _("%s ago") % t2
                message = _("comparing revisions from %(date_1)s and %(date_2)s") \
                          % {'date_1': t1, 'date_2': t2}
                diffcontent = make_htmldiff(version.content, version2.content, timestamp1, timestamp2)
                content = version2.content
            else:
                message = _("viewing revision from %s ago") % timesince(version.date)
                content = version.content

        return WikiPageView(content, alert=message, v=version, diff=diffcontent,
                            may_revise=this_may_revise(page), edit_by=edit_by,
                            edit_date=edit_date, page=page.name).render()
コード例 #14
0
    def GET_wiki_page(self, pv, page_name):
        message = None

        if c.errors.get(('PAGE_NAME_NORMALIZED', 'page')):
            url = join_urls(c.wiki_base_url, page_name)
            return self.redirect(url)

        page, version, version2 = pv

        if not page:
            if c.render_style in extensions.API_TYPES:
                self.handle_error(404, 'PAGE_NOT_CREATED')
            return WikiNotFound(page=page_name).render()

        if version:
            edit_by = version.get_author()
            edit_date = version.date
        else:
            edit_by = page.get_author()
            edit_date = page._get('last_edit_date')

        diffcontent = None
        if not version:
            content = page.content
            if c.is_wiki_mod and page.name in page_descriptions:
                message = page_descriptions[page.name]
        else:
            message = _("viewing revision from %s") % timesince(version.date)
            if version2:
                t1 = timesince(version.date)
                t2 = timesince(version2.date)
                timestamp1 = _("%s ago") % t1
                timestamp2 = _("%s ago") % t2
                message = _("comparing revisions from %(date_1)s and %(date_2)s") \
                          % {'date_1': t1, 'date_2': t2}
                diffcontent = make_htmldiff(version.content, version2.content, timestamp1, timestamp2)
                content = version2.content
            else:
                message = _("viewing revision from %s ago") % timesince(version.date)
                content = version.content

        return WikiPageView(content, alert=message, v=version, diff=diffcontent,
                            may_revise=this_may_revise(page), edit_by=edit_by,
                            edit_date=edit_date, page=page.name).render()