Beispiel #1
0
 def test_tag_changes(self):
     # Add previously untagged resource.
     resource = Resource(self.realm, 'TaggedPage')
     tags = set(['tag1'])
     tag_resource(self.env, resource, author=self.req.authname, tags=tags)
     self.assertEquals(dict(TaggedPage=tags, WikiStart=tags), self._tags())
     # Add new tag to already tagged resource.
     resource = Resource(self.realm, 'WikiStart')
     tags = set(['tag1', 'tag2'])
     tag_resource(self.env, resource, author=self.req.authname, tags=tags)
     self.assertEquals(dict(TaggedPage=set(['tag1']), WikiStart=tags),
                       self._tags())
     # Exchange tags for already tagged resource.
     tags = set(['tag1', 'tag3'])
     tag_resource(self.env, resource, author=self.req.authname, tags=tags)
     self.assertEquals(dict(TaggedPage=set(['tag1']), WikiStart=tags),
                       self._tags())
     # Delete a subset of tags for already tagged resource.
     tags = set(['tag3'])
     tag_resource(self.env, resource, author=self.req.authname, tags=tags)
     self.assertEquals(dict(TaggedPage=set(['tag1']), WikiStart=tags),
                       self._tags())
     # Empty tag iterable deletes all resource tag references.
     tags = tuple()
     tag_resource(self.env, resource, author=self.req.authname, tags=tags)
     self.assertEquals(dict(TaggedPage=set(['tag1'])), self._tags())
Beispiel #2
0
 def remove_resource_tags(self, req, resource, comment=u''):
     assert resource.realm == self.realm
     if not self.check_permission(req.perm(resource), 'modify'):
         raise PermissionError(resource=resource, env=self.env)
     tag_resource(self.env,
                  resource,
                  author=self._get_author(req),
                  log=self.revisable)
Beispiel #3
0
 def set_resource_tags(self, req, resource, tags, comment=u'', when=None):
     assert resource.realm == self.realm
     if not self.check_permission(req.perm(resource), 'modify'):
         raise PermissionError(resource=resource, env=self.env)
     tag_resource(self.env,
                  resource,
                  author=self._get_author(req),
                  tags=tags,
                  log=self.revisable,
                  when=when)
Beispiel #4
0
 def reparent_resource_tags(self, req, old_resource, resource,
                            comment=u''):
     assert old_resource.realm == self.realm
     assert resource.realm == self.realm
     if not self.check_permission(req.perm(old_resource), 'modify'):
         raise PermissionError(resource=old_resource, env=self.env)
     if not self.check_permission(req.perm(resource), 'modify'):
         raise PermissionError(resource=resource, env=self.env)
     tag_resource(self.env, self.realm, to_unicode(old_resource.id),
                  to_unicode(resource.id))
Beispiel #5
0
 def test_reparent(self):
     resource = Resource(self.realm, 'TaggedPage')
     old_name = 'WikiStart'
     tag_resource(self.env, resource, 'WikiStart', self.req.authname)
     self.assertEquals(dict(TaggedPage=set(['tag1'])), self._tags())
Beispiel #6
0
 def test_reparent(self):
     res_id = 'TaggedPage'
     old_res_id = 'WikiStart'
     tag_resource(self.env, self.realm, old_res_id, res_id)
     self.assertEquals(dict(TaggedPage=set(['tag1'])), self._tags())
Beispiel #7
0
 def remove_resource_tags(self, req, resource, comment=u''):
     assert resource.realm == self.realm
     if not self.check_permission(req.perm(resource), 'modify'):
         raise PermissionError(resource=resource, env=self.env)
     tag_resource(self.env, resource, author=self._get_author(req),
                  log=self.revisable)
Beispiel #8
0
 def set_resource_tags(self, req, resource, tags, comment=u'', when=None):
     assert resource.realm == self.realm
     if not self.check_permission(req.perm(resource), 'modify'):
         raise PermissionError(resource=resource, env=self.env)
     tag_resource(self.env, resource, author=self._get_author(req),
                  tags=tags, log=self.revisable, when=when)
Beispiel #9
0
    def process_request(self, req):
        req.perm.require('WIKIMETA_VIEW')
        
        data = {}
        self.log.debug(" +++ in process_request")
        self.log.debug(dir(req.args))
        self.log.debug(req.args)
        # first process reordering:
        for key in req.args.keys():
            if key.startswith('reorder_'):
                self.log.debug(" +++ found reorder: %s" % key)
                reorder_args = key.split('_')
                self._priority_reorder(int(reorder_args[1]), int(reorder_args[2]))

        # data for state filter
        data['state_label'] = 'State:'
        data['state_options'] = ['all (non-obsolete)'] + STATES
        data['selected_state'] = 'all (non-obsolete)'
        if req.args.get('state_name') is not None:
            data['selected_state'] = req.args.get('state_name')
        # data for owner filter
        data['owner_label'] = 'Owner:'
        owner_tuples = self.env.get_known_users()
        data['owner_options'] = ['all'] + [item[0] for item in owner_tuples]
        data['selected_owner'] = 'all'
        if req.args.get('owner_name') is not None:
            data['selected_owner'] = req.args.get('owner_name')

        # data for tag filters
        combined_title = ""
        categorized_tags = self._get_categorized_tags()
        tag_states = []
        tag_list = []

        for category in categorized_tags.keys():
            tag_states.append([category, 'category'])
            for tag in categorized_tags[category]:
                if req.args.get('tagfilter_%s' % tag) is not None:
                    tag_states.append([tag, 'checked'])
                    tag_list.append(tag)
                    combined_title = '%s %s' % (tag, combined_title)
                else:
                    tag_states.append([tag, 'unchecked'])
        data['tags'] = tag_states
        data['tags_label'] = 'Tag Filter'
        if len(combined_title) == 0:
            data['combined_title'] = 'all'
        else:
            data['combined_title'] = combined_title

        # check if the user requested to add a new page:
        newpagename = req.args.get('newpagename')
        if newpagename is not None and len(newpagename) > 0:
            newpage = WikiPage(self.env, newpagename)
            currently_logged_in_user = get_reporter_id(req, 'author')
            if data['selected_owner'] == 'all':
                new_owner = currently_logged_in_user
            else:
                new_owner = data['selected_owner']
            if newpage.exists == False:
                newpage.text = 'page content goes here'
                newpage.save(author=currently_logged_in_user, comment='', remote_addr='127.0.0.1')
            # add tags and meta
            if data['selected_state'] == 'all (non-obsolete)':
                new_state = 'planned'
            else:
                new_state = data['selected_state']
            new_page_meta = PageMeta(newpagename, new_owner, new_state, 0, time.time(), currently_logged_in_user)
            new_page_meta.insert(self.env)
            tag_resource(self.env, newpage.resource, old_id=None, author=currently_logged_in_user, tags=tag_list)

        # get a top context to render the wiki data:
        context = Context.from_request(req, 'wiki')
        self.log.debug(" +++ context: ")
        self.log.debug(dir(context))
        self.log.debug(" +++ child: ")
        self.log.debug(context.child)
        self.log.debug(" +++ href: ")
        self.log.debug(context.href)
        self.log.debug(" +++ parent: ")
        self.log.debug(context.parent)

        # get the wiki pages:
        wiki_data = self._get_wiki_data(context, data['selected_state'], data['selected_owner'], tag_list)
        #self.log.debug(" +++ wiki_data:")
        #self.log.debug(wiki_data)
        data['wiki_data'] = wiki_data

        add_stylesheet(req, 'wm/css/wikimeta.css')
        # This tuple is for Genshi (template_name, data, content_type)
        # Without data the trac layout will not appear.
        return 'wikimeta.html', data, None
Beispiel #10
0
 def reparent_resource_tags(self, req, resource, old_id, comment=u''):
     assert resource.realm == self.realm
     if not self.check_permission(req.perm(resource), 'modify'):
         raise PermissionError(resource=resource, env=self.env)
     tag_resource(self.env, resource, old_id, req.authname,
                  log=self.revisable)
Beispiel #11
0
 def set_resource_tags(self, req, resource, tags, comment=u''):
     assert resource.realm == self.realm
     if not self.check_permission(req.perm(resource), 'modify'):
         raise PermissionError(resource=resource, env=self.env)
     tag_resource(self.env, self.realm, to_unicode(resource.id), tags=tags)