'Return a copy of the item, but give him a new id'

def copy(self):

    cls = self.__class__
    i = cls({})
    for prop in cls.properties:
        if hasattr(self, prop):
            val = getattr(self, prop)
            setattr(i, prop, val)
    i.customs = copy(self.customs)
    if hasattr(self, 'tags'):
        i.tags = copy(self.tags)
    if hasattr(self, 'templates'):
        i.templates = copy(self.templates)
    return i
