mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
Fix check_visibility to use action's resource_class, refs #2510
Updated check_visibility() to use the action's resource_class to determine the correct Resource type to instantiate, rather than hardcoding based on the action name. This follows the pattern used elsewhere in the codebase and properly supports QueryResource for view-query actions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
82cc3d5c86
commit
eff4f931af
1 changed files with 14 additions and 4 deletions
|
|
@ -1065,15 +1065,25 @@ class Datasette:
|
|||
- visible: bool - can the actor see it?
|
||||
- private: bool - if visible, can anonymous users NOT see it?
|
||||
"""
|
||||
from datasette.resources import DatabaseResource, TableResource
|
||||
from datasette.permissions import Resource
|
||||
|
||||
# Convert old-style resource to Resource object using action's resource_class
|
||||
action_obj = self.actions.get(action)
|
||||
if not action_obj:
|
||||
raise ValueError(f"Unknown action: {action}")
|
||||
|
||||
resource_class = action_obj.resource_class
|
||||
|
||||
# Convert old-style resource to Resource object
|
||||
if resource is None:
|
||||
resource_obj = None
|
||||
elif isinstance(resource, str):
|
||||
resource_obj = DatabaseResource(database=resource)
|
||||
# Database resource
|
||||
resource_obj = object.__new__(resource_class)
|
||||
Resource.__init__(resource_obj, parent=resource, child=None)
|
||||
elif isinstance(resource, tuple) and len(resource) == 2:
|
||||
resource_obj = TableResource(database=resource[0], table=resource[1])
|
||||
# Database + child resource (table or query)
|
||||
resource_obj = object.__new__(resource_class)
|
||||
Resource.__init__(resource_obj, parent=resource[0], child=resource[1])
|
||||
else:
|
||||
resource_obj = None
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue