Beispiel #1
0
class ContentInMissionReport(grok.Viewlet):
    grok.context(IContentish)
    grok.viewletmanager(manager.IBelowContentTitle)
    grok.template('content_in_mission_report')
    grok.layer(IProductSpecific)

    def available(self):
        if not (IATFile.providedBy(self.context)
                or IATBlobFile.providedBy(self.context)):
            return False
        return bool(self.mission_report())

    def mission_report(self):
        parent = aq_parent(self.context)
        if IMissionReport.providedBy(parent):
            return parent
        return None
Beispiel #2
0
class Tmpls(grok.Viewlet):
    grok.context(Interface)
    grok.name(u"coppe.govupload.tmpls")
    grok.require("cmf.AddPortalContent")
    grok.template("tmpls")
    grok.viewletmanager(IHtmlHead)

    def enabled(self):
        """
            Only renders the templates if the context is a folderish or
            the default view of a folderish
        """
        context = self.context
        context_state = getMultiAdapter((context, self.request),
                                        name=u'plone_context_state')
        if context_state.is_default_page():
            context = context.aq_parent
        return IFolderish.providedBy(context)
class RedirectorViewlet(grok.Viewlet):
    """Viewlet which adds the redirects for the IRedirector."""

    grok.name('redirector')
    grok.context(Interface)
    grok.viewletmanager(IAboveContentTitle)
    grok.require('zope2.View')

    JS_TEMPLATE = '''
<script type="text/javascript" class="redirector">
$(function() {
  if ('%(url)s'.split(':')[0] == 'oc') {
    window.location = '%(url)s';
  } else {
    window.setTimeout("window.open('%(url)s', '%(target)s');", %(timeout)s);
  }
});
</script>
'''

    def view_name(self):
        view = getattr(self, 'view', None)
        if view:
            return getattr(view, '__name__', None)

    def render(self):
        redirector = IRedirector(self.request)

        # If we're on the CSRF confirm-action dialog, we don't want to
        # trigger any redirects.
        if self.view_name() == 'confirm-action':
            # Consume the redirector cookie to avoid unconditional redirects
            # immediately *after* the confirm-action view. If the user
            # confirms, the redirector cookies will be set again.
            redirector.get_redirects(remove=True)
            return ''

        redirects = redirector.get_redirects(remove=True)
        html = []
        for redirect in redirects:
            html.append(RedirectorViewlet.JS_TEMPLATE % redirect)

        return ''.join(html)
Beispiel #4
0
class CollectionContentFilter(grok.Viewlet):
    grok.context(IATTopic)
    grok.viewletmanager(manager.IHtmlHead)
    grok.layer(IProductSpecific)

    def available(self):
        return True

    def render(self):
        searchableText = self.request.get('contentFilterSearchableText', '')
        if searchableText:
            contentFilter = dict(self.request.get('contentFilter', {}))
            contentFilter['SearchableText'] = searchableText
            self.request.set('contentFilter', contentFilter)
            IStatusMessage(self.request).add(
                _(u'search_results_notification',
                  default=u'Displaying search results for "${searchableText}"',
                  mapping={'searchableText': searchableText.decode('utf-8')}))
        return ''
Beispiel #5
0
class PersonalCampaignPageToolbarViewlet(grok.Viewlet):
    grok.name('collective.salesforce.fundraising.PersonalCampaignPageToolbar')
    grok.require('zope2.View')
    grok.context(IPersonalCampaignPage)
    grok.template('personal-campaign-toolbar')
    grok.viewletmanager(IPortalHeader)

    def update(self):
        # FIXME - I tried for hours to get checkPermission from the security manager to work to no avail... falling back to old school method
        pm = getToolByName(self.context, 'portal_membership')
        self.can_edit = pm.checkPermission(
            'collective.salesforce.fundraising: Edit Personal Campaign',
            self.context)
        self.can_view_donors = pm.checkPermission(
            'collective.salesforce.fundraising: View Personal Campaign Donors',
            self.context)
        self.can_promote = pm.checkPermission(
            'collective.salesforce.fundraising: Promote Personal Campaign',
            self.context)
Beispiel #6
0
class ListTagsNews(viewletBase):
    grok.name('genweb.listtags')
    grok.context(INewsItem)
    grok.template('listtags')
    grok.viewletmanager(IAboveContentTitle)
    grok.require('genweb.authenticated')
    grok.layer(IUlearnTheme)

    def isTagFollowed(self, category):
        portal = getSite()
        current_user = api.user.get_current()
        userid = current_user.id

        soup_tags = get_soup('user_subscribed_tags', portal)
        tags_soup = [r for r in soup_tags.query(Eq('id', userid))]
        if tags_soup:
            tags = tags_soup[0].attrs['tags']
            return True if category in tags else False
        else:
            return False
Beispiel #7
0
class CheckedOutViewlet(grok.Viewlet):

    grok.viewletmanager(IAboveContent)
    grok.context(IDocumentSchema)
    grok.view(IViewView)
    grok.require('zope2.View')

    def update(self):
        manager = queryMultiAdapter((self.context, self.request),
                                    ICheckinCheckoutManager)
        if not manager:
            self.available = False
        elif not manager.checked_out():
            self.available = False
        else:
            self.available = True

            info = getUtility(IContactInformation)
            owner_id = manager.checked_out()
            self.checkout_owner = info.render_link(owner_id)
class TimeLineViewlet(grok.Viewlet):
    grok.context(ISnippet)
    grok.name('collective.giesing.TimeLineViewlet')
    grok.require('zope2.View')
    grok.viewletmanager(IBelowContent)

    def getTimeLine(self):
        cat = getToolByName(self.context, 'portal_catalog')
        query = dict(
            object_provides='collective.giesing.snippet.ISnippet',
            timetag=dict(query=[
                self.context.timetag,
            ], range='min'),
            sort_on='timetag',
        )
        future = [x for x in cat(query)]
        query['timetag']['range'] = 'max'
        past = [x for x in cat(query)]
        timeline = past[-3:-1] + future[:3]
        return timeline
Beispiel #9
0
class ReviewResultForAuthor_IBelowContent_IArticle(grok.Viewlet):
    grok.viewletmanager(IBelowContent)
    grok.context(IArticle)
    template = ViewPageTemplateFile('template/reviewResultForAuthor.pt')

    def currentUserId(self):
        user = api.user.get_current()
        if user:
            return user.getId()

    def getState(self):
        return api.content.get_state(obj=self.context)

    def render(self):
        self.getView = api.content.get_view(
            name='view',
            context=self.context,
            request=self.context.REQUEST,
        )
        return self.template()
Beispiel #10
0
class statement_viewlet(grok.Viewlet):
    grok.context(IStatement)
    grok.require('zope2.View')
    grok.template('statement_viewlet')
    grok.viewletmanager(IAboveContent)

    @property
    def catalog(self):
        return getToolByName(self.context, 'portal_catalog')

    def contents(self):
        brains = self.catalog.unrestrictedSearchResults(
            path={
                'query': '/'.join(self.context.getPhysicalPath()),
                'depth': 1
            },
            portal_type='interfaithclimate.signup.signature',
            review_state='published')[:15]
        brains2 = self.catalog.unrestrictedSearchResults(
            path={
                'query': '/'.join(self.context.getPhysicalPath()),
                'depth': 0
            })
        results = []
        path = ''
        for brain in brains:
            obj = brain._unrestrictedGetObject()
            results.append({
                'name':
                str(obj.first_name) + ' ' + str(obj.last_name),
                'designation':
                obj.designation,
                'organization':
                obj.organization,
                'location':
                str(obj.country)
            })
        for brain in brains2:
            path = brain.getPath()

        return [results, path]
Beispiel #11
0
class slider(viewletBase):
    grok.context(IPloneSiteRoot)
    grok.name('vilaix.slider')
    grok.template('slider')
    grok.viewletmanager(IPortalHeader)
    grok.layer(IVilaixTheme)

    def sliderItems(self):
        catalog = getToolByName(self.context, 'portal_catalog')
        utool = getToolByName(self.context, 'portal_url')
        path = '{0}/material-multimedia/sliders'.format(utool.getPortalPath()),
        now = DateTime()

        items = catalog.searchResults(portal_type='Slider',
                                      path=dict(query=path, depth=1),
                                      review_state='published',
                                      Subject='principal',
                                      expires={
                                          'query': now,
                                          'range': 'min',
                                      },
                                      sort_on='getObjPositionInParent')

        results = []
        for item in items:
            results.append({
                'img':
                '%s/@@images/image' % (item.getURL()),
                'title':
                item.Title,
                'text':
                item.Description,
                'alt':
                item.getObject().alt,
                'url':
                item.getObject().remoteUrl,
                'target':
                item.open_link_in_new_window and '_blank' or None,
            })

        return results
Beispiel #12
0
class TemplatesViewlet(BaseViewlet):

    permission = 'cmf.ModifyPortalContent'

    grok.context(IFolderish)
    grok.require(permission)

    grok.name('seantis.reservation.mailviewlet')
    grok.viewletmanager(OverviewletManager)

    grok.order(4)

    _template = grok.PageTemplateFile('templates/email_templates.pt')

    @view.memoize
    def templates(self):
        templates = [
            t.getObject() for t in utils.portal_type_in_context(
                self.context, portal_type='seantis.reservation.emailtemplate')
        ]
        return sorted(templates, key=lambda t: t.title)

    def links(self, template=None):

        # global links
        if not template:
            baseurl = self.context.absolute_url()
            return [(_(u'Add email template'),
                     baseurl + '/++add++seantis.reservation.emailtemplate')]

        # template specific links
        links = []

        baseurl = template.absolute_url()
        links.append((_(u'Edit'), baseurl + '/edit'))
        links.append((_(u'Delete'), baseurl + '/delete_confirmation'))

        return links

    def render(self, **kwargs):
        return self._template.render(self)
Beispiel #13
0
class JavascriptSettings(BaseViewlet):

    grok.context(Interface)
    grok.viewletmanager(IHtmlHead)

    @property
    def language(self):
        context = self.context.aq_inner
        portal_state = getMultiAdapter((context, self.request),
                                       name=u'plone_portal_state')
        return portal_state.language()

    @property
    def settings(self):
        return {'language': self.language}

    def render(self):
        return TEMPLATE % {
            'name': 'seantis_reservation_variables',
            'variables': json.dumps(self.settings)
        }
class socialtoolsViewlet(viewletBase):
    grok.name('genweb.socialtools')
    grok.template('socialtools')
    grok.viewletmanager(IAboveContentTitle)
    grok.layer(IGenwebServeisticLayer)

    def getData(self):
        Title = aq_inner(self.context).Title()
        contextURL = self.context.absolute_url()

        return dict(Title=Title, URL=contextURL)

    def is_social_tools_enabled(self):
        return not self.genweb_config().treu_icones_xarxes_socials

    def is_servei(self):
        return IServeiTIC.providedBy(self.context)

    @property
    def url_rss(self):
        return "{0}/notificacions/RSS".format(
            self.context.absolute_url()) if self.is_servei() else ''
Beispiel #15
0
class CheckedOutViewlet(grok.Viewlet):
    """A viewlet which shows a statusmessage like message:
    `This item is being checked out by User XY` when a document
    is checked out."""

    grok.viewletmanager(IAboveContent)
    grok.context(IDocumentSchema)
    grok.view(IViewView)
    grok.require('zope2.View')

    def update(self):
        manager = queryMultiAdapter((self.context, self.request),
                                    ICheckinCheckoutManager)
        if not manager:
            self.available = False
        elif not manager.get_checked_out_by():
            self.available = False
        else:
            self.available = True

            self.checkout_by_link = Actor.user(
                manager.get_checked_out_by()).get_link()
Beispiel #16
0
class Homepage2Slider(grok.Viewlet):
    grok.context(IHomepage2)
    grok.view(Index)
    grok.viewletmanager(manager.IPortalTop)
    grok.template('homepage2slider')
    grok.layer(IProductSpecific)

    def available(self):
        return True

    def slider_items(self):
        if not self.context.slider_items:
            return []
        return [i.to_object for i in self.context.slider_items]

    def get_image_tag(self, obj):
        scales = obj.restrictedTraverse('@@images')
        image = scales.scale('carousel_image', width=782, height=330)
        placeholder = '<img src="http://placehold.it/782x330"/>'
        if not image:
            return placeholder
        return image.tag()
class LocationViewlet(grok.Viewlet):
    grok.context(ISnippet)
    grok.name('collective.giesing.LocationViewlet')
    grok.require('zope2.View')
    grok.viewletmanager(IBelowContent)

    def getSnippets(self):
        intids = getUtility(IIntIds)
        relcatalog = getUtility(ICatalog)

        snippets = [
            intids.getObject(rv.from_id) for rv in relcatalog.findRelations(
                {'to_id': self.context.locationtag.to_id})
        ]
        timeline = [
            dict(Title=obj.Title(),
                 getURL=obj.absolute_url(),
                 storyline=obj.aq_parent.Title(),
                 timetag=obj.timetag) for obj in snippets
        ]
        timeline.sort(key=lambda x: x['timetag'])
        return timeline
Beispiel #18
0
class gwLanguageSelectorForRoot(gwLanguageSelectorBase):
    # Show link to languages published in control panel
    grok.context(IPloneSiteRoot)
    grok.viewletmanager(gwLanguageSelectorViewletManager)
    # grok.layer(IGenwebLayer)

    def languages(self):
        languages_info = super(gwLanguageSelectorForRoot, self).languages()
        idiomes_publicats = genweb_config().idiomes_publicats
        redirect_to_root = genweb_config().languages_link_to_root

        user_has_permission_at_root = havePermissionAtRoot()
        results = []

        filtered_languages = [lang_info for lang_info in languages_info if user_has_permission_at_root or lang_info['code'] in idiomes_publicats]

        for lang_info in filtered_languages:
            # Avoid to modify the original language dict
            data = lang_info.copy()
            data['translated'] = True
            query_extras = {
                'set_language': data['code'],
            }
            if not redirect_to_root:
                post_path = getPostPath(self.context, self.request)
                if post_path:
                    query_extras['post_path'] = post_path
                data['url'] = addQuery(
                    self.request,
                    self.context.absolute_url(),
                    **query_extras
                )
            else:  # Redirect to root when make a language click
                data['url'] = self.portal_url() + '?set_language=' + data['code']

            results.append(data)

        return results
Beispiel #19
0
class gwPersonalBarViewlet(PersonalBarViewlet, viewletBase):
    grok.name('genweb.personalbar')
    grok.viewletmanager(IPortalTop)
    grok.layer(IVilaixTheme)

    index = ViewPageTemplateFile('viewlets_templates/personal_bar.pt')

    def showRootFolderLink(self):
        return havePermissionAtRoot()

    def canManageSite(self):
        return checkPermission("plone.app.controlpanel.Overview",
                               self.portal())

    def getPortraitMini(self):
        pm = getToolByName(self.portal(), 'portal_membership')
        return pm.getPersonalPortrait().absolute_url()

    def logout_link(self):
        if HAS_CAS:
            return '{}/cas_logout'.format(self.portal_url)
        else:
            return '{}/logout'.format(self.portal_url)
Beispiel #20
0
class QuestionInfo(silvaviews.Viewlet):
    grok.context(IPollQuestion)
    grok.view(Publish)
    grok.viewletmanager(silvaforms.SMIFormPortlets)
    grok.order(40)

    def available(self):
        return self.version is not None

    def update(self):
        self.version = self.context.get_viewable()
        if self.version is not None:
            dates = self.request.locale.dates
            format = dates.getFormatter('dateTime', 'short').format
            convert = lambda d: d is not None and format(d) or None
            self.question_start_datetime = convert(
                self.version.question_start_datetime())
            self.question_end_datetime = convert(
                self.version.question_end_datetime())
            self.result_start_datetime = convert(
                self.version.result_start_datetime())
            self.result_end_datetime = convert(
                self.version.result_end_datetime())
Beispiel #21
0
class HeadTitleViewlet(grok.Viewlet):
    grok.context(IItem)
    grok.layer(ISantaTemplatesLayer)
    grok.name('santa.head.title')
    grok.require('zope2.View')
    grok.template('head-title')
    grok.viewletmanager(IPortalHeader)

    def head(self):
        catalog = getToolByName(self.context, 'portal_catalog')
        portal_state = getMultiAdapter((self.context, self.request),
                                       name="plone_portal_state")
        portal = portal_state.portal()
        items = {
            'title': portal.title,
            'description': portal.description,
            'portal_url': portal.absolute_url(),
        }
        head = portal.get('foundation')
        if head:
            query = {
                'path': {
                    'query': '/'.join(head.getPhysicalPath()),
                    'depth': 1
                }
            }
            brains = catalog(query)
            if len(brains) > 0:
                brain = brains[0]
                title = brain.Title
                description = brain.Description
                if title:
                    items.update({'title': title})
                if description:
                    items.update({'description': description})
        return items
Beispiel #22
0
class FolderViewlet(FeedViewlet):
    grok.name('santa.viewlet.folder')
    grok.viewletmanager(SantaFolderViewletManager)

    def parent_path(self):
        oid = self.context.id
        if oid == 'cases':
            oid = 'partners'
        portal_state = getMultiAdapter((self.context, self.request),
                                       name="plone_portal_state")
        portal = portal_state.portal()
        return '{0}/{1}'.format(
            '/'.join(portal.getPhysicalPath()),
            oid,
        )

    def _path(self):
        oid = self.context.id
        if oid == 'cases':
            portal_state = getMultiAdapter((self.context, self.request),
                                           name="plone_portal_state")
            portal = portal_state.portal()
            return '{0}/cases'.format('/'.join(portal.getPhysicalPath()), )
        else:
            return super(FolderViewlet, self)._path()

    def has_date(self):
        oid = self.context.id
        if oid != 'inquiries':
            return True

    def items(self):
        oid = self.context.id
        limit = 5
        if oid == 'news':
            brains = self._brains(interface=IATNewsItem, limit=limit)
        if oid == 'events':
            brains = self._brains(interface=IATEvent,
                                  sort_on='start',
                                  limit=limit)
        if oid == 'partners':
            brains = self._brains(interface=IPartner, limit=limit)
        if oid == 'cases':
            brains = self._brains(interface=IATImage,
                                  path=self.parent_path(),
                                  depth=None,
                                  limit=limit)
        if oid == 'inquiries':
            brains = self._brains(interface=IPloneFormGenForm,
                                  sort_on=None,
                                  limit=None)
        if oid == 'foundation':
            return None
        return self._items(brains)

    def show_docs(self):
        oid = self.context.id
        if oid == 'foundation':
            return True
        return super(FolderViewlet, self).show_docs()

    def show_description(self):
        oid = self.context.id
        if oid == 'foundation':
            return True

    def _document(self):
        catalog = getToolByName(self.context, 'portal_catalog')
        languages = getToolByName(self.context, 'portal_languages')
        oids = languages.supported_langs
        query = {
            'path': {
                'query': '/'.join(self.context.getPhysicalPath()),
                'depth': 1,
            },
            'object_provides': IATDocument.__identifier__,
        }
        brains = catalog(query)
        if brains:
            brain = brains[0]
            bid = brain.id
            if bid in oids:
                return brain

    def title(self):
        doc = self._document()
        return doc and doc.Title or self.context.Title()

    def description(self):
        doc = self._document()
        return doc and doc.Description or self.context.Description()

    def url(self):
        return self.context.absolute_url()

    def text(self):
        doc = self._document()
        if doc:
            obj = doc.getObject()
            return obj.getField('text').get(obj)
Beispiel #23
0
    grok.order(30)


class Boutique(grok.Viewlet):
    grok.order(40)

    def getRandomBoutiqueItem(self):
        """
        Get one random boutiqueItem
        """
        cat = getToolByName(self.context, 'portal_catalog')
        results = cat.searchResults(portal_type=['BoutiqueItem'],
                                    review_state='published')
        results = list(results)
        random.shuffle(results)
        for boutiqueItem in results:
            if "%s/" % boutiqueItem.getURL() not in self.request.URL and  boutiqueItem.getURL() != self.request.URL:
                return boutiqueItem.getObject()
        return None

    def getAllBoutiqueItemsView(self):
        """
        Get the link to all boutique items
        """
        utool = getToolByName(self.context, 'portal_url')
        return '%s/shop' % utool()


# register all viewlets in this viewlet manager:
grok.viewletmanager(OffresViewletManager)
Beispiel #24
0
        hash_json = json.dumps([self.context.absolute_url(),
                                self.form_values],
                               sort_keys=True)
        return hashlib.md5(hash_json).hexdigest()

    @property
    def cookie_key(self):
        """ Returns a hash to identify the cookie """
        return hashlib.md5(self.context.absolute_url()).hexdigest()

    @property
    def form_values(self):
        """
        Returns the form dictionnary of the request to a format that JSON
        can handle
        """
        form = {}
        for key, value in self.request.form.items():
            key = re.sub('\[\]', '', key)
            if isinstance(value, datetime.date):
                value = value.strftime('%d/%m/%Y')
            form[key] = value
        return form


class HebergementListingViewletManager(grok.ViewletManager):
    grok.name('gites.heblisting')

# register all viewlets in this viewlet manager:
grok.viewletmanager(HebergementListingViewletManager)
Beispiel #25
0
grok.templatedir('templates')
grok.context(interface.Interface)


class HeaderViewletManager(grok.ViewletManager):
    grok.name('gites.header')


class TopHeaderViewlet(grok.Viewlet):
    grok.order(10)


class MainHeaderViewlet(grok.Viewlet):
    grok.order(20)

    def update(self):
        self.form = BasicForm(self.context, self.request)
        self.form.update()

        # Defines the placeholder for some field
        widgets_placeholder = ('fromDate', 'toDate', 'nearTo')
        for widget in self.form.widgets:
            if widget in widgets_placeholder:
                label = self.form.widgets[widget].label
                self.form.widgets[widget].placeholder = label


# register all viewlets in this viewlet manager:
grok.viewletmanager(HeaderViewletManager)
Beispiel #26
0
class Tmpls(grok.Viewlet):
    grok.context(IFolder)
    grok.name(u"collective.upload.tmpls")
    grok.require("cmf.AddPortalContent")
    grok.template("tmpls")
    grok.viewletmanager(IHtmlHead)
Beispiel #27
0
# -*- coding: utf-8 -*-
from five import grok
from zope import interface
from gites.core.interfaces import IMapViewletManager
from gites.map.browser.interfaces import IGitesMap
grok.templatedir('templates')
grok.context(interface.Interface)


class MapViewletManager(grok.ViewletManager):
    grok.name('gites.mapviewlet')
    grok.provides(IMapViewletManager)
    grok.layer(IGitesMap)

# register all viewlets in this viewlet manager:
grok.viewletmanager(MapViewletManager)
from gomobiletheme.mobipublic import MessageFactory as _

# Layer for which against all our viewlets are registered
from interfaces import IThemeLayer

# Viewlets are on all content by default.
grok.context(Interface)

# Use templates directory to search for templates.
grok.templatedir('templates')

# Viewlets are active only when gomobiletheme.basic theme layer is activated
grok.layer(IThemeLayer)

# All viewlets are registered against this dummy viewlet manager
grok.viewletmanager(base.MainViewletManager)

class Head(base.Head):

    def favicon_url(self):
        """ Get url for favicon
        """
        portal_state = getView(self.context, self.request, "plone_portal_state")
        self.portal_url = portal_state.portal_url()
        return self.portal_url + "/favicon.ico"

class Logo(base.Logo):
    """ Render site logo with link back to the site root.

    Logo will be automatically resized in the case of
    the mobile screen is very small.
Beispiel #29
0
            try:
                appendtourl = '/'.join(append_path) + \
                          '?' + make_query(formvariables, dict(set_language=data['code']))
            except UnicodeError:
                appendtourl = '/'.join(append_path) + '?set_language=' + data['code']

            if data['translated']:
                trans = translations[data['code']][0]
                container = aq_parent(trans)
                if isDefaultPage(container, trans):
                    trans = container
                state = getMultiAdapter((trans, self.request),
                        name='plone_context_state')
                data['url'] = state.view_url() + appendtourl
            else:
                container = aq_parent(context)
                if isDefaultPage(container, context):
                    context = container
                state = getMultiAdapter((context, self.request),
                        name='plone_context_state')
                try:
                    data['url'] = state.view_url() + appendtourl
                except AttributeError:
                    data['url'] = context.absolute_url() + appendtourl

        return results


grok.viewletmanager(IPortalHeader)
Beispiel #30
0
class TimeframeViewlet(BaseViewlet):

    permission = 'cmf.ModifyPortalContent'

    grok.context(IFolderish)
    grok.require(permission)

    grok.name('seantis.reservation.timeframeviewlet')
    grok.viewletmanager(OverviewletManager)

    grok.order(3)

    _template = grok.PageTemplateFile('templates/timeframes.pt')

    @property
    def workflowTool(self):
        return getToolByName(self.context, "portal_workflow")

    @view.memoize
    def timeframes(self):
        frames = [t.getObject() for t in timeframes_in_context(self.context)]
        return sorted(frames, key=lambda f: f.start)

    @property
    @view.memoize
    def titles(self):
        """Returns a dict with titles keyed by review_state. The workflow-tool
        has a getTitleForStateOnType function which should do that but
        it does not return updated values for me, just some old ones.

        The listWFStatesByTitle function on the other hand contains
        the right information and I will just use that instead.

        Once this breaks I'll read the source of the workflow tool, until this
        happens I'm off to do useful things.

        """

        titles = self.workflowTool.listWFStatesByTitle()
        return dict(((t[1], t[0]) for t in titles))

    def state(self, timeframe):
        state = self.workflowTool.getStatusOf(
            "timeframe_workflow", timeframe
        )['review_state']
        title = self.titles[state]
        return state, utils.translate_workflow(
            self.context, self.request, title
        )

    def render(self, **kwargs):
        if self.context is None:
            return u''

        return self._template.render(self)

    def visible(self, frame):
        state = self.state(frame)[0]
        return state == 'visible'

    def links(self, frame=None):

        # global links
        if not frame:
            baseurl = self.context.absolute_url()
            return [(_(u'Add timeframe'),
                    baseurl + '/++add++seantis.reservation.timeframe')]

        # frame specific links
        links = []

        action_tool = getToolByName(frame, 'portal_actions')
        actions = action_tool.listFilteredActionsFor(frame)['workflow']

        for action in actions:
            if action['visible'] and action['available']:
                action['title'] = utils.translate_workflow(
                    self.context, self.request, action['title']
                )
                links.append((action['title'], action['url']))

        baseurl = frame.absolute_url()
        links.append((_(u'Edit'), baseurl + '/edit'))
        links.append((_(u'Delete'), baseurl + '/delete_confirmation'))

        return links
Beispiel #31
0
class InternalReviewerDesktop_IBelowContent_IProfile(grok.Viewlet):
    grok.viewletmanager(IBelowContent)
    grok.context(IProfile)
    grok.require('cmf.AddPortalContent')
    template = ViewPageTemplateFile('template/internalReviewerDesktop.pt')

    def reviewStateCount(self):
        # waitingAssignEx: 待指定委員
        self.waitingAssignEx = 0
        # waitingForReview: 審查中
        self.waitingForReview = 0
        # endReview: 審查完
        self.endReview = 0
        catalog = self.context.portal_catalog
        currentUserId = api.user.get_current().getId()
        profileBrain = catalog({'Type': 'Profile', 'Creator': currentUserId})
        if len(profileBrain) == 0:
            return
        profile = profileBrain[0]
        brain = catalog({
            'Type': 'Article',
            'review_state': ['internalAssigned', 'retrial'],
            'assignInternalReviewer': profile.id
        })
        #        import pdb; pdb.set_trace()
        if len(brain) == 0:
            return
        # 計算待指定委員
        for item in brain:
            count = 0
            if item.assignExternalReviewer1:
                count += 1
            if item.assignExternalReviewer2:
                count += 1
            if item.assignExternalReviewer3:
                count += 1
            if count < 2:
                self.waitingAssignEx += 1

        # 計算審查中, 審查完
        for item in brain:
            itemObj = item.getObject()
            yes, no = 0, 0
            if bool(item.assignExternalReviewer1) and bool(
                    itemObj.reviewConfirm1):
                yes += 1
            elif bool(item.assignExternalReviewer1) and not bool(
                    itemObj.reviewConfirm1):
                no += 1
            if bool(item.assignExternalReviewer2) and bool(
                    itemObj.reviewConfirm2):
                yes += 1
            elif bool(item.assignExternalReviewer2) and not bool(
                    itemObj.reviewConfirm2):
                no += 1
            if bool(item.assignExternalReviewer3) and bool(
                    itemObj.reviewConfirm3):
                yes += 1
            elif bool(item.assignExternalReviewer3) and not bool(
                    itemObj.reviewConfirm3):
                no += 1
            if no > 0:
                self.waitingForReview += 1
            if yes > 1 and no == 0:
                self.endReview += 1
        return

    def render(self):
        self.reviewStateCount()
        self.getView = api.content.get_view(
            name='view',
            context=self.context,
            request=self.context.REQUEST,
        )
        return self.template()
class HeadInsert(silvaviews.Viewlet):
    """ Custom head insertions
    """
    grok.viewletmanager(porto.HTMLHeadInsert)
from Products.CMFCore.utils import getToolByName

from gites.db.interfaces import IHebergement


grok.templatedir('templates')
grok.context(IHebergement)


class HebergementViewletManager(grok.ViewletManager):
    grok.name('gites.hebergement')


class ButtonsViewlet(grok.Viewlet):
    grok.order(10)

    def backButtonAvailable(self):
        """
        Show back button only if we were already on gites website
        """
        referer = self.request.get('HTTP_REFERER')
        if not referer:
            return False
        portalUrl = getToolByName(self.context, 'portal_url')()
        if referer and referer.startswith(portalUrl):
            return True
        return False


grok.viewletmanager(HebergementViewletManager)
Beispiel #34
0
    # &#160; == &nbsp;
    # but we must remain XML compatible
    return text.replace(" ", "&#160;")


class MainViewletManager(grok.ViewletManager):
    """ This viewlet manager is responsible for all gomobiletheme.basic viewlet registrations.

    Viewlets are directly referred in main_template.pt by viewlet name,
    thus overriding Plone behavior to go through ViewletManager render step.
    """
    grok.name('gomobiletheme.basic.viewletmanager')


# Set viewlet manager default to all following viewlets
grok.viewletmanager(MainViewletManager)


class MobileViewletBase(grok.Viewlet):
    """
    Superclass for all mobile viewlets. Provides some helper methods.
    
    It is not strictly necessary to inherit other viewlets from this.
    """

    grok.baseclass()

    def is_plone4(self):
        """ Allow major viewlet change compatiblity between Plone versions from tempalte """
        return PLONE_VERSION > 3
            if cal == ['non actif'] or cal == ['bloque']:
                return False
            else:
                return True
        wrapper = getSAWrapper('gites_wallons')
        session = wrapper.session
        for heb in getHebergementsForProprio(self.context, session):
            return (heb.heb_calendrier_proprio != 'non actif')

    def isBlocked(self):
        """
        See if proprio calendars are blocked (due to 40 days delay)
        """
        cal = self.request.get('form.widgets.calendarConfig')
        if cal is not None:
            return (cal == ['bloque'])
        wrapper = getSAWrapper('gites_wallons')
        session = wrapper.session
        for heb in getHebergementsForProprio(self.context, session):
            if heb.heb_calendrier_proprio == 'bloque':
                return True
        return False

    @memoize
    def getGitesForProprio(self):
        return getUtility(IVocabularyFactory, name='proprio.hebergements')(self.context)


# register all viewlets in this viewlet manager:
grok.viewletmanager(ZoneMembreViewletManager)
                if linkLang == '' or linkLang == currentLanguage:
                    visualImage = {'imagesrc': image.getURL(),
                                   'href': relatedItem.remoteUrl,
                                   'title': relatedItem.Title(),
                                   'description': relatedItem.Description()}
                    results.append(visualImage)
        return results

    def getCarouselPackages(self):
        cat = getToolByName(self.context, 'portal_catalog')
        packages = cat.searchResults(portal_type='Package')
        results = []
        for brain in packages:
            package = brain.getObject()
            showInCarousel = getattr(package, 'showInCarousel', False)
            if showInCarousel:
                url = package.absolute_url()
                results.append({'imagesrc': "%s/largePhoto" % url,
                                'href': url,
                                'title': package.Title(),
                                'description': package.Description()})
        return results

    def getCarouselInfos(self):
        results = self.getCarouselPackages() + self.getVisualImages()
        random.shuffle(results)
        return results

# register all viewlets in this viewlet manager:
grok.viewletmanager(ProduitPackageViewletManager)
Beispiel #37
0
from five import grok
from plone.app.layout.viewlets.interfaces import IPortalTop
from zope.interface import Interface
from Products.CMFCore.utils import getToolByName
from zope.component import getMultiAdapter
from hejasverige.content.interfaces import IMyPages

grok.viewletmanager(IPortalTop)
grok.context(Interface)
grok.templatedir("templates")


class MenuBar(grok.Viewlet):
    """ Create a viewlet for transactions

    """

    grok.name("menubar")

    def update(self):
        self.mymenu_actions = []
        mship = getToolByName(self.context, "portal_membership")
        if mship.isAnonymousUser():
            return

        if not IMyPages.providedBy(self.__parent__):
            return

        super(MenuBar, self).update()

        context_state = getMultiAdapter((self.context, self.request), name=u"plone_context_state")
Beispiel #38
0
class ResponseView(grok.Viewlet, Base):
    grok.context(ITask)
    grok.name("opengever.task.response.view")
    grok.viewletmanager(BeneathTask)
    grok.order(1)

    def __init__(self, context, request, view, manager):
        grok.Viewlet.__init__(self, context, request, view, manager)
        Base.__init__(self, context, request)

    def get_css_class(self, item):
        """used for display icons in the view"""
        return get_css_class(item)

    def get_added_objects(self, response):
        # Some relations may not have an added_object attribute...
        try:
            response.added_object
        except AttributeError:
            return None

        # .. and sometimes it may be empty.
        if not response.added_object:
            return None

        # Support for multiple added objects was added, so added_object may
        # be a list of relations, but could also be a relation directly.
        if hasattr(response.added_object, '__iter__'):
            relations = response.added_object
        else:
            relations = [response.added_object]

        # Return the target objects, not the relations.
        objects = []
        for rel in relations:
            objects.append(rel.to_object)
        return objects

    def get_added_successor(self, response):
        try:
            response.successor_oguid
        except AttributeError:
            return None
        if response.successor_oguid:
            query = getUtility(ITaskQuery)
            return query.get_task_by_oguid(response.successor_oguid)
        else:
            return None

    def convert_change_values(self, fieldname, value):
        if fieldname == 'responsible_client':
            info = getUtility(IContactInformation)
            client = info.get_client_by_id(value)
            if client:
                return client.title
            else:
                return value

        elif fieldname == 'responsible':
            info = getUtility(IContactInformation)
            return info.render_link(value)

        elif isinstance(value, datetime.date):
            trans_service = getToolByName(self.context, 'translation_service')
            return trans_service.toLocalizedTime(
                datetime.datetime(value.year, value.month, value.day))

        return value
    # but we must remain XML compatible
    return text.replace(" ", "&#160;")


class MainViewletManager(grok.ViewletManager):
    """ This viewlet manager is responsible for all gomobiletheme.basic viewlet registrations.

    Viewlets are directly referred in main_template.pt by viewlet name,
    thus overriding Plone behavior to go through ViewletManager render step.
    """

    grok.name("gomobiletheme.basic.viewletmanager")


# Set viewlet manager default to all following viewlets
grok.viewletmanager(MainViewletManager)


class MobileViewletBase(grok.Viewlet):
    """
    Superclass for all mobile viewlets. Provides some helper methods.
    
    It is not strictly necessary to inherit other viewlets from this.
    """

    grok.baseclass()

    def is_plone4(self):
        """ Allow major viewlet change compatiblity between Plone versions from tempalte """
        return PLONE_VERSION > 3
Beispiel #40
0
class Modern(grok.Viewlet):

    grok.order(10)
    grok.view(Painting)
    grok.viewletmanager(Art)
Beispiel #41
0
class Classic(grok.Viewlet):

    grok.order(20)
    grok.view(Painting)
    grok.viewletmanager(Art)
from gites.core.browser.search import BasicForm


grok.templatedir('templates')
grok.context(interface.Interface)


class RechercherViewletManager(grok.ViewletManager):
    grok.name('gites.rechercher')


class RechercherViewlet(grok.Viewlet):
    grok.order(10)

    def update(self):

        self.form = BasicForm(self.context, self.request)
        self.form.update()

        # Defines the placeholder for some field
        widgets_placeholder = ('fromDate', 'toDate', 'nearTo')
        for widget in self.form.widgets:
            if widget in widgets_placeholder:
                label = self.form.widgets[widget].label
                self.form.widgets[widget].placeholder = label


# register all viewlets in this viewlet manager:
grok.viewletmanager(RechercherViewletManager)
class MonthlyStatViewlet(StatViewlet):
    grok.order(2)
    title = u'Statistique par mois'
    groupType = 'month'


class YearlyStatViewlet(StatViewlet):
    grok.order(3)
    title = u'Statistique par an'
    groupType = 'year'


class StatsContentViewletManager(grok.ViewletManager):
    grok.name('stats.content')

grok.viewletmanager(StatsContentViewletManager)


class StatForm(Form):
    """formulaire"""
    fields = field.Fields(IHebFilterForm)
    ignoreContext = True
    hebPk = None

    def findHeb(self, hebPk):
        wrapper = getSAWrapper('gites_wallons')
        session = wrapper.session
        query = session.query(Hebergement)
        query = query.filter(Hebergement.heb_pk == hebPk)
        return query.first()