예제 #1
0
    def _subjects(self, group):
        """
        The basis for views displaying all the subjects the group is already watching and allowing
        members to choose new subjects for the group.
        """
        c.search_target = url(controller='group', action='subjects_watch', id=group.group_id)

        #retrieve search parameters
        c.text = self.form_result.get('text', '')

        if 'tagsitem' in self.form_result or 'tags' in self.form_result:
            c.tags = self.form_result.get('tagsitem', None)
            if c.tags is None:
                c.tags = self.form_result.get('tags', None).split(', ')
        else:
            c.tags = c.group.location.hierarchy() if c.group.location is not None else []
        c.tags = ', '.join(filter(bool, c.tags))

        sids = [s.id for s in group.watched_subjects]

        search_params = {}
        if c.text:
            search_params['text'] = c.text
        if c.tags:
            search_params['tags'] = c.tags
        search_params['obj_type'] = 'subject'

        query = search_query(extra=_exclude_subjects(sids), **search_params)
        if self.form_result != {}:
            c.searched = True

        if search_params != {}:
            c.results = paginate.Page(
                query,
                page=int(request.params.get('page', 1)),
                item_count = search_query_count(query),
                items_per_page = 10,
                **search_params)

        return render('group/subjects.mako')
예제 #2
0
    def watch_subjects(self):
        c.breadcrumbs.append(self._actions("subjects"))
        c.search_target = url(controller="profile", action="watch_subjects")

        # retrieve search parameters
        c.text = self.form_result.get("text", "")

        tags = []

        if "tagsitem" in self.form_result:
            tags = self.form_result.get("tagsitem", None)
        elif "tags" in self.form_result:
            tags = self.form_result.get("tags", [])
            if isinstance(tags, basestring):
                tags = tags.split(", ")

        c.tags = ", ".join(filter(bool, tags))

        sids = [s.id for s in c.user.watched_subjects]

        search_params = {}
        if c.text:
            search_params["text"] = c.text
        if c.tags:
            search_params["tags"] = c.tags
        search_params["obj_type"] = "subject"

        query = search_query(extra=_exclude_subjects(sids), **search_params)
        c.results = paginate.Page(
            query,
            page=int(request.params.get("page", 1)),
            items_per_page=10,
            item_count=search_query_count(query),
            **search_params
        )

        c.watched_subjects = c.user.watched_subjects

        return render("profile/watch_subjects.mako")