当前位置: 首页>>代码示例>>Python>>正文


Python DateTime.rfc822方法代码示例

本文整理汇总了Python中DateTime.DateTime.rfc822方法的典型用法代码示例。如果您正苦于以下问题:Python DateTime.rfc822方法的具体用法?Python DateTime.rfc822怎么用?Python DateTime.rfc822使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在DateTime.DateTime的用法示例。


在下文中一共展示了DateTime.rfc822方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: set_cookie

# 需要导入模块: from DateTime import DateTime [as 别名]
# 或者: from DateTime.DateTime import rfc822 [as 别名]
 def set_cookie(self, key, value, expires=None, path='/',
                across_domain_cookie_=False, RESPONSE=None,
                **kw):
     """ set a cookie in REQUEST 
     
     'across_domain_cookie_' sets the cookie across all subdomains
     eg. www.mobilexpenses.com and mobile.mobilexpenses.com etc.
     This rule will only apply if the current domain name plus sub domain
     contains at least two dots.
     """
     if expires is None:
         then = DateTime()+365
         then = then.rfc822()
     elif isinstance(expires, int):
         then = DateTime()+expires
         then = then.rfc822()
     elif type(expires)==DateTimeType:
         # convert it to RFC822()
         then = expires.rfc822()
     else:
         then = expires
         
     if across_domain_cookie_ and not kw.get('domain'):
         
         # set kw['domain'] = '.domainname.com' if possible
         cookie_domain = self._getCookieDomain()
         if cookie_domain:
             kw['domain'] = cookie_domain
             
     if RESPONSE is None:
         RESPONSE = self.REQUEST.RESPONSE
         
     RESPONSE.setCookie(key, value, 
                        expires=then, path=path, **kw)
开发者ID:lzdych,项目名称:FriedZopeBase,代码行数:36,代码来源:Bases.py

示例2: testRFC822

# 需要导入模块: from DateTime import DateTime [as 别名]
# 或者: from DateTime.DateTime import rfc822 [as 别名]
    def testRFC822(self):
        # rfc822 conversion
        dt = DateTime('2002-05-02T08:00:00+00:00')
        self.assertEqual(dt.rfc822(), 'Thu, 02 May 2002 08:00:00 +0000')

        dt = DateTime('2002-05-02T08:00:00+02:00')
        self.assertEqual(dt.rfc822(), 'Thu, 02 May 2002 08:00:00 +0200')

        dt = DateTime('2002-05-02T08:00:00-02:00')
        self.assertEqual(dt.rfc822(), 'Thu, 02 May 2002 08:00:00 -0200')

        # Checking that conversion from local time is working.
        dt = DateTime()
        dts = dt.rfc822().split(' ')
        times = dts[4].split(':')
        _isDST = time.localtime(time.time())[8]
        if _isDST:
            offset = time.altzone
        else:
            offset = time.timezone
        self.assertEqual(dts[0], dt.aDay() + ',')
        self.assertEqual(int(dts[1]), dt.day())
        self.assertEqual(dts[2], dt.aMonth())
        self.assertEqual(int(dts[3]), dt.year())
        self.assertEqual(int(times[0]), dt.h_24())
        self.assertEqual(int(times[1]), dt.minute())
        self.assertEqual(int(times[2]), int(dt.second()))
        self.assertEqual(dts[5], "%+03d%02d" % divmod((-offset / 60), 60))
开发者ID:chitaranjan,项目名称:Uber-Food-Trucks,代码行数:30,代码来源:test_datetime.py

示例3: dictFromBrain

# 需要导入模块: from DateTime import DateTime [as 别名]
# 或者: from DateTime.DateTime import rfc822 [as 别名]
    def dictFromBrain(self, brain, editableEvents=[]):
        if type(brain.end) != DateTime:
            brainend = DateTime(brain.end)
            brainstart = DateTime(brain.start)
        else:
            brainend = brain.end
            brainstart = brain.start

        if brain.UID in editableEvents:
            editable = True
        else:
            editable = False

        if brainend - brainstart > 1.0:
            allday = True
        else:
            allday = False

        if getattr(brain, 'SFAllDay', None) in [False,True]:
            allday = brain.SFAllDay

        copycut = ''
        if self.copyDict and brain.getPath() == self.copyDict['url']:
            copycut = self.copyDict['op'] == 1 and ' event_cutted' or ' event_copied'
        typeClass = ' type-'+brain.portal_type
        colorDict = getColorIndex(self.context, self.request, brain=brain)
        colorIndex = colorDict.get('class', '')
        color = colorDict.get('color', '')
        extraClass = self.getBrainExtraClass(brain)
        HANDLE_RECURRENCE = HAS_RECURRENCE_SUPPORT and self.request.get('start') and self.request.get('end')
        if HANDLE_RECURRENCE:
            event = brain.getObject()
            start = DateTime(self.request.get('start'))
            end = DateTime(self.request.get('end'))
            occurences = IRecurrence(event).occurrences(limit_start=start, limit_end=end)
            occurenceClass = ' occurence'
        else:
            occurences = [(brainstart.rfc822(), brainend.rfc822())]
            occurenceClass = ''
        events = []
        for occurence_start, occurence_end in occurences:
            events.append({
                "id": "UID_%s" % (brain.UID),
                "title": brain.Title,
                "description": brain.Description,
                "start": HANDLE_RECURRENCE and occurence_start.isoformat() or occurence_start,
                "end": HANDLE_RECURRENCE and occurence_end.isoformat() or occurence_end,
                "url": brain.getURL(),
                "editable": editable,
                "allDay": allday,
                "className": "contextualContentMenuEnabled state-" + str(brain.review_state) + (editable and " editable" or "")+copycut+typeClass+colorIndex+extraClass+occurenceClass,
                "color": color})
        return events
开发者ID:jianaijun,项目名称:Solgema.fullcalendar,代码行数:55,代码来源:adapters.py

示例4: setAuthCookie

# 需要导入模块: from DateTime import DateTime [as 别名]
# 或者: from DateTime.DateTime import rfc822 [as 别名]
 def setAuthCookie(self, resp, cookie_name, cookie_value):
     """ this method overrides the default setAuthCookie so that we can
     set the cookie for a longer time. """
     kw = {}
     req = getattr(self, 'REQUEST', None)
     if req is not None and req.get('SERVER_URL', '').startswith('https:'):
         # Ask the client to send back the cookie only in SSL mode
         kw['secure'] = 'y'
         
     if req.get('remember_login_days'):
         days = int(req.get('remember_login_days'))
         then = DateTime() + days
         kw['expires'] = then.rfc822()
         resp.setCookie('use_remember_login_days', '1', 
                        path=self.getCookiePath(), **kw)
     else:
         resp.setCookie('use_remember_login_days', '0', 
                        path=self.getCookiePath(), **kw)
         
     resp.setCookie(cookie_name, cookie_value,
                    path=self.getCookiePath(), **kw)
         
     resp.setCookie('__issuetracker_logout_page', 
                    self.absolute_url()+'/logout', # that's how it's defined in CookieCrumbler
                    path=self.getCookiePath(), **kw)
开发者ID:peterbe,项目名称:zope_products,代码行数:27,代码来源:IssueCrumbler.py

示例5: setAuthCookie

# 需要导入模块: from DateTime import DateTime [as 别名]
# 或者: from DateTime.DateTime import rfc822 [as 别名]
    def setAuthCookie(self, resp, cookie_name, cookie_value):
        """ this method overrides the default setAuthCookie so that we can
        set the cookie for a longer time. """
        kw = {}
        req = getattr(self, 'REQUEST', None)
        if req is not None and req.get('SERVER_URL', '').startswith('https:'):
            # Ask the client to send back the cookie only in SSL mode
            kw['secure'] = 'y'

        if req.get('remember_login_days'):
            days = int(req.get('remember_login_days'))
            then = DateTime() + days
            kw['expires'] = then.rfc822()
            resp.setCookie('use_remember_login_days', '1',
                           path=self.getCookiePath(), **kw)
        else:
            resp.setCookie('use_remember_login_days', '0',
                           path=self.getCookiePath(), **kw)
            
        resp.setCookie(cookie_name, cookie_value,
                       path=self.getCookiePath(), **kw)
        
        logout_url_start = self.absolute_url()
        
        if self.REQUEST.SESSION.get('cc_in_path'):
            # that means the user authenticated in a different root
            # to where the openid instance is located
            cc_in_path = self.REQUEST.SESSION.get('cc_in_path')
            assert cc_in_path.startswith('/')
            context = aq_parent(aq_inner(self)).unrestrictedTraverse(cc_in_path.split('/')[1:])
            logout_url_start = context.absolute_url() + '/%s' % self.getId()

        resp.setCookie('__issuetracker_logout_page',
                       logout_url_start+'/logout', # that's how it's defined in CookieCrumbler
                       path=self.getCookiePath(), **kw)
开发者ID:BillTheBest,项目名称:IssueTrackerProduct,代码行数:37,代码来源:OpenID.py

示例6: __call__

# 需要导入模块: from DateTime import DateTime [as 别名]
# 或者: from DateTime.DateTime import rfc822 [as 别名]
    def __call__(self):
        """ Return csv content as http response or return info IStatusMessage
        """

        csv_content = self.all_activities_csv()

        if csv_content is not None:
            now = DateTime()
            nice_filename = '%s_%s' % ('activities_', now.strftime('%Y%m%d'))
            self.request.response.setHeader("Content-Disposition",
                                            "attachment; filename=%s.csv" % 
                                             nice_filename)
            self.request.response.setHeader("Content-Type", "text/csv")
            self.request.response.setHeader("Content-Length", len(csv_content))
            self.request.response.setHeader('Last-Modified',
                                            DateTime.rfc822(DateTime()))
            self.request.response.setHeader("Cache-Control", "no-store")
            self.request.response.setHeader("Pragma", "no-cache")
            self.request.response.write(csv_content)
        else:
            msg = _('No activities exist')
            IStatusMessage(self.request).addStatusMessage(msg,"info")

        # redirect to show the info message
        self.request.response.redirect(
                '/'.join(self.context.getPhysicalPath()))

        return csv_content
开发者ID:upfrontsystems,项目名称:tarmii.theme,代码行数:30,代码来源:exportactivities.py

示例7: __call__

# 需要导入模块: from DateTime import DateTime [as 别名]
# 或者: from DateTime.DateTime import rfc822 [as 别名]
    def __call__(self):
        """ Return csv content as http response or return info IStatusMessage
        """

        csv_content = self.logged_requests_csv()

        if csv_content is not None:
            now = DateTime()
            nice_filename = '%s_%s' % ('requestlog_', now.strftime('%Y%m%d'))

            self.request.response.setHeader("Content-Disposition",
                                            "attachment; filename=%s.csv" % 
                                             nice_filename)
            self.request.response.setHeader("Content-Type", "text/csv")
            self.request.response.setHeader("Content-Length", len(csv_content))
            self.request.response.setHeader('Last-Modified',
                                            DateTime.rfc822(DateTime()))
            self.request.response.setHeader("Cache-Control", "no-store")
            self.request.response.setHeader("Pragma", "no-cache")
            self.request.response.write(csv_content)
        else:
            msg = _('No log entries exist')
            IStatusMessage(self.request).addStatusMessage(msg,"info")

        return csv_content
开发者ID:upfrontsystems,项目名称:upfront.pagetracker,代码行数:27,代码来源:exportloggedrequests.py

示例8: _handlePost

# 需要导入模块: from DateTime import DateTime [as 别名]
# 或者: from DateTime.DateTime import rfc822 [as 别名]
    def _handlePost(self, REQUEST=None):
        regs = [self.context.registrations[a]
                    for a in REQUEST.form
                     if a != 'submit' \
                        and a[:4] != 'cert' \
                        and REQUEST.form[a] == 'on']

        certinfo = {}
        for key in ['certtitle', 'certsubtitle', 'certprenamedesc',
                    'certpostnamedesc', 'certawardtitle', 'certdate',
                    'certsigdesc', 'certborder']:
            if key not in REQUEST.form or REQUEST.form[key] == None:
                certinfo[key] = ''
            else:
                certinfo[key] = REQUEST.form[key]

        urltool = getToolByName(self.context, 'portal_url')
        portal = urltool.getPortalObject()
        portal_url = portal.absolute_url()

        pdf = generateCertificate(regs,
                                  portal_url,
                                  True,
                                  context=self.context,
                                  **certinfo)

        REQUEST.response.setHeader('Content-Disposition',
                                   'attachment; filename=%s' % pdf['filename'])
        REQUEST.response.setHeader('Content-Type', 'application/pdf')
        REQUEST.response.setHeader('Content-Length', len(pdf['file']))
        REQUEST.response.setHeader('Last-Modified',
                                   DateTime.rfc822(DateTime()))
        REQUEST.response.setHeader('Cache-Control', 'no-store')
        REQUEST.response.setHeader('Pragma', 'no-cache')
        REQUEST.response.write(pdf['file'])
开发者ID:wildcardcorp,项目名称:collective.eventmanager,代码行数:37,代码来源:event.py

示例9: __call__

# 需要导入模块: from DateTime import DateTime [as 别名]
# 或者: from DateTime.DateTime import rfc822 [as 别名]
    def __call__(self):
        """ Post the zipfile to the remote url as set up in the configlet.
        """

        zip_data = self.zip_csv()
        
        # get settings
        registry = getUtility(IRegistry)
        settings = registry.forInterface(ITARMIIRemoteServerSettings)

        # make sure that a server has been specified
        if settings.server_url != None:
            parts = urlparse.urlparse(settings.server_url)
        else:
            msg = _('Upload Server not specified in settings')
            IStatusMessage(self.request).addStatusMessage(msg,"error")
            # redirect to show the error message
            return self.request.response.redirect(
                   '/'.join(self.context.getPhysicalPath()))

        # send zip data to server
        h = httplib.HTTP(parts.netloc) # ignore leading '//'
        h.putrequest('POST', parts.path)
        now = DateTime()
        body = '\r\n' + zip_data

        memberid = os.environ['TEACHERDATA_USER']
        passwd = os.environ['TEACHERDATA_PASS']
        authstr = "%s:%s" % (memberid, passwd)

        nice_filename = '%s_%s' % ('tarmii_logs_', now.strftime('%Y%m%d'))
        h.putheader('Authorization', 'Basic ' + base64.b64encode(authstr))
        h.putheader("Content-Disposition", "attachment; filename=%s.zip" %
                                            nice_filename)
        h.putheader('Content-Type', 'application/octet-stream')
        h.putheader('Content-Length', str(len(body)))
        h.putheader('Last-Modified', DateTime.rfc822(DateTime()))
        h.endheaders()

        h.send(body)
        errcode, errmsg, headers = h.getreply()

        if errcode == 200:
            # if upload successful, set date in registry
            dt = DateTime().asdatetime().replace(tzinfo=None)
            settings.last_successful_upload = \
                datetime(dt.year, dt.month, dt.day, dt.hour, dt.minute)
            msg = str(errcode) + ' : ' +_('File sent to server')
            IStatusMessage(self.request).addStatusMessage(msg,"info")
        else:
            msg = str(errcode) + ' : ' + _('File not sent successfully')
            IStatusMessage(self.request).addStatusMessage(msg,"error")
            log = logging.getLogger('tarmii.theme.uploadtoserver')
            log.error(msg)

        # redirect to show the error message
        return self.request.response.redirect(
               '/'.join(self.context.getPhysicalPath()))
开发者ID:upfrontsystems,项目名称:tarmii.theme,代码行数:60,代码来源:uploadtoserver.py

示例10: __call__

# 需要导入模块: from DateTime import DateTime [as 别名]
# 或者: from DateTime.DateTime import rfc822 [as 别名]
    def __call__(self):
        """ Export all learners from a classlist into a CSV file, do nothing if 
            the class is empty.
        """

        csv_content = None
        # It is safe to do this at the moment, because the view is bound
        # to IClasslist.
        contentFilter = {'portal_type': 'upfront.classlist.content.learner'}
        contentFilter['sort_on'] = "id"
        contentFilter['sort_order'] = "ascending"
        learners = self.context.getFolderContents(contentFilter,
                                                  full_objects=True)
        learner_csv = StringIO()

        if learners is not None and len(learners) > 0:
            writer = csv.DictWriter(learner_csv,
                                fieldnames=['code', 'name', 'gender',
                                            'language'],
                                restval='',
                                extrasaction='ignore',
                                dialect='excel',
                                quoting=csv.QUOTE_ALL
                               )

            for learner in learners:
                ldict={'code': learner.id,
                       'name': learner.name,
                       'gender': learner.gender,
                       'language': learner.home_language.to_object.title, 
                      }
                writer.writerow(ldict)
            
            csv_content = learner_csv.getvalue()
            learner_csv.close()

            now = DateTime()
            nice_filename = 'classlist-%s' % self.context.title

            self.request.response.setHeader("Content-Disposition",
                                            "attachment; filename=%s.xls" % 
                                             nice_filename)
            self.request.response.setHeader("Content-Type", "text/csv")
            self.request.response.setHeader("Content-Length", len(csv_content))
            self.request.response.setHeader('Last-Modified',
                                            DateTime.rfc822(DateTime()))
            self.request.response.setHeader("Cache-Control", "no-store")
            self.request.response.setHeader("Pragma", "no-cache")

            self.request.response.write(csv_content)
        else:
            msg = _('The classlist has no learners')
            IStatusMessage(self.request).addStatusMessage(msg,"info")

        self.request.response.redirect(
                '/'.join(self.context.getPhysicalPath()))

        return csv_content
开发者ID:upfrontsystems,项目名称:upfront.classlist,代码行数:60,代码来源:exportclasslist.py

示例11: dictFromBrain

# 需要导入模块: from DateTime import DateTime [as 别名]
# 或者: from DateTime.DateTime import rfc822 [as 别名]
    def dictFromBrain(self, brain, args):
        eventsFilter = queryAdapter( self.context, ISolgemaFullcalendarEditableFilter )
        editpaths = eventsFilter.filterEvents(args)
        member = self.context.portal_membership.getAuthenticatedMember()
        memberid = member.id

        #Scheduler changes
        if brain.getObject().portal_type == "collective.dexterity.appointments.timeslot" or brain.getObject().portal_type == "collective.dexterity.appointments.person":
            start = DateTime(brain.getObject().start)
            end = DateTime(brain.getObject().end)
        else:
            start = brain.start
            end = brain.end

        #End Scheduler changes

        if memberid in brain.Creator:
            editable = True
        else:
            editable = False
        if brain.getURL() in editpaths:
            editable = True
        else:
            editable = False
        if end - start > 1.0:
            allday = True
        else:
            allday = False
        if getattr(brain, 'SFAllDay', None) in [False,True]:
            allday = brain.SFAllDay
        copycut = ''
        if self.copyDict and brain.getPath() == self.copyDict['url']:
            copycut = self.copyDict['op'] == 1 and ' event_cutted' or ' event_copied'
        typeClass = ' type-'+brain.portal_type
        colorIndex = getColorIndex(self.context, self.request, brain=brain)
        extraClass = self.getExtraClass(brain)
        return {"id": "UID_%s" % (brain.UID), 
                "title": brain.Title, 
                "description": brain.Description,
                "start": start.rfc822(),
                "end": end.rfc822(),
                "url": brain.getURL(),
                "editable": editable,
                "allDay": allday, 
                "className": "contextualContentMenuEnabled state-" + str(brain.review_state) + (editable and " editable" or "")+copycut+typeClass+colorIndex+extraClass}
开发者ID:occamsbeast,项目名称:Scheduler,代码行数:47,代码来源:adapters.py

示例12: _saveSkippablePaths

# 需要导入模块: from DateTime import DateTime [as 别名]
# 或者: from DateTime.DateTime import rfc822 [as 别名]
 def _saveSkippablePaths(self, paths):
     """ save the list to a cookie """
     assert isinstance(paths, list)
     value = '|'.join(paths)
     key = COOKIEKEY_SKIPPABLE_PATHS
     then = DateTime()+300
     then = then.rfc822()
     self.REQUEST.RESPONSE.setCookie(key, value, path='/',
                                     expires=then)
开发者ID:BillTheBest,项目名称:IssueTrackerProduct,代码行数:11,代码来源:MassContainer.py

示例13: changesettings_web

# 需要导入模块: from DateTime import DateTime [as 别名]
# 或者: from DateTime.DateTime import rfc822 [as 别名]
    def changesettings_web(self):
	""" take things from self.REQUEST """
	request = self.REQUEST
	
	# Check email
	email = request.get('email', self.getEmail()).strip()
	if not Utils.ValidEmailAddress(email):
	    m = "%s is not a valid email address"%email
	    raise "InvalidEmailAddress", m
	
	# Check dayskip
	dayskip = int(request.get('dayskip', self.getDayskip()))
	if dayskip < 1 or dayskip > 30:
	    m = "Dayskip must be between (and including) 1 and 30"
	    raise "InvalidDayskip", m
    
	# Check meta_types
	meta_types = request.get('meta_types', self.getMetatypes())
	if not same_type(meta_types, []):
	    meta_types = [meta_types]
	meta_types = [x.strip() for x in meta_types]
	possible_meta_types = self.aq_parent.getAllMetatypes()
	checked_meta_types = []
	for meta_type in meta_types:
	    if meta_type in possible_meta_types:
		checked_meta_types.append(meta_type)
	if not checked_meta_types:
	    m = "No recognized types selected"
	    raise "NoMetatypes", m
	
	# Check name
	name = request.get('name', self.getName()).strip()
	
	response = request.RESPONSE
	then = DateTime() + 300
	then = then.rfc822()
	
	if not request.get('__blogcomment_name','') and name:
	    response.setCookie('__blogcomment_name', name,
	                       path='/', expires=then)
			       
	# Now save the changes
	self.email = email
	self.dayskip = dayskip
	self.meta_types = meta_types
	self.name = name
	    
	return self.change_settings_set(self, request)
开发者ID:peterbe,项目名称:Peterbecom,代码行数:50,代码来源:EmailReminder.py

示例14: test__call__

# 需要导入模块: from DateTime import DateTime [as 别名]
# 或者: from DateTime.DateTime import rfc822 [as 别名]
    def test__call__(self):

        # prepare the zip contents
        # users csv will exist because there is one user in the system
        users = self.portal.restrictedTraverse("@@export-user-profiles")
        # zip data
        in_memory_zip = StringIO()
        zf = zipfile.ZipFile(in_memory_zip, mode="w")
        zf.writestr("users.csv", users.user_profiles_csv())
        zf.close()
        in_memory_zip.seek(0)
        test_zip_data = in_memory_zip.read()

        view = self.portal.restrictedTraverse("@@download-teacher-data")
        self.request.RESPONSE.stdout = StringIO()
        view()
        self.request.RESPONSE.stdout.seek(0)

        now = DateTime()
        filename = "%s_%s" % ("tarmii_logs_", now.strftime("%Y%m%d"))
        date_time = DateTime.rfc822(DateTime())

        csv_ref = (
            "Status: 200 OK\r\n"
            + "X-Powered-By: Zope (www.zope.org), "
            + "Python (www.python.org)\r\n"
            + "Content-Length: 161\r\n"
            + "Content-Disposition: attachment; filename="
            + filename
            + ".zip\r\n"
            + "Last-Modified: "
            + date_time
            + "\r\n"
            + "Pragma: no-cache\r\n"
            + "Cache-Control: no-store\r\n"
            + "Content-Type: application/octet-stream\r\n"
            + "\r\n"
            + test_zip_data
        )

        self.request.RESPONSE.stdout.seek(0)
        self.assertEqual(self.request.RESPONSE.stdout.read(), csv_ref)
        print "done"
开发者ID:upfrontsystems,项目名称:tarmii.theme,代码行数:45,代码来源:test_downloadteacherdata.py

示例15: OptOutDashboardView

# 需要导入模块: from DateTime import DateTime [as 别名]
# 或者: from DateTime.DateTime import rfc822 [as 别名]
class OptOutDashboardView(BrowserView):
    """Personal dashboard for opt-out preferences"""
    
    def __init__(self, context, request):
        self.context = context
        self.request = request
        self.general_cookie_consent = None
        self.nextYear = DateTime() + 365
        request.set('disable_border', True)

    def __call__(self, *args, **kwargs):
        if 'form.submitted' in self.request.form:
            self._save_changes()
            IStatusMessage(self.request).addStatusMessage(_(u"Changes saved"), "info")
            self.request.response.redirect("%s/@@%s" % (self.context.absolute_url(),
                                                        self.__name__),)
        return self.index()

    def _save_changes(self):
        request = self.request
        form = request.form
        if not form.get('accept_cookies'):
            # Cookie policy rejected: set all of the opt-out cookies
            optout_all(request, 'true', update=True)
            self.setOneYearCookie(config.COOKIECONSENT_NAME, 'false')
            return
        # Cookies consent given: let's save also opt-out cookies
        self.setOneYearCookie(config.COOKIECONSENT_NAME, 'true')
        for optout in self.settings().optout_configuration:
            value = 'true' if form.get('app_%s' % optout.app_id)=='true' else 'false'
            for cookie in optout.cookies:
                self.setOneYearCookie("%s-optout" % cookie, value)

    def setOneYearCookie(self, name, value):
        setCookie(self.request.response, name, value, expires=self.nextYear.rfc822())

    def _i18n_alternative(self, app_id, id):
        oo_i18n_id = u"%s_optout_%s" % (app_id, id)
        oo_item = translate(_(oo_i18n_id), context=self.request)
        if unicode(oo_item)==oo_i18n_id:
            return app_id
        return oo_item

    @memoize
    def settings(self):
        registry = queryUtility(IRegistry)
        return registry.forInterface(ICookieConsentSettings, check=False)

    def optouts(self):
        settings = self.settings()
        request = self.request
        cookies = request.cookies
        portal_state = getMultiAdapter((self.context, request), name=u'plone_portal_state')
        current_language = portal_state.language()
        self.general_cookie_consent = cookies.get(config.COOKIECONSENT_NAME, False)=='true'

        results = []
        for oo_conf in settings.optout_configuration:
            optout = {}
            optout['id'] = oo_conf.app_id

            # i18n
            if len(oo_conf.texts)==0:
                optout['title'] = self._i18n_alternative(oo_conf.app_id, u'title')
                optout['description'] = self._i18n_alternative(oo_conf.app_id, u'description')
            else:
                for i, app_text_content in enumerate(oo_conf.texts):
                    if current_language==app_text_content.lang:
                        optout['title'] = app_text_content.app_title if app_text_content.app_title else self._i18n_alternative(oo_conf.app_id, u'title')
                        raw_i18n_desc = app_text_content.app_description if app_text_content.app_description else self._i18n_alternative(oo_conf.app_id, u'description')
                        optout['description'] = '<br />'.join(raw_i18n_desc.strip().splitlines())
                        break
                else:
                    # no lang found: use the first one as default
                    default_conf = oo_conf.texts[0]
                    optout['title'] = default_conf.app_title if default_conf.app_title else self._i18n_alternative(oo_conf.app_id, u'title')
                    raw_i18n_desc = default_conf.app_description if default_conf.app_description else self._i18n_alternative(oo_conf.app_id, u'description')
                    optout['description'] = '<br />'.join(raw_i18n_desc.strip().splitlines())

            # check cookies: to enable the radio as "deny" we care about at least of one cookie
            negative_cookies = [c for c in oo_conf.cookies \
                    if not cookies.get("%s-optout" % c, None) or cookies["%s-optout" % c]=='false']
            optout['cookie'] = False if negative_cookies else True
            results.append(optout)
        return results
开发者ID:PloneGov-IT,项目名称:rer.cookieconsent,代码行数:87,代码来源:dashboard.py


注:本文中的DateTime.DateTime.rfc822方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。