Exemple #1
0
    def validate_registration(self, action, data):
        """
        """

        #import pdb; pdb.set_trace()
        errors = super(MyRegistrationForm, self).validate_registration(action, data)

        form_field_names = [f.field.getName() for f in self.form_fields]

        if not ('accept' in data.keys() and data.get('accept', '')):
            err_str = _(u'Please check if you agree with the terms')
            errors.append(WidgetInputError('accept', u'label_accept', err_str))
            self.widgets['accept'].error = err_str

        if not ('fullname' in data.keys() and data.get('fullname', '')):
            err_str = _(u'Please fill in the full name')
            errors.append(WidgetInputError('fullname', u'label_fullname', err_str))
            self.widgets['fullname'].error = err_str

        if data['usertype'] == u'Advanced User':
            if not ('user_title' in data.keys() and data.get('user_title', '')):
                err_str = _(u'Please fill in the title')
                errors.append(WidgetInputError('user_title', u'label_user_title', err_str))
                self.widgets['user_title'].error = err_str
            if not ('institution' in data.keys() and data.get('institution', '')):
                err_str = _(u'Please fill in the institution')
                errors.append(WidgetInputError('institution', u'label_institution', err_str))
                self.widgets['institution'].error = err_str
            if not ('description' in data.keys() and data.get('description', '')):
                err_str = _(u'Please fill in the Biography')
                errors.append(WidgetInputError('description', u'label_description', err_str))
                self.widgets['description'].error = err_str
            if not ('home_page' in data.keys() and data.get('home_page', '')):
                err_str = _(u'Please fill in the Home Page')
                errors.append(WidgetInputError('home_page', u'label_home_page', err_str))
                self.widgets['home_page'].error = err_str

        return errors
    def handleApply(self, action):
#        import rpdb; rpdb.set_trace()
        pm = getToolByName(self.context, 'portal_membership')
        home = pm.getHomeFolder()
        if not home: 
            return
        title = unicode(strip_tags(self.request['form.widgets.title']))[:200]
        body = self.request['form.widgets.body']
        existing = [i for i in self.context.getRelatedItems() if i.portal_type=='Commentary']
        dupes = [d for d in existing if d.Title() == title]
        if len(dupes):
            self.status = _(u"The commentary has been created")
            return
        normalizer = getUtility(IIDNormalizer)
        try:
            target_folder = home.commentaries
            new_id = target_folder.invokeFactory(id=str(DateTime.DateTime().millis()), type_name='Commentary', title=title)
            obj = target_folder[new_id]
            obj.textCommentary = RichTextValue(unicode(strip_tags(body))[:20000], 'text/plain', 'text/plain', 'utf-8')
            RelatedItems = self.context.getRelatedItems()
            RelatedItems.append(obj)
            self.context.setRelatedItems(RelatedItems)
            #used to save the related items
            #also add the video to the commentary's related items, to be used on the subscribers for when deleting a commentary
            self.context.reindexObject()
            wft = getToolByName(obj, 'portal_workflow')
            for state in ['submit','show','process','publish']:
                try:
                    wft.doActionFor(obj, state)
                except:
                    pass
            try:
#                import rpdb; rpdb.set_trace()
                intid = getUtility(IIntIds).getId(self.context)
                relatedVids = [RelationValue(intid)]
                obj.relatedItems = relatedVids
            except KeyError:
                to_id = getUtility(IIntIds).register(self.context)
                relatedVids = [RelationValue(to_id)]
                obj.relatedItems = relatedVids
        except Exception as e:
            self.status = _(u"Failed to publish commentary")
            return

        wft = getToolByName(self.context, 'portal_workflow')
        state = wft.getInfoFor(self.context, 'review_state')
        try:
            if state == "private":
                try:
                    wft.doActionFor(self.context, 'show')
                except:
                    pass
                try:
                    wft.doActionFor(self.context, 'submit')
                except:
                    pass
                try:
                    wft.doActionFor(self.context, 'publish')
                except:
                    pass
        except: 
            pass