cubicweb/req.py
changeset 11913 4516c3956d46
parent 11868 d5181d7f1389
child 12179 14f85569eda2
equal deleted inserted replaced
11912:c9e6df20e5a4 11913:4516c3956d46
   276     def build_url(self, *args, **kwargs):
   276     def build_url(self, *args, **kwargs):
   277         """return an absolute URL using params dictionary key/values as URL
   277         """return an absolute URL using params dictionary key/values as URL
   278         parameters. Values are automatically URL quoted, and the
   278         parameters. Values are automatically URL quoted, and the
   279         publishing method to use may be specified or will be guessed.
   279         publishing method to use may be specified or will be guessed.
   280 
   280 
   281         if ``__secure__`` argument is True, the request will try to build a
       
   282         https url.
       
   283 
       
   284         raises :exc:`ValueError` if None is found in arguments
   281         raises :exc:`ValueError` if None is found in arguments
   285         """
   282         """
   286         # use *args since we don't want first argument to be "anonymous" to
   283         # use *args since we don't want first argument to be "anonymous" to
   287         # avoid potential clash with kwargs
   284         # avoid potential clash with kwargs
   288         method = None
   285         method = None
   293             method = 'view'
   290             method = 'view'
   294         # XXX I (adim) think that if method is passed explicitly, we should
   291         # XXX I (adim) think that if method is passed explicitly, we should
   295         #     not try to process it and directly call req.build_url()
   292         #     not try to process it and directly call req.build_url()
   296         base_url = kwargs.pop('base_url', None)
   293         base_url = kwargs.pop('base_url', None)
   297         if base_url is None:
   294         if base_url is None:
   298             secure = kwargs.pop('__secure__', None)
   295             if kwargs.pop('__secure__', None) is not None:
   299             base_url = self.base_url(secure=secure)
   296                 warn('[3.25] __secure__ argument is deprecated',
       
   297                      DeprecationWarning, stacklevel=2)
       
   298             base_url = self.base_url()
   300         path = self.build_url_path(method, kwargs)
   299         path = self.build_url_path(method, kwargs)
   301         if not kwargs:
   300         if not kwargs:
   302             return u'%s%s' % (base_url, path)
   301             return u'%s%s' % (base_url, path)
   303         return u'%s%s?%s' % (base_url, path, self.build_url_params(**kwargs))
   302         return u'%s%s?%s' % (base_url, path, self.build_url_params(**kwargs))
   304 
   303 
   500             return todate(dt)
   499             return todate(dt)
   501         except ValueError:
   500         except ValueError:
   502             raise ValueError(self._('can\'t parse %(value)r (expected %(format)s)')
   501             raise ValueError(self._('can\'t parse %(value)r (expected %(format)s)')
   503                              % {'value': value, 'format': format})
   502                              % {'value': value, 'format': format})
   504 
   503 
   505     def _base_url(self, secure=None):
   504     def base_url(self, **kwargs):
   506         if secure:
   505         """Return the root url of the instance."""
   507             return self.vreg.config.get('https-url') or self.vreg.config['base-url']
   506         secure = kwargs.pop('secure', None)
   508         return self.vreg.config['base-url']
   507         if secure is not None:
   509 
   508             warn('[3.25] secure argument is deprecated', DeprecationWarning, stacklevel=2)
   510     def base_url(self, secure=None):
   509         if kwargs:
   511         """return the root url of the instance
   510             raise TypeError('base_url got unexpected keyword arguments %s' % ', '.join(kwargs))
   512         """
   511         url = self.vreg.config['base-url']
   513         url = self._base_url(secure=secure)
       
   514         return url if url is None else url.rstrip('/') + '/'
   512         return url if url is None else url.rstrip('/') + '/'