def initializeArchetype(self, **kwargs):
     """Pre-populate the press room folder with its basic folders.
     """
     ATFolder.initializeArchetype(self,**kwargs)
     
     # create sub-folders
     self._createSubFolders()
    def setUp(self):
        self.portal = self.layer["portal"]
        pps = self.portal.restrictedTraverse("@@plone_portal_state")
        member = pps.member()
        memberid = member.getId()
        folder = ATFolder(memberid)
        transactions = self.portal.transactions
        transactions._setObject(memberid, folder)
        transactions.reindexObject()
        # Finally, change its permissions
        folder.manage_permission(ModifyPortalContent, roles=[], acquire=0)
        # Make sure the user's service registration dates are correct
        properties = {
            "askanexpert_registrationdate": NULLDATE,
            "answerdatabase_registrationdate": NULLDATE,
            "moreexercise_registrationdate": NULLDATE,
        }
        member.setProperties(properties)

        self.context = self.portal.maths
        self.context.allowQuestions = True
        self.request = self.portal.REQUEST
        self.manager_name = "plone.belowcontent"
        self.themelayer = IEmasThemeLayer

        self.viewlet_name = None
        self.formsubmit_token = None
        self.formfield = None
        self.memberproperty = None
        self.creditproperty = ""
Exemple #3
0
    def manage_afterAdd(self, item, container):
        # XXX TODO: when we're done with 2.1.x, implement this via event subscription

        ATFolder.manage_afterAdd(self, item, container)

        id = self.getId()        
        if self.fsStartField.__name__ != id:
            self.fsStartField.__name__ = id
Exemple #4
0
    def manage_afterAdd(self, item, container):
        # XXX TODO: when we're done with 2.1.x, implement this via event subscription

        ATFolder.manage_afterAdd(self, item, container)

        id = self.getId()
        if self.fsStartField.__name__ != id:
            self.fsStartField.__name__ = id
Exemple #5
0
 def __init__(self, oid, **kw):
     """
     """
     ATFolder.__init__(self, oid, **kw)
     self.plomino_version = VERSION
     self.setStatus("Ready")
     PlominoAccessControl.__init__(self)
     manage_addCMFBTreeFolder(self, id='plomino_documents')
     directlyProvides(self.documents, IHideFromBreadcrumbs)
 def __init__(self, oid, **kw):
     """
     """
     ATFolder.__init__(self, oid, **kw)
     self.plomino_version = VERSION
     self.setStatus("Ready")
     PlominoAccessControl.__init__(self)
     manage_addCMFBTreeFolder(self, id='plomino_documents')
     directlyProvides(self.documents, IHideFromBreadcrumbs)
 def initializeArchetype(self, **kwargs):
     """ Create initial SignupSheet configuration
     """
     ATFolder.initializeArchetype(self, **kwargs)
     pm = getToolByName(self, 'portal_membership')
     portal_factory = getToolByName(self, 'portal_factory')
     if not pm.isAnonymousUser() and not portal_factory.isTemporary(self):
         ISignupSheetInitializer(self).form_initializer(**kwargs)
     else:
         logger.debug("Anonymous user: not allowed to create fields")
 def initializeArchetype(self, **kwargs):
     """ Create initial SignupSheet configuration
     """
     ATFolder.initializeArchetype(self, **kwargs)
     pm = getToolByName(self, 'portal_membership')
     portal_factory = getToolByName(self, 'portal_factory')
     if not pm.isAnonymousUser() and not portal_factory.isTemporary(self):
         ISignupSheetInitializer(self).form_initializer(**kwargs)
     else:
         logger.debug("Anonymous user: not allowed to create fields")
Exemple #9
0
def convertLPFolder(parent, folder):
    """ convert Large Plone Folders to Folders """
    id = folder.getId()
    newfolder = ATFolder(id)
    newfolder._setId(id)
    newfolder = newfolder.__of__(parent)

    uid = folder._at_uid

    for item_id, item in folder.objectItems():
        folder._objects = tuple(
            [i for i in folder._objects if i['id'] != item_id])
        folder._delOb(item_id)

        newfolder._objects = newfolder._objects + (
            {'id': item_id, 'meta_type': item.meta_type},)
        newfolder._setOb(item_id, aq_base(item))

    parent._objects = tuple([i for i in parent._objects if i['id'] != id])
    parent._delOb(id)

    newfolder._at_uid = uid
    parent._objects = parent._objects + (
        {'id': id, 'meta_type': newfolder.meta_type},)
    parent._setOb(id, aq_base(newfolder))

    #transaction.abort()
    return "%s, %s" % (id, folder.absolute_url(1))
Exemple #10
0
    def setId(self, value):
        """Sets the object id. Changes both object and field id.
        """

        badIds = ("language", "form", "form_submit", "fieldset", "last_referer", "add_reference")

        if value in badIds:
            raise BadRequest, 'The id "%s" is reserved.' % value

        ATFolder.setId(self, value)
        self.fsStartField.__name__ = self.getId()
Exemple #11
0
    def __init__(self, oid, **kwargs):
        """ initialize class """

        ATFolder.__init__(self, oid, **kwargs)

        self.fsStartField = StringField(
            "FieldSetStart", searchable=0, required=0, write_permission=View, widget=FieldsetStartWidget()
        )

        self.fsEndField = StringField(
            "FieldSetEnd", searchable=0, required=0, write_permission=View, widget=FieldsetEndWidget()
        )
Exemple #12
0
 def getObjectPosition(self, id):
     """
     """
     if id in self.documents:
         # documents will not be ordered in site map
         return 0
     return ATFolder.getObjectPosition(self, id)
Exemple #13
0
 def getObjectPosition(self, id):
     """
     """
     if id in self.documents:
         # documents will not be ordered in site map
         return 0
     return ATFolder.getObjectPosition(self, id)
Exemple #14
0
    def moveObjectsByDelta(self, *args, **kwargs):
        """
        """
        #log("moveObjectsByDelta: %s" % self)

        retVal = ATFolder.moveObjectsByDelta(self, *args, **kwargs)
        self.syncResults('move')
        return retVal
Exemple #15
0
    def manage_beforeDelete(self, *args, **kwargs):
        """
        """
        #log("manage_beforeDelete: %s" % self)

        retVal = ATFolder.manage_beforeDelete(self, *args, **kwargs)
        self.syncResults('delete')
        return retVal
Exemple #16
0
    def manage_afterAdd(self, *args, **kwargs):
        """
        """
        #log("manage_afterAdd: %s" % self)

        #retVal = OrderedBaseFolder.manage_afterAdd(self, *args, **kwargs)
        retVal = ATFolder.manage_afterAdd(self, *args, **kwargs)
        self.syncResults('add')
        return retVal
Exemple #17
0
    def setId(self, value):
        """Sets the object id. Changes both object and field id.
        """

        badIds = (
            'language',
            'form',
            'form_submit',
            'fieldset',
            'last_referer',
            'add_reference',
        )

        if value in badIds:
            raise BadRequest, 'The id "%s" is reserved.' % value

        ATFolder.setId(self, value)
        self.fsStartField.__name__ = self.getId()
Exemple #18
0
    def __init__(self, oid, **kwargs):
        """ initialize class """

        ATFolder.__init__(self, oid, **kwargs)

        self.fsStartField = StringField(
            'FieldSetStart',
            searchable=0,
            required=0,
            write_permission=View,
            widget=FieldsetStartWidget(),
        )

        self.fsEndField = StringField(
            'FieldSetEnd',
            searchable=0,
            required=0,
            write_permission=View,
            widget=FieldsetEndWidget(),
        )
Exemple #19
0
    def manage_afterAdd(self, item, container):
        #BaseFolder.manage_afterAdd(self, item, container)
        #OrderedBaseFolder.manage_afterAdd(self, item, container)
        ATFolder.manage_afterAdd(self, item, container)

        # Create a user-defined role "ECAssignment Viewer".  This role
        # has the View permission in certain states (defined in
        # ECAssignmentWorkflow).  This can be used for model
        # solutions: (1) Submit an assignment with the model
        # solution. (2) Use the "Sharing" tab to assign the role
        # "ECAssignment Viewer" to the users or groups who should be
        # allowed to view the assignment.
        #if 'ECAssignment Viewer' not in self.valid_roles():
        #    self.manage_defined_roles('Add Role',
        #                              {'role': 'ECAssignment Viewer'})

        # Create a user-defined role "ECAssignment Grader".  The owner
        # of an assignment box can use this role to delegate grading
        # to other users.
        #if 'ECAssignment Grader' not in self.valid_roles():
        #    self.manage_defined_roles('Add Role',
        #                              {'role': 'ECAssignment Grader'})

        # Plone 3: in profiles/default/rolemap.xml
        # Grant the GradeAssignments permission to the "ECAssignment
        # Grader" role.
        # self.manage_permission(permissions.GradeAssignments,
        #                       roles=['ECAssignment Grader',], acquire=True)
        
        # Assign the local roles to the creator
        creator = self.Creator()
        roles = list(self.get_local_roles_for_userid(creator))
        
        for role in ('ECAssignment Viewer', 'ECAssignment Grader'):
            if role not in roles:
                roles.append(role)
        
        self.manage_setLocalRoles(creator, roles)
    def getPAMDefaultPage(self):
        """
        Return the first user visible article as default page if
        ViewTOC is unchecked (i.e, it redirect the user to the first page)
        """

        request = getattr(self, 'REQUEST', None)
        force_toc = request.get('force_toc', False)
        pages = self.getPages()

        if force_toc or self.getViewTOCFirst() or len(pages) == 0:
            return ATFolder.__call__(self)
        else:
            return request.RESPONSE.redirect(pages[0].getObject().absolute_url())
Exemple #21
0
 def __getattr__(self, name):
     """Overloads getattr to return item values as attibutes
     """
     if (self.items.has_key(name)):
         return self.items[name]
     else:
         if name not in [
                 '__parent__', '__conform__', '__annotations__',
                 '_v_at_subobjects', '__getnewargs__', 'aq_inner', 'im_self'
         ]:
             try:
                 return ATFolder.__getattr__(self, name)
             except Exception, e:
                 raise AttributeError, name
         else:
Exemple #22
0
    def checkIdAvailable(self, id):
        """ Expands on ATFolder by checking for ids known to cause problems.
            This includes ids of objects in all fieldsets.
        """

        result = ATFolder.checkIdAvailable(self, id)
        if result:
            result = id not in BAD_IDS
            if result:
                # check the fieldsets
                fieldsets = self.objectValues('FieldsetFolder')
                for fs in fieldsets:
                    if id in fs.objectIds():
                        return False

        return result
    def checkIdAvailable(self, id):
        """ Expands on ATFolder by checking for ids known to cause problems.
            This includes ids of objects in all fieldsets.
        """

        result = ATFolder.checkIdAvailable(self, id)
        if result:
            result = id not in BAD_IDS
            if result:
                # check the fieldsets
                fieldsets = self.objectValues('FieldsetFolder')
                for fs in fieldsets:
                    if id in fs.objectIds():
                        return False

        return result
    def __bobo_traverse__(self, REQUEST, name):
        """Transparent access to image scales
        """
        if name.startswith('image'):
            field = self.getField('image')
            image = None
            if name == 'image':
                image = field.getScale(self)
            else:
                scalename = name[len('image_'):]
                if scalename in field.getAvailableSizes(self):
                    image = field.getScale(self, scale=scalename)
            if image is not None and not isinstance(image, basestring):
                # image might be None or '' for empty images
                return image

        return ATFolder.__bobo_traverse__(self, REQUEST, name)
    def __bobo_traverse__(self, REQUEST, name):
        """Transparent access to image scales
        """
        if name.startswith('image'):
            field = self.getField('image')
            image = None
            if name == 'image':
                image = field.getScale(self)
            else:
                scalename = name[len('image_'):]
                if scalename in field.getAvailableSizes(self):
                    image = field.getScale(self, scale=scalename)
            if image is not None and not isinstance(image, basestring):
                # image might be None or '' for empty images
                return image

        return ATFolder.__bobo_traverse__(self, REQUEST, name)
Exemple #26
0
    def _renameAfterCreation(self, check_auto_id=True):
        """
        """
        plone_tool = getToolByName(self, 'plone_utils')

        new_id = plone_tool.normalizeString(self.title_or_id())
        invalid_id = False
        transaction.commit(1)
        self.setId(new_id)

        self._setObject("ontologies", Ontologies("ontologies"))
        self["ontologies"].setTitle("Ontologies")
        self["ontologies"].reindexObject()
        self._setObject("search", CommunitySearch("search"))
        self["search"].setTitle("Search")
        self["search"]._renameAfterCreation(check_auto_id)
        self["search"].reindexObject()
        self._setObject("content", ATFolder("content"))
        self["content"].setTitle("Content")
        self["content"]._renameAfterCreation(check_auto_id)
        self["content"].reindexObject()

        self['content']._setObject("content", ATTopic("content"))
        self['content']['content'].setTitle("Content")
        self['content']['content'].addCriterion('review_state',
                                                'ATSelectionCriterion')
        self['content']['content'].addCriterion('path',
                                                'ATRelativePathCriterion')
        self['content']['content'].setCustomView(True)
        self['content']['content'].setCustomViewFields([
            'Title', 'ModificationDate', 'review_state', 'CreationDate', 'Type'
        ])
        self.portal_workflow.doActionFor(self['content']['content'],
                                         "publish",
                                         comment="")
        self['content'].setDefaultPage('content')

        groups = getToolByName(self, 'portal_groups')
        groupname = 'Community_' + new_id
        groups.addGroup(groupname, )
        return new_id
 def test_stuff_not_there_if_new(self):
     df = ATFolder("dancefloor")
     self.failUnless("channels" not in df.keys())
     self.failUnless("collectors" not in df.keys())
Exemple #28
0
    def initializeArchetype(self, **kwargs):
        """ Create sample content that may help folks
            figure out how this gadget works.
        """

        ATFolder.initializeArchetype(self, **kwargs)

        self.setSubmitLabel(zope.i18n.translate(_(u'pfg_formfolder_submit', u'Submit'), context=self.REQUEST))
        self.setResetLabel(zope.i18n.translate(_(u'pfg_formfolder_reset', u'Reset'), context=self.REQUEST))

        oids = self.objectIds()

        # if we have *any* content already, we don't need
        # the sample content
        if not oids:

            haveMailer = False
            # create a mail action
            try:
                self.invokeFactory('FormMailerAdapter', 'mailer')
                mailer = self['mailer']

                mailer.setTitle(zope.i18n.translate(
                  _(u'pfg_mailer_title', u'Mailer'),
                  context=self.REQUEST))
                mailer.setDescription(
                  zope.i18n.translate(
                    _(u'pfg_mailer_description',
                      u'E-Mails Form Input'),
                    context=self.REQUEST))

                self._pfFixup(mailer)

                self.actionAdapter = ('mailer', )
                haveMailer = True
            except Unauthorized:
                logger.warn('User not authorized to create mail adapters. Form Folder created with no action adapter.')

            # create a replyto field
            self.invokeFactory('FormStringField', 'replyto')
            obj = self['replyto']
            obj.fgField.__name__ = 'replyto'

            obj.setTitle(zope.i18n.translate(
              _(u'pfg_replytofield_title', u'Your E-Mail Address'),
              context=self.REQUEST))

            obj.fgField.required = True
            obj.setFgStringValidator('isEmail')
            obj.setFgTDefault('here/memberEmail')
            obj.setFgDefault('dynamically overridden')

            self._pfFixup(obj)

            if haveMailer:
                mailer.replyto_field = 'replyto'

            # create a subject field
            self.invokeFactory('FormStringField', 'topic')
            obj = self['topic']
            obj.fgField.__name__ = 'topic'

            obj.setTitle(zope.i18n.translate(
              _(u'pfg_topicfield_title', u'Subject'),
              context=self.REQUEST))

            obj.fgField.required = True

            self._pfFixup(obj)

            if haveMailer:
                mailer.subject_field = 'topic'

            # create a comments field
            self.invokeFactory('FormTextField', 'comments')
            obj = self['comments']
            obj.fgField.__name__ = 'comments'

            obj.setTitle(zope.i18n.translate(
              _(u'pfg_commentsfield_title', u'Comments'),
              context=self.REQUEST))

            obj.fgField.required = True

            self._pfFixup(obj)


            # create a thanks page
            self.invokeFactory('FormThanksPage', 'thank-you')
            obj = self['thank-you']

            obj.setTitle(zope.i18n.translate(
              _(u'pfg_thankyou_title', u'Thank You'), context=self.REQUEST))
            obj.setDescription(zope.i18n.translate(
              _(u'pfg_thankyou_description', u'Thanks for your input.'),
              context=self.REQUEST))

            self._pfFixup(obj)

            self.thanksPage = 'thank-you'
Exemple #29
0
def onContentSelectionLensModified(context, event):
    """
    Create Tag Namespaces folder if lens is an open lens

    params:
        context - the lens that has been modified
        event - not used but required by API

    return:
        None
    """
    if context.isTemporary():
        return
    id = 'tag-namespaces'
    if id not in context.objectIds():
        obj = ATFolder(id)
        # Create these attributes to work around a Plone indexing bug
        obj.start = DateTime()
        obj.end = DateTime()
        context._setObject(id, obj)
        obj = context._getOb(id)
        obj.setTitle("Tag vocabularies")
        obj.reindexObject()
        obj.notifyWorkflowCreated()

        # Constrain allowed types
        obj.setConstrainTypesMode(1)
        obj.setLocallyAllowedTypes(['TagNamespace'])

        # Set a template as default view
        obj.setLayout('lens_tagnamespaces_default_view')
    def initializeArchetype(self, **kwargs):
        """ Create sample content that may help folks
            figure out how this gadget works.
        """

        ATFolder.initializeArchetype(self, **kwargs)

        self.setSubmitLabel(
            zope.i18n.translate(_(u'pfg_formfolder_submit', u'Submit'),
                                context=self.REQUEST))
        self.setResetLabel(
            zope.i18n.translate(_(u'pfg_formfolder_reset', u'Reset'),
                                context=self.REQUEST))

        oids = self.objectIds()

        # if we have *any* content already, we don't need
        # the sample content
        if not oids:

            haveMailer = False
            # create a mail action
            try:
                self.invokeFactory('FormMailerAdapter', 'mailer')
                mailer = self['mailer']

                mailer.setTitle(
                    zope.i18n.translate(_(u'pfg_mailer_title', u'Mailer'),
                                        context=self.REQUEST))
                mailer.setDescription(
                    zope.i18n.translate(_(u'pfg_mailer_description',
                                          u'E-Mails Form Input'),
                                        context=self.REQUEST))

                self._pfFixup(mailer)

                self.actionAdapter = ('mailer', )
                haveMailer = True
            except Unauthorized:
                logger.warn(
                    'User not authorized to create mail adapters. Form Folder created with no action adapter.'
                )

            # create a replyto field
            self.invokeFactory('FormStringField', 'replyto')
            obj = self['replyto']
            obj.fgField.__name__ = 'replyto'

            obj.setTitle(
                zope.i18n.translate(_(u'pfg_replytofield_title',
                                      u'Your E-Mail Address'),
                                    context=self.REQUEST))

            obj.fgField.required = True
            obj.setFgStringValidator('isEmail')
            obj.setFgTDefault('here/memberEmail')
            obj.setFgDefault('dynamically overridden')

            self._pfFixup(obj)

            if haveMailer:
                mailer.replyto_field = 'replyto'

            # create a subject field
            self.invokeFactory('FormStringField', 'topic')
            obj = self['topic']
            obj.fgField.__name__ = 'topic'

            obj.setTitle(
                zope.i18n.translate(_(u'pfg_topicfield_title', u'Subject'),
                                    context=self.REQUEST))

            obj.fgField.required = True

            self._pfFixup(obj)

            if haveMailer:
                mailer.subject_field = 'topic'

            # create a comments field
            self.invokeFactory('FormTextField', 'comments')
            obj = self['comments']
            obj.fgField.__name__ = 'comments'

            obj.setTitle(
                zope.i18n.translate(_(u'pfg_commentsfield_title', u'Comments'),
                                    context=self.REQUEST))

            obj.fgField.required = True

            self._pfFixup(obj)

            # create a thanks page
            self.invokeFactory('FormThanksPage', 'thank-you')
            obj = self['thank-you']

            obj.setTitle(
                zope.i18n.translate(_(u'pfg_thankyou_title', u'Thank You'),
                                    context=self.REQUEST))
            obj.setDescription(
                zope.i18n.translate(_(u'pfg_thankyou_description',
                                      u'Thanks for your input.'),
                                    context=self.REQUEST))

            self._pfFixup(obj)

            self.thanksPage = 'thank-you'
 def test_stuff_not_there_if_new(self):
     df = ATFolder("dancefloor")
     self.failUnless("channels" not in df.keys())
     self.failUnless("collectors" not in df.keys())
Exemple #32
0
 def test_local_site(self):
     dancefloor = ATFolder("dancefloor")
     self.failUnless(not ISite.providedBy(dancefloor))
     make_objectmanager_site(dancefloor)
     self.failUnless(ISite.providedBy(dancefloor))
Exemple #33
0
 def __init__(self, *args, **kwargs):
     ATFolder.__init__(self, 'ad_manager')
if not app.hasObject(portal_id):
    print "Please specify the id of your plone site as the first argument "
    print "to this script."
    print "Usage: <instancehome>/bin/instance run %s <id>" % sys.argv[0]
    sys.exit(1)

portal = app[portal_id]
setSite(portal)

# we assume there is an admin user
app = makerequest.makerequest(app)
user = app.acl_users.getUser('admin')
newSecurityManager(None, user.__of__(app.acl_users))

for member in portal.portal_membership.listMembers():

    transactions = portal.transactions

    memberid = member.getId()

    if not memberid in transactions.objectIds():
        folder = ATFolder(memberid)
        transactions._setObject(memberid, folder)
        transactions.reindexObject()
        folder.manage_permission(ModifyPortalContent, roles=[], acquire=0)
        print "creating folder for ", memberid


transaction.commit()
Exemple #35
0
 def manage_afterClone(self, item):
     """after cloning
     """
     # changed from BaseFolder to ATFolder because now inherits fron ATFolder
     ATFolder.manage_afterClone(self, item)
 def manage_afterAdd(self, item, container):
     ATFolder.manage_afterAdd(self, item, container)
Exemple #37
0
 def __init__(self, oid, **kw):
     """initialization
     """
     ATFolder.__init__(self, oid, **kw)
     self.items = {}
     self.plomino_modification_time = DateTime().toZone('UTC')
Exemple #38
0
 def __init__(self, oid=None, **kwargs):
     self.changed = True
     ATFolder.__init__(self, oid, **kwargs)