Calculate short url and command line
with only the changed parameters
This commit is contained in:
parent
eec47d260d
commit
0421aeb76a
|
@ -294,6 +294,7 @@ class Boxes:
|
||||||
self.argparser = ArgumentParser(description=description)
|
self.argparser = ArgumentParser(description=description)
|
||||||
self.edgesettings: dict[Any, Any] = {}
|
self.edgesettings: dict[Any, Any] = {}
|
||||||
self.inkscapefile = None
|
self.inkscapefile = None
|
||||||
|
self.non_default_args: dict[Any, Any] = {}
|
||||||
|
|
||||||
self.metadata = {
|
self.metadata = {
|
||||||
"name" : self.__class__.__name__,
|
"name" : self.__class__.__name__,
|
||||||
|
@ -301,7 +302,9 @@ class Boxes:
|
||||||
"description" : self.description,
|
"description" : self.description,
|
||||||
"group" : self.ui_group,
|
"group" : self.ui_group,
|
||||||
"url" : "",
|
"url" : "",
|
||||||
"command_line" : ""
|
"url_short" : "",
|
||||||
|
"cli" : "",
|
||||||
|
"cli_short" : "",
|
||||||
}
|
}
|
||||||
|
|
||||||
self.argparser._action_groups[1].title = self.__class__.__name__ + " Settings"
|
self.argparser._action_groups[1].title = self.__class__.__name__ + " Settings"
|
||||||
|
@ -521,19 +524,26 @@ class Boxes:
|
||||||
return quote(s)
|
return quote(s)
|
||||||
|
|
||||||
self.metadata["cli"] = "boxes " + self.__class__.__name__ + " " + " ".join(cliquote(arg) for arg in args)
|
self.metadata["cli"] = "boxes " + self.__class__.__name__ + " " + " ".join(cliquote(arg) for arg in args)
|
||||||
|
|
||||||
for key, value in vars(self.argparser.parse_args(args=args)).items():
|
for key, value in vars(self.argparser.parse_args(args=args)).items():
|
||||||
|
default = self.argparser.get_default(key)
|
||||||
|
|
||||||
# treat edge settings separately
|
# treat edge settings separately
|
||||||
for setting in self.edgesettings:
|
for setting in self.edgesettings:
|
||||||
if key.startswith(setting + '_'):
|
if key.startswith(setting + '_'):
|
||||||
self.edgesettings[setting][key[len(setting)+1:]] = value
|
self.edgesettings[setting][key[len(setting)+1:]] = value
|
||||||
continue
|
continue
|
||||||
setattr(self, key, value)
|
setattr(self, key, value)
|
||||||
|
if (value != default):
|
||||||
|
self.non_default_args[key] = value
|
||||||
|
|
||||||
# Change file ending to format if not given explicitly
|
# Change file ending to format if not given explicitly
|
||||||
format = getattr(self, "format", "svg")
|
format = getattr(self, "format", "svg")
|
||||||
if getattr(self, 'output', None) == 'box.svg':
|
if getattr(self, 'output', None) == 'box.svg':
|
||||||
self.output = 'box.' + format.split("_")[0]
|
self.output = 'box.' + format.split("_")[0]
|
||||||
|
|
||||||
|
self.metadata["cli_short"] = "boxes " + self.__class__.__name__ + " " + " ".join(cliquote(arg) for arg in args if (arg.split("=")[0][2:] in self.non_default_args))
|
||||||
|
|
||||||
def addPart(self, part, name=None):
|
def addPart(self, part, name=None):
|
||||||
"""
|
"""
|
||||||
Add Edge or other part instance to this one and add it as attribute
|
Add Edge or other part instance to this one and add it as attribute
|
||||||
|
|
|
@ -79,6 +79,20 @@ class FileChecker(threading.Thread):
|
||||||
def stop(self) -> None:
|
def stop(self) -> None:
|
||||||
self._stopped = True
|
self._stopped = True
|
||||||
|
|
||||||
|
def filter_url(url, non_default_args):
|
||||||
|
if len(url) == 0:
|
||||||
|
return ''
|
||||||
|
try:
|
||||||
|
base, args = url.split('?')
|
||||||
|
except ValueError:
|
||||||
|
return ''
|
||||||
|
args = args.split('&')
|
||||||
|
new_args = []
|
||||||
|
for arg in args:
|
||||||
|
a, b = arg.split('=')
|
||||||
|
if a in non_default_args:
|
||||||
|
new_args.append(arg)
|
||||||
|
return f"{base}?{'&'.join(new_args)}"
|
||||||
|
|
||||||
class ArgumentParserError(Exception): pass
|
class ArgumentParserError(Exception): pass
|
||||||
|
|
||||||
|
@ -612,6 +626,8 @@ class BServer:
|
||||||
try:
|
try:
|
||||||
fd, box.output = tempfile.mkstemp()
|
fd, box.output = tempfile.mkstemp()
|
||||||
box.metadata["url"] = self.getURL(environ)
|
box.metadata["url"] = self.getURL(environ)
|
||||||
|
box.metadata["url_short"] = filter_url(box.metadata["url"],
|
||||||
|
box.non_default_args)
|
||||||
box.open()
|
box.open()
|
||||||
box.render()
|
box.render()
|
||||||
box.close()
|
box.close()
|
||||||
|
|
Loading…
Reference in New Issue