@@ -736,13 +736,15 @@ def user_name(self):
736736 user = self .fs .api .get_user ()
737737 return user ["username" ]
738738
739- def prepare_pin_version (self , pin_dir_path , x , * args , ** kwargs ):
740- from jinja2 import Environment
739+ def prepare_pin_version (self , pin_dir_path , x , name : "str | None" , * args , ** kwargs ):
741740
742- env = Environment ()
743- template = env .from_string (self .html_template .read_text ())
741+ # RSC pin names can have form <user_name>/<name>, but this will try to
742+ # create the object in a directory named <user_name>. So we grab just
743+ # the <name> part.
744+ if "/" in name :
745+ name = name .split ("/" )[- 1 ]
744746
745- meta = super ().prepare_pin_version (pin_dir_path , x , * args , ** kwargs )
747+ meta = super ().prepare_pin_version (pin_dir_path , x , name , * args , ** kwargs )
746748
747749 # copy in files needed by index.html ----------------------------------
748750 crnt_files = set ([meta .file ] if isinstance (meta .file , str ) else meta .file )
@@ -788,6 +790,13 @@ def prepare_pin_version(self, pin_dir_path, x, *args, **kwargs):
788790 # TODO(compat): set display none in index.html
789791 context ["data_preview" ] = json .dumps ({})
790792
793+ # render html template ----
794+
795+ from jinja2 import Environment
796+
797+ env = Environment ()
798+ template = env .from_string (self .html_template .read_text ())
799+
791800 rendered = template .render (context )
792801 (Path (pin_dir_path ) / "index.html" ).write_text (rendered )
793802
0 commit comments