Cleaner code, better update process for domain configuration file
This commit is contained in:
parent
02cad1789e
commit
2bcda76cd0
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/env python3
|
||||
# Version: 1.9.8
|
||||
# Updated: 2023-09-27 1695826135
|
||||
# Version: 1.9.9
|
||||
# Updated: 2023-09-29 1695992721
|
||||
# Tyto - Littérateur
|
||||
|
||||
# Copyright (C) 2023 Cyrille Louarn <echolib+tyto@a-lec.org>
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -67,10 +67,7 @@ def ult_cf_load():
|
|||
|
||||
ult_cf = False
|
||||
if not os.path.exists(ult_cf_uri):
|
||||
tools.create_file(ult_cf_uri, tyto.ini_domain_user)
|
||||
if os.path.exists(cf_uri): cf_update_values()
|
||||
else: debug.out(100, name, ult_cf_uri, True, 1, True)
|
||||
|
||||
tools.create_file(ult_cf_uri, tyto.ini_domain_user)
|
||||
|
||||
ult_cf = configparser.ConfigParser()
|
||||
ult_cf.read(ult_cf_uri)
|
||||
|
@ -83,10 +80,10 @@ def ult_dlf_load():
|
|||
global ult_dlf
|
||||
|
||||
# User Domains list file
|
||||
ult_dlf = False
|
||||
if not os.path.exists(ult_dlf_uri):
|
||||
tools.create_file(ult_dlf_uri, tyto.ini_domains_list)
|
||||
|
||||
ult_dlf = False
|
||||
ult_dlf = configparser.ConfigParser()
|
||||
ult_dlf.read(ult_dlf_uri)
|
||||
|
||||
|
@ -113,20 +110,20 @@ def cf_exists():
|
|||
|
||||
|
||||
#=========================================#
|
||||
# Guess and return wip_url from name #
|
||||
# Guess and return www_url from name #
|
||||
#-----------------------------------------#
|
||||
def create_wip_url():
|
||||
wip_url = "https://www-wip.%s/"
|
||||
def create_www_url():
|
||||
www_url = "https://www-wip.%s/"
|
||||
len_cn = name.count(".")
|
||||
|
||||
# Domain name Format: a.b
|
||||
if len_cn == 1:
|
||||
return wip_url%name
|
||||
return www_url%name
|
||||
|
||||
# Domain name format: (at least) a.b.c
|
||||
len_cn = len(name.rsplit(".")[0]) + 1
|
||||
tld = name[len_cn:]
|
||||
return wip_url%tld
|
||||
return www_url%tld
|
||||
|
||||
|
||||
#==========================================#
|
||||
|
@ -174,470 +171,330 @@ def cf_create():
|
|||
cf_update_values(True)
|
||||
|
||||
|
||||
|
||||
#===================================================#
|
||||
# Generic set section and values for ini file #
|
||||
# File must exists (checked before) #
|
||||
# Create section, set key if not exists #
|
||||
# Ask yser when default is a key form and not value #
|
||||
#---------------------------------------------------#
|
||||
def cf_set_value(section, key, default):
|
||||
global new_val
|
||||
try: new_val
|
||||
except: new_val = False
|
||||
|
||||
try:
|
||||
val = cf.get(section, key)
|
||||
except:
|
||||
try: cf.add_section(section) ; new_val = True
|
||||
except: pass
|
||||
val = ""
|
||||
|
||||
# Values has a form
|
||||
if default in tyto.keys_4q:
|
||||
if val: return val
|
||||
else: default = tyto.keys_questions[default](False) ; new_val = True
|
||||
|
||||
# Optional key
|
||||
elif not default:
|
||||
if not val: return default
|
||||
else: default = val
|
||||
|
||||
# Force set default value
|
||||
if val != default:
|
||||
new_val = True
|
||||
|
||||
cf.set(section, key, default)
|
||||
debug.out(204, "[%s] %s"%(section, key), default, False, 0, False)
|
||||
|
||||
return default
|
||||
|
||||
|
||||
#===========================================#
|
||||
# Set or Update domain configuration values #
|
||||
# Ask for some values if empty #
|
||||
# Ensure to set correct values #
|
||||
#-------------------------------------------#
|
||||
def cf_update_values(write):
|
||||
def cf_update_values(write):
|
||||
# Load Domain Configuration file
|
||||
cf_load()
|
||||
|
||||
if cf.get("DOMAIN", "name") != name:
|
||||
cf.set("DOMAIN", "name", name)
|
||||
debug.out(204, "[DOMAIN] name", name, False, 0, False)
|
||||
write = True
|
||||
|
||||
# [SERVER]
|
||||
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 + "/")
|
||||
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 activated, title, date, about, mail, tags, license, license_url
|
||||
try: activated = cf.getboolean("DOMAIN", "activated")
|
||||
except: activated = cf_set_value("DOMAIN", "activated", "no")
|
||||
|
||||
global title
|
||||
title = cf.get("DOMAIN", "title")
|
||||
if not title:
|
||||
cf.set("DOMAIN", "title", forms.ask_domain_title(False))
|
||||
write = True
|
||||
cf_set_value("DOMAIN", "name", name)
|
||||
|
||||
global date
|
||||
date = cf.get("DOMAIN", "date")
|
||||
if not date:
|
||||
cf.set("DOMAIN", "date", forms.ask_domain_date(False))
|
||||
write = True
|
||||
|
||||
global about
|
||||
about = cf.get("DOMAIN", "about")
|
||||
if not about:
|
||||
cf.set("DOMAIN", "about", forms.ask_domain_about(False))
|
||||
write = True
|
||||
|
||||
global mail
|
||||
mail = cf.get("DOMAIN", "mail")
|
||||
if not mail:
|
||||
cf.set("DOMAIN", "mail", forms.ask_domain_mail(False))
|
||||
write = True
|
||||
|
||||
global tags
|
||||
tags = cf.get("DOMAIN", "tags")
|
||||
if not tags:
|
||||
cf.set("DOMAIN", "tags", forms.ask_domain_tags(False))
|
||||
write = True
|
||||
|
||||
global license, license_url
|
||||
license = cf.get("DOMAIN", "license")
|
||||
title = cf_set_value("DOMAIN", "title", "title")
|
||||
date = cf_set_value("DOMAIN", "date", "date")
|
||||
about = cf_set_value("DOMAIN", "about", "about")
|
||||
mail = cf_set_value("DOMAIN", "mail", "mail")
|
||||
tags = cf_set_value("DOMAIN", "tags", "tags")
|
||||
license = cf_set_value("DOMAIN", "lincese", "")
|
||||
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
|
||||
|
||||
license = cf_set_value("DOMAIN", "lincese", "gfdl-1.3")
|
||||
license_url = cf_set_value("DOMAIN", "lincese_url",
|
||||
"https://www.gnu.org/licenses/fdl-1.3.txt")
|
||||
elif not license == "gfdl-1.3":
|
||||
license_url = cf_set_value("DOMAIN", "lincese_url","")
|
||||
|
||||
# Optional
|
||||
global legals_url, terms_url, statuses_url
|
||||
legals_url = cf.get("DOMAIN", "legals_url")
|
||||
terms_url = cf.get("DOMAIN", "terms_url")
|
||||
statuses_url = cf.get("DOMAIN", "statuses_url")
|
||||
legals_url = cf_set_value("DOMAIN", "legals_url", "")
|
||||
terms_url = cf_set_value("DOMAIN", "terms_url", "")
|
||||
statuses_url = cf_set_value("DOMAIN", "statuses_url", "")
|
||||
|
||||
|
||||
# [SERVER]
|
||||
# ========
|
||||
global srv, srv_name, wip, www
|
||||
srv = cf_set_value("SERVER", "root", "server")
|
||||
if not tools.dir_exists(srv, False):
|
||||
srv = cf_set_value("SERVER", "root", "server")
|
||||
|
||||
srv_name = os.path.join(srv, name + "/")
|
||||
cf_set_value("SERVER", "domain", srv_name)
|
||||
|
||||
wip = os.path.join(srv_name, "wip/")
|
||||
cf_set_value("SERVER", "wip", wip)
|
||||
|
||||
www = os.path.join(srv_name, "www/")
|
||||
cf_set_value("SERVER", "www", www)
|
||||
|
||||
|
||||
# [WIP_DIRS]
|
||||
# ==========
|
||||
global wip_tpl, wip_images, wip_files
|
||||
wip_tpl = os.path.join(wip, "template/")
|
||||
cf_set_value("WIP_DIRS", "template", wip_tpl)
|
||||
|
||||
wip_images = os.path.join(wip, "images/")
|
||||
cf_set_value("WIP_DIRS", "images", wip_images)
|
||||
|
||||
wip_files = os.path.join(wip, "files/")
|
||||
cf_set_value("WIP_DIRS", "files", wip_files)
|
||||
|
||||
|
||||
# [WWW_DIRS]
|
||||
# ==========
|
||||
global www_tpl, www_images, www_files
|
||||
www_tpl = os.path.join(www, "template/")
|
||||
cf_set_value("WWW_DIRS", "template", www_tpl)
|
||||
|
||||
www_images = os.path.join(www, "images/")
|
||||
cf_set_value("WWW_DIRS", "images", www_images)
|
||||
|
||||
www_files = os.path.join(www, "files/")
|
||||
cf_set_value("WWW_DIRS", "files", www_files)
|
||||
|
||||
|
||||
# [WEBSITE]
|
||||
# =========
|
||||
global www_url
|
||||
www_url = cf.get("WEBSITE", "www_url")
|
||||
global www_url, www_url, lang, css, sep, article_code, static
|
||||
www_url = cf_set_value("WEBSITE", "www_url", "")
|
||||
if not www_url:
|
||||
www_url = "https://%s/"%name
|
||||
cf.set("WEBSITE", "www_url", www_url)
|
||||
debug.out(204, "[WEBSITE] www_url", www_url, False, 0, False)
|
||||
write = True
|
||||
www_url = cf_set_value("WEBSITE", "www_url", create_www_url())
|
||||
|
||||
global wip_url
|
||||
wip_url = cf.get("WEBSITE", "wip_url")
|
||||
if not wip_url:
|
||||
wip_url = create_wip_url()
|
||||
cf.set("WEBSITE", "wip_url", wip_url)
|
||||
debug.out(204, "[WEBSITE] wip_url", wip_url, False, 0, False)
|
||||
write = True
|
||||
www_url = cf_set_value("WEBSITE", "www_url", "")
|
||||
if not www_url:
|
||||
www_url = cf_set_value("WEBSITE", "www_url", "https://%s/"%name)
|
||||
|
||||
global lang
|
||||
lang = cf.get("WEBSITE", "lang")
|
||||
lang = cf_set_value("WEBSITE", "lang", "")
|
||||
if not lang:
|
||||
cf.set("WEBSITE", "lang", forms.ask_domain_lang(False))
|
||||
write = True
|
||||
lang = cf_set_value("WEBSITE", "lang", langs.load_website_lang())
|
||||
elif not langs.translation_exists("website", lang, False):
|
||||
lang = langs.get_sys_lang()
|
||||
write = True
|
||||
|
||||
langs.load_website_lang()
|
||||
|
||||
global css
|
||||
css = cf.get("WEBSITE", "css")
|
||||
css = cf_set_value("WEBSITE", "css", "")
|
||||
if not css:
|
||||
cf.set("WEBSITE", "css", "tyto")
|
||||
write = True
|
||||
|
||||
global sep
|
||||
sep = cf.get("WEBSITE", "separator")
|
||||
if not sep or len(sep) > 2:
|
||||
cf.set("WEBSITE", "separator", "|")
|
||||
write = True
|
||||
css = cf_set_value("WEBSITE", "css", "tyto")
|
||||
|
||||
sep = cf_set_value("WEBSITE", "separator", "")
|
||||
if not sep or len(sep) > 2:
|
||||
sep = cf_set_value("WEBSITE", "separator", "|")
|
||||
|
||||
try: article_code = cf.getboolean("WEBSITE", "article_code")
|
||||
except: article_code = cf_set_value("WEBSITE", "article_code", "yes")
|
||||
try: static = cf.getboolean("WEBSITE", "static")
|
||||
except: static = cf_set_value("WEBSITE", "static", "no")
|
||||
|
||||
|
||||
global article_code, static
|
||||
try: cf.getboolean("WEBSITE", "article_code")
|
||||
except: cf.set("WEBSITE", "article_code", "yes") ; write = True
|
||||
try: cf.getboolean("WEBSITE", "static")
|
||||
except: cf.set("WEBSITE", "static", "no") ; write = True
|
||||
|
||||
# [WEBSITE_MODULES]
|
||||
# =================
|
||||
global navbar
|
||||
try: cf.getboolean("WEBSITE_MODULES", "navbar")
|
||||
except: cf.set("WEBSITE_MODULES", "navbar", "yes") ; write = True
|
||||
global navbar, sidebar_title, sidebar_items, rss_items, sitemaps
|
||||
try: navbar = cf.getboolean("WEBSITE_MODULES", "navbar")
|
||||
except: navbar = cf_set_value("WEBSITE_MODULES", "navbar", "yes")
|
||||
|
||||
global sidebar_title
|
||||
sidebar_title = cf.get("WEBSITE_MODULES", "sidebar_title")
|
||||
sidebar_title = cf_set_value("WEBSITE_MODULES", "sidebar_title", "")
|
||||
if not sidebar_title:
|
||||
cf.set("WEBSITE_MODULES", "sidebar_title", langs.site.sidebar_title)
|
||||
write = True
|
||||
sidebar_title = cf_set_value("WEBSITE_MODULES", "sidebar_title",
|
||||
langs.site.sidebar_title)
|
||||
|
||||
global sidebar_items
|
||||
sidebar_items = cf.get("WEBSITE_MODULES", "sidebar_items")
|
||||
if not sidebar_items.isdigit():
|
||||
cf.set("WEBSITE_MODULES", "sidebar_items", "0")
|
||||
write = True
|
||||
sidebar_items = cf_set_value("WEBSITE_MODULES", "sidebar_items", "")
|
||||
if not sidebar_items or not sidebar_items.isdigit():
|
||||
sidebar_items = cf_set_value("WEBSITE_MODULES", "sidebar_items", "0")
|
||||
|
||||
try: cf.getboolean("WEBSITE_MODULES", "sitemaps")
|
||||
except: cf.set("WEBSITE_MODULES", "sitemaps", "yes") ; write = True
|
||||
rss_items = cf_set_value("WEBSITE_MODULES", "rss_items", "")
|
||||
if not rss_items or not rss_items.isdigit():
|
||||
rss_items = cf_set_value("WEBSITE_MODULES", "rss_items", "0")
|
||||
|
||||
try: sitemaps = cf.getboolean("WEBSITE_MODULES", "sitemaps")
|
||||
except: sitemaps = cf_set_value("WEBSITE_MODULES", "sitemaps", "yes")
|
||||
|
||||
global rss_items
|
||||
rss_items = cf.get("WEBSITE_MODULES", "rss_items")
|
||||
if not rss_items.isdigit():
|
||||
cf.set("WEBSITE_MODULES", "rss_items", "0")
|
||||
write = True
|
||||
|
||||
# TEMPLATE_FILES
|
||||
# ==============
|
||||
favicon = cf.get("TEMPLATE_FILENAMES", "favicon")
|
||||
# TEMPLATE_FILENAMES
|
||||
# ==================
|
||||
favicon = cf_set_value("TEMPLATE_FILENAMES", "favicon", "")
|
||||
if not favicon:
|
||||
favicon = "favicon.png"
|
||||
cf.set("TEMPLATE_FILENAMES", "favicon", favicon)
|
||||
write = True
|
||||
usr_favicon = os.path.join(cf_usr_tpl, favicon)
|
||||
if cf.get("USER_TEMPLATE_FILES", "favicon") != usr_favicon:
|
||||
cf.set("USER_TEMPLATE_FILES", "favicon", usr_favicon)
|
||||
write = True
|
||||
favicon = cf_set_value("TEMPLATE_FILENAMES", "favicon", "favicon.png")
|
||||
|
||||
|
||||
logo = cf.get("TEMPLATE_FILENAMES", "logo")
|
||||
logo = cf_set_value("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
|
||||
logo = cf_set_value("TEMPLATE_FILENAMES", "logo", "logo.png")
|
||||
|
||||
styles = cf.get("TEMPLATE_FILENAMES", "styles")
|
||||
styles = cf_set_value("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
|
||||
styles = cf_set_value("TEMPLATE_FILENAMES", "styles", "styles.css")
|
||||
|
||||
rss = cf.get("TEMPLATE_FILENAMES", "rss")
|
||||
rss = cf_set_value("TEMPLATE_FILENAMES", "rss", "")
|
||||
if not rss:
|
||||
rss = "rss.xml"
|
||||
cf.set("TEMPLATE_FILENAMES", "rss", rss)
|
||||
write = True
|
||||
rss = cf_set_value("TEMPLATE_FILENAMES", "rss", "rss.xml")
|
||||
|
||||
stats = cf.get("TEMPLATE_FILENAMES", "stats")
|
||||
stats = cf_set_value("TEMPLATE_FILENAMES", "stats", "")
|
||||
if not stats:
|
||||
stats = "tyto_stats.ini"
|
||||
cf.set("TEMPLATE_FILENAMES", "stats", stats)
|
||||
write = True
|
||||
|
||||
stats = cf_set_value("TEMPLATE_FILENAMES", "stats", "tyto_stats.ini")
|
||||
|
||||
|
||||
# [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
|
||||
cf_set_value("USER_DIRS", "root", wrk_dir)
|
||||
cf_set_value("USER_DIRS", "articles", wrk_articles)
|
||||
cf_set_value("USER_DIRS", "images", wrk_images)
|
||||
cf_set_value("USER_DIRS", "files", wrk_files)
|
||||
cf_set_value("USER_DIRS", "template", wrk_tpl)
|
||||
cf_set_value("USER_DIRS", "modules", wrk_mods)
|
||||
cf_set_value("USER_DIRS", "database", wrk_db)
|
||||
|
||||
# USER_MODULES_FILES
|
||||
# ==================
|
||||
global usr_metas
|
||||
usr_metas = os.path.join(cf_usr_mods, "tyto_metas.raw")
|
||||
if cf.get("USER_MODULES_FILES", "metas") != usr_metas:
|
||||
cf.set("USER_MODULES_FILES", "metas", usr_metas)
|
||||
debug.out(204, "[USER_MODULES_FILES] metas", usr_metas, False, 0, False)
|
||||
write = True
|
||||
|
||||
global usr_header
|
||||
usr_header = os.path.join(cf_usr_mods, "tyto_header.raw")
|
||||
if cf.get("USER_MODULES_FILES", "header") != usr_header:
|
||||
cf.set("USER_MODULES_FILES", "header", usr_header)
|
||||
debug.out(204, "[USER_MODULES_FILES] header", usr_header, False, 0, False)
|
||||
write = True
|
||||
|
||||
global usr_navbar
|
||||
usr_navbar = os.path.join(cf_usr_mods, "tyto_navbar.raw")
|
||||
if cf.get("USER_MODULES_FILES", "navbar") != usr_navbar:
|
||||
cf.set("USER_MODULES_FILES", "navbar", usr_navbar)
|
||||
debug.out(204, "[USER_MODULES_FILES] navbar", usr_navbar, False, 0, False)
|
||||
write = True
|
||||
# [USER_TEMPLATE_FILES]
|
||||
# =====================
|
||||
global wrk_favicon, wrk_logo, wri_styles
|
||||
wrk_favicon = os.path.join(wrk_tpl, favicon)
|
||||
cf_set_value("USER_TEMPLATE_FILES", "favicon", wrk_favicon)
|
||||
|
||||
global usr_sidebar
|
||||
usr_sidebar = os.path.join(cf_usr_mods, "tyto_sidebar.raw")
|
||||
if cf.get("USER_MODULES_FILES", "sidebar") != usr_sidebar:
|
||||
cf.set("USER_MODULES_FILES", "sidebar", usr_sidebar)
|
||||
debug.out(204, "[USER_MODULES_FILES] sidebar", usr_sidebar, False, 0, False)
|
||||
write = True
|
||||
wrk_logo = os.path.join(wrk_tpl, logo)
|
||||
cf_set_value("USER_TEMPLATE_FILES", "logo", wrk_logo)
|
||||
|
||||
wrk_styles = os.path.join(wrk_tpl, styles)
|
||||
cf_set_value("USER_TEMPLATE_FILES", "styles", wrk_styles)
|
||||
|
||||
|
||||
# [USER_MODULES_FILES]
|
||||
# ====================
|
||||
global wri_metas, wrk_header, wrk_navbar, wrk_sidebar, wrk_footer
|
||||
wrk_metas = os.path.join(wrk_mods, "tyto_metas.raw")
|
||||
cf_set_value("USER_MODULES_FILES", "metas", wrk_metas)
|
||||
|
||||
wrk_header = os.path.join(wrk_mods, "tyto_header.raw")
|
||||
cf_set_value("USER_MODULES_FILES", "header", wrk_header)
|
||||
|
||||
wrk_navbar = os.path.join(wrk_mods, "tyto_navbar.raw")
|
||||
cf_set_value("USER_MODULES_FILES", "navbar", wrk_navbar)
|
||||
|
||||
wrk_sidebar = os.path.join(wrk_mods, "tyto_sidebar.raw")
|
||||
cf_set_value("USER_MODULES_FILES", "sidebar", wrk_sidebar)
|
||||
|
||||
wrk_footer = os.path.join(wrk_mods, "tyto_footer.raw")
|
||||
cf_set_value("USER_MODULES_FILES", "footer", wrk_footer)
|
||||
|
||||
global usr_footer
|
||||
usr_footer = os.path.join(cf_usr_mods, "tyto_footer.raw")
|
||||
if cf.get("USER_MODULES_FILES", "footer") != usr_footer:
|
||||
cf.set("USER_MODULES_FILES", "footer", usr_footer)
|
||||
debug.out(204, "[USER_MODULES_FILES] footer", usr_footer, False, 0, False)
|
||||
write = True
|
||||
|
||||
# [WIP_FILES]
|
||||
# ===========
|
||||
wip_favicon = os.path.join(srv_wip_tpl, favicon)
|
||||
if cf.get("WIP_FILES", "favicon") != wip_favicon:
|
||||
cf.set("WIP_FILES", "favicon", wip_favicon)
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
global wip_favicon, wip_logo, wip_styles, wip_rss, wip_stats
|
||||
wip_favicon = os.path.join(wip_tpl, favicon)
|
||||
cf_set_value("WIP_FILES", "favicon", wip_favicon)
|
||||
|
||||
global wip_metas
|
||||
wip_metas = os.path.join(srv_wip_tpl, "metas.html")
|
||||
if cf.get("WIP_FILES", "metas") != wip_metas:
|
||||
cf.set("WIP_FILES", "metas", wip_metas)
|
||||
debug.out(204, "[WIP_FILES] metas", wip_metas, False, 0, False)
|
||||
write = True
|
||||
|
||||
global wip_header
|
||||
wip_header = os.path.join(srv_wip_tpl, "header.html")
|
||||
if cf.get("WIP_FILES", "header") != wip_header:
|
||||
cf.set("WIP_FILES", "header", wip_header)
|
||||
debug.out(204, "[WIP_FILES] header", wip_header, False, 0, False)
|
||||
write = True
|
||||
wip_logo = os.path.join(wip_tpl, logo)
|
||||
cf_set_value("WIP_FILES", "logo", wip_logo)
|
||||
|
||||
global wip_navbar
|
||||
wip_navbar = os.path.join(srv_wip_tpl, "navbar.html")
|
||||
if cf.get("WIP_FILES", "navbar") != wip_navbar:
|
||||
cf.set("WIP_FILES", "navbar", wip_navbar)
|
||||
debug.out(204, "[WIP_FILES] navbar", wip_navbar, False, 0, False)
|
||||
write = True
|
||||
wip_styles = os.path.join(wip_tpl, styles)
|
||||
cf_set_value("WIP_FILES", "styles", wip_styles)
|
||||
|
||||
global wip_sidebar
|
||||
wip_sidebar = os.path.join(srv_wip_tpl, "sidebar.html")
|
||||
if cf.get("WIP_FILES", "sidebar") != wip_sidebar:
|
||||
cf.set("WIP_FILES", "sidebar", wip_sidebar)
|
||||
debug.out(204, "[WIP_FILES] sidebar", wip_sidebar, False, 0, False)
|
||||
write = True
|
||||
wip_rss = os.path.join(wip_tpl, rss)
|
||||
cf_set_value("WIP_FILES", "rss", wip_rss)
|
||||
|
||||
wip_stats = os.path.join(wip_tpl, stats)
|
||||
cf_set_value("WIP_FILES", "stats", wip_stats)
|
||||
|
||||
global wip_metas, wip_header, wip_navbar, wip_sidebar, wip_footer
|
||||
wip_metas = os.path.join(wip_tpl, "metas.html")
|
||||
cf_set_value("WIP_FILES", "metas", wip_metas)
|
||||
|
||||
wip_header = os.path.join(wip_tpl, "header.html")
|
||||
cf_set_value("WIP_FILES", "header", wip_header)
|
||||
|
||||
wip_navbar = os.path.join(wip_tpl, "navbar.html")
|
||||
cf_set_value("WIP_FILES", "navbar", wip_navbar)
|
||||
|
||||
wip_sidebar = os.path.join(wip_tpl, "sidebar.html")
|
||||
cf_set_value("WIP_FILES", "sidebar", wip_sidebar)
|
||||
|
||||
wip_footer = os.path.join(wip_tpl, "footer.html")
|
||||
cf_set_value("WIP_FILES", "footer", wip_footer)
|
||||
|
||||
global wip_footer
|
||||
wip_footer = os.path.join(srv_wip_tpl, "footer.html")
|
||||
if cf.get("WIP_FILES", "footer") != wip_footer:
|
||||
cf.set("WIP_FILES", "footer", wip_footer)
|
||||
debug.out(204, "[WIP_FILES] footer", wip_footer, False, 0, False)
|
||||
write = True
|
||||
|
||||
# [WWW_FILES]
|
||||
# ===========
|
||||
www_favicon = os.path.join(srv_www_tpl, favicon)
|
||||
if cf.get("WWW_FILES", "favicon") != www_favicon:
|
||||
cf.set("WWW_FILES", "favicon", www_favicon)
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
global www_metas
|
||||
www_metas = os.path.join(srv_www_tpl, "metas.html")
|
||||
if cf.get("WWW_FILES", "metas") != www_metas:
|
||||
cf.set("WWW_FILES", "metas", www_metas)
|
||||
debug.out(204, "[WWW_FILES] metas", www_metas, False, 0, False)
|
||||
write = True
|
||||
global www_favicon, www_logo, www_styles, www_rss, www_stats
|
||||
www_favicon = os.path.join(www_tpl, favicon)
|
||||
cf_set_value("WWW_FILES", "favicon", www_favicon)
|
||||
|
||||
global www_header
|
||||
www_header = os.path.join(srv_www_tpl, "header.html")
|
||||
if cf.get("WWW_FILES", "header") != www_header:
|
||||
cf.set("WWW_FILES", "header", www_header)
|
||||
debug.out(204, "[WWW_FILES] header", www_header, False, 0, False)
|
||||
write = True
|
||||
www_logo = os.path.join(www_tpl, logo)
|
||||
cf_set_value("WWW_FILES", "logo", www_logo)
|
||||
|
||||
global www_navbar
|
||||
www_navbar = os.path.join(srv_www_tpl, "navbar.html")
|
||||
if cf.get("WWW_FILES", "navbar") != www_navbar:
|
||||
cf.set("WWW_FILES", "navbar", www_navbar)
|
||||
debug.out(204, "[WWW_FILES] navbar", www_navbar, False, 0, False)
|
||||
write = True
|
||||
www_styles = os.path.join(www_tpl, styles)
|
||||
cf_set_value("WWW_FILES", "styles", www_styles)
|
||||
|
||||
global www_sidebar
|
||||
www_sidebar = os.path.join(srv_www_tpl, "sidebar.html")
|
||||
if cf.get("WWW_FILES", "sidebar") != www_sidebar:
|
||||
cf.set("WWW_FILES", "sidebar", www_sidebar)
|
||||
debug.out(204, "[WWW_FILES] sidebar", www_sidebar, False, 0, False)
|
||||
write = True
|
||||
www_rss = os.path.join(www_tpl, rss)
|
||||
cf_set_value("WWW_FILES", "rss", www_rss)
|
||||
|
||||
www_stats = os.path.join(www_tpl, stats)
|
||||
cf_set_value("WWW_FILES", "stats", www_stats)
|
||||
|
||||
global www_metas, www_header, www_navbar, www_sidebar, www_footer
|
||||
www_metas = os.path.join(www_tpl, "metas.html")
|
||||
cf_set_value("WWW_FILES", "metas", www_metas)
|
||||
|
||||
www_header = os.path.join(www_tpl, "header.html")
|
||||
cf_set_value("WWW_FILES", "header", www_header)
|
||||
|
||||
www_navbar = os.path.join(www_tpl, "navbar.html")
|
||||
cf_set_value("WWW_FILES", "navbar", www_navbar)
|
||||
|
||||
www_sidebar = os.path.join(www_tpl, "sidebar.html")
|
||||
cf_set_value("WWW_FILES", "sidebar", www_sidebar)
|
||||
|
||||
www_footer = os.path.join(www_tpl, "footer.html")
|
||||
cf_set_value("WWW_FILES", "footer", www_footer)
|
||||
|
||||
global www_footer
|
||||
www_footer = os.path.join(srv_www_tpl, "footer.html")
|
||||
if cf.get("WWW_FILES", "footer") != www_footer:
|
||||
cf.set("WWW_FILES", "footer", www_footer)
|
||||
debug.out(204, "[WWW_FILES] footer", www_footer, False, 0, False)
|
||||
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
|
||||
if write:
|
||||
cf_set_value("TYTO", "domain_hash", cf_id)
|
||||
cf_set_value("TYTO", "domain_conf", cf_uri)
|
||||
cf_set_value("TYTO", "domain_user", ult_cf_uri)
|
||||
|
||||
|
||||
# ================================= #
|
||||
# Write Configuration file #
|
||||
# Only if needed or when new domain #
|
||||
# --------------------------------- #
|
||||
if new_val or write:
|
||||
with open(cf_uri, "w") as f:
|
||||
cf.write(f)
|
||||
debug.out(204, "True", cf_uri, True, 0, False)
|
||||
|
||||
|
||||
#=============================================#
|
||||
|
@ -654,8 +511,8 @@ def cf_update_values(write):
|
|||
ult_cf.set("DOMAIN", "hash", cf_hash_c)
|
||||
ult_write = True
|
||||
|
||||
if ult_cf.get("DOMAIN", "root") != cf_dir:
|
||||
ult_cf.set("DOMAIN", "root", cf_dir)
|
||||
if ult_cf.get("DOMAIN", "root") != wrk_dir:
|
||||
ult_cf.set("DOMAIN", "root", wrk_dir)
|
||||
ult_write = True
|
||||
|
||||
if ult_cf.get("DOMAIN", "conf") != cf_uri:
|
||||
|
@ -670,19 +527,20 @@ def cf_update_values(write):
|
|||
with open(ult_cf_uri, "w") as f:
|
||||
ult_cf.write(f)
|
||||
|
||||
|
||||
# Update User local Domains List File
|
||||
#------------------------------------
|
||||
ult_dlf_load()
|
||||
dlf_write = False
|
||||
try:
|
||||
dlf_line = ult_dlf.get("DOMAINS", name)
|
||||
if dlf_line != cf_dir:
|
||||
if dlf_line != wrk_dir:
|
||||
dlf_write = True
|
||||
except:
|
||||
dlf_write = True
|
||||
|
||||
if dlf_write:
|
||||
ult_dlf.set("DOMAINS", name, cf_dir)
|
||||
ult_dlf.set("DOMAINS", name, wrk_dir)
|
||||
with open(ult_dlf_uri, "w") as f:
|
||||
ult_dlf.write(f)
|
||||
|
||||
|
@ -705,7 +563,7 @@ def cf_valid():
|
|||
cf_update_values(False)
|
||||
|
||||
active = is_active()
|
||||
active and create_work_dirs()
|
||||
active and create_wrk_dirs()
|
||||
return active
|
||||
|
||||
|
||||
|
@ -736,7 +594,7 @@ def is_active():
|
|||
#===================================#
|
||||
# Create user domain work directory #
|
||||
#-----------------------------------#
|
||||
def create_work_dirs():
|
||||
def create_wrk_dirs():
|
||||
cf_load()
|
||||
|
||||
for key, directory in cf.items("USER_DIRS"):
|
||||
|
@ -762,20 +620,20 @@ except:
|
|||
# cf: Domain Configuration File #
|
||||
#------------------------------------------#
|
||||
# Domain Configuration directory
|
||||
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/")
|
||||
wrk_dir = user_dir.rsplit("articles/")[0]
|
||||
wrk_articles = os.path.join(wrk_dir, "articles/")
|
||||
wrk_tpl = os.path.join(wrk_dir, "template/")
|
||||
wrk_images = os.path.join(wrk_dir, "images/")
|
||||
wrk_files = os.path.join(wrk_dir, "files/")
|
||||
wrk_mods = os.path.join(wrk_dir, "modules/")
|
||||
wrk_db = os.path.join(wrk_dir, ".db/")
|
||||
|
||||
# Domain name from current basename directory
|
||||
# Exit if not format at least "abc.tld"
|
||||
name = os.path.basename(os.path.dirname(cf_dir))
|
||||
name = os.path.basename(os.path.dirname(wrk_dir))
|
||||
|
||||
cf_name = "tyto_domain.ini"
|
||||
cf_uri = os.path.join(cf_dir, cf_name)
|
||||
cf_uri = os.path.join(wrk_dir, cf_name)
|
||||
cf_id = tools.get_filesum(cf_uri, False) # ID from URI
|
||||
|
||||
# Tyto directory in home local user files
|
||||
|
|
|
@ -262,5 +262,5 @@ def ask_domain_server(update):
|
|||
return
|
||||
|
||||
if update: tools.update_ini_file(domain.cf_uri, "SERVER", "root", answer)
|
||||
else: return srv
|
||||
else: return answer
|
||||
|
||||
|
|
|
@ -44,8 +44,7 @@ import domain, debug, tools, tyto
|
|||
#--------------------------------------------#
|
||||
def is_article(target):
|
||||
# User MUST be in articles/
|
||||
domain.cf_load()
|
||||
(os.getcwd() + "/").startswith(domain.cf_usr_articles) or \
|
||||
(os.getcwd() + "/").startswith(domain.wrk_articles) or \
|
||||
debug.out(2, "-> articles/", domain.cf_usr_articles, True, 2, True)
|
||||
|
||||
# Target URI most be from legacy directory or not begins with
|
||||
|
@ -54,8 +53,7 @@ def is_article(target):
|
|||
|
||||
# Article exists
|
||||
global uri
|
||||
|
||||
uri = os.path.join(domain.cf_usr_articles, target)
|
||||
uri = os.path.join(domain.wrk_articles, target)
|
||||
os.path.exists(uri) or debug.out(5, "False", uri, True, 2, True)
|
||||
|
||||
# Article is a Tyto format and not empty (exit on errors)
|
||||
|
@ -68,13 +66,10 @@ def is_article(target):
|
|||
uri_id = tools.get_filesum(uri, False)
|
||||
|
||||
# Set post configuration file database
|
||||
cf_uri = os.path.join(domain.cf_usr_db, uri_id + ".ini")
|
||||
cf_uri = os.path.join(domain.wrk_db, uri_id + ".ini")
|
||||
|
||||
# Load Database
|
||||
db = cf_load() # True or False
|
||||
if db: cf_valid()
|
||||
else: tools.create_file(cf_uri, tyto.ini_article)
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -87,7 +82,6 @@ def cf_load():
|
|||
return False
|
||||
|
||||
global cf
|
||||
|
||||
cf = configparser.ConfigParser()
|
||||
cf.read(cf_uri)
|
||||
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
# File: /var/lib/tyto/program/tyto.py
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
import forms
|
||||
|
||||
#
|
||||
# Arguments in command line #
|
||||
#
|
||||
|
@ -53,12 +55,29 @@ web_url = "https://tyto.echolib.re"
|
|||
git_url = "https://git.a-lec.org/echolib/tyto-litterateur"
|
||||
|
||||
|
||||
#=============================================================#
|
||||
# Domain questions #
|
||||
# Used by domain.cf_set_value() #
|
||||
# to check for configuration domain in [SECTION]: key = value #
|
||||
# Ask user if no value and update configuration file #
|
||||
#-------------------------------------------------------------#
|
||||
keys_4q = ("server", "title", "date", "about", "mail", "tags")
|
||||
keys_questions = {
|
||||
"server" : forms.ask_domain_server,
|
||||
"title" : forms.ask_domain_title,
|
||||
"date" : forms.ask_domain_date,
|
||||
"about" : forms.ask_domain_about,
|
||||
"mail" : forms.ask_domain_mail,
|
||||
"tags" : forms.ask_domain_tags
|
||||
}
|
||||
|
||||
#===========================#
|
||||
# Templates #==================================================
|
||||
#===========================#
|
||||
#===========================#
|
||||
# Domain configuration file #
|
||||
#---------------------------#
|
||||
#=============================#
|
||||
# Domain configuration file #
|
||||
# Create file with new domain #
|
||||
#-----------------------------#
|
||||
ini_domain = """[DOMAIN]
|
||||
activated = no
|
||||
name = %s
|
||||
|
@ -86,8 +105,8 @@ static = no
|
|||
navbar = yes
|
||||
sidebar_title =
|
||||
sidebar_items = 6
|
||||
sitemaps = yes
|
||||
rss_items = 100
|
||||
sitemaps = yes
|
||||
|
||||
[TEMPLATE_FILENAMES]
|
||||
favicon = favicon.png
|
||||
|
|
Loading…
Reference in New Issue