[Zope3-Users] Re: lovely.tag behaviour

Jürgen Kartnaller juergen at kartnaller.at
Tue Dec 25 13:13:33 EST 2007



Maken Seteva wrote:
> Hi!
> I am a bit curious about the behavior of the tagcount when tagging with 
> lovely.tag. Here is a snip from my doctest:
> 
> 
> Nothing initially
>     >>> sorted(e.getCloud(users=[u'barney']))
>     []
> 
> Update tags for barney
>     >>> e.update(1000, u'barney', [u'foo'])
>     >>> e.update(1000, u'barney', [u'foo', u'bar'])
> 
> Print them
>     >>> sorted(e.getCloud(items=(1000,), users=(u'barney',)))
>     [(u'bar', 1), (u'foo', 2)]
> 
> Update and print again:
>     >>> e.update(1000, u'barney', [u'eggs'])
>     >>> sorted(e.getCloud(items=(1000,), users=(u'barney',)))
>     [(u'eggs', 1)]

This is exactly the expected behaviour it is described in the engine 
interface :

class ITaggingEngine(zope.interface.Interface):
     """Manangement and Querying of Tags.

     Tags are small stickers that are specific to an object to be tagged
     and the user tagging the object.
     """

     def update(item, user, tags):
         """Update the tagging engine for an item and user and its tags.

         The item must be an integer, the user can be a string and the
         tags argument must be an iterable of tag names (strings).

         This method always overwrites the old tag settings. However,
         existing tags will not be readded and are just skipped.
         """

> 
> 
> My first thing i notice is that there is no concept of 'updating' a 
> users tags on an object in the sense that first you add a tag then later 
> you add another tag  with the old one being untouched (the tag count for 
> the old one not being incremented every time i update!). Is there a 
> special reason for this philosophy?

The way this function works is very convenience, because usually you 
have a user editing his tags. The you just take the edited list of tags 
and use update to update the tagging engine.


Regards
Jürgen



More information about the Zope3-users mailing list