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)
Ejemplo n.º 2
0
##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 = [{
Ejemplo n.º 3
0
##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))
Ejemplo n.º 4
0
##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:
Ejemplo n.º 6
0
##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')
Ejemplo n.º 7
0
## 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')
Ejemplo n.º 8
0
##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):
Ejemplo n.º 9
0
##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')
Ejemplo n.º 10
0
#
# - 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:
Ejemplo n.º 11
0
##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')})
Ejemplo n.º 12
0
##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.'))
Ejemplo n.º 13
0
##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))
Ejemplo n.º 16
0
##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()
Ejemplo n.º 17
0
## 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:
Ejemplo n.º 18
0
##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')
Ejemplo n.º 19
0
##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")
Ejemplo n.º 20
0
## 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)

Ejemplo n.º 21
0
##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))
Ejemplo n.º 22
0
## 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')
Ejemplo n.º 23
0
## 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')
Ejemplo n.º 24
0
##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)
Ejemplo n.º 27
0
##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
Ejemplo n.º 28
0
##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',
Ejemplo n.º 29
0
##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:
Ejemplo n.º 30
0
##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:
Ejemplo n.º 31
0
## 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()
Ejemplo n.º 32
0
##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', ''),
Ejemplo n.º 33
0
##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')})
Ejemplo n.º 34
0
##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(),
Ejemplo n.º 36
0
##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)
Ejemplo n.º 37
0
##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')