STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
stardesign.userdata.UserData Class Reference

Public Member Functions

None __init__ (self, str app, Path|str|None default_root=None)
str current_user (self, Request request)
Path user_dir (self, str user, str|None app=None, *, bool create=True)
Path site_dir (self, *, bool create=False)
list[str] all_users (self, str|None app=None)
list[dict] list_configs (self, str user)
dict|None read_config (self, str user, str slug)
dict write_config (self, str user, str name, dict config)
bool delete_config (self, str user, str slug)

Public Attributes

 app = app

Static Public Attributes

 slugify = staticmethod(slugify)
 slug_user = staticmethod(slug_user)

Protected Member Functions

Path _root (self)
Path _configs_dir (self, str user)

Protected Attributes

 _default_root = Path(default_root) if default_root else None

Detailed Description

The on-disk layout for one app.

``default_root`` is where dev data lands when ``USERDATA_DIR`` is unset: a
gitignored directory beside the app, so ``./dev.sh`` needs no setup.

Definition at line 68 of file userdata.py.

Constructor & Destructor Documentation

◆ __init__()

None stardesign.userdata.UserData.__init__ ( self,
str app,
Path | str | None default_root = None )

Definition at line 75 of file userdata.py.

Member Function Documentation

◆ _configs_dir()

Path stardesign.userdata.UserData._configs_dir ( self,
str user )
protected

Definition at line 150 of file userdata.py.

References user_dir().

Referenced by delete_config(), list_configs(), read_config(), and write_config().

◆ _root()

Path stardesign.userdata.UserData._root ( self)
protected

Definition at line 81 of file userdata.py.

References _default_root.

Referenced by all_users(), site_dir(), and user_dir().

◆ all_users()

list[str] stardesign.userdata.UserData.all_users ( self,
str | None app = None )
Every user slug that has data for ``app``, sorted. Never creates anything.

All the design tools mount one shared volume, so the root holds the whole
team; requiring a ``<user>/<app>`` subdirectory narrows it to people who
have actually used *this* app.

Definition at line 120 of file userdata.py.

References _root(), stardesign.userdata._sanitize(), and app.

◆ current_user()

str stardesign.userdata.UserData.current_user ( self,
Request request )
Whose data to use: ``X-Auth-Email`` in prod (from Caddy), else ``local``.

Never raises and never denies -- a missing header is dev, not a rejection.

Definition at line 89 of file userdata.py.

References stardesign.userdata._sanitize().

◆ delete_config()

bool stardesign.userdata.UserData.delete_config ( self,
str user,
str slug )
Remove a saved config. False if it did not exist.

Definition at line 206 of file userdata.py.

References _configs_dir(), and slugify.

◆ list_configs()

list[dict] stardesign.userdata.UserData.list_configs ( self,
str user )
Metadata for each saved config, newest first: ``{slug, name, savedAt}``.

Definition at line 155 of file userdata.py.

References _configs_dir().

◆ read_config()

dict | None stardesign.userdata.UserData.read_config ( self,
str user,
str slug )
The full blob (``{name, savedAt, config}``) for ``slug``, or None.

Definition at line 170 of file userdata.py.

References _configs_dir(), and slugify.

◆ site_dir()

Path stardesign.userdata.UserData.site_dir ( self,
* ,
bool create = False )
``<root>/.site/<app>``: settings that belong to the app, not a user.

Dot-prefixed so :meth:`all_users` -- which skips dot directories -- can
never mistake it for a person.

Definition at line 109 of file userdata.py.

References _root(), stardesign.userdata._sanitize(), and app.

◆ user_dir()

Path stardesign.userdata.UserData.user_dir ( self,
str user,
str | None app = None,
* ,
bool create = True )
``<root>/<user>/<app>``, created on demand. Root is not assumed to exist.

Pass ``create=False`` when merely *inspecting* another user's tree (the
cross-user browse walks every sibling folder, and must not conjure an
empty directory for each one it looks at).

Definition at line 96 of file userdata.py.

References _root(), stardesign.userdata._sanitize(), and app.

Referenced by _configs_dir().

◆ write_config()

dict stardesign.userdata.UserData.write_config ( self,
str user,
str name,
dict config )
Save/overwrite a named config atomically. Returns ``{slug, name, savedAt}``.

Definition at line 183 of file userdata.py.

References _configs_dir(), and slugify.

Member Data Documentation

◆ _default_root

stardesign.userdata.UserData._default_root = Path(default_root) if default_root else None
protected

Definition at line 77 of file userdata.py.

Referenced by _root().

◆ app

stardesign.userdata.UserData.app = app

◆ slug_user

stardesign.userdata.UserData.slug_user = staticmethod(slug_user)
static

Definition at line 142 of file userdata.py.

◆ slugify

stardesign.userdata.UserData.slugify = staticmethod(slugify)
static

Definition at line 141 of file userdata.py.

Referenced by delete_config(), read_config(), and write_config().


The documentation for this class was generated from the following file: