def getVocabulary(self, instance):
     """ return the vocabulary by name from atvocabularymanager
     """
     vt = getToolByName(instance, TOOL_NAME)
     vocab = vt.getVocabularyByName(self.vocab_name)
     if vocab is None:
         raise KeyError('Vocabulary id not found in '+\
                          'portal_vocabularies : %s' % self.vocab_name)        
     assert(IVocabulary.isImplementedBy(vocab))
     return vocab
def indexTree(object, **kw):
    for field in obj.schema.fields():
        if not IVocabulary.providedBy(field.vocabulary):
            # Wrong vocabulary type
            continue
        termUIDs = field.getRaw(obj)
        if not isinstance(termUIDs, list):
            termUIDs = [termUIDs]
        all_dicts = field.vocabulary.getVocabularyDict(obj)
        path = []
        for term in termUIDs:
            path.extend(getPath(term, ('', all_dicts)))
        return path
    def populate_archetype(self, obj):
        request = self.request
        fields = obj.Schema().fields()

        for field in fields:
            name = field.__name__
            if name in ['title', 'id']:
                continue

            if shasattr(field, 'vocabulary') and IVocabulary.providedBy(
                    field.vocabulary):
                vocab = field.vocabulary.getVocabularyDict(obj)
                value = vocab.keys()[random.randint(0, len(vocab.keys()) - 1)]

            elif atfield.IStringField.providedBy(field):
                validators = [v[0].name for v in field.validators]
                if 'isURL' in validators:
                    value = 'http://en.wikipedia.com/wiki/Lorem_ipsum'
                elif 'isEmail' in validators:
                    value = '*****@*****.**'
                else:
                    value = self.get_text_line()

            elif atfield.ITextField.providedBy(field):
                widget = field.widget
                if isinstance(widget, RichWidget):
                    value = self.get_rich_text()
                else:
                    value = self.get_text_paragraph()

            elif atfield.IBooleanField.providedBy(field):
                value = random.randint(0, 1) and True or False
            else:
                continue

            field.set(obj, value)

        if IATEvent.providedBy(obj):
            days = random.random() * 20 * (random.randint(-1, 1) or 1)
            value = DateTime() + days
            obj.setStartDate(value)
            obj.setEndDate(value + random.random() * 3)
    def populate_archetype(self, obj):
        request = self.request
        fields = obj.Schema().fields()

        for field in fields:
            name = field.__name__
            if name in ['title', 'id']:
                continue

            if shasattr(field, 'vocabulary') and IVocabulary.providedBy(field.vocabulary):
                vocab = field.vocabulary.getVocabularyDict(obj)
                value = vocab.keys()[random.randint(0, len(vocab.keys())-1)]
                
            elif atfield.IStringField.providedBy(field):
                validators = [v[0].name for v in field.validators]
                if 'isURL' in validators:
                    value = 'http://en.wikipedia.com/wiki/Lorem_ipsum'
                elif 'isEmail' in validators:
                    value = '*****@*****.**'
                else:
                    value = self.get_text_line()

            elif atfield.ITextField.providedBy(field):
                widget = field.widget
                if isinstance(widget, RichWidget):
                   value = self.get_rich_text() 
                else:
                   value = self.get_text_paragraph() 

            elif atfield.IBooleanField.providedBy(field):
                value = random.randint(0,1) and True or False
            else:
                continue

            field.set(obj, value)

        if IATEvent.providedBy(obj):
            days = random.random()*20 * (random.randint(-1,1) or 1)
            value = DateTime() + days
            obj.setStartDate(value)
            obj.setEndDate(value+random.random()*3)
def populate_archetype(obj, data):
    fields = obj.Schema().fields()
    for field in fields:
        name = field.__name__
        if name in ['id']:
            continue

        if name == 'title':
            value = data['title']

        elif shasattr(field, 'vocabulary') and \
                IVocabulary.providedBy(field.vocabulary):

            vocab = field.vocabulary.getVocabularyDict(obj)
            value = vocab.keys()[random.randint(0, len(vocab.keys()) - 1)]

        elif atfield.IStringField.providedBy(field):
            validators = [v[0].name for v in field.validators]
            if 'isURL' in validators:
                value = 'http://en.wikipedia.com/wiki/Lorem_ipsum'
            elif 'isEmail' in validators:
                value = '*****@*****.**'
            else:
                value = get_text_line()

        elif atfield.ITextField.providedBy(field):
            widget = field.widget
            if isinstance(widget, RichWidget):
                value = get_rich_text(data)
            else:
                value = get_text_paragraph()

        elif atfield.IBooleanField.providedBy(field):
            if 'Folder' == obj.portal_type:
                value = random.choice((0, 0, 0, 0, 1))
            else:
                value = random.randint(0, 1) and True or False
        else:
            continue

        field.set(obj, value)

    # subject
    subject = obj.getField('subject')
    if subject and data.get('subjects'):
        subjects = data.get('subjects', '').splitlines() or get_subjects()
        random.shuffle(subjects)
        subject.set(obj, subjects[:4])

    if IATEvent.providedBy(obj):
        days = random.random() * 20 * (random.randint(-1, 1) or 1)
        value = DateTime() + days
        obj.setStartDate(value)
        obj.setEndDate(value + random.random() * 3)

    # Set Images
    generate_image = data.get('generate_images') or obj.portal_type == 'Image'
    if obj.getField('image') and generate_image:
        field = obj.getField('image')
        name = data.get('generate_images_service')
        params = data.get('generate_images_params')
        getter = component.getUtility(IFakeImageGetter, name=name)
        title = get_text_line()
        img_content = getter.get(params=params, text=title)
        if img_content:
            field.set(obj, img_content)
            log.info('[%s] got dummy image for %s'
                     % (getter.name, '/'.join(obj.getPhysicalPath())))
def populate_archetype(obj, data):
    fields = obj.Schema().fields()
    for field in fields:
        name = field.__name__
        if name in ['id']:
            continue

        if name == 'title':
            value = data['title']

        elif shasattr(field, 'vocabulary') and \
                IVocabulary.providedBy(field.vocabulary):

            vocab = field.vocabulary.getVocabularyDict(obj)
            value = vocab.keys()[random.randint(0, len(vocab.keys())-1)]

        elif atfield.IStringField.providedBy(field):
            validators = [v[0].name for v in field.validators]
            if 'isURL' in validators:
                value = 'http://en.wikipedia.com/wiki/Lorem_ipsum'
            elif 'isEmail' in validators:
                value = '*****@*****.**'
            else:
                value = get_text_line()

        elif atfield.ITextField.providedBy(field):
            widget = field.widget
            if isinstance(widget, RichWidget):
                value = get_rich_text(data)
            else:
                value = get_text_paragraph()

        elif atfield.IBooleanField.providedBy(field):
            value = random.randint(0, 1) and True or False
        else:
            continue

        field.set(obj, value)

    # subject
    subject = obj.getField('subject')
    if subject and data.get('subjects'):
        subjects = data.get('subjects', '').splitlines() or get_subjects()
        random.shuffle(subjects)
        subject.set(obj, subjects[:4])

    if IATEvent.providedBy(obj):
        days = random.random()*20 * (random.randint(-1, 1) or 1)
        value = DateTime() + days
        obj.setStartDate(value)
        obj.setEndDate(value+random.random()*3)

    # Set Images
    generate_image = data.get('generate_images') or obj.portal_type == 'Image'
    if obj.getField('image') and generate_image:
        field = obj.getField('image')
        name = data.get('generate_images_service')
        params = data.get('generate_images_params')
        getter = component.getUtility(IFakeImageGetter, name=name)
        title = get_text_line()
        img_content = getter.get(params=params, text=title)
        if img_content:
            field.set(obj, img_content)
            log.info('[%s] got dummy image for %s'
                     % (getter.name, '/'.join(obj.getPhysicalPath())))