示例#1
0
文件: like.py 项目: CGTIC/Plone_SP
    def __call__(self, REQUEST, RESPONSE):
        registry = getUtility(IRegistry)
        anonuid = None
        anonymous_voting = registry.get('cioppino.twothumbs.anonymousvoting', False)
        portal_state = getMultiAdapter((self.context, self.request),
                                       name='plone_portal_state')

        if portal_state.anonymous():
            if not anonymous_voting:
                return RESPONSE.redirect('%s/login?came_from=%s' %
                                         (portal_state.portal_url(),
                                          REQUEST['HTTP_REFERER'])
                                         )
            else:
                anonuid = self.request.cookies.get(COOKIENAME, None)
                if anonuid is None:
                    anonuid = str(uuid4())
                    RESPONSE.setCookie(COOKIENAME, anonuid)

        form = self.request.form
        action = None
        if form.get('form.lovinit', False):
            action = rate.loveIt(self.context, userid=anonuid)
        elif form.get('form.hatedit', False):
            action = rate.hateIt(self.context, userid=anonuid)
        else:
            return _(u"We don't like ambiguity around here. Check yo self "
                     "before you wreck yo self.")

        if not form.get('ajax', False):
            return RESPONSE.redirect(REQUEST['HTTP_REFERER'])
        else:
            tally = rate.getTally(self.context)
            tally['action'] = action

            # Create handy translate function
            translate = self._get_translator()
            ltool = getToolByName(self, 'portal_languages')
            target_language = ltool.getPreferredLanguage()

            tally['msg'] = translate(
                self._getMessage(action),
                target_language=target_language
            )
            tally['close'] = translate(
                _(u"Close"),
                target_language=target_language
            )

            RESPONSE.setHeader('Content-Type',
                               'application/json; charset=utf-8')
            response_json = json.dumps(tally)
            RESPONSE.setHeader('content-length', len(response_json))
            return response_json
示例#2
0
    def __call__(self, REQUEST, RESPONSE):
        form = self.request.form
        if form.get('form.lovinit', False):
            rate.loveIt(self.context)
        elif form.get('form.hatedit', False):
            rate.hateIt(self.context)
        else:
            return _(u"We don't like ambiguity around here. Check yo self before you wreck yo self.")

        tally = rate.getTally(self.context)
        RESPONSE.setHeader('Content-Type', 'application/javascript')
        return json.dumps(tally)
示例#3
0
 def update(self):
     super(DocumentIconActionsViewlet, self).update()
     self.actions = list(self.actions)
     self.actions_icon = []
     for action in self.actions:
         if action['icon']:
             self.actions_icon.append(action)
     for action in self.actions_icon:
         self.actions.remove(action)
     self.rate = rate.getTally(self.context)
     self.fav = self.context.restrictedTraverse(VIEW_NAME)
     self.comments_view = \
         self.context.restrictedTraverse("@@plone.comments")
示例#4
0
    def __call__(self, REQUEST, RESPONSE):
        registry = getUtility(IRegistry)
        anonuid = None
        anonymous_voting = registry.get('cioppino.twothumbs.anonymousvoting',
                                        False)
        portal_state = getMultiAdapter((self.context, self.request),
                                       name='plone_portal_state')

        if portal_state.anonymous():
            if not anonymous_voting:
                return RESPONSE.redirect(
                    '%s/login?came_from=%s' %
                    (portal_state.portal_url(), REQUEST['HTTP_REFERER']))
            else:
                anonuid = self.request.cookies.get(COOKIENAME, None)
                if anonuid is None:
                    anonuid = str(uuid4())
                    RESPONSE.setCookie(COOKIENAME, anonuid)

        form = self.request.form
        action = None
        if form.get('form.lovinit', False):
            action = rate.loveIt(self.context, userid=anonuid)
        elif form.get('form.hatedit', False):
            action = rate.hateIt(self.context, userid=anonuid)
        else:
            return _(u"We don't like ambiguity around here. Check yo self "
                     "before you wreck yo self.")

        if not form.get('ajax', False):
            return RESPONSE.redirect(REQUEST['HTTP_REFERER'])
        else:
            tally = rate.getTally(self.context)
            tally['action'] = action

            # Create handy translate function
            translate = self._get_translator()
            ltool = getToolByName(self, 'portal_languages')
            target_language = ltool.getPreferredLanguage()

            tally['msg'] = translate(self._getMessage(action),
                                     target_language=target_language)
            tally['close'] = translate(_(u"Close"),
                                       target_language=target_language)

            RESPONSE.setHeader('Content-Type',
                               'application/json; charset=utf-8')
            response_json = json.dumps(tally)
            RESPONSE.setHeader('content-length', len(response_json))
            return response_json
示例#5
0
    def __call__(self, REQUEST, RESPONSE):

        # First check if the user is allowed to rate
        portal_state = getMultiAdapter((self.context, self.request),
                                       name='plone_portal_state')
        if portal_state.anonymous():
            return RESPONSE.redirect('%s/login?came_from=%s' % (portal_state.portal_url(), REQUEST['HTTP_REFERER']))


        form = self.request.form
        action = None
        if form.get('form.lovinit', False):
            action = rate.loveIt(self.context)
        elif form.get('form.hatedit', False):
            action = rate.hateIt(self.context)
        else:
            return _(u"We don't like ambiguity around here. Check yo self before you wreck yo self.")

        if not form.get('ajax', False):
            return RESPONSE.redirect(REQUEST['HTTP_REFERER'])
        else:
            tally = rate.getTally(self.context)
            tally['action'] = action

            # Create handy translate function
            td = queryUtility(ITranslationDomain, name='cioppino.twothumbs')
            if td:
                tx = td.translate
            else:
                # Workaround for non-registered translation domain to prevent breaking
                def tx(msgid, target_language=None):
                    return msgid

            ltool = getToolByName(self, 'portal_languages')
            target_language = ltool.getPreferredLanguage()

            if(action=='like'):
                tally['msg'] = tx(_(u"You liked this. Thanks for the feedback!"), target_language=target_language)
            elif(action=='dislike'):
                tally['msg'] = tx(_(u"You dislike this. Thanks for the feedback!"), target_language=target_language)
            elif(action=='undo'):
                tally['msg'] = tx(_(u"Your vote has been removed."), target_language=target_language)

            tally['close'] = tx(_(u"Close"), target_language=target_language)
            
            RESPONSE.setHeader('Content-Type', 'application/json; charset=utf-8')
            response_json = json.dumps(tally)
            RESPONSE.setHeader('content-length', len(response_json))
            return response_json
 def update(self):
     self.updateInit()
     self.updateGroup()
     if self.creator_info is None:
         name = "@@creator_memberinfo"
         self.creator_info = self.context.restrictedTraverse(name)
     if self.typesUseViewActionInListings is None:
         pp = getToolByName(self.context, 'portal_properties')
         self.typesUseViewActionInListings = pp.site_properties.getProperty(
             'typesUseViewActionInListings', ())
     if self.rate is None:
         self.rate = rate.getTally(self.context)
     if self.fav is None:
         self.fav = self.context.restrictedTraverse(VIEW_NAME)
     self.icon_type = icons.getType(self.context.portal_type)
     status = self.wtool.getInfoFor(self.context, 'review_state', None)
     self.icon_status = icons.getStatus(status)
 def update(self):
     self.updateInit()
     self.updateGroup()
     if self.creator_info is None:
         name = "@@creator_memberinfo"
         self.creator_info = self.context.restrictedTraverse(name)
     if self.typesUseViewActionInListings is None:
         pp = getToolByName(self.context, 'portal_properties')
         self.typesUseViewActionInListings = pp.site_properties.getProperty(
             'typesUseViewActionInListings', ()
         )
     if self.rate is None:
         self.rate = rate.getTally(self.context)
     if self.fav is None:
         self.fav = self.context.restrictedTraverse(VIEW_NAME)
     self.icon_type = icons.getType(self.context.portal_type)
     status = self.wtool.getInfoFor(self.context, 'review_state', None)
     self.icon_status = icons.getStatus(status)
示例#8
0
    def __call__(self, REQUEST, RESPONSE):
        form = self.request.form
        if form.get('form.lovinit', False):
            rate.loveIt(self.context)
            # vipod: additionally re-index a few more indexes
            self.context.reindexObject(idxs=['avg_ratings',
                'total_down_ratings'])
        elif form.get('form.hatedit', False):
            rate.hateIt(self.context)
            # vipod: additionally re-index a few more indexes
            self.context.reindexObject(idxs=['avg_ratings',
                'total_down_ratings'])
        else:
            return _(u"We don't like ambiguity around here. "
                     "Check yo self before you wreck yo self.")

        tally = rate.getTally(self.context)
        RESPONSE.setHeader('Content-Type', 'application/javascript')
        return json.dumps(tally)
示例#9
0
 def getStats(self):
     """
     Look up the annotation on the object and return the number of
     likes and hates
     """
     return rate.getTally(self.context)
示例#10
0
 def getStats(self):
     """
     Look up the annotation on the object and return the number of
     likes and hates
     """
     return rate.getTally(self.context)
示例#11
0
def total_ratings(object, **kw):
    tally = rate.getTally(object)
    return int(tally['ups']) - int(tally['downs'])