def __call__(self):
     self.request.response.setHeader('Content-Type', 'application/json; charset=utf-8')
     form = self.request.form
     print form
     
     site = getSite()
     
     respondentid = form.get("respondentid","NULL")
     
     values = {'respondentid':respondentid, 
               'measurement' : str(form)}
 
     
     if respondentid in getSite().keys():
         print "updating " + respondentid
         new_object = getSite()[respondentid]
     
     else:
         print "New object " + respondentid
         objid = site.invokeFactory("Measurement", respondentid)
         # objid = _createObjectByType("Measurement", getSite(), respondentid)
         new_object = site[objid]
     
     new_object.setMeasurement(str(form))
     # new_object.processForm(metadata=1, values=values)
     transaction.commit()
Example #2
0
    def test_setThreadSite_clearThreadSite(self):
        from zope.app.component.localservice import threadSiteSubscriber
        from zope.app.component.localservice import clearSite
        from zope.app.publication.zopepublication import BeforeTraverseEvent

        self.assertEqual(getSite(), None)

        # A non-site is traversed
        ob = object()
        request = object()
        ev = BeforeTraverseEvent(ob, request)
        threadSiteSubscriber(ev)

        self.assertEqual(getSite(), None)

        # A site is traversed
        ss = ServiceServiceStub()
        site = Folder()
        site.setSiteManager(ss)

        ev = BeforeTraverseEvent(site, request)
        threadSiteSubscriber(ev)

        self.assertEqual(getSite(), site)

        clearSite()

        self.assertEqual(getSite(), None)
    def update(self):
        self.notification = RegistrationNotification(getSite())

        super(NotificationsForm, self).update()

        request = self.request

        if 'form.unsubscribe' in request:
            principals = request.get('form.principals', ())
            for pid in principals:
                self.notification.unsubscribe(pid)

            if principals:
                IStatusMessage(request).add(
                    _('Selected users have been unsubscribed.'))

        principals = []
        auth = getUtility(IAuthentication)

        for pid in self.notification.getSubscribers(getSite()):
            try:
                principal = auth.getPrincipal(pid)
            except PrincipalLookupError:
                continue

            profile = IPersonalProfile(principal)
            principals.append(
                (profile.title, {'id': pid, 'title': profile.title}))

        principals.sort()
        self.principals = [info for _t, info in principals]
Example #4
0
 def get_Video2(self):
     
     if 'video-2' in getSite():
         obj = getSite()['video-2']
         return obj
     else:
         return None        
Example #5
0
    def __call__(self, value, *args, **kwargs):
        context = getSite()
        portal_membership = getToolByName(context, "portal_membership")
        user_admin = portal_membership.getMemberById('admin')

        # stash the existing security manager so we can restore it
        old_security_manager = getSecurityManager()

        # create a new context, as the owner of the folder
        newSecurityManager(context,user_admin)            
        
        portalGroup = getSite().portal_groups
        instance    = kwargs.get('instance', None)
        req = kwargs['REQUEST']
        form = req.form
        fields = ['Groups_view','Groups_edit','Groups_admin']
        for item in fields:

            id_grupo = instance.UID() +'-'+item.split('_')[1]
            atual = instance.__getattribute__(item)
            news = form.get(item)

            alterado = set(atual) - set(news)

            for j in alterado:
                portalGroup.getGroupById(id_grupo).removeMember(j) 

        # restore the original context
        setSecurityManager(old_security_manager)
Example #6
0
def get_tool(name=None):
    """Get a portal tool in a simple way.

    :param name: [required] Name of the tool you want.
    :type name: string
    :returns: The tool that was found by name
    :Example: :ref:`portal_get_tool_example`
    """
    if not name:
        raise MissingParameterError("Missing required parameter: name")

    try:
        return getToolByName(getSite(), name)
    except AttributeError:

        # get a list of all tools so we can display their names in the error msg
        portal = getSite()
        tools = []
        for id in portal.objectIds():
            if id.startswith('portal_'):
                tools.append(id)

        raise InvalidParameterError(
            "Cannot find a tool with name '%s'. \n"
            "Available tools are:\n"
            "%s" % (name, '\n'.join(tools)))
Example #7
0
    def get_profile_url(self, principal):
        """Returns the profile url of this `principal`.
        """
        if isinstance(principal, User):
            portal = getSite()
            return '/'.join((portal.portal_url(), '@@user-details',
                             principal.userid))

        elif self.is_inbox(principal):
            return None

        elif self.is_contact(principal):
            contact = self.get_contact(principal, check_permissions=True)
            if contact:
                return contact.getURL()
            else:
                return None

        elif self.is_user(principal):
            portal = getSite()
            user = self.get_user(principal)
            if user:
                return '/'.join((portal.portal_url(), '@@user-details',
                                 user.userid))
            else:
                # fallback with acl_users folder
                portal_membership = getToolByName(portal, 'portal_membership')
                member = portal_membership.getMemberById(principal)
                if member:
                    return portal_membership.getMemberById(
                        principal).getHomeUrl()
            return None
def notifyModifiedPlumiVideo(obj ,event):
    """This gets called on IObjectEditedEvent - called whenever the object is edited."""
    workflow = getToolByName(obj,'portal_workflow')
    state = workflow.getInfoFor(obj,'review_state','')
    log = logging.getLogger('plumi.content.subscribers')
    log.info("notifyModifiedPlumiVideo... %s in state (%s) with event %s " % (obj.Title(), state,  event))
    if getSite():
        request = getSite().REQUEST
        #VISIBLE
        if state in ['private','visible'] and request.has_key('form.button.save'):
            #call IPlumiWorkflow API to decide if its ready to publish or needs hiding.
            # The adapter object will implement the logic for various content types
            if IPlumiWorkflow(obj).autoPublishOrHide():
                settings = get_settings()
                if settings.notifyReviewers:
                    IPlumiWorkflow(obj).notifyReviewersVideoSubmitted()
                    IPlumiWorkflow(obj).notifyOwnerVideoSubmitted()
        #PENDING , other states..
        if request.has_key('video_file_file'): #new video uploaded
            log.info('notifyModifiedPlumiVideo: video replaced;')
            async = getUtility(IAsyncService)
            temp_time = datetime.datetime.now(pytz.UTC) + datetime.timedelta(seconds=2)
            try:
                job = async.queueJobWithDelay(None, temp_time, setup_metadata, obj)
                log.info("job queued: %s" % job)
            except Exception as e:
                log.error('failed to queue setup_metadata job: %s' % e)
 def getProduto(self):
     urltool = getSite().portal_url
     caminho = urltool.getPortalPath()+'/cardapio';
     ctool = getSite().portal_catalog
     items = ctool(portal_type='pizzaria.content.produto', 
                   review_state='published',
                   path=caminho)        
     return items
Example #10
0
    def isAvailable(self):
        if super(ErrorConfiglet, self).isAvailable():
            sm = IComponentLookup(getUtility(IErrorReportingUtility))
            if sameProxiedObjects(sm, getSite().getSiteManager()) or \
                IFolder.providedBy(getSite().__parent__):
                return True

        return False
 def _load_state(self):
     self._loaded = True
     self.uid = IUIDStrategy(self.context).getuid()
     self.portal = getSite()
     altportal = getSite()
     self.sender = invitation_sender(self.portal)
     self.localize = getToolByName(self.portal, 'translation_service')
     self.timefn = self.localize.ulocalized_time
Example #12
0
 def __init__(self, object):
     self.object = object
     self.site = getSite()
     import logging
     self._logger = logging.getLogger('wildcard.migrator')
     self._doc = PrettyDocument()
     self.sitepath = '/'.join(getSite().getPhysicalPath())
     self.objectpath = '/'.join(
         object.getPhysicalPath())[len(self.sitepath):]
 def getCadastro(self):
     membership = getSite().portal_membership
     user_login = membership.getAuthenticatedMember()
     try:
         cadastro= getSite()['clientes'][user_login.id]
     except:
         cadastro= None
         
     return cadastro
Example #14
0
 def get_flash_banners(self):
     """Retorna os objetos to tipo banner em determinado local"""
     
     urltool = getSite().portal_url
     caminho = urltool.getPortalPath()+'/jornal-da-caixa/banners-do-jornal';
     ctool = getSite().portal_catalog
     items = ctool(portal_type='BannerFlash', 
                   review_state='published',
                   path=caminho)        
     return items
Example #15
0
    def voc_listGroups(self):
        terms = []
        if 'acl_users' in getSite().keys():
            groups = getSite().get('acl_users').getGroups()

            for group in groups:
                member_id = group.id
                member_name = group.getProperties().get('title','')
                terms.append((member_id, unicode(member_name)))

        return terms
Example #16
0
    def update(self):
        super(MessageTemplate, self).update()

        request, context = self.request, self.context

        self.portal_title = getMultiAdapter((getSite(), request), IBreadcrumb).name
        self.portal_url = '%s/' % absoluteURL(getSite(), request)
        self.url = '%s/' % absoluteURL(context, request)

        self.form = getMultiAdapter((context, request), IFormResults)
        self.form.update(self.record)
    def configurador(self):
        self.update()
        if "control-panel-objects" in getSite().keys():
            control = getSite()["control-panel-objects"]
            if "vindula_vindulaconfigall" in control.keys():
                return control["vindula_vindulaconfigall"]

            else:

                return False
        else:
            return False
Example #18
0
    def search(self, object=None, contexts=(),
               sort_on='date', sort_order='reverse',
               noSecurityChecks=False, **kw):

        ids = getUtility(IIntIds)

        query = dict(kw)

        # records for object
        if type(object) is not type({}) and object is not None:
            oid = ids.queryId(removeAllProxies(object))
            if oid is None:
                return ResultSet(IFBTree(), getUtility(IActivity))

            query['object'] = {'any_of': (oid,)}

        # context
        if not contexts:
            contexts = (getSite(),)

        c = []
        for context in contexts:
            id = ids.queryId(removeAllProxies(context))
            if id is not None:
                c.append(id)

        query['contexts'] = {'any_of': c}

        # security
        if not noSecurityChecks:
            request = getRequest()
            if request is not None:
                users = listAllowedRoles(request.principal, getSite())
                if 'zope.Anonymous' not in users:
                    users.append('zope.Anonymous')

                query['allowedUsers'] = {'any_of': users}

        # apply searh terms
        results = self.apply(query)
        if results is None:
            results = IFBTree()

        # sort result by index
        if sort_on and sort_on in self:
            sortable = ISortable(self[sort_on], None)
            if sortable is not None:
                results = sortable.sort(results)

        if sort_order == 'reverse':
            return ReverseResultSet(results, getUtility(IActivity))
        else:
            return ResultSet(results, getUtility(IActivity))
Example #19
0
    def getListToOrder(self):
        result = [('effective', u'Effective Date', 'The time and date an item becomes publicly available'), \
                  ('sortable_title', u'Sortable Title', u"An item's title transformed for sorting")]

        if 'control-panel-objects' in getSite().keys():
            control = getSite()['control-panel-objects']
            if 'vindula_categories' in control.keys():
                confg = control['vindula_categories']
                try:
                    for i in confg.getOrder_list():
                        result.append(i.replace('(', '').replace(')','').replace('u\'', '').replace('\'', '').split(','))
                except:
                    return result
        return result
Example #20
0
    def getConfigurador(self):

        if 'control-panel-objects' in  getSite().keys():
            control = getSite()['control-panel-objects']
            if 'ThemeConfig' in control.keys():
                confg = control['ThemeConfig']
                try:
                    return confg.getFavicon().absolute_url()
                except:
                    return None
            else:
                return None
        else:
            return None
Example #21
0
    def getSubMenu(self, menu):
        portal = self.context.portal_url.getPortalObject()
        types = self.getContentTypes()
                
        urltool = getSite().portal_url
        caminho = {'query': '/'.join(menu.getPhysicalPath()), 'depth': 1}
        ctool = getSite().portal_catalog
        submenus = ctool(portal_type=types, path=caminho,sort_on='getObjPositionInParent')        

        if submenus:
            L = []
            for obj in submenus:
                if self.checkObj(obj.getObject()):
                    L.append(obj.getObject())
            return L
    def update(self):
        site = getSite()
        self.max_online = "Max Concurrent in Single Day :"  # "16 on Dec. 3"
        self.max_logged = "Max Users in Single Day :"
        try:
            max_online_count_users_by_month = sorted(site['stats'].count_users_by_month, key=lambda x: x[0], reverse=True)[0]
            max_online_count_today = sorted(site['stats'].count_users_allday, key=lambda x: x[0], reverse=True)[0]
            if max_online_count_today[0] >= max_online_count_users_by_month[0]:
                self.stats_max_online = str(max_online_count_today[0]) + ' ' + self.format_date(max_online_count_today[1], True)
            else:
                self.stats_max_online = str(max_online_count_users_by_month[0]) + ' ' + self.format_date(max_online_count_users_by_month[1], True)

            stats_max_logged_today = len(site['stats'].list_users_names)
            stats_max_logged = sorted(site['stats'].count_users_names, key=lambda x: x[0], reverse=True)[0]
            if stats_max_logged_today >= stats_max_logged[0]:
                self.stats_max_logged = str(stats_max_logged_today) + ' ' + self.format_date(datetime.datetime.now(), False)
            else:
                self.stats_max_logged = str(stats_max_logged[0]) + ' ' + self.format_date(stats_max_logged[1],False)
        except (IndexError,KeyError), e:
            try:
                max_online_count_today = sorted(site['stats'].count_users_allday, key=lambda x: x[0], reverse=True)[0]
                self.stats_max_online = str(max_online_count_today[0]) + ' ' + self.format_date(max_online_count_today[1], True)
                stats_max_logged_today = len(site['stats'].list_users_names)
                self.stats_max_logged = str(stats_max_logged_today) + ' ' + self.format_date(datetime.datetime.now(), False)
            except (IndexError,KeyError, AttributeError), e:
                self.stats_max_online = 'None'
                self.stats_max_logged = 'None'
Example #23
0
 def update(self):
     quiz = getSite()
     int_ids = getUtility(IQreatureIntIds, context=self.context)
     ce = getUtility(ICounterExplorer, context=self.context)
     results= [r for r in quiz.values() if IQuizResult.providedBy(r)]
     self.titles = [r.title.encode('utf-8') for r in results]
     self.counters = [ce.getCounter(r, key=int_ids.getId(r)) for r in results]
def notify_configuration_changed(event):
    """Event subscriber that is called every time the configuration changed.
    """
    portal = getSite()
    wftool = getToolByName(portal, 'portal_workflow', None)

    if IRecordModifiedEvent.providedBy(event):
        # Discussion control panel setting changed
        if event.record.fieldName == 'moderation_enabled':
            # Moderation enabled has changed
            if event.record.value == True:
                # Enable moderation workflow
                wftool.setChainForPortalTypes(('Discussion Item',),
                                              'comment_review_workflow')
            else:
                # Disable moderation workflow
                wftool.setChainForPortalTypes(('Discussion Item',),
                                              'one_state_workflow')

    if IConfigurationChangedEvent.providedBy(event):
        # Types control panel setting changed
        if 'workflow' in event.data:
            registry = queryUtility(IRegistry)
            settings = registry.forInterface(IDiscussionSettings, check=False)
            wf = wftool.getChainForPortalType('Discussion Item')[0]
            if wf == 'one_state_workflow':
                settings.moderation_enabled = False
            elif wf == 'comment_review_workflow':
                settings.moderation_enabled = True
            else:
                # Custom workflow
                pass
Example #25
0
    def get_contact(self, principal, check_permissions=False):
        """Returns the contact object of this principal.
        """

        if not self.is_contact(principal):
            raise ValueError('Principal %s is not a contact' % str(principal))

        catalog = getToolByName(getSite(), 'portal_catalog')
        query = {'portal_type': 'opengever.contact.contact',
                 'contactid': principal}

        if not check_permissions:
            # usually foreign users may not have access to the contacts,
            # but we want to be able to print the name etc. in this case too.
            # So we need to use ZCatalog for ignoring the allowedRolesAndUsers
            # index.
            contacts = ZCatalog.searchResults(catalog, **query)
        else:
            contacts = catalog.searchResults(**query)

        if len(contacts) == 0:
            return None
        elif len(contacts) > 1:
            raise ValueError('Found %i contacts with principal %s' % (
                    len(contacts), principal))
        else:
            return contacts[0]
def total_width():
    return 899.0
    default_width = 1000.0
    site = getSite()
    try:
        portal_skins = getToolByName(site, 'portal_skins')
    except AttributeError:
        return default_width

    try:
        base_properties = portal_skins.restrictedTraverse('agcommon_styles/base_properties')
    except KeyError:
        return default_width

    width = base_properties.getProperty('maxWidth', '')

    if not width:
        return default_width

    width = re.sub('[A-Za-z]+', '', width)

    try:
        return float(width)
    except ValueError:
        return default_width
def language_filter(query):

    if query.get('Language') == 'all':
        del query['Language']
        return

    for key in NO_FILTER:  # any "nofilter" indexing prevent mangling
        if key in query:
            return

    site = getSite()
    languageTool = getToolByName(site, 'portal_languages', None)

    if languageTool is None:
        return

    query['Language'] = [languageTool.getPreferredLanguage(),
                         LANGUAGE_INDEPENDENT]
    old_path = query.get('path', None)

    # In case is a depth path search
    if isinstance(old_path, dict) and 'query' in old_path and\
            IPloneSiteRoot.providedBy(site):
        old_path_url = old_path['query']
        # We are going to check if is language root
        root_path = '/'.join(site.getPhysicalPath())

        # Check is a language root folder to add the shared folder
        if old_path['query'].split('/')[-1] in _languagelist:
            old_path['query'] = [old_path_url, root_path + '/' + SHARED_NAME]
def render_confirmation(self, subscription):
    """
    Custom render_confirmation method.
    If there is a registered template with id "confirm_newsletter_subscription" use it.
    If there isn't, use the default template.
    """
    vars = self._vars(subscription)
    subscription_vars = self._subscription_vars(subscription)

    if 'confirmation_subject' not in vars:
        vars['confirmation_subject'] = translate(
            _(u"Confirm your subscription with ${channel-title}",
              mapping={'channel-title': subscription.channel.title}),
            target_language=self.language)
    to_addr = subscription_vars[template_var('to_addr')]
    vars['to_addr'] = to_addr
    portal = getSite()
    confirm_template = portal.restrictedTraverse('confirm_newsletter_subscription',
                                               self.confirm_template)
    html = confirm_template(**vars)
    html = utils.compactify(html)
    html = string.Template(html).safe_substitute(subscription_vars)

    message = create_html_mail(
        vars['confirmation_subject'],
        html,
        from_addr=vars['from_addr'],
        to_addr=to_addr,
        headers=vars.get('more_headers'),
        encoding=self.encoding)

    # status=None prevents message from ending up in any queue
    return Message(
        message, subscription, status=None)
def render_forgot_secret(self, subscription):
    """
    Custom render_forgot method.
    If there is a registered template with id "forgot_newsletter_subscription" use it.
    If there isn't, use the default template.
    """
    vars = self._vars(subscription)
    subscription_vars = self._subscription_vars(subscription)
    portal = getSite()
    if 'forgot_secret_subject' not in vars:
        vars['forgot_secret_subject'] = translate(
            _(u"Change your subscriptions with ${site_title}",
              mapping={'site_title': vars['channel_title']}),
            target_language=self.language)
    forgot_template = portal.restrictedTraverse('forgot_newsletter_subscription',
                                           self.forgot_template)
    html = forgot_template(**vars)
    html = utils.compactify(html)
    html = string.Template(html).safe_substitute(subscription_vars)

    message = create_html_mail(
        vars['forgot_secret_subject'],
        html,
        from_addr=vars['from_addr'],
        to_addr=subscription_vars[template_var('to_addr')],
        headers=vars.get('more_headers'),
        encoding=self.encoding)

    # status=None prevents message from ending up in any queue
    return Message(
        message, subscription, status=None)
Example #30
0
    def update(self):
        context = getSite()
        self.context = context

        results = getUtility(ICatalog).searchResults(
            searchContext=context,
            type={'any_of': ('content.space',)},
            isDraft={'any_of': (False,)})

        count = 1000
        spaces = []
        for space in results:
            url = '%s/'%absoluteURL(space, self.request)

            c = url.count('/')
            if c < count:
                count = c

            spaces.append((c, space.title,
                           {'title': space.title,
                            'description': space.description,
                            'url': url,
                            'level': c,
                            'space': space}))

        spaces.sort()
        spaces = [info for c, t, info in spaces]
        for info in spaces:
            info['level'] = info['level'] - count

        self.spaces = spaces

        super(SpacesPortlet, self).update()
Example #31
0
 def _get_site(self):
     return zopeappcomponenthooks.getSite()
Example #32
0
 def __call__(self):
     rc = getToolByName(getSite(), 'reference_catalog')
     return FullFormatWrapper(rc.lookupObject(self.uid))
Example #33
0
def _error_html(self, title, body):
    try:
        # wrap it all up just in case it screws up
        # it'd be even worse to not send a response!
        site = getSite()
        if not site:
            return

        from uwosh.default import monkey
        now = DateTime()
        mailhost = getToolByName(site, 'MailHost', None)
        pp = getToolByName(site, 'portal_properties', None)
        to_ = pp.site_properties.getProperty('error_recipients', [
            '*****@*****.**',
        ])
        req = site.REQUEST

        if self.status != 500 and not req.environ.get('HTTP_REFERER', False):
            pass
        elif not monkey.ERRORS.has_key(req.URL):
            monkey.ERRORS[req.URL] = {}
            monkey.ERRORS[req.URL]['body'] = body
            monkey.ERRORS[req.URL]['status'] = self.status
            monkey.ERRORS[req.URL]['number_reported'] = 1
            monkey.ERRORS[req.URL]['last_reported'] = DateTime()
            monkey.ERRORS[req.URL]['referrer'] = req.environ.get(
                'HTTP_REFERER', '')
            monkey.ERRORS[req.URL]['email_sent'] = False
        else:
            monkey.ERRORS[req.URL]['number_reported'] += 1
            monkey.ERRORS[req.URL]['last_reported'] = DateTime()
            monkey.ERRORS[req.URL]['referrer'] = req.environ.get(
                'HTTP_REFERER', '')

        if self.status != 500 and (monkey.last_sent_404 + one_day) <= now:
            monkey.last_sent_404 = now
            body = body + "\n\nComplete set of errors\n\n" + '\n'.join(
                [format_error(k, error) for k, error in monkey.ERRORS.items()])
            if hasattr(mailhost, 'secureSend'):
                mailhost.secureSend(body, to_, '*****@*****.**',
                                    'Plone UW Oshkosh ERROR!')
            else:
                mailhost.send(body, to_, '*****@*****.**',
                              'Plone UW Oshkosh ERROR!')

        elif self.status == 500 and (monkey.last_sent_500 +
                                     one_minute) <= now and not monkey.ERRORS[
                                         req.URL]['email_sent']:
            monkey.last_sent_500 = now
            monkey.ERRORS[req.URL]['email_sent'] = True
            if hasattr(mailhost, 'secureSend'):
                mailhost.secureSend(body, to_, '*****@*****.**',
                                    'Plone UW Oshkosh ERROR!')
            else:
                mailhost.send(body, to_, '*****@*****.**',
                              'Plone UW Oshkosh ERROR!')

        return error_template.replace('{{title}}',
                                      title).replace('{{body}}', body)
    except:
        return original_error_html(self, title, body)
 def _removeFromWorkList(self):
     worklist = zope.component.getUtility(interfaces.IWorkList,
                                          name=self.worklist,
                                          context=getSite())
     worklist.remove(self)
Example #35
0
 def get_url(self, item):
     site = getSite()
     base_url = absoluteURL(site, self.request)
     return base_url + "/business/%ss/obj-%s" % (
         item.origin.type, item.origin.parliamentary_item_id)
Example #36
0
 def update(self):
     section = get_section_name()
     base_url = abs_url(getSite(), self.request)
     if not section:
         section = 'business'
     self.action = urljoin(base_url, section) + '/search'
Example #37
0
def queue_view_helper(item, value):
    site = getSite()
    return """<a href='%s/jobs_view?queue=%s'>%s</a>""" % (site.absolute_url(),
                                                           value, value)
Example #38
0
 def __str__(self):
     base_url = ui_utils.url.absoluteURL(getSite(), self.request)
     return '%s/%s/%s/%s' % (base_url, self.section, self.subsection,\
            stringKey(self.context))
Example #39
0
 def getURLContext(self):
     site = getSite()
     return site["admin"]
Example #40
0
def back_to_controlpanel(self):
    root = getSite()
    return dict(url=root.absolute_url() + '/plone_control_panel')
Example #41
0
 def __str__(self):
     base_url = ui_utils.url.absoluteURL(getSite(), self.request)
     return '%s/archive/browse/parliaments/obj-%s/%s/%s' % \
            (base_url, self.context.parliament_id, self.subsection, stringKey(self.context))
Example #42
0
def initializeAreas(pm_tool, acl_tool, request, member_folder_id=None):
    """
    Creates custom content in the member's folder.
    Create group spaces and content for the member's groups.
    
    1. Create private space for the user.
    2. Create public space for user if they are a member of parliament.
    3. Populate the public space with custom content
    4. Create group home folder for any groups (except a parliament) this user is a member of.
        3.1 Create a private space for the group home folder.
        3.2 Create a public space for the group home folder
        3.3 Populate the public space with custom content.
    """
    portal = getSite()
    sm = getSecurityManager()

    tmp_user = BaseUnrestrictedUser(sm.getUser().getId(),'', ['Manager'],'')
    newSecurityManager(None, tmp_user)    
    acl_tool = getToolByName(portal, 'acl_users')
    
    if "groups" in portal.objectIds():
        groups_space = portal["groups"]
    if member_folder_id:
        member = pm_tool.getMemberById(decleanId(member_folder_id))
    else:
        member = pm_tool.getAuthenticatedMember()
    member_id = member.getId()
    folder = pm_tool.getHomeFolder(member_id)
         
    #All members get a private workspace area.
    create_space(folder, "private_space", "Private Space", "private", member_id, member, "PrivateFolder")   
    member_groupIds = member.getGroupIds()
    for member_groupId in member_groupIds:
        group_membership_roles = doSearch(acl_tool, member_groupId)
        if "bungeni.MP" in group_membership_roles:
            create_space(folder, "web_space", "Web Space", "publish", member_id, member, "PublicFolder")
            parent_space = getattr(folder, "web_space")
            mark(parent_space, IMemberSpace)    
            parent_space.setLayout("space_view")  
            create_content(parent_space, MEMBER_SPACE_CONTENT, member, "publish")


    groups_space = portal["groups"]

    for member_groupId in member_groupIds:
        group_membership_roles = doSearch(acl_tool, member_groupId)
        #if group home folder does not exist
        #it is cheaper to check if the group home folder already exists, then exit if it does
        for bungeni_group in acl_tool.bungeni_groups.enumerateGroups():

            if (member_groupId == bungeni_group["id"]) and ("bungeni.MP" not in group_membership_roles) and (bungeni_group["id"]not in groups_space.objectIds()):
                group = acl_tool.bungeni_groups.getGroupById(bungeni_group["id"])                 
                create_space(groups_space, bungeni_group["id"],
                    bungeni_group["title"], "private", bungeni_group["id"], 
                    group, "Folder")
                parent_space = getattr(groups_space, bungeni_group["id"])               
                create_space(parent_space, "private_space", "Private Space", 
                    "private", bungeni_group["id"], 
                    group, "PrivateFolder")                       
                create_space(parent_space, "web_space", "Web Space", 
                    "publish", bungeni_group["id"], 
                     group, "PublicFolder") 
                parent_space = getattr(parent_space, "web_space")
                mark(parent_space, IGroupSpace)  
                parent_space.setLayout("space_view")
                create_content(parent_space, GROUP_SPACE_CONTENT, group, "publish")
def dvInstalled():
    qi = getToolByName(getSite(), 'portal_quickinstaller', None)
    if qi is None:
        return False

    return qi.isProductInstalled('collective.documentviewer')
Example #44
0
 def __init__(self, context):
     self.context = context
     self.catalog = getToolByName(self.context, 'portal_catalog')
     self.portal = getSite()
     self.portal_url = self.portal.absolute_url()
 def __init__(self, context, request):
     self.document = removeSecurityProxy(context)
     self.site_url = url.absoluteURL(getSite(), request)
     super(DownloadDocument, self).__init__(context, request)
Example #46
0
def get_services_regexp():
    annotations = IAnnotations(getSite())
    embedly_re = re.compile(
        annotations.get('collective.embedly.services', default_services))
    return embedly_re
Example #47
0
 def quotationtoolURL(self):
     # use hooks because component lookup error if error is context
     return absoluteURL(hooks.getSite(), self.request)
Example #48
0
 def __init__(self, context, request):
     self.site_url = url.absoluteURL(getSite(), request)
     super(ReportView, self).__init__(context, request)
Example #49
0
 def __call__(self):
     self.request.response.expireCookie("wc.cookiecredentials")
     site_url = ui_utils.url.absoluteURL(getSite(), self.request)
     self.request.response.redirect(site_url)
Example #50
0
 def url(self):
     siteURL = absoluteURL(hooks.getSite(), self.request)
     return siteURL + '/' + self.viewURL
Example #51
0
 def __init__(self, context, request, include_text=True):
     self.context = context
     self.request = request
     self.include_text = include_text
     self.site_url = url.absoluteURL(getSite(), request)
Example #52
0
 def __call__(self):
     if IUnauthenticatedPrincipal.providedBy(self.request.principal):
         self.request.response.redirect(
             ui_utils.url.absoluteURL(getSite(), self.request) + "/login")
     return super(ChangePasswordForm, self).__call__()
Example #53
0
 def __str__(self):
     base_url = ui_utils.url.absoluteURL(getSite(), self.request)
     return '%s/admin/content/parliaments/obj-%s/%s/%s' % \
            (base_url, self.context.group_id, self.subsection, stringKey(self.context))
Example #54
0
def get_sitting_items(sitting, request, include_actions=False):
    items = []

    if sitting.status in get_states("groupsitting",
                                    keys=["draft_agenda", "published_agenda"]):
        order = "planned_order"
    else:
        order = "real_order"

    schedulings = map(removeSecurityProxy,
                      sitting.items.batch(order_by=order, limit=None))
    site_url = url.absoluteURL(getSite(), request)
    for scheduling in schedulings:
        item = ProxyFactory(location_wrapped(scheduling.item, sitting))

        props = IDCDescriptiveProperties.providedBy(item) and item or \
                IDCDescriptiveProperties(item)

        discussions = tuple(scheduling.discussions.values())
        discussion = discussions and discussions[0] or None
        truncated_discussion = None
        if ((discussion is not None) and (discussion.body_text is not None)):
            #truncate discussion to first hundred characters
            t_discussion = discussion.body_text[0:100]
            try:
                #truncate discussion to first two lines
                index = t_discussion.index("<br>")
                index2 = t_discussion.index("<br>", index + 4)
                truncated_discussion = t_discussion[0:index2] + "..."
            except ValueError:
                truncated_discussion = t_discussion + "..."
        wfc = IWorkflowController(item, None)
        state_title = wfc.workflow.get_state(item.status).title

        record = {
            'title':
            props.title,
            'description':
            props.description,
            'name':
            stringKey(scheduling),
            'status':
            item.status,
            'type':
            item.type.capitalize,
            't':
            item.type,
            'state_title':
            state_title,
            #'category_id': scheduling.category_id,
            #'category': scheduling.category,
            'discussion':
            discussion,
            'truncated_discussion':
            truncated_discussion,
            'delete_url':
            "%s/delete" % url.absoluteURL(scheduling, request),
            'url':
            url.set_url_context(site_url +
                                ('/business/%ss/obj-%s' %
                                 (item.type, item.parliamentary_item_id)))
        }

        if include_actions:
            record['actions'] = get_scheduling_actions(scheduling, request)
            record['workflow'] = get_workflow_actions(item, request)

            discussion_actions = get_discussion_actions(discussion, request)
            if discussion_actions:
                assert len(discussion_actions) == 1
                record['discussion_action'] = discussion_actions[0]
            else:
                record['discussion_action'] = None
        items.append(record)
    return items
Example #55
0
def ScopeID():
    urltool = getToolByName(getSite(), 'portal_url')
    obj = urltool.getPortalObject()
    return '-'.join(obj.getPhysicalPath()[1:])
Example #56
0
 def __str__(self):
     base_url = ui_utils.url.absoluteURL(getSite(), self.request)
     return '%s/admin/content/parties/%s' % (base_url,
                                             stringKey(self.context))
Example #57
0
def get_group_context(context):
    if interfaces.IOffice.providedBy(context):
        return getSite()  #get_parliament(context)
    else:
        return context
Example #58
0
def runMigration(context):
    """Run a migration profile as an upgrade step
    """
    portal = getSite()
    setup_tool = getToolByName(portal, 'portal_setup')
    setup_tool.runAllImportStepsFromProfile('profile-collective.easyslideshow:migration-002')
Example #59
0
 def clear(self):
     annotations = IAnnotations(getSite())
     if self.propname in annotations:
         del annotations[self.propname]
 def _appendToWorkList(self):
     worklist = zope.component.getUtility(interfaces.IWorkList,
                                          name=self.worklist,
                                          context=getSite())
     worklist.append(self)