def _send_message_by_email(self, subject, messageBody): """This method sends messages via e-mai. It does not send anything in case it does not receive at least one e-mail address from a method '_get_email_addresses'. """ addresses = self._get_email_addresses() if len(addresses) > 0: address = addresses[0] else: address = None if address: portal = getUtilityByInterfaceName('Products.CMFPlone.interfaces' \ '.siteroot.IPloneSiteRoot') mail_from = '"%s" <%s>' % (portal.email_from_name, portal.email_from_address) mh = getToolByName(self, 'MailHost') mh.send(messageBody, address['e-mail'], mail_from, subject)
##parameters=add='', edit='', preview='' ## from Products.PythonScripts.standard import structured_text from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.utils import decode from Products.CMFDefault.utils import html_marshal from Products.CMFDefault.utils import Message as _ atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool') form = context.REQUEST.form is_preview = False if add and \ context.validateHTML(**form) and \ context.discussion_reply(**form): return elif preview and \ context.validateHTML(**form): is_preview = True options = {} title = form.get('title', context.Title()) text = form.get('text', '') options['is_preview'] = is_preview options['title'] = title options['text'] = text options['cooked_text'] = structured_text(text) if is_preview: hidden_vars = [{
##parameters= ## from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.utils import decode stool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ISyndicationTool') options = {} s_site_allowed = stool.isSiteSyndicationAllowed() s_here_allowed = stool.isSyndicationAllowed(context) options['title'] = context.Title() options['description'] = context.Description() options['s_site_allowed'] = s_site_allowed options['s_here_allowed'] = s_here_allowed options['s_allowed'] = s_site_allowed and s_here_allowed options['s_tool'] = stool return context.synPropertiesForm_template(**decode(options, script))
##parameters= ## from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFCore.utils import getToolByName from Products.CMFDefault.utils import decode from Products.CMFDefault.utils import getBrowserCharset atool = getUtilityByInterfaceName( 'Products.CMFCore.interfaces.IActionsTool', # fallback for bootstrap getToolByName(script, 'portal_actions')) caltool = getUtilityByInterfaceName( 'Products.CMFCalendar.interfaces.ICalendarTool', None) mtool = getUtilityByInterfaceName( 'Products.CMFCore.interfaces.IMembershipTool', # fallback for bootstrap getToolByName(script, 'portal_membership')) ptool = getUtilityByInterfaceName( 'Products.CMFCore.interfaces.IPropertiesTool') utool = getUtilityByInterfaceName( 'Products.CMFCore.interfaces.IURLTool', # fallback for bootstrap getToolByName(script, 'portal_url')) wtool = getUtilityByInterfaceName( 'Products.CMFCore.interfaces.IWorkflowTool', # fallback for bootstrap getToolByName(script, 'portal_workflow')) uidtool = getUtilityByInterfaceName( 'Products.CMFUid.interfaces.IUniqueIdHandler', None) syndtool = getUtilityByInterfaceName( 'Products.CMFCore.interfaces.ISyndicationTool', None)
##parameters=allow_discussion, title=None, subject=None, description=None, contributors=None, effective_date=None, expiration_date=None, format=None, language=None, rights=None, **kw ## from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.exceptions import ResourceLockedError from Products.CMFDefault.utils import Message as _ dtool = getUtilityByInterfaceName( 'Products.CMFCore.interfaces.IDiscussionTool') def tuplify(value): if not same_type(value, ()): value = tuple(value) temp = filter(None, value) return tuple(temp) if title is None: title = context.Title() if subject is None: subject = context.Subject() else: subject = tuplify(subject) if description is None: description = context.Description() if contributors is None:
##parameters= ##title=Delete reply ## from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.utils import Message as _ dtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IDiscussionTool') parent = context.inReplyTo() talkback = dtool.getDiscussionFor(parent) talkback.deleteReply( context.getId() ) context.setStatus(True, _(u'Reply deleted.')) context.setRedirect(parent, 'object/view')
## Script (Python) "logout" ##title=Logout handler ##parameters= from Products.CMFCore.utils import getUtilityByInterfaceName request = context.REQUEST if 'SAMLResponse' in request.form: # Logout Request was sent by SAML2Plugin.resetCredentials; the user is logged of, redirect return request.response.redirect('%s/logged_out' % context.portal_url(), lock=True) if 'SAMLRequest' in request.form: # LogoutRequest was sent by IDP u = getUtilityByInterfaceName('hl.pas.samlplugin.interfaces.ISAMLLogoutHandler') request.SESSION.set('_saml2_stored_url', request['HTTP_REFERER']) return u.redirect_logout_request(request) else: u = getUtilityByInterfaceName('hl.pas.samlplugin.interfaces.ISAMLLogoutHandler') redir = u.slo(request) return request.response.redirect(redir) if request.has_key('portal_skin'): context.portal_skins.clearSkinCookie() request.RESPONSE.expireCookie('__ac', path='/') return request.RESPONSE.redirect(request.URL1+'/logged_out')
##parameters=b_start=0, key='', reverse=0, ids=(), delta=1, items_copy='', items_cut='', items_delete='', items_paste='', items_rename='', items_up='', items_down='', items_top='', items_bottom='', items_sort='' ## from ZTUtils import Batch from ZTUtils import make_query from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.permissions import AddPortalContent from Products.CMFDefault.permissions import DeleteObjects from Products.CMFDefault.permissions import ListFolderContents from Products.CMFDefault.permissions import ManageProperties from Products.CMFDefault.permissions import ViewManagementScreens from Products.CMFDefault.utils import decode from Products.CMFDefault.utils import html_marshal from Products.CMFDefault.utils import Message as _ mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool') utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') portal_url = utool() form = context.REQUEST.form default_target = 'object/folderContents' default_kw = {'b_start': b_start, 'key': key, 'reverse': reverse} if items_copy and \ context.validateItemIds(**form) and \ context.folder_copy_control(**form) and \ context.setRedirect(context, default_target, **default_kw): return elif items_cut and \ context.validateItemIds(**form) and \ context.folder_cut_control(**form) and \ context.setRedirect(context, default_target, **default_kw):
##title=Mail a user's password ##parameters= from Products.CMFCore.utils import getUtilityByInterfaceName rtool = getUtilityByInterfaceName( 'Products.CMFCore.interfaces.IRegistrationTool') utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') REQUEST = context.REQUEST rtool.mailPassword(REQUEST['userid'], REQUEST) return REQUEST.RESPONSE.redirect(utool() + '/mail_password_response')
# # - If you want to make sure that the current user has permissions other than # "View" on the parent object, pass these in as a list in checkPermissions. # folder_contents uses this to check the "List folder contents" permission, # for example. # # - templateId is for historical reasons, ignored # # Returns the absolute url to the parent object, or None if it cannot be # found or accessed from ZODB.POSException import ConflictError from Products.CMFCore.utils import getToolByName, getUtilityByInterfaceName from AccessControl import Unauthorized portal = getUtilityByInterfaceName('Products.CMFCore.interfaces.ISiteRoot') plone_utils = getToolByName(context, 'plone_utils') portal_membership = getToolByName(context, 'portal_membership') if obj is None: obj = context checkPermission = portal_membership.checkPermission if fallThroughDefaultPage: # In the case that we have an index_html inside and index_html, # we actually need to go the ultimate non-default parent try: while obj is not None and plone_utils.isDefaultPage(obj): obj = obj.aq_parent except Unauthorized:
##parameters=search='' ## from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.permissions import ReviewPortalContent from Products.CMFDefault.utils import decode from Products.CMFDefault.utils import Message as _ ctool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ICatalogTool') mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool') ttool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ITypesTool') utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') portal_url = utool() options = {} options['title'] = context.Title() is_review_allowed = mtool.checkPermission(ReviewPortalContent, context) options['is_review_allowed'] = is_review_allowed options['listAvailableSubjects'] = ctool.uniqueValuesFor('Subject') created = [] today = context.ZopeTime().earliestTime() created.append({'value': '1970/01/01 00:00:01 GMT', 'title': _(u'Ever')}) if not mtool.isAnonymousUser(): member = mtool.getAuthenticatedMember() created.append({'value': member.getProperty('last_login_time'), 'title': _(u'Last login')}) created.append({'value': (today-1).Date(), 'title': _(u'Yesterday')}) created.append({'value': (today-7).Date(), 'title': _(u'Last week')}) created.append({'value': (today-31).Date(), 'title': _(u'Last month')})
##parameters=password, confirm, domains=None, **kw ##title=Action to change password ## from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.utils import Message as _ mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool') rtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IRegistrationTool') result = rtool.testPasswordValidity(password, confirm) if result: return context.setStatus(False, result) member = mtool.getAuthenticatedMember() mtool.setPassword(password, domains, REQUEST=context.REQUEST) if member.getProperty('last_login_time') == DateTime('1999/01/01'): member.setProperties(last_login_time='2000/01/01') mtool.credentialsChanged(password, context.REQUEST) return context.setStatus(True, _(u'Password changed.'))
##parameters= ##title=Returns the permalink url or None ## from Products.CMFCore.utils import getUtilityByInterfaceName # calculate the permalink if the uid handler tool exists, permalinks # are configured to be shown and the object is not folderish uidtool = getUtilityByInterfaceName( 'Products.CMFUid.interfaces.IUniqueIdHandler', None) if uidtool is not None: ptool = getUtilityByInterfaceName( 'Products.CMFCore.interfaces.IPropertiesTool') showPermalink = getattr(ptool, 'enable_permalink', None) isFolderish = getattr(context.aq_explicit, 'isPrincipiaFolderish', None) if showPermalink and not isFolderish: # returns the uid (generates one if necessary) utool = getUtilityByInterfaceName( 'Products.CMFCore.interfaces.IURLTool') uid = uidtool.register(context) url = "%s/permalink/%s" % (utool(), uid) return url
##parameters=workflow_action, comment='' ##title=Modify the status of a content object ## from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.exceptions import WorkflowException from Products.CMFDefault.utils import Message as _ wtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IWorkflowTool') try: wtool.doActionFor(context, workflow_action, comment=comment) context.setStatus(True, _(u'Status changed.')) context.setRedirect(context, 'object/view') except WorkflowException, errmsg: context.setStatus(False, errmsg) context.setRedirect(context, 'object/edit')
##parameters= ##title=Enable Syndication for a resource ## from Products.CMFCore.utils import getUtilityByInterfaceName syndtool = getUtilityByInterfaceName( 'Products.CMFCore.interfaces.ISyndicationTool') if syndtool.isSiteSyndicationAllowed(): syndtool.enableSyndication(context) msg = 'Syndication+Enabled' else: msg = 'Syndication+Not+Allowed' target = '%s/synPropertiesForm' % context.absolute_url() qs = 'portal_status_message=%s' % msg return context.REQUEST.RESPONSE.redirect('%s?%s' % (target, qs))
##parameters=b_start=0 ## from ZTUtils import Batch from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.utils import decode from Products.CMFDefault.utils import Message as _ from Products.CMFDefault.utils import thousands_commas ctool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ICatalogTool') utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') portal_url = utool() epoch = DateTime('1970/01/01 00:00:01 GMT') options = {} target = '%s/search' % portal_url kw = context.REQUEST.form.copy() for k, v in kw.items(): if k in ('review_state', 'Title', 'Subject', 'Description', 'portal_type', 'listCreators'): if same_type(v, []): v = filter(None, v) if not v: del kw[k] elif k in ('created',): if v['query'] == epoch and v['range'] == 'min': del kw[k] else: # work around problems with DateTime in records kw[k] = v.copy()
## Script (Python) "permalink" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters= ##title=Returns an object by unique id ## from Products.CMFCore.utils import getUtilityByInterfaceName subpath = traverse_subpath[0] uid_handler=getUtilityByInterfaceName('Products.CMFUid.interfaces.IUniqueIdHandler') # appending 'isAvailable' instead of a unique id returns if # the site permalink feature is available. if str(subpath).strip() == 'isAvailable': # no permalink feature without an uid handler tool being installed if uid_handler is None: return '0' ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool') isAvailable = getattr(ptool, 'enable_permalink', 0) return str(int(isAvailable)) obj = uid_handler.getObject(subpath) # workarround for an acquisition wrapping problem. obj = context.restrictedTraverse(obj.getPhysicalPath()) ti = obj.getTypeInfo() method_id = ti and ti.queryMethodID('view', context=obj) if method_id:
##parameters= ## from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.utils import decode from Products.CMFDefault.utils import Message as _ atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool') mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool') ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool') stool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ISkinsTool') if stool.updateSkinCookie(): skinname = context.getSkinNameFromRequest(context.REQUEST) context.changeSkin(skinname, context.REQUEST) options = {} isAnon = mtool.isAnonymousUser() if isAnon: context.REQUEST.RESPONSE.expireCookie('__ac', path='/') options['is_anon'] = True options['title'] = _(u'Login failure') options['admin_email'] = ptool.getProperty('email_from_address') else: mtool.createMemberArea() member = mtool.getAuthenticatedMember() now = context.ZopeTime() last_login = member.getProperty('login_time') never_logged_in = str(last_login).startswith('2000/01/01')
##parameters=transaction_info ##title=Undo transactions ## from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.utils import Message as _ utool = getUtilityByInterfaceName("Products.CMFCore.interfaces.IUndoTool") utool.undo(context, transaction_info) context.setStatus(True, _(u"Transaction(s) undone.")) context.setRedirect(context, "object/folderContents")
## Script (Python) "check_session" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters=came_from='' from Products.CMFCore.utils import getUtilityByInterfaceName util = getUtilityByInterfaceName('hl.pas.samlplugin.interfaces.ISAMLSessionCheck') if came_from: context.REQUEST.set('ACTUAL_URL', came_from) util.checksession(request=context.REQUEST)
##parameters= ## from ZTUtils import Batch from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.utils import decode ctool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ICatalogTool') options = {} items = ctool.searchResults(portal_type='News Item', sort_on='Date', sort_order='reverse', review_state='published') batch_obj = Batch(items, 10, 0, orphan=1) items = [ {'title': item.Title, 'date': item.Date, 'url': item.getURL()} for item in batch_obj ] options['listItemInfos'] = items return context.news_box_template(**decode(options, script))
## Script (Python) "logout" ##title=Logout handler ##parameters= from Products.CMFCore.utils import getUtilityByInterfaceName stool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ISkinsTool') utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') REQUEST = context.REQUEST stool.clearSkinCookie() try: cctool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ICookieCrumbler') cctool.logout(REQUEST.RESPONSE) except AttributeError: REQUEST.RESPONSE.expireCookie('__ac', path='/') return REQUEST.RESPONSE.redirect(utool() + '/logged_out')
## Script (Python) "logout" ##title=Logout handler ##parameters= from Products.CMFCore.utils import getUtilityByInterfaceName request = context.REQUEST if 'SAMLResponse' in request.form: # Logout Request was sent by SAML2Plugin.resetCredentials; the user is logged of, redirect return request.response.redirect('%s/logged_out' % context.portal_url(), lock=True) if 'SAMLRequest' in request.form: # LogoutRequest was sent by IDP u = getUtilityByInterfaceName( 'hl.pas.samlplugin.interfaces.ISAMLLogoutHandler') request.SESSION.set('_saml2_stored_url', request['HTTP_REFERER']) return u.redirect_logout_request(request) else: u = getUtilityByInterfaceName( 'hl.pas.samlplugin.interfaces.ISAMLLogoutHandler') redir = u.slo(request) return request.response.redirect(redir) if request.has_key('portal_skin'): context.portal_skins.clearSkinCookie() request.RESPONSE.expireCookie('__ac', path='/') return request.RESPONSE.redirect(request.URL1 + '/logged_out')
##parameters= ## from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.utils import decode caltool = getUtilityByInterfaceName('Products.CMFCalendar.interfaces.ICalendarTool') options = {} base_url = script.absolute_url() thisDay = DateTime(context.REQUEST.get('date', DateTime().aCommon()[:12])) options['previous_url'] = '%s?date=%s' % (base_url, (thisDay - 1).Date()) options['date'] = thisDay.aCommon()[:12] options['next_url'] = '%s?date=%s' % (base_url, (thisDay + 1).Date()) items = [ {'title': item.Title, 'url': item.getURL(), 'start': context.getStartAsString(thisDay, item), 'stop': context.getEndAsString(thisDay, item)} for item in caltool.getEventsForThisDay(thisDay) ] options['listItemInfos'] = tuple(items) return context.calendar_day_view_template(**decode(options, script))
##parameters=member_id, password, member_email, send_password=False, **kw ##title=Add a member ## from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.permissions import ManageUsers from Products.CMFDefault.utils import Message as _ mtool = getUtilityByInterfaceName( 'Products.CMFCore.interfaces.IMembershipTool') ptool = getUtilityByInterfaceName( 'Products.CMFCore.interfaces.IPropertiesTool') rtool = getUtilityByInterfaceName( 'Products.CMFCore.interfaces.IRegistrationTool') try: rtool.addMember(id=member_id, password=password, properties={ 'username': member_id, 'email': member_email }, REQUEST=context.REQUEST) except ValueError, errmsg: return context.setStatus(False, errmsg) else: if ptool.getProperty('validate_email') or send_password: rtool.registeredNotify(member_id, REQUEST=context.REQUEST) if mtool.checkPermission(ManageUsers, mtool): return context.setStatus(True, _(u'Member registered.')) else: return context.setStatus(False, _(u'Success!'), is_newmember=True)
##parameters= ## from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFCore.utils import getToolByName from Products.CMFDefault.utils import decode from Products.CMFDefault.utils import getBrowserCharset atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool', # fallback for bootstrap getToolByName(script, 'portal_actions')) caltool = getUtilityByInterfaceName('Products.CMFCalendar.interfaces.ICalendarTool', None) mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool', # fallback for bootstrap getToolByName(script, 'portal_membership')) ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool') utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool', # fallback for bootstrap getToolByName(script, 'portal_url')) wtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IWorkflowTool', # fallback for bootstrap getToolByName(script, 'portal_workflow')) uidtool = getUtilityByInterfaceName('Products.CMFUid.interfaces.IUniqueIdHandler', None) syndtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ISyndicationTool', None) portal_object = utool.getPortalObject() isAnon = mtool.isAnonymousUser() member = mtool.getAuthenticatedMember() if not 'charset' in (context.REQUEST.RESPONSE.getHeader('content-type') or ''): # Some newstyle views set a different charset - don't override it. # Oldstyle views need the default_charset. default_charset = ptool.getProperty('default_charset', None)
##parameters= ##title=Returns the permalink url or None ## from Products.CMFCore.utils import getUtilityByInterfaceName # calculate the permalink if the uid handler tool exists, permalinks # are configured to be shown and the object is not folderish uidtool = getUtilityByInterfaceName('Products.CMFUid.interfaces.IUniqueIdHandler', None) if uidtool is not None: ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool') showPermalink = getattr(ptool, 'enable_permalink', None) isFolderish = getattr(context.aq_explicit, 'isPrincipiaFolderish', None) if showPermalink and not isFolderish: # returns the uid (generates one if necessary) utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') uid = uidtool.register(context) url = "%s/permalink/%s" % (utool(), uid) return url
##parameters=member=None, password='******', email='*****@*****.**' ## from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.utils import decode from Products.CMFDefault.utils import makeEmail from Products.CMFDefault.utils import Message as _ atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool') ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool') utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') portal_url = utool() options = {} options['portal_title'] = ptool.title() options['portal_description'] = ptool.getProperty('description') options['portal_url'] = portal_url member_id = member and member.getId() or 'foo' options['member_id'] = member_id options['password'] = password target = atool.getActionInfo('user/login')['url'] options['login_url'] = '%s' % target email_from_name = ptool.getProperty('email_from_name') options['signature'] = email_from_name headers = {} headers['Subject'] = _(u'${portal_title}: Your Membership Information',
##parameters=b_start=0, ids=(), members_new='', members_delete='' ## from ZTUtils import Batch from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.utils import decode from Products.CMFDefault.utils import html_marshal from Products.CMFDefault.utils import Message as _ atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool') mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool') form = context.REQUEST.form if members_delete and \ context.validateMemberIds(**form) and \ context.setRedirect(atool, 'global/members_delete', b_start=b_start, ids=ids): return elif members_new and \ context.setRedirect(atool, 'global/members_register', b_start=b_start): return options = {} target = atool.getActionInfo('global/manage_members')['url'] members = mtool.listMembers() batch_obj = Batch(members, 25, b_start, orphan=0) items = [] for member in batch_obj:
##parameters= ## # Get the year and month that the calendar should display. from Products.CMFCore.utils import getUtilityByInterfaceName caltool = getUtilityByInterfaceName( 'Products.CMFCalendar.interfaces.ICalendarTool') current = DateTime() session = None # First priority goes to the data in the request year = context.REQUEST.get('year', None) month = context.REQUEST.get('month', None) # Next get the data from the SESSION if caltool.getUseSession(): session = context.REQUEST.get('SESSION', None) if session: if not year: year = session.get('calendar_year', None) if not month: month = session.get('calendar_month', None) # Last resort to today if not year: year = current.year() if not month: month = current.month() # Then store the results in the session for next time if session:
## Script (Python) "permalink" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters= ##title=Returns an object by unique id ## from Products.CMFCore.utils import getUtilityByInterfaceName subpath = traverse_subpath[0] uid_handler=getUtilityByInterfaceName('Products.CMFUid.interfaces.UniqueIDHandler') # appending 'isAvailable' instead of a unique id returns if # the site permalink feature is available. if str(subpath).strip() == 'isAvailable': # no permalink feature without an uid handler tool being installed if uid_handler is None: return '0' ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool') isAvailable = getattr(ptool, 'enable_permalink', 0) return str(int(isAvailable)) obj = uid_handler.getObject(subpath) ti = obj.getTypeInfo() method_id = ti and ti.queryMethodID('view', context=self) if method_id: return getattr(obj, method_id)() return obj()
##parameters=change='' ## from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFCore.utils import getToolByName from Products.CMFDefault.utils import decode from Products.CMFDefault.utils import Message as _ atool = getToolByName(script, 'portal_actions') ptool = getUtilityByInterfaceName( 'Products.CMFCore.interfaces.IPropertiesTool') form = context.REQUEST.form if change and \ context.portal_config_control(**form) and \ context.setRedirect(atool, 'global/configPortal'): return options = {} target = atool.getActionInfo('global/configPortal')['url'] buttons = [] buttons.append({'name': 'change', 'value': _(u'Change')}) options['form'] = { 'action': target, 'email_from_name': ptool.getProperty('email_from_name'), 'email_from_address': ptool.getProperty('email_from_address'), 'smtp_server': ptool.smtp_server(), 'title': ptool.title(), 'description': ptool.getProperty('description'), 'validate_email': ptool.getProperty('validate_email'), 'default_charset': ptool.getProperty('default_charset', ''),
##parameters=search='' ## from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.permissions import ReviewPortalContent from Products.CMFDefault.utils import decode from Products.CMFDefault.utils import Message as _ ctool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ICatalogTool') mtool = getUtilityByInterfaceName( 'Products.CMFCore.interfaces.IMembershipTool') ttool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ITypesTool') utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') portal_url = utool() options = {} options['title'] = context.Title() is_review_allowed = mtool.checkPermission(ReviewPortalContent, context) options['is_review_allowed'] = is_review_allowed options['listAvailableSubjects'] = ctool.uniqueValuesFor('Subject') created = [] today = context.ZopeTime().earliestTime() created.append({'value': '1970/01/01 00:00:01 GMT', 'title': _(u'Ever')}) if not mtool.isAnonymousUser(): member = mtool.getAuthenticatedMember() created.append({ 'value': member.getProperty('last_login_time'), 'title': _(u'Last login') }) created.append({'value': (today - 1).Date(), 'title': _(u'Yesterday')})
##parameters=b_start=0, member_id='', member_email='', password='', confirm='', send_password='', add='', cancel='' ## from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.permissions import ManageUsers from Products.CMFDefault.utils import decode from Products.CMFDefault.utils import Message as _ atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool') mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool') ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool') utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') portal_url = utool() validate_email = ptool.getProperty('validate_email') is_anon = mtool.isAnonymousUser() is_newmember = False is_usermanager = mtool.checkPermission(ManageUsers, mtool) form = context.REQUEST.form if add and \ context.validatePassword(**form) and \ context.members_add_control(**form) and \ context.setRedirect(atool, ('global/members_register', 'user/login'), b_start=b_start): return elif cancel and \ context.setRedirect(atool, 'global/manage_members', b_start=b_start): return options = {}
##parameters=tree_root ##title=Standard Tree ## from ZTUtils import SimpleTreeMaker from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.permissions import ManagePortal from Products.CMFDefault.utils import decode mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool') tm = SimpleTreeMaker('tb_tree') def getKids(object): return object.talkback.getReplies() tm.setChildAccess(function=getKids) tree, rows = tm.cookieTree(tree_root) rows.pop(0) is_delete_allowed = mtool.checkPermission(ManagePortal, context) items = [] for row in rows: branch = row.branch() item = row.object item_url = item.absolute_url() items.append({'tree_colspan': tree.height - row.depth, 'tree_icon': branch and branch['img'] or '', 'tree_id': row.id, 'tree_indent': row.depth - 1, 'tree_url': branch and branch['link'] or '', 'creators': item.listCreators(),
##parameters=member_id, password, member_email, send_password=False, **kw ##title=Add a member ## from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFCore.utils import getToolByName from Products.CMFDefault.permissions import ManageUsers from Products.CMFDefault.utils import Message as _ mtool = getToolByName(script, 'portal_membership') ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool') rtool = getToolByName(script, 'portal_registration') try: rtool.addMember( id=member_id, password=password, properties={'username': member_id, 'email': member_email}, REQUEST=context.REQUEST) except ValueError, errmsg: return context.setStatus(False, errmsg) else: if ptool.getProperty('validate_email') or send_password: rtool.registeredNotify(member_id, REQUEST=context.REQUEST) if mtool.checkPermission(ManageUsers, mtool): return context.setStatus(True, _(u'Member registered.')) else: return context.setStatus(False, _(u'Success!'), is_newmember=True)
##parameters=transaction_info ##title=Undo transactions ## from Products.CMFCore.utils import getUtilityByInterfaceName from Products.CMFDefault.utils import Message as _ utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IUndoTool') utool.undo(context, transaction_info) context.setStatus(True, _(u'Transaction(s) undone.')) context.setRedirect(context, 'object/folderContents')