# HG changeset patch # User Goffi # Date 1630068700 -7200 # Node ID bef32f3ccc06bbaad56463ab3b9e039403b09a16 # Parent 6559c0f847d411079f5f7bcc9f536374fbfe3573# Parent 8ee0140cc8b6e4aba628062e23a876476159c8b4 merge branche "@" diff -r 6559c0f847d4 -r bef32f3ccc06 doc/configuration.rst --- a/doc/configuration.rst Fri Aug 27 08:49:45 2021 +0200 +++ b/doc/configuration.rst Fri Aug 27 14:51:40 2021 +0200 @@ -106,6 +106,8 @@ ; background luminance, used by terminal frontends ; can be "auto" (default) to autodetect, "dark" or "light" background = auto + # end-user facing URL, used by Web frontend + public_url = example.com # uncomment next line if you don't want to use local cache for pubsub items ; pubsub_cache_strategy = "no_cache" diff -r 6559c0f847d4 -r bef32f3ccc06 doc/overview.rst --- a/doc/overview.rst Fri Aug 27 08:49:45 2021 +0200 +++ b/doc/overview.rst Fri Aug 27 14:51:40 2021 +0200 @@ -78,28 +78,34 @@ The Web frontend is the second main interface for most users. This frontend has the particularity to be in 2 parts: a server which serves HTTP content, and a client which -runs in the browser. So you have Libervia server which connect to Libervia backend which itself -connect to the XMPP server, and your browser will connect to Libervia server. +runs in the browser. So you have Libervia Web server which connect to Libervia backend which itself +connect to the XMPP server, and your browser will connect to Libervia Web server. -In the browser, you can access the server in two ways: either directly with what we call -**Libervia pages**, or with a JavaScript code in `single-page application`_ which is the -**Libervia client** (or **Libervia web app**) that we have mentioned above. - -The **Libervia pages** are web pages managing a single feature. They can work without -JavaScript when it's possible (it's not the case for instant messaging or similar highly -dynamic contents). They aims to be simple and straightforward to use. +.. + # NOTE: currently not relevant as there is no Web APP anymore, may come back in the + future though + In the browser, you can access the server in two ways: either directly with what we call + **Libervia pages**, or with a JavaScript code in `single-page application`_ which is the + **Libervia client** (or **Libervia web app**) that we have mentioned above. -The **Libervia client** is a highly dynamic web application, used to access more features. -It's more complete and may be well adapted if you want to let Libervia running in a browser tab -for an extended period. +The **Libervia Web Pages** are web pages managing a single feature. They can work without +JavaScript when it's possible (it's not the case for instant messaging or similar highly +dynamic contents). They aims to be simple and straightforward to use. That what you're +accessing when you're using Libervia Web. -Last but not least, Libervia is also the central part of the new **web framework** of -Libervia. Indeed, in addition of being a frontend to Libervia features (which is built with -this framework), you can create totally different websites which are integrated in Libervia -(and so XMPP) ecosystem. This framework uses Libervia template engine (based on `Jinja2`_) and -makes the creation of decentralised and federated websites simple. Thanks to this framework, -it's easy to experiment new ideas/features, or to change completely the look and feel of -the Libervia frontend. +.. + #Note: as above, not relevant anymore but may come back in the future + The **Libervia Web Client** is a highly dynamic web application, used to access more features. + It's more complete and may be well adapted if you want to let Libervia running in a browser tab + for an extended period. + +Libervia Web is also the central part of the **Web Framework**. Indeed, in addition of +being a frontend to Libervia features (which is built with this framework), you can create +totally different websites which are integrated in Libervia (and so XMPP) ecosystem. This +framework uses Libervia template engine (based on `Jinja2`_) and makes the creation of +decentralised and federated websites simple. Thanks to this framework, it's easy to +experiment new ideas/features, or to change completely the look and feel of the Libervia +frontend. The `official Libervia website`_ is made with Libervia web framework. diff -r 6559c0f847d4 -r bef32f3ccc06 sat/tools/common/date_utils.py --- a/sat/tools/common/date_utils.py Fri Aug 27 08:49:45 2021 +0200 +++ b/sat/tools/common/date_utils.py Fri Aug 27 14:51:40 2021 +0200 @@ -25,6 +25,7 @@ from dateutil import tz, parser from dateutil.relativedelta import relativedelta from dateutil.utils import default_tzinfo +from dateutil.parser import ParserError from babel import dates import calendar import time @@ -64,9 +65,15 @@ value = str(value).strip() dayfirst = False if YEAR_FIRST_RE.match(value) else True - dt = default_tzinfo( - parser.parse(value, default=DEFAULT_DATETIME, dayfirst=dayfirst), - default_tz) + try: + dt = default_tzinfo( + parser.parse(value, default=DEFAULT_DATETIME, dayfirst=dayfirst), + default_tz) + except ParserError as e: + if value == "now": + dt = datetime.datetime.now(tz.tzutc()) + else: + raise e return calendar.timegm(dt.utctimetuple()) def date_parse_ext(value, default_tz=TZ_UTC): diff -r 6559c0f847d4 -r bef32f3ccc06 sat_frontends/jp/cmd_avatar.py --- a/sat_frontends/jp/cmd_avatar.py Fri Aug 27 08:49:45 2021 +0200 +++ b/sat_frontends/jp/cmd_avatar.py Fri Aug 27 14:51:40 2021 +0200 @@ -49,7 +49,7 @@ async def showImage(self, path): sat_conf = config.parseMainConf() - cmd = config.getConfig(sat_conf, "jp", "image_cmd") + cmd = config.getConfig(sat_conf, C.CONFIG_SECTION, "image_cmd") cmds = [cmd] + DISPLAY_CMD if cmd else DISPLAY_CMD for cmd in cmds: try: diff -r 6559c0f847d4 -r bef32f3ccc06 sat_frontends/jp/cmd_blog.py --- a/sat_frontends/jp/cmd_blog.py Fri Aug 27 08:49:45 2021 +0200 +++ b/sat_frontends/jp/cmd_blog.py Fri Aug 27 14:51:40 2021 +0200 @@ -637,7 +637,9 @@ async def start(self): # if there are user defined extension, we use them - SYNTAX_EXT.update(config.getConfig(self.sat_conf, "jp", CONF_SYNTAX_EXT, {})) + SYNTAX_EXT.update( + config.getConfig(self.sat_conf, C.CONFIG_SECTION, CONF_SYNTAX_EXT, {}) + ) self.current_syntax = await self.get_current_syntax() ( @@ -782,11 +784,13 @@ aionotify = None sat_conf = self.sat_conf - SYNTAX_EXT.update(config.getConfig(sat_conf, "jp", CONF_SYNTAX_EXT, {})) + SYNTAX_EXT.update( + config.getConfig(sat_conf, C.CONFIG_SECTION, CONF_SYNTAX_EXT, {}) + ) try: self.open_cb_cmd = config.getConfig( - sat_conf, "jp", "blog_preview_open_cmd", Exception + sat_conf, C.CONFIG_SECTION, "blog_preview_open_cmd", Exception ) except (NoOptionError, NoSectionError): self.open_cb_cmd = None @@ -795,7 +799,7 @@ open_cb = self.openPreviewExt self.update_cb_cmd = config.getConfig( - sat_conf, "jp", "blog_preview_update_cmd", self.open_cb_cmd + sat_conf, C.CONFIG_SECTION, "blog_preview_update_cmd", self.open_cb_cmd ) if self.update_cb_cmd is None: update_cb = self.showPreview diff -r 6559c0f847d4 -r bef32f3ccc06 sat_frontends/jp/common.py --- a/sat_frontends/jp/common.py Fri Aug 27 08:49:45 2021 +0200 +++ b/sat_frontends/jp/common.py Fri Aug 27 14:51:40 2021 +0200 @@ -199,13 +199,13 @@ content_file_obj.close() # we prepare arguments - editor = config.getConfig(self.sat_conf, "jp", "editor") or os.getenv( + editor = config.getConfig(self.sat_conf, C.CONFIG_SECTION, "editor") or os.getenv( "EDITOR", "vi" ) try: # is there custom arguments in sat.conf ? editor_args = config.getConfig( - self.sat_conf, "jp", editor_args_opt, Exception + self.sat_conf, C.CONFIG_SECTION, editor_args_opt, Exception ) except (NoOptionError, NoSectionError): # no, we check if we know the editor and have special arguments diff -r 6559c0f847d4 -r bef32f3ccc06 tests/e2e/run_e2e.py --- a/tests/e2e/run_e2e.py Fri Aug 27 08:49:45 2021 +0200 +++ b/tests/e2e/run_e2e.py Fri Aug 27 14:51:40 2021 +0200 @@ -176,7 +176,7 @@ if not compose_e2e_path.is_file(): raise exceptions.NotFound('"docker-compose-e2e.yml" file can\'t be found') - with tempfile.TemporaryDirectory(prefix="sat_test_e2e_") as temp_dir: + with tempfile.TemporaryDirectory(prefix="libervia_test_e2e_") as temp_dir: override_path = Path(temp_dir) / "test_override.yml" override = yaml.load( dedent(f"""\