bug when new or updating domain configuration file

This commit is contained in:
Cyrille L 2023-09-27 09:30:07 +02:00
parent 45cdecd7a5
commit beecb0ee5e
13 changed files with 350 additions and 224 deletions

View File

@ -7,6 +7,9 @@ Tyto - Littérateur
- License: - License:
- Documentation: - Documentation:
## [1.9.7]
- new process to check and update configuration file (bug at write some values)
## [1.9.6] ## [1.9.6]
- Better management to create/update domain - Better management to create/update domain

View File

@ -8,7 +8,7 @@ tyto
``` ```
## ToDo next (working on) ## ToDo next (working on)
- Manage domain configuration file values
- check action - check action
- target post exists and compatible
- create template post database - create template post database

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# Version: 1.9.6 # Version: 1.9.7
# Updated: 2023-09-26 1695738690 # Updated: 2023-09-27 1695799605
# Tyto - Littérateur # Tyto - Littérateur
# Copyright (C) 2023 Cyrille Louarn <echolib+tyto@a-lec.org> # Copyright (C) 2023 Cyrille Louarn <echolib+tyto@a-lec.org>

View File

@ -43,7 +43,8 @@ import domain, langs, debug, post, tools
#-------------------------------------------# #-------------------------------------------#
def manage(action, target): def manage(action, target):
# Load domain configuration (update it if needed), check if valid # Load domain configuration (update it if needed), check if valid
domain.cf_valid() or debug.out(105, domain.name, domain.cf_uri, True, 1, True) #domain.cf_valid() or debug.out(105, domain.name, domain.cf_uri, True, 1, True)
domain.cf_update_values(False)
target.endswith(".tyto") and post.is_article(target) target.endswith(".tyto") and post.is_article(target)
langs.load_website_lang() langs.load_website_lang()

View File

@ -57,12 +57,6 @@ def cf_load():
cf = configparser.ConfigParser() cf = configparser.ConfigParser()
cf.read(cf_uri) cf.read(cf_uri)
# Set some needed global values
global articles_dir, db_dir
articles_dir = cf.get("USER_DIRS", "articles")
db_dir = cf.get("USER_DIRS", "database")
#=====================================# #=====================================#
# Load User Domain Configuration file # # Load User Domain Configuration file #
@ -154,7 +148,7 @@ def cf_create():
forms.ask_domain_shortname(name) forms.ask_domain_shortname(name)
# Create default files # Create default files
tools.create_file(cf_uri, tyto.ini_domain) tools.create_file(cf_uri, tyto.ini_domain%name)
tools.create_dirs(ult_dir) tools.create_dirs(ult_dir)
tools.create_file(ult_cf_uri, tyto.ini_domain_user) tools.create_file(ult_cf_uri, tyto.ini_domain_user)
@ -177,7 +171,7 @@ def cf_create():
forms.ask_domain_server(True) forms.ask_domain_server(True)
# Update Domain Configuration file # Update Domain Configuration file
cf_update_values() cf_update_values(True)
#===========================================# #===========================================#
@ -185,166 +179,332 @@ def cf_create():
# Ask for some values if empty # # Ask for some values if empty #
# Ensure to set correct values # # Ensure to set correct values #
#-------------------------------------------# #-------------------------------------------#
def cf_update_values(): def cf_update_values(write):
# Prepare Domain Configuration File keys values global cf
#----------------------------------------------- # Load Domain Configuration file
cf = ""
cf_load() cf_load()
# Server if cf.get("DOMAIN", "name") != name:
srv = cf.get("SERVER", "root") or \ cf.set("DOMAIN", "name", name)
cf.set("SERVER", "root", forms.ask_domain_server(False)) debug.out(204, "[DOMAIN] name", name, False, 0, False)
write = True
# Title # [SERVER]
cf.get("DOMAIN", "title") or \ global srv
srv = cf.get("SERVER", "root")
if not tools.dir_exists(srv, False):
srv = forms.ask_domain_server(False)
cf.set("SERVER", "root", srv)
debug.out(204, "[SERVER] root", srv, False, 0, False)
write = True
global srv_name
srv_name = os.path.join(srv, name + "/")
print("domain: srv_name", srv_name)
if cf.get("SERVER", "domain") != srv_name:
cf.set("SERVER", "domain", srv_name)
debug.out(204, "[SERVER] domain", srv_name, False, 0, False)
write = True
global srv_wip
srv_wip = os.path.join(srv_name, "wip/")
if cf.get("SERVER", "wip") != srv_wip:
cf.set("SERVER", "wip", srv_wip)
debug.out(204, "[SERVER] wip", srv_wip, False, 0, False)
write = True
global srv_wip_tpl
srv_wip_tpl = os.path.join(srv_wip, "template/")
if cf.get("WIP_DIRS", "template") != srv_wip_tpl:
cf.set("WIP_DIRS", "template", srv_wip_tpl)
debug.out(204, "[WIP_DIRS] template", srv_wip_tpl, False, 0, False)
write = True
global srv_wip_images
srv_wip_images = os.path.join(srv_wip, "images/")
if cf.get("WIP_DIRS", "images") != srv_wip_images:
cf.set("WIP_DIRS", "images", srv_wip_images)
debug.out(204, "[WIP_DIRS] images", srv_wip_images, False, 0, False)
write = True
global srv_wip_files
srv_wip_files = os.path.join(srv_wip, "files/")
if cf.get("WIP_DIRS", "files") != srv_wip_files:
cf.set("WIP_DIRS", "files", srv_wip_files)
debug.out(204, "[WIP_DIRS] files", srv_wip_files, False, 0, False)
write = True
global srv_www
srv_www = os.path.join(srv_name, "www/")
if cf.get("SERVER", "www") != srv_www:
cf.set("SERVER", "www", srv_www)
debug.out(204, "[SERVER] www", srv_www, False, 0, False)
write = True
global srv_www_tpl
srv_www_tpl = os.path.join(srv_www, "template/")
if cf.get("WWW_DIRS", "template") != srv_www_tpl:
cf.set("WWW_DIRS", "template", srv_www_tpl)
debug.out(204, "[WWW_DIRS] template", srv_www_tpl, False, 0, False)
write = True
global srv_www_images
srv_www_images = os.path.join(srv_www, "images/")
if cf.get("WWW_DIRS", "images") != srv_www_images:
cf.set("WWW_DIRS", "images", srv_www_images)
debug.out(204, "[WWW_DIRS] images", srv_www_images, False, 0, False)
write = True
global srv_www_files
srv_www_files = os.path.join(srv_www, "files/")
if cf.get("WWW_DIRS", "files") != srv_www_files:
cf.set("WWW_DIRS", "files", srv_www_files)
debug.out(204, "[WWW_DIRS] files", srv_www_files, False, 0, False)
write = True
# [DOMAIN]
# ========
try: cf.getboolean("DOMAIN", "activated")
except:
cf.set("DOMAIN", "activated", "no")
debug.out(204, "[DOMAIN] activated", "no", False, 0, False)
write = True
global title
title = cf.get("DOMAIN", "title")
if not title:
cf.set("DOMAIN", "title", forms.ask_domain_title(False)) cf.set("DOMAIN", "title", forms.ask_domain_title(False))
write = True
# Date global date
cf.get("DOMAIN", "date") or \ date = cf.get("DOMAIN", "date")
if not date:
cf.set("DOMAIN", "date", forms.ask_domain_date(False)) cf.set("DOMAIN", "date", forms.ask_domain_date(False))
write = True
# About global about
cf.get("DOMAIN", "about") or \ about = cf.get("DOMAIN", "about")
if not about:
cf.set("DOMAIN", "about", forms.ask_domain_about(False)) cf.set("DOMAIN", "about", forms.ask_domain_about(False))
write = True
# mail global mail
cf.get("DOMAIN", "mail") or \ mail = cf.get("DOMAIN", "mail")
if not mail:
cf.set("DOMAIN", "mail", forms.ask_domain_mail(False)) cf.set("DOMAIN", "mail", forms.ask_domain_mail(False))
write = True
# tags global tags
cf.get("DOMAIN", "tags") or \ tags = cf.get("DOMAIN", "tags")
if not tags:
cf.set("DOMAIN", "tags", forms.ask_domain_tags(False)) cf.set("DOMAIN", "tags", forms.ask_domain_tags(False))
write = True
global license, license_url
license = cf.get("DOMAIN", "license")
if not license:
cf.set("DOMAIN", "license", "gfdl-1.3")
write = True
license_url = cf.get("DOMAIN", "license_url")
if license == "gfdl-1.3" and \
not license_url == "https://www.gnu.org/licenses/fdl-1.3.txt":
cf.set("DOMAIN", "license_url", "https://www.gnu.org/licenses/fdl-1.3.txt")
write = True
# [WEBSITE]
# =========
global www_url, wip_url
www_url = cf.get("WEBSITE", "www_url")
if not www_url:
cf.set("WEBSITE", "www_url", "https://%s/"%name)
write = True
wip_url = cf.get("WEBSITE", "wip_url")
if not wip_url:
cf.set("WEBSITE", "wip_url", create_wip_url())
write = True
global lang
lang = cf.get("WEBSITE", "lang")
if not lang:
cf.set("WEBSITE", "lang", forms.ask_domain_lang(False))
write = True
elif not langs.translation_exists("website", lang, False):
lang = langs.get_sys_lang()
write = True
# Lang
cf.get("WEBSITE", "lang") or \
cf.set("WEBSITE", "date", forms.ask_domain_lang(False))
langs.load_website_lang() langs.load_website_lang()
# Set URIs from srv uri global css
srv_dom = os.path.join(srv, name + "/") css = cf.get("WEBSITE", "css")
srv_wip = os.path.join(srv_dom, "wip/") if not css:
srv_www = os.path.join(srv_dom, "www/") cf.set("WEBSITE", "css", "tyto")
# Set booleans if invalid values global sep
try: cf.getboolean("DOMAIN", "activated") sep = cf.get("WEBSITE", "separator")
except: cf.set("DOMAIN", "activated", "no") if not sep or len(sep) > 2:
cf.set("WEBSITE", "separator", "|")
write = True
global article_code, static
try: cf.getboolean("WEBSITE", "article_code") try: cf.getboolean("WEBSITE", "article_code")
except: cf.set("WEBSITE", "article_code", "yes") except: cf.set("WEBSITE", "article_code", "yes") ; write = True
try: cf.getboolean("WEBSITE", "static") try: cf.getboolean("WEBSITE", "static")
except: cf.set("WEBSITE", "static", "no") except: cf.set("WEBSITE", "static", "no") ; write = True
try: cf.getboolean("WEBSITE_MODULES", "sitemaps")
except: cf.set("WEBSITE_MODULES", "sitemaps", "yes")
# Set template filenames to default if none # [WEBSITE_MODULES]
favicon = cf.get("TEMPLATE_FILENAMES", "favicon") or "favicon.png" global navbar
logo = cf.get("TEMPLATE_FILENAMES", "logo") or "logo.png" try: cf.getboolean("WEBSITE_MODULES", "navbar")
styles = cf.get("TEMPLATE_FILENAMES", "styles") or "styles.css" except: cf.set("WEBSITE_MODULES", "navbar", "yes") ; write = True
rss = cf.get("TEMPLATE_FILENAMES", "rss") or "rss.xml"
stats = cf.get("TEMPLATE_FILENAMES", "stats") or "stats.ini"
# https URLs (www + wip) global sidebar_title
cf.get("WEBSITE", "www_url") or \ sidebar_title = cf.get("WEBSITE_MODULES", "sidebar_title")
cf.set("WEBSITE", "www_url", "https://%s/"%name) if not sidebar_title:
cf.get("WEBSITE", "wip_url") or \
cf.set("WEBSITE", "wip_url", create_wip_url())
usr_mods = os.path.join(cf_dir, "modules/")
usr_tpl = os.path.join(cf_dir, "template/")
usr_favicon = os.path.join(usr_tpl, favicon)
usr_logo = os.path.join(usr_tpl, logo)
usr_styles = os.path.join(usr_tpl, styles)
wip_tpl = srv_wip + "template/"
wip_favicon = os.path.join(wip_tpl, favicon)
wip_logo = os.path.join(wip_tpl, logo)
wip_styles = os.path.join(wip_tpl, styles)
wip_rss = os.path.join(wip_tpl, rss)
wip_stats = os.path.join(wip_tpl, stats)
www_tpl = srv_www + "template/"
www_favicon = os.path.join(www_tpl, favicon)
www_logo = os.path.join(www_tpl, logo)
www_styles = os.path.join(www_tpl, styles)
www_rss = os.path.join(www_tpl, rss)
www_stats = os.path.join(www_tpl, stats)
# Update Domain Configuration File
#---------------------------------
cf.set("DOMAIN", "name", name)
cf.set("TYTO", "domain_hash", tools.get_filesum(cf_uri, False))
cf.set("TYTO", "domain_conf", cf_uri)
cf.set("TYTO", "domain_user", ult_cf_uri)
# USER
cf.set("USER_DIRS", "root", cf_dir)
cf.set("USER_DIRS", "articles", cf_dir + "articles/")
cf.set("USER_DIRS", "images", cf_dir + "images/")
cf.set("USER_DIRS", "files", cf_dir + "files/")
cf.set("USER_DIRS", "modules", usr_mods)
cf.set("USER_DIRS", "database", cf_dir + ".db/")
cf.set("USER_DIRS", "template", usr_tpl)
cf.set("USER_MODULES_FILES", "metas", usr_mods + "tyto_metas.raw")
cf.set("USER_MODULES_FILES", "header", usr_mods + "tyto_header.raw")
cf.set("USER_MODULES_FILES", "navbar", usr_mods + "tyto_navbar.raw")
cf.set("USER_MODULES_FILES", "sidebar", usr_mods + "tyto_sidebar.raw")
cf.set("USER_MODULES_FILES", "footer", usr_mods + "tyto_footer.raw")
cf.set("USER_TEMPLATE_FILES", "favicon", usr_favicon)
cf.set("USER_TEMPLATE_FILES", "logo", usr_logo)
cf.set("USER_TEMPLATE_FILES", "styles", usr_styles)
# WEBSITE
cf.get("WEBSITE_MODULES", "sidebar_title") or \
cf.set("WEBSITE_MODULES", "sidebar_title", langs.site.sidebar_title) cf.set("WEBSITE_MODULES", "sidebar_title", langs.site.sidebar_title)
cf.get("WEBSITE_MODULES", "sidebar_items").isdigit() or \ write = True
global sidebar_items
sidebar_items = cf.get("WEBSITE_MODULES", "sidebar_items")
if not sidebar_items.isdigit():
cf.set("WEBSITE_MODULES", "sidebar_items", "0") cf.set("WEBSITE_MODULES", "sidebar_items", "0")
cf.get("WEBSITE_MODULES", "rss_items").isdigit() or \ write = True
try: cf.getboolean("WEBSITE_MODULES", "sitemaps")
except: cf.set("WEBSITE_MODULES", "sitemaps", "yes") ; write = True
global rss_items
rss_items = cf.get("WEBSITE_MODULES", "rss_items")
if not rss_items.isdigit():
cf.set("WEBSITE_MODULES", "rss_items", "0") cf.set("WEBSITE_MODULES", "rss_items", "0")
write = True
# TEMPLATE_FILES
# ==============
favicon = cf.get("TEMPLATE_FILENAMES", "favicon")
if not favicon:
favicon = "favicon.png"
cf.set("TEMPLATE_FILENAMES", "favicon", favicon) cf.set("TEMPLATE_FILENAMES", "favicon", favicon)
cf.set("TEMPLATE_FILENAMES", "logo", logo) write = True
cf.set("TEMPLATE_FILENAMES", "styles", styles) usr_favicon = os.path.join(cf_usr_tpl, favicon)
cf.set("TEMPLATE_FILENAMES", "rss", rss) if cf.get("USER_TEMPLATE_FILES", "favicon") != usr_favicon:
cf.set("TEMPLATE_FILENAMES", "stats", stats) cf.set("USER_TEMPLATE_FILES", "favicon", usr_favicon)
write = True
# SERVER wip_favicon = os.path.join(srv_wip_tpl, favicon)
cf.set("SERVER", "root", srv) if cf.get("WIP_FILES", "favicon") != wip_favicon:
cf.set("SERVER", "domain", srv_dom)
# WIP
cf.set("WIP_DIRS", "root", srv_wip)
cf.set("WIP_DIRS", "images", srv_wip + "images/")
cf.set("WIP_DIRS", "files", srv_wip + "files/")
cf.set("WIP_DIRS", "template", wip_tpl)
cf.set("WIP_FILES", "favicon", wip_favicon) cf.set("WIP_FILES", "favicon", wip_favicon)
cf.set("WIP_FILES", "logo", wip_logo) write = True
cf.set("WIP_FILES", "styles", wip_styles) www_favicon = os.path.join(srv_www_tpl, favicon)
cf.set("WIP_FILES", "rss", wip_rss) if cf.get("WWW_FILES", "favicon") != www_favicon:
cf.set("WIP_FILES", "stats", wip_stats)
cf.set("WIP_FILES", "metas", wip_tpl + "metas.html")
cf.set("WIP_FILES", "header", wip_tpl + "header.html")
cf.set("WIP_FILES", "navbar", wip_tpl + "navbar.html")
cf.set("WIP_FILES", "sidebar", wip_tpl + "sidebar.html")
cf.set("WIP_FILES", "footer", wip_tpl + "footer.html")
# WWW
cf.set("WWW_DIRS", "root", srv_www)
cf.set("WWW_DIRS", "images", srv_www + "images/")
cf.set("WWW_DIRS", "files", srv_www + "files/")
cf.set("WWW_DIRS", "template", www_tpl)
cf.set("WWW_FILES", "favicon", www_favicon) cf.set("WWW_FILES", "favicon", www_favicon)
cf.set("WWW_FILES", "logo", www_logo) write = True
cf.set("WWW_FILES", "styles", www_styles)
cf.set("WWW_FILES", "rss", www_rss)
cf.set("WWW_FILES", "stats", www_stats)
cf.set("WWW_FILES", "metas", www_tpl + "metas.html")
cf.set("WWW_FILES", "header", www_tpl + "header.html")
cf.set("WWW_FILES", "navbar", www_tpl + "navbar.html")
cf.set("WWW_FILES", "sidebar", www_tpl + "sidebar.html")
cf.set("WWW_FILES", "footer", www_tpl + "footer.html")
logo = cf.get("TEMPLATE_FILENAMES", "logo")
if not logo:
logo = "logo.png"
cf.set("TEMPLATE_FILENAMES", "logo", logo)
write = True
usr_logo = os.path.join(cf_usr_tpl, logo)
if cf.get("USER_TEMPLATE_FILES", "logo") != usr_logo:
cf.set("USER_TEMPLATE_FILES", "logo", usr_logo)
write = True
wip_logo = os.path.join(srv_wip_tpl, logo)
if cf.get("WIP_FILES", "logo") != wip_logo:
cf.set("WIP_FILES", "logo", wip_logo)
write = True
www_logo = os.path.join(srv_www_tpl, logo)
if cf.get("WWW_FILES", "logo") != www_logo:
cf.set("WWW_FILES", "logo", www_logo)
write = True
styles = cf.get("TEMPLATE_FILENAMES", "styles")
if not styles:
styles = "styles.css"
cf.set("TEMPLATE_FILENAMES", "styles", styles)
write = True
usr_styles = os.path.join(cf_usr_tpl, styles)
if cf.get("USER_TEMPLATE_FILES", "styles") != usr_styles:
cf.set("USER_TEMPLATE_FILES", "styles", usr_styles)
write = True
wip_styles = os.path.join(srv_wip_tpl, styles)
if cf.get("WIP_FILES", "styles") != wip_styles:
cf.set("WIP_FILES", "styles", wip_styles)
write = True
www_styles = os.path.join(srv_www_tpl, styles)
if cf.get("WWW_FILES", "styles") != www_styles:
cf.set("WWW_FILES", "styles", www_styles)
write = True
rss = cf.get("TEMPLATE_FILENAMES", "rss")
if not rss:
rss = "rss.xml"
cf.set("TEMPLATE_FILENAMES", "rss", rss)
write = True
wip_rss = os.path.join(srv_wip_tpl, rss)
if cf.get("WIP_FILES", "rss") != wip_rss:
cf.set("WIP_FILES", "rss", wip_rss)
write = True
www_rss = os.path.join(srv_www_tpl, rss)
if cf.get("WWW_FILES", "rss") != www_rss:
cf.set("WWW_FILES", "rss", www_rss)
write = True
stats = cf.get("TEMPLATE_FILENAMES", "stats")
if not stats:
stats = "tyto_stats.ini"
cf.set("TEMPLATE_FILENAMES", "stats", stats)
write = True
wip_stats = os.path.join(srv_wip_tpl, stats)
if cf.get("WIP_FILES", "stats") != wip_stats:
cf.set("WIP_FILES", "stats", wip_stats)
write = True
www_stats = os.path.join(srv_www_tpl, stats)
if cf.get("WWW_FILES", "stats") != www_stats:
cf.set("WWW_FILES", "stats", www_stats)
write = True
# [USER_DIRS]
# ===========
if cf.get("USER_DIRS", "root") != cf_dir:
cf.set("USER_DIRS", "root", cf_dir)
write = True
if cf.get("USER_DIRS", "articles") != cf_usr_articles:
cf.set("USER_DIRS", "articles", cf_usr_articles)
write = True
if cf.get("USER_DIRS", "images") != cf_usr_images:
cf.set("USER_DIRS", "images", cf_usr_images)
write = True
if cf.get("USER_DIRS", "files") != cf_usr_files:
cf.set("USER_DIRS", "files", cf_usr_files)
write = True
if cf.get("USER_DIRS", "template") != cf_usr_tpl:
cf.set("USER_DIRS", "template", cf_usr_tpl)
write = True
if cf.get("USER_DIRS", "modules") != cf_usr_mods:
cf.set("USER_DIRS", "modules", cf_usr_mods)
write = True
if cf.get("USER_DIRS", "database") != cf_usr_db:
cf.set("USER_DIRS", "database", cf_usr_db)
write = True
# [TYTO]
# ======
if cf.get("TYTO", "domain_hash") != cf_id:
cf.set("TYTO", "domain_hash", cf_id)
write = True
if cf.get("TYTO", "domain_conf") != cf_uri:
cf.set("TYTO", "domain_conf", cf_uri)
write = True
if cf.get("TYTO", "domain_user") != ult_cf_uri:
cf.set("TYTO", "domain_user", ult_cf_uri)
write = True
# Write Configuration file
# Only if needed or when new domain
print("domain: write", write)
if write:
with open(cf_uri, "w") as f: with open(cf_uri, "w") as f:
cf.write(f) cf.write(f)
@ -377,26 +537,15 @@ def cf_update_values():
def cf_valid(): def cf_valid():
global active global active
# Check some values in ult_cf
cf_load()
ult_cf_load()
if not tools.compare_ini_ft(cf_uri, tyto.ini_domain): if not tools.compare_ini_ft(cf_uri, tyto.ini_domain):
return cf_update_values(False)
# - domain name must be cf_name
try: cf_name = cf.get("DOMAIN", "name")
except: debug.out(100, name, cf_uri, True, 2, True)
if cf_name != name:
cf_update_values()
try: ult_cf_hash = ult_cf.get("DOMAIN", "hash")
except: cf_update_values()
# Check if cf need to be updated # Check if cf need to be updated
ult_cf_load()
ult_cf_hash = ult_cf.get("DOMAIN", "hash")
now_cf_hash = tools.get_filesum(cf_uri, True) now_cf_hash = tools.get_filesum(cf_uri, True)
if now_cf_hash != ult_cf_hash: if now_cf_hash != ult_cf_hash:
cf_update_values() cf_update_values(False)
active = is_active() active = is_active()
active and create_work_dirs() active and create_work_dirs()
@ -457,6 +606,12 @@ except:
#------------------------------------------# #------------------------------------------#
# Domain Configuration directory # Domain Configuration directory
cf_dir = user_dir.rsplit("articles/")[0] cf_dir = user_dir.rsplit("articles/")[0]
cf_usr_articles = os.path.join(cf_dir, "articles/")
cf_usr_tpl = os.path.join(cf_dir, "template/")
cf_usr_images = os.path.join(cf_dir, "images/")
cf_usr_files = os.path.join(cf_dir, "files/")
cf_usr_mods = os.path.join(cf_dir, "modules/")
cf_usr_db = os.path.join(cf_dir, ".db/")
# Domain name from current basename directory # Domain name from current basename directory
# Exit if not format at least "abc.tld" # Exit if not format at least "abc.tld"

View File

@ -107,12 +107,6 @@ def ask_domain_title(update):
try: title = domain.cf.get("DOMAIN", "title") try: title = domain.cf.get("DOMAIN", "title")
except: title = "" except: title = ""
"""
if update:
domain.cf_load()
title = domain.cf.get("DOMAIN", "title")
"""
q = "> %s (%s)%s "%(langs.logs.domain_title, shorter(title), langs.logs.q) q = "> %s (%s)%s "%(langs.logs.domain_title, shorter(title), langs.logs.q)
answer = ask(q, False, title) answer = ask(q, False, title)
@ -130,11 +124,7 @@ def ask_domain_title(update):
def ask_domain_date(update): def ask_domain_date(update):
try: date = domain.cf.get("DOMAIN", "date") try: date = domain.cf.get("DOMAIN", "date")
except: date = "YYYY[-MM-DD]" except: date = "YYYY[-MM-DD]"
"""
if update:
domain.cf_load()
date = domain.cf.get("DOMAIN", "date")
"""
example = date or "YYYY[-MM-DD]" example = date or "YYYY[-MM-DD]"
q = "> %s (%s)%s "%(langs.logs.domain_date, example, langs.logs.q) q = "> %s (%s)%s "%(langs.logs.domain_date, example, langs.logs.q)
@ -171,12 +161,6 @@ def ask_domain_about(update):
try: about = domain.cf.get("DOMAIN", "about") try: about = domain.cf.get("DOMAIN", "about")
except: about = "" except: about = ""
"""
if update:
domain.cf_load()
about = domain.cf.get("DOMAIN", "about")
"""
q = "> %s (%s)%s "%(langs.logs.domain_about, shorter(about), langs.logs.q) q = "> %s (%s)%s "%(langs.logs.domain_about, shorter(about), langs.logs.q)
answer = ask(q, False, about) answer = ask(q, False, about)
@ -193,11 +177,6 @@ def ask_domain_about(update):
def ask_domain_mail(update): def ask_domain_mail(update):
try: mail = domain.cf.get("DOMAIN", "mail") try: mail = domain.cf.get("DOMAIN", "mail")
except: mail = "" except: mail = ""
"""
if update:
domain.cf_load()
mail = domain.cf.get("DOMAIN", "mail")
"""
q = "> %s (%s)%s "%(langs.logs.domain_mail, shorter(mail), langs.logs.q) q = "> %s (%s)%s "%(langs.logs.domain_mail, shorter(mail), langs.logs.q)
answer = ask(q, False, mail) answer = ask(q, False, mail)
@ -215,11 +194,6 @@ def ask_domain_mail(update):
def ask_domain_tags(update): def ask_domain_tags(update):
try: tags = domain.cf.get("DOMAIN", "tags") try: tags = domain.cf.get("DOMAIN", "tags")
except: tags = "" except: tags = ""
"""
if update:
domain.cf_load()
tags = domain.cf.get("DOMAIN", "tags")
"""
q = "> %s (%s)%s "%(langs.logs.domain_tags, shorter(tags), langs.logs.q) q = "> %s (%s)%s "%(langs.logs.domain_tags, shorter(tags), langs.logs.q)
answer = ask(q, False, tags) answer = ask(q, False, tags)
@ -241,15 +215,9 @@ def ask_domain_tags(update):
# default en if no translation file # > !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! < TODO # default en if no translation file # > !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! < TODO
#-----------------------------------# #-----------------------------------#
def ask_domain_lang(update): def ask_domain_lang(update):
try: try: lang = domain.cf.get("WEBSITE", "lang") or langs.get_sys_lang()
lang = domain.cf.get("WEBSITE", "lang") or langs.get_sys_lang() except: lang = ""
except:
lang = ""
"""
if update:
domain.cf_load()
lang = domain.cf.get("WEBSITE", "lang")
"""
q = "> %s (%s)%s "%(langs.logs.domain_lang, lang, langs.logs.q) q = "> %s (%s)%s "%(langs.logs.domain_lang, lang, langs.logs.q)
answer = ask(q, False, lang).lower() answer = ask(q, False, lang).lower()
@ -278,12 +246,8 @@ def ask_domain_server(update):
srv = domain.cf.get("SERVER", "root") srv = domain.cf.get("SERVER", "root")
if not tools.dir_exists(srv, False): if not tools.dir_exists(srv, False):
srv = "" srv = ""
except: srv = "" except:
""" srv = ""
if update:
domain.cf_load()
srv = domain.cf.get("SERVER", "root")
"""
if srv and not tools.dir_exists(srv, False): if srv and not tools.dir_exists(srv, False):
srv = "" srv = ""

View File

@ -45,17 +45,17 @@ import domain, debug, tools, tyto
def is_article(target): def is_article(target):
# User MUST be in articles/ # User MUST be in articles/
domain.cf_load() domain.cf_load()
(os.getcwd() + "/").startswith(domain.articles_dir) or \ (os.getcwd() + "/").startswith(domain.cf_usr_articles) or \
debug.out(2, "-> articles/", domain.articles_dir, True, 2, True) debug.out(2, "-> articles/", domain.cf_usr_articles, True, 2, True)
# Target URI is from legacy directory # Target URI most be from legacy directory or not begins with
if target.startswith("./") or target.startswith("../"): if target.startswith(tyto.notarget):
debug.out(20, "./, ../", target, True, 2, True) debug.out(20, "./, ../", target, True, 2, True)
# Article exists # Article exists
global uri global uri
uri = os.path.join(domain.articles_dir, target) uri = os.path.join(domain.cf_usr_articles, target)
os.path.exists(uri) or debug.out(5, "False", uri, True, 2, True) os.path.exists(uri) or debug.out(5, "False", uri, True, 2, True)
# Article is a Tyto format and not empty (exit on errors) # Article is a Tyto format and not empty (exit on errors)
@ -68,7 +68,7 @@ def is_article(target):
uri_id = tools.get_filesum(uri, False) uri_id = tools.get_filesum(uri, False)
# Set post configuration file database # Set post configuration file database
cf_uri = os.path.join(domain.db_dir, uri_id + ".ini") cf_uri = os.path.join(domain.cf_usr_db, uri_id + ".ini")
# Load Database # Load Database
db = cf_load() # True or False db = cf_load() # True or False

View File

@ -61,7 +61,7 @@ git_url = "https://git.a-lec.org/echolib/tyto-litterateur"
#---------------------------# #---------------------------#
ini_domain = """[DOMAIN] ini_domain = """[DOMAIN]
activated = no activated = no
name = name = %s
title = title =
date = date =
about = about =
@ -94,7 +94,7 @@ favicon = favicon.png
logo = logo.png logo = logo.png
styles = styles.css styles = styles.css
rss = rss.xml rss = rss.xml
stats = stats.ini stats = tyto_stats.ini
[USER_DIRS] [USER_DIRS]
root = root =
@ -120,9 +120,10 @@ footer =
[SERVER] [SERVER]
root = /var/www/ root = /var/www/
domain = domain =
wip =
www =
[WIP_DIRS] [WIP_DIRS]
root =
images = images =
files = files =
template = template =
@ -140,7 +141,6 @@ sidebar =
footer = footer =
[WWW_DIRS] [WWW_DIRS]
root =
images = images =
files = files =
template = template =
@ -231,6 +231,9 @@ web =
lines = lines =
""" """
# Put here values where posts target cannot begin with
notarget = ("./", "../")
#===================# #===================#
# Artcicle contents #========================================================== # Artcicle contents #==========================================================
#===================# #===================#