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 = ""
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
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 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))
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()
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() )
def getObjectPosition(self, id): """ """ if id in self.documents: # documents will not be ordered in site map return 0 return ATFolder.getObjectPosition(self, id)
def moveObjectsByDelta(self, *args, **kwargs): """ """ #log("moveObjectsByDelta: %s" % self) retVal = ATFolder.moveObjectsByDelta(self, *args, **kwargs) self.syncResults('move') return retVal
def manage_beforeDelete(self, *args, **kwargs): """ """ #log("manage_beforeDelete: %s" % self) retVal = ATFolder.manage_beforeDelete(self, *args, **kwargs) self.syncResults('delete') return retVal
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
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()
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(), )
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())
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:
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 _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())
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 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_local_site(self): dancefloor = ATFolder("dancefloor") self.failUnless(not ISite.providedBy(dancefloor)) make_objectmanager_site(dancefloor) self.failUnless(ISite.providedBy(dancefloor))
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()
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)
def __init__(self, oid, **kw): """initialization """ ATFolder.__init__(self, oid, **kw) self.items = {} self.plomino_modification_time = DateTime().toZone('UTC')
def __init__(self, oid=None, **kwargs): self.changed = True ATFolder.__init__(self, oid, **kwargs)