Example #1
0
 def beforeTearDown(self):
     self.portal.MailHost = self.portal._original_MailHost
     sm = getSiteManager(context=self.portal)
     sm.unregisterUtility(provided=IMailHost)
     sm.registerUtility(
         aq_base(
             self.portal._original_MailHost),
         provided=IMailHost)
Example #2
0
def isVisible(self, instance, mode='view', default=None, field=None):
    """decide if a field is visible in a given mode -> 'state'.
    see Products.Archetypes.Widget.TypesWidget#isVisible for details about the
    default behaviour.
    """

    # First get the original value, to use as our default
    vis_dic = getattr(aq_base(self), 'visible', _marker)
    state = default if default else 'visible'
    if vis_dic is _marker:
        return state
    if type(vis_dic) is DictType:
        state = vis_dic.get(mode, state)
    elif not vis_dic:
        state = 'invisible'
    elif vis_dic < 0:
        state = 'hidden'

    if not field:
        return state

    # call any IATWidgetVisibility adapters
    adapters = {}
    for adapter in getAdapters((instance, ), IATWidgetVisibility):
        sort_val = getattr(adapter[1], 'sort', 1000)
        if sort_val not in adapters:
            adapters[sort_val] = []
        adapters[sort_val].append(adapter)
    keys = sorted(adapters.keys())
    keys.reverse()
    for key in keys:
        for adapter in adapters[key]:
            oldstate = state
            state = adapter[1](instance, mode, field, state)
            # if state != oldstate:
            #     adapter_name = adapter[1].__repr__().split(" ")[0].split(".")[-1]
            #     print "%-25s %-25s adapter:%s"%(field.getName(), "%s->%s"%(oldstate, state), adapter_name)

    return state
Example #3
0
def isVisible(self, instance, mode='view', default=None, field=None):
    """decide if a field is visible in a given mode -> 'state'.
    see Products.Archetypes.Widget.TypesWidget#isVisible for details about the
    default behaviour.
    """

    # First get the original value, to use as our default
    vis_dic = getattr(aq_base(self), 'visible', _marker)
    state = default if default else 'visible'
    if vis_dic is _marker:
        return state
    if type(vis_dic) is DictType:
        state = vis_dic.get(mode, state)
    elif not vis_dic:
        state = 'invisible'
    elif vis_dic < 0:
        state = 'hidden'

    if not field:
        return state

    # call any IATWidgetVisibility adapters
    adapters = {}
    for adapter in getAdapters((instance, ), IATWidgetVisibility):
        sort_val = getattr(adapter[1], 'sort', 1000)
        if sort_val not in adapters:
            adapters[sort_val] = []
        adapters[sort_val].append(adapter)
    keys = sorted(adapters.keys())
    keys.reverse()
    for key in keys:
        for adapter in adapters[key]:
            oldstate = state
            state = adapter[1](instance, mode, field, state)
            # if state != oldstate:
            #     adapter_name = adapter[1].__repr__().split(" ")[0].split(".")[-1]
            #     print "%-25s %-25s adapter:%s"%(field.getName(), "%s->%s"%(oldstate, state), adapter_name)

    return state
Example #4
0
 def beforeTearDown(self):
     self.portal.MailHost = self.portal._original_MailHost
     sm = getSiteManager(context=self.portal)
     sm.unregisterUtility(provided=IMailHost)
     sm.registerUtility(aq_base(self.portal._original_MailHost),
                        provided=IMailHost)
Example #5
0
    def __call__(self):

        if self.request.form.has_key("submitted"):

            def error(field, message):
                if field:
                    message = "%s: %s" % (field, message)
                self.context.plone_utils.addPortalMessage(message, 'error')
                return self.template()

            form = self.request.form
            contact = self.context

            password = safe_unicode(form.get('password', '')).encode('utf-8')
            username = safe_unicode(form.get('username', '')).encode('utf-8')
            confirm = form.get('confirm', '')
            email = safe_unicode(form.get('email', '')).encode('utf-8')

            if not username:
                return error('username',
                             PMF("Input is required but not given."))

            if not email:
                return error('email', PMF("Input is required but not given."))

            reg_tool = self.context.portal_registration
            properties = self.context.portal_properties.site_properties

            ##            if properties.validate_email:
            ##                password = reg_tool.generatePassword()
            ##            else:
            if password != confirm:
                return error('password', PMF("Passwords do not match."))

            if not password:
                return error('password',
                             PMF("Input is required but not given."))

            if not confirm:
                return error('password', PMF("Passwords do not match."))

            if len(password) < 5:
                return error('password',
                             PMF("Passwords must contain at least 5 letters."))

            try:
                reg_tool.addMember(username,
                                   password,
                                   properties={
                                       'username': username,
                                       'email': email,
                                       'fullname': username
                                   })
            except ValueError, msg:
                return error(None, msg)

            contact.setUsername(username)
            contact.setEmailAddress(email)

            # If we're being created in a Client context, then give
            # the contact an Owner local role on client.
            if contact.aq_parent.portal_type == 'Client':
                contact.aq_parent.manage_setLocalRoles(username, [
                    'Owner',
                ])
                if hasattr(aq_base(contact.aq_parent),
                           'reindexObjectSecurity'):
                    contact.aq_parent.reindexObjectSecurity()

                # add user to Clients group
                group = self.context.portal_groups.getGroupById('Clients')
                group.addMember(username)

            # Additional groups for LabContact users.
            # not required (not available for client Contact)
            if 'groups' in self.request and self.request['groups']:
                groups = self.request['groups']
                if not type(groups) in (list, tuple):
                    groups = [
                        groups,
                    ]
                for group in groups:
                    group = self.portal_groups.getGroupById(group)
                    group.addMember(username)

            contact.reindexObject()

            if properties.validate_email or self.request.get('mail_me', 0):
                try:
                    reg_tool.registeredNotify(username)
                except:
                    import transaction
                    transaction.abort()
                    return error(None, PMF("SMTP server disconnected."))

            message = PMF("Member registered.")
            self.context.plone_utils.addPortalMessage(message, 'info')
            return self.template()
Example #6
0
    def __call__(self):

        if self.request.form.has_key("submitted"):

            def error(field, message):
                if field:
                    message = "%s: %s" % (field, message)
                self.context.plone_utils.addPortalMessage(message, 'error')
                return self.template()

            form = self.request.form
            contact = self.context

            password = safe_unicode(form.get('password', '')).encode('utf-8')
            username = safe_unicode(form.get('username', '')).encode('utf-8')
            confirm = form.get('confirm', '')
            email = safe_unicode(form.get('email', '')).encode('utf-8')

            if not username:
                return error('username', PMF("Input is required but not given."))

            if not email:
                return error('email', PMF("Input is required but not given."))

            reg_tool = self.context.portal_registration
            properties = self.context.portal_properties.site_properties

##            if properties.validate_email:
##                password = reg_tool.generatePassword()
##            else:
            if password!=confirm:
                return error('password', PMF("Passwords do not match."))

            if not password:
                return error('password', PMF("Input is required but not given."))

            if not confirm:
                return error('password', PMF("Passwords do not match."))

            if len(password) < 5:
                return error('password', PMF("Passwords must contain at least 5 letters."))

            try:
                reg_tool.addMember(username,
                                   password,
                                   properties = {
                                       'username': username,
                                       'email': email,
                                       'fullname': username})
            except ValueError, msg:
                return error(None, msg)

            contact.setUsername(username)
            contact.setEmailAddress(email)

            # If we're being created in a Client context, then give
            # the contact an Owner local role on client.
            if contact.aq_parent.portal_type == 'Client':
                contact.aq_parent.manage_setLocalRoles( username, ['Owner',] )
                if hasattr(aq_base(contact.aq_parent), 'reindexObjectSecurity'):
                    contact.aq_parent.reindexObjectSecurity()

                # add user to Clients group
                group=self.context.portal_groups.getGroupById('Clients')
                group.addMember(username)

            # Additional groups for LabContact users.
            # not required (not available for client Contact)
            if 'groups' in self.request and self.request['groups']:
                groups = self.request['groups']
                if not type(groups) in (list,tuple):
                    groups = [groups,]
                for group in groups:
                    group = self.portal_groups.getGroupById(group)
                    group.addMember(username)

            contact.reindexObject()

            if properties.validate_email or self.request.get('mail_me', 0):
                try:
                    reg_tool.registeredNotify(username)
                except:
                    import transaction
                    transaction.abort()
                    return error(
                        None, PMF("SMTP server disconnected."))

            message = PMF("Member registered.")
            self.context.plone_utils.addPortalMessage(message, 'info')
            return self.template()