def format_static(self, path, locale=None, parameterize=False, fingerprint=None): """Format a static document url.""" params = self.params_pod() path = utils.safe_format(path, **params) if parameterize: path = self.parameterize(path) params = {} if fingerprint: params['fingerprint'] = fingerprint locale_alias = self._locale_or_alias(locale) if locale_alias: params['locale'] = locale_alias if params: path = utils.safe_format(path, **params) return self.strip_double_slash(path)
def format_static(self, path, locale=None, parameterize=False): """Format a static document url.""" params = self.params_pod() path = utils.safe_format(path, **params) if parameterize: path = self.parameterize(path) params['locale'] = self._locale_or_alias(locale) if params['locale']: path = utils.safe_format(path, **params) return self.strip_double_slash(path)
def gettext(__context, __string, **variables): """Gettext and do replacement.""" value = __context.call(func, __string) value = utils.safe_format(value, **variables) if __context.eval_ctx.autoescape: value = jinja2.utils.Markup(value) return value
def _dynamic_paths(path, options): """Use the path to format using the options to determine all paths.""" path = RouteTrie.clean_path(path) possible_paths = set([path]) # Check for string formatting. if not options or '{' not in path: return possible_paths for key in options: for option in options[key]: format_keys = {key: option} new_paths = [] for possible_path in possible_paths: new_paths.append(utils.safe_format(possible_path, **format_keys)) possible_paths = possible_paths.union(new_paths) paths = set() # Don't include paths that still have format symbols. for possible_path in possible_paths: if '{' not in possible_path: paths.add(possible_path) if not paths: raise MissingOptionError(path) return paths
def format_view(self, doc, path, parameterize=False): """Format a URL path using the doc information for views.""" path = '' if path is None else path # Most params should always be replaced. params = self.params_pod() params['base'] = doc.base params['category'] = doc.category params['collection'] = structures.AttributeDict( base_path=doc.collection_base_path, basename=doc.collection.basename, root=doc.collection.root) params['parent'] = doc.parent if doc.parent else utils.DummyDict() params['slug'] = doc.slug if isinstance(doc.date, datetime.datetime): params['date'] = doc.date.date() else: params['date'] = doc.date if '|lower' in path: for key, value in params.items(): if isinstance(value, basestring): params['{}|lower'.format(key)] = value.lower() path = utils.safe_format(path, **params) if parameterize: path = self.parameterize(path) return self.strip_double_slash(path)
def ngettext(__context, __singular, __plural, __num, **variables): """Gettext and do replacement.""" variables.setdefault('num', __num) value = __context.call(func, __singular, __plural, __num) value = utils.safe_format(value, **variables) if __context.eval_ctx.autoescape: value = jinja2.utils.Markup(value) return value
def format_pod(self, path, parameterize=False): """Format a URL path using the pod information.""" path = '' if path is None else path params = self.params_pod() path = utils.safe_format(path, **params) if parameterize: path = self.parameterize(path) return self.strip_double_slash(path)
def format_doc(self, doc, path, locale=None, parameterize=False): """Format a URL path using the doc information.""" path = '' if path is None else path # Most params should always be replaced. params = self.params_pod() params.update(self.params_doc(path, doc)) params = self.params_lower(path, params) path = utils.safe_format(path, **params) if parameterize: path = self.parameterize(path) params = {} if locale is None: locale = doc.locale params['locale'] = self._locale_or_alias(locale) path = utils.safe_format(path, **params) path = self.strip_double_slash(path) return self.trailing_slash(doc, path)
def format_view(self, doc, path, parameterize=False): """Format a URL path using the doc information for views.""" path = '' if path is None else path # Most params should always be replaced. params = self.params_pod() params.update(self.params_doc(path, doc)) params = self.params_lower(path, params) path = utils.safe_format(path, **params) if parameterize: path = self.parameterize(path) return self.strip_double_slash(path)