예제 #1
0
    def query(self):
        q = None
        if self.where == 'overview':
            self.check_modified(self.vuser, 'overview')
            q = queries.get_overview(self.vuser, self.sort, self.time)

        elif self.where == 'comments':
            sup.set_sup_header(self.vuser, 'commented')
            self.check_modified(self.vuser, 'commented')
            q = queries.get_comments(self.vuser, self.sort, self.time)

        elif self.where == 'submitted':
            sup.set_sup_header(self.vuser, 'submitted')
            self.check_modified(self.vuser, 'submitted')
            q = queries.get_submitted(self.vuser, self.sort, self.time)

        elif self.where in ('liked', 'disliked'):
            sup.set_sup_header(self.vuser, self.where)
            self.check_modified(self.vuser, self.where)
            if self.where == 'liked':
                q = queries.get_liked(self.vuser)
            else:
                q = queries.get_disliked(self.vuser)

        elif self.where == 'hidden':
            q = queries.get_hidden(self.vuser)

        elif c.user_is_admin:
            q = admin_profile_query(self.vuser, self.where, desc('_date'))

        if q is None:
            return self.abort404()

        return q
    def query(self):
        q = None
        if self.where == 'overview':
            self.check_modified(self.vuser, 'overview')
            q = queries.get_overview(self.vuser, self.sort, self.time)

        elif self.where == 'comments':
            sup.set_sup_header(self.vuser, 'commented')
            self.check_modified(self.vuser, 'commented')
            q = queries.get_comments(self.vuser, self.sort, self.time)

        elif self.where == 'submitted':
            sup.set_sup_header(self.vuser, 'submitted')
            self.check_modified(self.vuser, 'submitted')
            q = queries.get_submitted(self.vuser, self.sort, self.time)

        elif self.where in ('liked', 'disliked'):
            sup.set_sup_header(self.vuser, self.where)
            self.check_modified(self.vuser, self.where)
            if self.where == 'liked':
                q = queries.get_liked(self.vuser)
            else:
                q = queries.get_disliked(self.vuser)

        elif self.where == 'hidden':
            q = queries.get_hidden(self.vuser)

        elif c.user_is_admin:
            q = admin_profile_query(self.vuser, self.where, desc('_date'))

        if q is None:
            return self.abort404()

        return q
예제 #3
0
    def query(self):
        q = None
        if self.where == "overview":
            self.check_modified(self.vuser, "overview")
            q = queries.get_overview(self.vuser, self.sort, self.time)

        elif self.where == "comments":
            sup.set_sup_header(self.vuser, "commented")
            self.check_modified(self.vuser, "commented")
            q = queries.get_comments(self.vuser, self.sort, self.time)

        elif self.where == "submitted":
            sup.set_sup_header(self.vuser, "submitted")
            self.check_modified(self.vuser, "submitted")
            q = queries.get_submitted(self.vuser, self.sort, self.time)

        elif self.where in ("liked", "disliked"):
            sup.set_sup_header(self.vuser, self.where)
            self.check_modified(self.vuser, self.where)
            if self.where == "liked":
                q = queries.get_liked(self.vuser)
            else:
                q = queries.get_disliked(self.vuser)

        elif self.where == "hidden":
            q = queries.get_hidden(self.vuser)

        elif c.user_is_admin:
            q = admin_profile_query(self.vuser, self.where, desc("_date"))

        if q is None:
            return self.abort404()

        return q
예제 #4
0
    def query(self):
        q = None

        if self.where == 'profile':
            q = object  # dummy value

        if self.where == 'overview':
            self.check_modified(self.vuser, 'overview')
            q = queries.get_overview(self.vuser, 'new', 'all')

        elif self.where == 'comments':
            self.check_modified(self.vuser, 'commented')
            q = queries.get_comments(self.vuser, 'new', 'all')

        elif self.where == 'submitted':
            self.check_modified(self.vuser, 'submitted')
            q = queries.get_submitted(self.vuser, 'new', 'all')

        elif self.where in ('liked', 'disliked'):
            self.check_modified(self.vuser, self.where)
            if self.where == 'liked':
                q = queries.get_liked(self.vuser, not c.user_is_admin)
            else:
                q = queries.get_disliked(self.vuser, not c.user_is_admin)

        elif self.where == 'hidden':
            q = queries.get_hidden(self.vuser, not c.user_is_admin)

        elif self.where == 'drafts':
            q = queries.get_drafts(self.vuser)

        elif c.user_is_admin:
            q = admin_profile_query(self.vuser, self.where, desc('_date'))

        if q is None:
            return self.abort404()

        return q
예제 #5
0
    def query(self):
        q = None

        if self.where == 'profile':
            q = object  # dummy value

        if self.where == 'overview':
            self.check_modified(self.vuser, 'overview')
            q = queries.get_overview(self.vuser, 'new', 'all')

        elif self.where == 'comments':
            self.check_modified(self.vuser, 'commented')
            q = queries.get_comments(self.vuser, 'new', 'all')

        elif self.where == 'submitted':
            self.check_modified(self.vuser, 'submitted')
            q = queries.get_submitted(self.vuser, 'new', 'all')

        elif self.where in ('liked', 'disliked'):
            self.check_modified(self.vuser, self.where)
            if self.where == 'liked':
                q = queries.get_liked(self.vuser, not c.user_is_admin)
            else:
                q = queries.get_disliked(self.vuser, not c.user_is_admin)

        elif self.where == 'hidden':
            q = queries.get_hidden(self.vuser, not c.user_is_admin)

        elif self.where == 'drafts':
            q = queries.get_drafts(self.vuser)

        elif c.user_is_admin:
            q = admin_profile_query(self.vuser, self.where, desc('_date'))

        if q is None:
            return self.abort404()

        return q
예제 #6
0
파일: front.py 프로젝트: cmak/reddit
    def GET_user(self, num, vuser, sort, time, after, reverse, count, location, **env):
        """user profile pages"""

        # the validator will ensure that vuser is a valid account
        if not vuser:
            return self.abort404()

        # hide spammers profile pages
        if (not c.user_is_loggedin or 
            (c.user._id != vuser._id and not c.user_is_admin)) \
               and vuser._spam:
            return self.abort404()

        check_cheating('user')
        
        content_pane = PaneStack()

        # enable comments displaying with their titles when rendering
        c.profilepage = True
        listing = None

        db_sort = SortMenu.operator(sort)
        db_time = TimeMenu.operator(time)

        # function for extracting the proper thing if query is a relation (see liked)
        prewrap_fn = None

        # default (nonexistent) query to trip an error on if location is unhandles
        query      = None
        
        # build the sort menus for the space above the content
        sortbar = [SortMenu(default = sort), TimeMenu(default = time)]

        # overview page is a merge of comments and links
        if location == 'overview':
            links = Link._query(Link.c.author_id == vuser._id,
                                Link.c._spam == (True, False))
            comments = Comment._query(Comment.c.author_id == vuser._id,
                                      Comment.c._spam == (True, False))
            query = thing.Merge((links, comments), sort = db_sort, data = True)

        elif location == 'comments':
            query = Comment._query(Comment.c.author_id == vuser._id,
                                   Comment.c._spam == (True, False),
                                   sort = db_sort)

        elif location == 'submitted':
            query = Link._query(Link.c.author_id == vuser._id,
                                Link.c._spam == (True, False),
                                sort = db_sort)

        # (dis)liked page: pull votes and extract thing2
        elif ((location == 'liked' or location == 'disliked') and
              votes_visible(vuser)):
            rel = Vote.rel(vuser, Link)
            query = rel._query(rel.c._thing1_id == vuser._id,
                               rel.c._t2_deleted == False)
            query._eager(True, True)
            
            if location == 'liked':
                query._filter(rel.c._name == '1')
            else:
                query._filter(rel.c._name == '-1')
            sortbar = []
            query._sort = desc('_date')
            prewrap_fn = lambda x: x._thing2

        # TODO: this should be handled with '' above once merges work
        elif location == 'hidden' and votes_visible(vuser):
            db_time = None
            query = SaveHide._query(SaveHide.c._thing1_id == vuser._id,
                                    SaveHide.c._name == 'hide',
                                    eager_load = True,
                                    thing_data = True)
            sortbar = []
            query._sort = desc('_date')
            prewrap_fn = lambda x: x._thing2

        # any admin pages live here.
        elif c.user_is_admin:
            db_time = None
            query, prewrap_fn = admin_profile_query(vuser, location, db_sort)

        if query is None:
            return self.abort404()

        if db_time:
            query._filter(db_time)


        builder = QueryBuilder(query, num = num, prewrap_fn = prewrap_fn,
                               after = after, count = count, reverse = reverse,
                               wrap = ListingController.builder_wrapper)
        listing = LinkListing(builder)

        if listing:
            content_pane.append(listing.listing())

        titles = {'':          _("overview for %(user)s on %(site)s"),
                  'comments':  _("comments by %(user)s on %(site)s"),
                  'submitted': _("submitted by %(user)s on %(site)s"),
                  'liked':     _("liked by %(user)s on %(site)s"),
                  'disliked':  _("disliked by %(user)s on %(site)s"),
                  'hidden':    _("hidden by %(user)s on %(site)s")}
        title = titles.get(location, _('profile for %(user)s')) \
               % dict(user = vuser.name, site = c.site.name)

        return ProfilePage(vuser, title = title,
                           nav_menus = sortbar, 
                           content = content_pane).render()