Skip to content

Commit

Permalink
make static_view use asset resolver
Browse files Browse the repository at this point in the history
  • Loading branch information
mmerickel committed Feb 7, 2024
1 parent 9026c4c commit 9bd1eb5
Showing 1 changed file with 13 additions and 27 deletions.
40 changes: 13 additions & 27 deletions src/pyramid/static.py
Expand Up @@ -2,8 +2,8 @@
import json
import mimetypes
import os
from os.path import exists, getmtime, getsize, isdir, join, normcase, normpath
from pkg_resources import resource_exists, resource_filename, resource_isdir
from os.path import exists, getmtime, getsize
import posixpath

from pyramid.asset import resolve_asset_spec
from pyramid.httpexceptions import HTTPMovedPermanently, HTTPNotFound
Expand Down Expand Up @@ -94,8 +94,8 @@ def __init__(
package_name, docroot = resolve_asset_spec(root_dir, package_name)
self.use_subpath = use_subpath
self.package_name = package_name
self.resolver = AssetResolver(self.package_name)
self.docroot = docroot
self.norm_docroot = normcase(normpath(docroot))
self.index = index
self.reload = reload
self.content_encodings = _compile_content_encodings(content_encodings)
Expand Down Expand Up @@ -137,24 +137,13 @@ def get_resource_name(self, request):
raise HTTPNotFound('Out of bounds: %s' % request.url)

# normalize asset spec or fs path into resource_path
if self.package_name: # package resource
resource_path = '{}/{}'.format(self.docroot.rstrip('/'), path)
if resource_isdir(self.package_name, resource_path):
if not request.path_url.endswith('/'):
raise self.add_slash_redirect(request)
resource_path = '{}/{}'.format(
resource_path.rstrip('/'),
self.index,
)

else: # filesystem file
# os.path.normpath converts / to \ on windows
resource_path = normcase(normpath(join(self.norm_docroot, path)))
if isdir(resource_path):
if not request.path_url.endswith('/'):
raise self.add_slash_redirect(request)
resource_path = join(resource_path, self.index)

resource_path = posixpath.join(self.docroot, path)
asset = self.resolver.resolve(resource_path)
if asset.isdir():
if not request.path_url.endswith('/'):
raise self.add_slash_redirect(request)
resource_path = posixpath.join(resource_path, self.index)
return resource_path
return resource_path

def find_resource_path(self, name):
Expand All @@ -163,12 +152,9 @@ def find_resource_path(self, name):
exist.
"""
if self.package_name:
if resource_exists(self.package_name, name):
return resource_filename(self.package_name, name)

elif exists(name):
return name
asset = self.resolver.resolve(name)
if asset.exists():
return asset.abspath()

def get_possible_files(self, resource_name):
"""Return a sorted list of ``(size, encoding, path)`` entries."""
Expand Down

0 comments on commit 9bd1eb5

Please sign in to comment.