equal
deleted
inserted
replaced
97 # tabindex generator |
97 # tabindex generator |
98 self.tabindexgen = count(1) |
98 self.tabindexgen = count(1) |
99 self.next_tabindex = self.tabindexgen.next |
99 self.next_tabindex = self.tabindexgen.next |
100 # page id, set by htmlheader template |
100 # page id, set by htmlheader template |
101 self.pageid = None |
101 self.pageid = None |
102 self.datadir_url = self._datadir_url() |
102 self.datadir_url = vreg.config.datadir_url |
103 self._set_pageid() |
103 self._set_pageid() |
104 # prepare output header |
104 # prepare output header |
105 self.headers_out = Headers() |
105 self.headers_out = Headers() |
106 |
106 |
107 def _set_pageid(self): |
107 def _set_pageid(self): |
587 |
587 |
588 def url(self, includeparams=True): |
588 def url(self, includeparams=True): |
589 """return currently accessed url""" |
589 """return currently accessed url""" |
590 return self.base_url() + self.relative_path(includeparams) |
590 return self.base_url() + self.relative_path(includeparams) |
591 |
591 |
592 def _datadir_url(self): |
|
593 """return url of the instance's data directory""" |
|
594 return self.base_url() + 'data%s/' % self.vreg.config.instance_md5_version() |
|
595 |
|
596 def selected(self, url): |
592 def selected(self, url): |
597 """return True if the url is equivalent to currently accessed url""" |
593 """return True if the url is equivalent to currently accessed url""" |
598 reqpath = self.relative_path().lower() |
594 reqpath = self.relative_path().lower() |
599 baselen = len(self.base_url()) |
595 baselen = len(self.base_url()) |
600 return (reqpath == url[baselen:].lower()) |
596 return (reqpath == url[baselen:].lower()) |
615 controller = self.relative_path(False).split('/', 1)[0] |
611 controller = self.relative_path(False).split('/', 1)[0] |
616 registered_controllers = self.vreg['controllers'].keys() |
612 registered_controllers = self.vreg['controllers'].keys() |
617 if controller in registered_controllers: |
613 if controller in registered_controllers: |
618 return controller |
614 return controller |
619 return 'view' |
615 return 'view' |
620 |
|
621 def external_resource(self, rid, default=_MARKER): |
|
622 """return a path to an external resource, using its identifier |
|
623 |
|
624 raise KeyError if the resource is not defined |
|
625 """ |
|
626 try: |
|
627 value = self.vreg.config.ext_resources[rid] |
|
628 except KeyError: |
|
629 if default is _MARKER: |
|
630 raise |
|
631 return default |
|
632 if value is None: |
|
633 return None |
|
634 baseurl = self.datadir_url[:-1] # remove trailing / |
|
635 if isinstance(value, list): |
|
636 return [v.replace('DATADIR', baseurl) for v in value] |
|
637 return value.replace('DATADIR', baseurl) |
|
638 external_resource = cached(external_resource, keyarg=1) |
|
639 |
616 |
640 def validate_cache(self): |
617 def validate_cache(self): |
641 """raise a `DirectResponse` exception if a cached page along the way |
618 """raise a `DirectResponse` exception if a cached page along the way |
642 exists and is still usable. |
619 exists and is still usable. |
643 |
620 |
709 return user.decode('UTF8'), passwd |
686 return user.decode('UTF8'), passwd |
710 except Exception, ex: |
687 except Exception, ex: |
711 self.debug('bad authorization %s (%s: %s)', |
688 self.debug('bad authorization %s (%s: %s)', |
712 auth, ex.__class__.__name__, ex) |
689 auth, ex.__class__.__name__, ex) |
713 return None, None |
690 return None, None |
714 |
|
715 @deprecated("[3.4] use parse_accept_header('Accept-Language')") |
|
716 def header_accept_language(self): |
|
717 """returns an ordered list of preferred languages""" |
|
718 return [value.split('-')[0] for value in |
|
719 self.parse_accept_header('Accept-Language')] |
|
720 |
691 |
721 def parse_accept_header(self, header): |
692 def parse_accept_header(self, header): |
722 """returns an ordered list of preferred languages""" |
693 """returns an ordered list of preferred languages""" |
723 accepteds = self.get_header(header, '') |
694 accepteds = self.get_header(header, '') |
724 values = [] |
695 values = [] |
821 if self.xhtml_browser(): |
792 if self.xhtml_browser(): |
822 return (u'<?xml version="1.0"?>\n' + STRICT_DOCTYPE + # XXX encoding ? |
793 return (u'<?xml version="1.0"?>\n' + STRICT_DOCTYPE + # XXX encoding ? |
823 u'<div xmlns="http://www.w3.org/1999/xhtml" xmlns:cubicweb="http://www.logilab.org/2008/cubicweb">') |
794 u'<div xmlns="http://www.w3.org/1999/xhtml" xmlns:cubicweb="http://www.logilab.org/2008/cubicweb">') |
824 return u'<div>' |
795 return u'<div>' |
825 |
796 |
|
797 @deprecated('[3.9] use req.vreg.config.uiprops[rid]') |
|
798 def external_resource(self, rid, default=_MARKER): |
|
799 """return a path to an external resource, using its identifier |
|
800 |
|
801 raise `KeyError` if the resource is not defined |
|
802 """ |
|
803 try: |
|
804 return self.vreg.config.uiprops[rid] |
|
805 except KeyError: |
|
806 if default is _MARKER: |
|
807 raise |
|
808 return default |
|
809 |
|
810 @deprecated("[3.4] use parse_accept_header('Accept-Language')") |
|
811 def header_accept_language(self): |
|
812 """returns an ordered list of preferred languages""" |
|
813 return [value.split('-')[0] for value in |
|
814 self.parse_accept_header('Accept-Language')] |
|
815 |
|
816 |
826 from cubicweb import set_log_methods |
817 from cubicweb import set_log_methods |
827 set_log_methods(CubicWebRequestBase, LOGGER) |
818 set_log_methods(CubicWebRequestBase, LOGGER) |