Beispiel #1
0
def newrelic_transaction(event):

    try:
        request = event.request
        published = request.get('PUBLISHED', None)
        trans = newrelic.agent.current_transaction()

        # TODO: Better name resolvement. SimpleViewClass seems to have no reference
        # to the browserview it simplifies. Making it hard to make a proper dotted name.
        # Preffered name would be:  Products.MyProduct.browser.views.MyView
        # Now we only get the name as defined in conifure zcml, ie: "my_view"
        transname = published.__name__

        if trans:
            # We only want to track the following:
            # 1. BrowserViews (but not the resource kind ..)
            # 2. PageTemplate (/skins/*/*.pt ) being used as views
            if (IBrowserView.providedBy(published) or IPageTemplate.providedBy(published)) and not IResource.providedBy(published):
                trans.name_transaction(transname, group='Zope2', priority=1)
                newrelic.agent.add_custom_parameter('id', published.context.id)
                newrelic.agent.add_custom_parameter('absolute_url', published.context.absolute_url())
                logger.debug("Transaction: {0}".format(transname))
            else:
                # For debugging purpose
                logger.debug("NO transaction? : {0}   Browser: {1}  Resource: {2} PageTemplate: {3}".format(
                    transname,
                    IBrowserView.providedBy(published),
                    IResource.providedBy(published),
                    IPageTemplate.providedBy(published)))

    except Exception, e:
        # Log it and carry on.
        logger.exception(e)
def newrelic_transaction(event):

    try:
        request = event.request
        published = request.get('PUBLISHED', None)
        trans = newrelic.agent.current_transaction()

        # TODO: Better name resolvement. SimpleViewClass seems to have no reference
        # to the browserview it simplifies. Making it hard to make a proper dotted name.
        # Preffered name would be:  Products.MyProduct.browser.views.MyView
        # Now we only get the name as defined in conifure zcml, ie: "my_view"
        transname = getattr(published, '__name__', None)
        if not transname:
            transname = published.__class__.__module__ + '.' + published.__class__.__name__

        if trans:
            # We only want to track the following:
            # 1. BrowserViews (but not the resource kind ..)
            # 2. PageTemplate (/skins/*/*.pt ) being used as views
            # 3. PageTemplates in ZMI
            if IBrowserView.providedBy(published) or IPageTemplate.providedBy(
                    published):
                trans.name_transaction(transname, group='Zope2', priority=1)
                if hasattr(published, 'context'):  # Plone
                    newrelic.agent.add_custom_parameter(
                        'id', getattr(published.context, 'id', ''))
                    newrelic.agent.add_custom_parameter(
                        'absolute_url',
                        getattr(published.context, 'absolute_url', ''))
                elif hasattr(published, 'id') and hasattr(
                        published, 'absolute_url'):  # Zope
                    newrelic.agent.add_custom_parameter('id', published.id)
                    newrelic.agent.add_custom_parameter(
                        'absolute_url', published.absolute_url())
                else:
                    # We don't know what it is .. so no custom parameters!
                    logger.debug(
                        "Published has no context nor an id/absolute_url. Skipping custom parameters"
                    )

                logger.debug("Transaction: {0}".format(transname))
            else:
                # For debugging purpose
                logger.debug(
                    "NO transaction? : {0}   Browser: {1} PageTemplate: {2}".
                    format(transname, IBrowserView.providedBy(published),
                           IPageTemplate.providedBy(published)))

    except Exception, e:
        # Log it and carry on.
        logger.exception(e)
Beispiel #3
0
 def update(self):
     self.exception = aq_inner(self.context)
     self.context = context = aq_parent(self)
     if IBrowserView.providedBy(context):
         # NotFound errors can have extra aq wrapping
         self.context = context = aq_parent(context)
     log.debug("%r -> %r", self.exception, context)
def getHotNotifications(context, request):
    gatherer = GathererManager(context, request)
    storage = StorageManager(context, request)
    storage.initialize()
    _updateNotifications(context, storage, gatherer)
    hotNotifications = storage.getHotNotifications()
    #portal_path = _getPortalPath(context, request)
    notifications = []

    for notification in hotNotifications:
        try:
            content = validateNotification(context, notification)
        except NotificationValueError:
            storage.removeNotification(notification)
            continue
        if IBrowserView.providedBy(content):
            url = content.context.absolute_url() + '/@@' + content.__name__
        else:
            context_state = content.restrictedTraverse('plone_context_state')
            url = context_state.view_url()

        title = show(content, request, notification)
        notifications.append({
            'title': title,
            'url': _redirectUrl(context, request, url, notification.where),
            'seen': notification.seen
        })
    storage.terminate()
    return notifications
Beispiel #5
0
def newrelic_transaction(event):

    try:
        request = event.request
        published = request.get("PUBLISHED", None)
        trans = newrelic.agent.current_transaction()

        # TODO: Better name resolvement. SimpleViewClass seems to have no reference
        # to the browserview it simplifies. Making it hard to make a proper dotted name.
        # Preffered name would be:  Products.MyProduct.browser.views.MyView
        # Now we only get the name as defined in conifure zcml, ie: "my_view"
        transname = published.__name__

        if trans:
            # We only want to track the following:
            # 1. BrowserViews (but not the resource kind ..)
            # 2. PageTemplate (/skins/*/*.pt ) being used as views
            # 3. PageTemplates in ZMI
            if (IBrowserView.providedBy(published) or IPageTemplate.providedBy(published)) and not IResource.providedBy(
                published
            ):
                trans.name_transaction(transname, group="Zope2", priority=1)
                if hasattr(published, "context"):  # Plone
                    newrelic.agent.add_custom_parameter("id", getattr(published.context, "id", ""))
                    newrelic.agent.add_custom_parameter("absolute_url", getattr(published.context, "absolute_url", ""))
                elif hasattr(published, "id") and hasattr(published, "absolute_url"):  # Zope
                    newrelic.agent.add_custom_parameter("id", published.id)
                    newrelic.agent.add_custom_parameter("absolute_url", published.absolute_url())
                else:
                    # We don't know what it is .. so no custom parameters!
                    logger.debug("Published has no context nor an id/absolute_url. Skipping custom parameters")

                logger.debug("Transaction: {0}".format(transname))
            else:
                # For debugging purpose
                logger.debug(
                    "NO transaction? : {0}   Browser: {1}  Resource: {2} PageTemplate: {3}".format(
                        transname,
                        IBrowserView.providedBy(published),
                        IResource.providedBy(published),
                        IPageTemplate.providedBy(published),
                    )
                )

    except Exception, e:
        # Log it and carry on.
        logger.exception(e)
Beispiel #6
0
def getContext(context):
    """Return a safe context.
    In case a IBrowserView was passed (e.g. due to a 404 page), return the
    portal object.
    """
    context = aq_parent(aq_base(context))
    if not context or IBrowserView.providedBy(context):
        return getSite()
    return context
    def __init__(self, context, request, name, permission, template, owner=None):  # noqa
        # Fix issue where context is a template based view class
        while IBrowserView.providedBy(context):
            context = Acquisition.aq_parent(Acquisition.aq_inner(context))

        super(FragmentView, self).__init__(context, request)
        self.__name__ = name
        self._permission = permission
        self._template = template
        self._owner = owner
Beispiel #8
0
    def __init__(self, *args, **kwargs):
        super(LoadFlyoutChildren, self).__init__(*args, **kwargs)
        self.cachekey = None

        # When accessing a object of a typesUseViewActionInListings type,
        # self.context may be a view and this view will break.
        # In order to have a proper context we change the context to the
        # parent of the view-context.
        if IBrowserView.providedBy(self.context):
            self.context = aq_parent(aq_inner(self.context))
Beispiel #9
0
 def update(self):
     self.exception=aq_inner(self.context)
     self.context=context=aq_parent(self)
     if IBrowserView.providedBy(context):
         # NotFound errors can have extra aq wrapping
         self.context=context=aq_parent(context)
     try:
         log.exception("Error at %s", repr(context))
     except zExceptions.Unauthorized:
         pass
Beispiel #10
0
 def item_macros(self):
     default_view = self.default_view
     if default_view and IBrowserView.providedBy(default_view):
         # IBrowserView
         if getattr(default_view, 'index', None):
             return default_view.index.macros
     elif default_view:
         # FSPageTemplate
         return default_view.macros
     return None
    def __get__(self, form, type=None):
        if form is None:
            return ObjectDataManager()

        cache = form.__dict__.get(self.key, None)
        if cache is None and IBrowserView.providedBy(form):
            fields = getattr(form, self.fields_name)
            cache = makeGenericAdaptiveDataManager(*fields)
            form.__dict__[self.key] = cache
        return cache
    def __init__(self, context, request):
        self.context = aq_inner(context)
        self.request = request

        # in some cases the context is the view, so lets walk up
        # and search the real context
        context = self.context
        while IBrowserView.providedBy(context):
            context = aq_parent(aq_inner(context))
        self.widget = context
Beispiel #13
0
    def __init__(self, context, request):
        self.context = aq_inner(context)
        self.request = request

        # in some cases the context is the view, so lets walk up
        # and search the real context
        context = self.context
        while IBrowserView.providedBy(context):
            context = aq_parent(aq_inner(context))
        self.widget = context
 def item_macros(self):
     default_view = self.default_view
     if default_view and IBrowserView.providedBy(default_view):
         # IBrowserView
         if getattr(default_view, 'index', None):
             return default_view.index.macros
     elif default_view:
         # FSPageTemplate
         return default_view.macros
     return None
    def __get__(self, form, type=None):
        if form is None:
            return Fields()

        cache = form.__dict__.get(self.key, None)
        if cache is None and IBrowserView.providedBy(form):
            providers = component.subscribers(
                (form.context, form), self.interface)
            providers = sort_components(providers)
            cache = Fields(*(p.fields for p in providers))
            form.__dict__[self.key] = cache
        return cache
Beispiel #16
0
def generic_viewlet_html_id(viewlet, prefix=''):
    parent = viewlet.manager.__parent__
    parents = []
    while (parent is not None and IBrowserView.providedBy(parent)):
        name = getattr(parent, '__name__', None)
        parents.append(str(name))
        parent = parent.__parent__
    name_list = ([
        str(viewlet.__name__),
        getattr(viewlet.manager, '__name__', 'manager')
    ] + parents[:-1] + [prefix])
    return sanitize_id('-'.join(reversed(name_list)))
Beispiel #17
0
def generic_viewlet_html_id(viewlet, prefix=''):
    parent = viewlet.manager.__parent__
    parents = []
    while (parent is not None and
           IBrowserView.providedBy(parent)):
        name = getattr(parent, '__name__', None)
        parents.append(str(name))
        parent = parent.__parent__
    name_list = ([str(viewlet.__name__),
                  getattr(viewlet.manager, '__name__', 'manager')] +
                 parents[:-1] +
                 [prefix])
    return sanitize_id('-'.join(reversed(name_list)))
    def __call__(self):
        file_ = self.request.form['Filedata']
        # in some cases the context is the view, so lets walk up
        # and search the real context

        context = self.context
        while IBrowserView.providedBy(context):
            context = aq_parent(aq_inner(context))

        handler = getMultiAdapter((context, self.request),
                                  ITemporaryFileHandler)
        file_ = NamedFile(file_, filename=file_.filename.decode('utf-8'))
        draft = handler.create(file_)
        return draft.__name__
Beispiel #19
0
def newrelic_transaction(event):

    try:
        request = event.request
        published = request.get('PUBLISHED', None)
        trans = newrelic.agent.current_transaction()

        # TODO: Better name resolvement. SimpleViewClass seems to have no reference
        # to the browserview it simplifies. Making it hard to make a proper dotted name.
        # Preffered name would be:  Products.MyProduct.browser.views.MyView
        # Now we only get the name as defined in conifure zcml, ie: "my_view"
        transname = published.__name__

        if trans:
            # We only want to track the following:
            # 1. BrowserViews (but not the resource kind ..)
            # 2. PageTemplate (/skins/*/*.pt ) being used as views
            if (IBrowserView.providedBy(published)
                    or IPageTemplate.providedBy(published)
                ) and not IResource.providedBy(published):
                trans.name_transaction(transname, group='Zope2', priority=1)
                newrelic.agent.add_custom_parameter('id', published.context.id)
                newrelic.agent.add_custom_parameter(
                    'absolute_url', published.context.absolute_url())
                logger.debug("Transaction: {0}".format(transname))
            else:
                # For debugging purpose
                logger.debug(
                    "NO transaction? : {0}   Browser: {1}  Resource: {2} PageTemplate: {3}"
                    .format(transname, IBrowserView.providedBy(published),
                            IResource.providedBy(published),
                            IPageTemplate.providedBy(published)))

    except Exception, e:
        # Log it and carry on.
        logger.exception(e)
    def __init__(self,
                 context,
                 request,
                 name,
                 permission,
                 template,
                 owner=None):  # noqa
        # Fix issue where context is a template based view class
        while IBrowserView.providedBy(context):
            context = Acquisition.aq_parent(Acquisition.aq_inner(context))

        super(FragmentView, self).__init__(context, request)
        self.__name__ = name
        self._permission = permission
        self._template = template
        self._owner = owner
Beispiel #21
0
    def _append_notification(self, notification):
        try:
            content = validateNotification(self.context, notification)
        except NotificationValueError:
            return
        if IBrowserView.providedBy(content):
            url = content.context.absolute_url() + '/@@' + content.__name__
        else:
            context_state = content.restrictedTraverse('plone_context_state')
            url = context_state.view_url()

        self.notifications.append({
            'title':
            show(self.context, self.request, notification),
            'url':
            _redirectUrl(self.context, self.request, url, notification.where)
        })
    def _append_notification(self, notification):
        try:
            content = validateNotification(self.context, notification)
        except NotificationValueError:
            return
        if IBrowserView.providedBy(content):
            url = content.context.absolute_url() + '/@@' + content.__name__
        else:
            context_state = content.restrictedTraverse('plone_context_state')
            url = context_state.view_url()

        self.notifications.append({
                'title': show(self.context, self.request, notification),
                'url': _redirectUrl(
                    self.context, self.request,
                    url, notification.where
                    )
                })
 def __init__(self, context, *args, **kwargs):
     # Fix issue where context is a template based view class
     while IBrowserView.providedBy(context) and context is not None:
         context = aq_parent(aq_inner(context))
     super(NavigationTile, self).__init__(context, *args, **kwargs)
     self.urltool = getToolByName(self.context, 'portal_url')
Beispiel #24
0
            # Sanitize /view
            text = text.split("/view")[0]
            obj = doc.unrestrictedTraverse(text, None)
            if obj is None:
                obj = doc.unrestrictedTraverse(nav_root_path + '/' + text, None)

            if obj is None:
                err = "No object found"
                logger.warn("%s while trying "
                                 "doc.unrestrictedTraverse(text)"
                                 "with doc: %s    text: %s",
                                 err, doc.absolute_url_path(), text)
                continue
            else:
                if IBrowserView.providedBy(obj):
                    obj = obj.context
                elif (IPageTemplate.providedBy(obj) or
                      IPythonScript.providedBy(obj) or
                      isinstance(obj, FSPythonScript)):
                    obj = obj.getParentNode()

                if not canRelate(doc, obj):
                    continue

                uid = IUUID(obj, None)
                if not uid:
                    continue

                if uid == myuid:
                    continue
        portal_path = site.portal_url.getPortalPath()
        if path.startswith(portal_path):
            path = path[len(portal_path):]

        if site is None:
            return

        if self._target is None:
            try:
                # remove heading /
                self._target = site.restrictedTraverse(path[1:])
            except KeyError, e:
                logger.error('get_target error -> %s' % e)
                return

        if IBrowserView.providedBy(self._target):
            self._target = self._target.context

        return self._target


class ProxyOembedProvider(OEmbedProvider, ConsumerView):
    """This oembed provider can be used as proxy consumer"""
    def __init__(self, context, request):
        OEmbedProvider.__init__(self, context, request)
        ConsumerView.__init__(self, context, request)
        self.is_local = False

    def update(self):
        if self.url is None:
            self.url = self.request.get('url', None)
Beispiel #26
0
 def __init__(self, context, *args, **kwargs):
     # Fix issue where context is a template based view class
     while IBrowserView.providedBy(context) and context is not None:
         context = Acquisition.aq_parent(Acquisition.aq_inner(context))
     super(BaseViewletTile, self).__init__(context, *args, **kwargs)
Beispiel #27
0
 def __init__(self, context, request):
     # Fix issue where context is a template based view class
     while IBrowserView.providedBy(context) and context is not None:
         context = Acquisition.aq_parent(Acquisition.aq_inner(context))
     super(ToolbarTile, self).__init__(context, request)
Beispiel #28
0
 def __init__(self, context, request):
     # Fix issue where context is a template based view class
     while IBrowserView.providedBy(context) and context is not None:
         context = Acquisition.aq_parent(Acquisition.aq_inner(context))
     super(ToolbarTile, self).__init__(context, request)
 def __init__(self, context, *args, **kwargs):
     # Fix issue where context is a template based view class
     while IBrowserView.providedBy(context) and context is not None:
         context = aq_parent(aq_inner(context))
     super(NavigationTile, self).__init__(context, *args, **kwargs)
     self.urltool = getToolByName(self.context, 'portal_url')
Beispiel #30
0
 def __init__(self, context, *args, **kwargs):
     # Fix issue where context is a template based view class
     while IBrowserView.providedBy(context) and context is not None:
         context = Acquisition.aq_parent(Acquisition.aq_inner(context))
     super(BaseViewletTile, self).__init__(context, *args, **kwargs)