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())
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)
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)
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))
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())
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())
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
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)
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)