Preparing check process, head tags in article
This commit is contained in:
parent
5b4356d229
commit
c530449369
|
@ -9,6 +9,9 @@ Tyto - Littérateur
|
||||||
|
|
||||||
# CURRENTLY IN DEV !
|
# CURRENTLY IN DEV !
|
||||||
|
|
||||||
|
## [1.9.12]
|
||||||
|
- preparing check process : head tags in article
|
||||||
|
|
||||||
## [1.9.11]
|
## [1.9.11]
|
||||||
- Preparing for multi-targets with "all"
|
- Preparing for multi-targets with "all"
|
||||||
- check if article is a .tyto format
|
- check if article is a .tyto format
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# Version: 1.9.11
|
# Version: 1.9.12
|
||||||
# Updated: 2023-09-29 1696004712
|
# Updated: 2023-09-30 1696082419
|
||||||
# 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>
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -76,8 +76,14 @@ def is_article(target):
|
||||||
|
|
||||||
sys.exit(post.error)
|
sys.exit(post.error)
|
||||||
|
|
||||||
header_contents()
|
head_contents()
|
||||||
|
if post.error != 0:
|
||||||
|
if args.multiple:
|
||||||
|
return # Let other articles pass
|
||||||
|
|
||||||
|
sys.exit(post.error)
|
||||||
|
|
||||||
|
print("pass", post.error, args.multiple)
|
||||||
|
|
||||||
#===========================================#
|
#===========================================#
|
||||||
# # Create a loop to get all .tyto articles #
|
# # Create a loop to get all .tyto articles #
|
||||||
|
@ -89,7 +95,65 @@ def multiple_targets():
|
||||||
#=======================#
|
#=======================#
|
||||||
# check header contents #
|
# check header contents #
|
||||||
#-----------------------#
|
#-----------------------#
|
||||||
def header_contents():
|
def head_contents():
|
||||||
print("check: uri_db =", post.cf_uri, post.wrk_id)
|
for ln, line in enumerate(post.head_contents.rsplit("\n"), 1):
|
||||||
print("wrk_target", post.wrk_target)
|
if not line or line.isspace() or line.startswith("#"): continue
|
||||||
print(post.head_contents, post.text_contents)
|
|
||||||
|
# One Line tags (Must be set)
|
||||||
|
# ===========================
|
||||||
|
if not post.title[1] and line.startswith(post.title[0]):
|
||||||
|
post.title = (post.title[0], ol_tag_value(line, False))
|
||||||
|
|
||||||
|
elif not post.about[1] and line.startswith(post.about[0]):
|
||||||
|
post.about = (post.about[0], ol_tag_value(line, False))
|
||||||
|
|
||||||
|
elif not post.date[1] and line.startswith(post.date[0]):
|
||||||
|
post.date = (post.date[0], ol_tag_value(line, False))
|
||||||
|
|
||||||
|
elif not post.author[1] and line.startswith(post.author[0]):
|
||||||
|
post.author = (post.author[0], ol_tag_value(line, True))
|
||||||
|
|
||||||
|
elif not post.tags[1] and line.startswith(post.tags[0]):
|
||||||
|
post.tags = (post.tags[0], ol_tag_value(line, True))
|
||||||
|
|
||||||
|
# Sets are done from loop
|
||||||
|
# Check if tag value exists
|
||||||
|
# =========================
|
||||||
|
if not is_ol_tag(post.title[0], post.title[1]): return
|
||||||
|
if not is_ol_tag(post.about[0], post.about[1]): return
|
||||||
|
if not is_ol_tag(post.date[0], post.date[1]): return
|
||||||
|
if not is_ol_tag(post.author[0], post.author[1]): return
|
||||||
|
if not is_ol_tag(post.tags[0], post.tags[1]): return
|
||||||
|
|
||||||
|
|
||||||
|
#===========================================#
|
||||||
|
# Return value from one line after "[tag]:" #
|
||||||
|
# tags, author are comma separated #
|
||||||
|
# set new value, removing spaces (strip) #
|
||||||
|
#-------------------------------------------#
|
||||||
|
def ol_tag_value(line, commas):
|
||||||
|
value = line.rsplit(":")[1].lstrip()
|
||||||
|
|
||||||
|
# reformat comma separated items, removing first space
|
||||||
|
if commas:
|
||||||
|
tuple_values = value.rsplit(",")
|
||||||
|
value = ""
|
||||||
|
for i, item in enumerate(tuple_values):
|
||||||
|
value = value + item.strip()
|
||||||
|
if i != len(tuple_values) - 1:
|
||||||
|
value = value + ","
|
||||||
|
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
#===========================#
|
||||||
|
# Check if tag value is set #
|
||||||
|
# return True/False #
|
||||||
|
#---------------------------#
|
||||||
|
def is_ol_tag(tag, value):
|
||||||
|
if not value:
|
||||||
|
post.error = 51
|
||||||
|
debug.out(51, "%s ?"%tag, post.uri, True, 2, False)
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
|
@ -88,6 +88,7 @@ def out(nbr, var, val, show, color, stop):
|
||||||
22 : langs.logs.err_post_head,
|
22 : langs.logs.err_post_head,
|
||||||
23 : langs.logs.err_post_empty,
|
23 : langs.logs.err_post_empty,
|
||||||
50 : langs.logs.err_date,
|
50 : langs.logs.err_date,
|
||||||
|
51 : langs.logs.err_post_data,
|
||||||
# WARNINGS (100-200)
|
# WARNINGS (100-200)
|
||||||
100 : langs.logs.warn_no_dom,
|
100 : langs.logs.warn_no_dom,
|
||||||
101 : langs.logs.domain_created,
|
101 : langs.logs.domain_created,
|
||||||
|
|
|
@ -145,7 +145,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%name)
|
tools.create_file(cf_uri, ini_template%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)
|
||||||
|
|
||||||
|
@ -595,6 +595,9 @@ except:
|
||||||
debug.out(2, "PWD", "?", True, 2, True)
|
debug.out(2, "PWD", "?", True, 2, True)
|
||||||
|
|
||||||
|
|
||||||
|
#======#
|
||||||
|
# main #
|
||||||
|
#======#
|
||||||
#==========================================#
|
#==========================================#
|
||||||
# utl: $USER/.local/Tyto #
|
# utl: $USER/.local/Tyto #
|
||||||
# cf: Domain Configuration File #
|
# cf: Domain Configuration File #
|
||||||
|
@ -620,3 +623,115 @@ cf_id = tools.get_filesum(cf_uri, False) # ID from URI
|
||||||
ult_dir = os.path.join(home_dir, ".local/Tyto/")
|
ult_dir = os.path.join(home_dir, ".local/Tyto/")
|
||||||
ult_dlf_uri = os.path.join(ult_dir, "domains.ini") # Domains list file
|
ult_dlf_uri = os.path.join(ult_dir, "domains.ini") # Domains list file
|
||||||
ult_cf_uri = os.path.join(ult_dir, cf_id + ".ini")
|
ult_cf_uri = os.path.join(ult_dir, cf_id + ".ini")
|
||||||
|
|
||||||
|
|
||||||
|
#===========================#
|
||||||
|
# Templates #==================================================
|
||||||
|
#===========================#
|
||||||
|
#=============================#
|
||||||
|
# Domain configuration file #
|
||||||
|
# Create file with new domain #
|
||||||
|
#-----------------------------#
|
||||||
|
ini_template = """[DOMAIN]
|
||||||
|
activated = no
|
||||||
|
name = %s
|
||||||
|
title =
|
||||||
|
date =
|
||||||
|
about =
|
||||||
|
tags =
|
||||||
|
mail =
|
||||||
|
license = gfdl-1.3
|
||||||
|
license_url = https://www.gnu.org/licenses/fdl-1.3.txt
|
||||||
|
legals_url =
|
||||||
|
terms_url =
|
||||||
|
statuses_url =
|
||||||
|
|
||||||
|
[WEBSITE]
|
||||||
|
www_url =
|
||||||
|
wip_url =
|
||||||
|
lang =
|
||||||
|
css = tyto
|
||||||
|
separator = |
|
||||||
|
article_code = yes
|
||||||
|
static = no
|
||||||
|
|
||||||
|
[WEBSITE_MODULES]
|
||||||
|
navbar = yes
|
||||||
|
sidebar_title =
|
||||||
|
sidebar_items = 6
|
||||||
|
rss_items = 100
|
||||||
|
sitemaps = yes
|
||||||
|
|
||||||
|
[TEMPLATE_FILENAMES]
|
||||||
|
favicon = favicon.png
|
||||||
|
logo = logo.png
|
||||||
|
styles = styles.css
|
||||||
|
rss = rss.xml
|
||||||
|
stats = tyto_stats.ini
|
||||||
|
|
||||||
|
[USER_DIRS]
|
||||||
|
root =
|
||||||
|
articles =
|
||||||
|
images =
|
||||||
|
files =
|
||||||
|
modules =
|
||||||
|
database =
|
||||||
|
template =
|
||||||
|
|
||||||
|
[USER_TEMPLATE_FILES]
|
||||||
|
logo =
|
||||||
|
favicon =
|
||||||
|
styles =
|
||||||
|
|
||||||
|
[USER_MODULES_FILES]
|
||||||
|
metas =
|
||||||
|
header =
|
||||||
|
navbar =
|
||||||
|
sidebar =
|
||||||
|
footer =
|
||||||
|
|
||||||
|
[SERVER]
|
||||||
|
root = /var/www/
|
||||||
|
domain =
|
||||||
|
wip =
|
||||||
|
www =
|
||||||
|
|
||||||
|
[WIP_DIRS]
|
||||||
|
images =
|
||||||
|
files =
|
||||||
|
template =
|
||||||
|
|
||||||
|
[WIP_FILES]
|
||||||
|
favicon =
|
||||||
|
logo =
|
||||||
|
styles =
|
||||||
|
rss =
|
||||||
|
stats =
|
||||||
|
metas =
|
||||||
|
header =
|
||||||
|
navbar =
|
||||||
|
sidebar =
|
||||||
|
footer =
|
||||||
|
|
||||||
|
[WWW_DIRS]
|
||||||
|
images =
|
||||||
|
files =
|
||||||
|
template =
|
||||||
|
|
||||||
|
[WWW_FILES]
|
||||||
|
favicon =
|
||||||
|
logo =
|
||||||
|
styles =
|
||||||
|
rss =
|
||||||
|
stats =
|
||||||
|
metas =
|
||||||
|
header =
|
||||||
|
navbar =
|
||||||
|
sidebar =
|
||||||
|
footer =
|
||||||
|
|
||||||
|
[TYTO]
|
||||||
|
domain_hash =
|
||||||
|
domain_conf =
|
||||||
|
domain_user =
|
||||||
|
"""
|
||||||
|
|
|
@ -36,8 +36,6 @@ import os, configparser
|
||||||
import domain, debug, tools, tyto
|
import domain, debug, tools, tyto
|
||||||
|
|
||||||
|
|
||||||
error = 0
|
|
||||||
|
|
||||||
#============================================#
|
#============================================#
|
||||||
# Check if current directory is in articles/ #
|
# Check if current directory is in articles/ #
|
||||||
# Check if article from target exists #
|
# Check if article from target exists #
|
||||||
|
@ -102,7 +100,7 @@ def is_tyto_format():
|
||||||
if not line:
|
if not line:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if line.startswith(tyto.post_sep):
|
if line.startswith(post_sep):
|
||||||
separator = True
|
separator = True
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
@ -110,7 +108,7 @@ def is_tyto_format():
|
||||||
else: head_contents = "%s%s\n"%(head_contents, line)
|
else: head_contents = "%s%s\n"%(head_contents, line)
|
||||||
|
|
||||||
if not separator:
|
if not separator:
|
||||||
debug.out(21, tyto.post_sep, uri, True, 2, False)
|
debug.out(21, post_sep, uri, True, 2, False)
|
||||||
error = 21
|
error = 21
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -156,3 +154,18 @@ def cf_valid():
|
||||||
|
|
||||||
print("post: chk_hash", chk_hash)
|
print("post: chk_hash", chk_hash)
|
||||||
|
|
||||||
|
|
||||||
|
#======#
|
||||||
|
# MAIN #
|
||||||
|
#======#
|
||||||
|
error = 0
|
||||||
|
|
||||||
|
# Tag separator to split head and text article
|
||||||
|
post_sep = "-----"
|
||||||
|
|
||||||
|
# One Line Tags in head article
|
||||||
|
title = ("title:", False)
|
||||||
|
about = ("about:", False)
|
||||||
|
date = ("date:", False)
|
||||||
|
tags = ("tags:", False)
|
||||||
|
author = ("author:", False)
|
||||||
|
|
|
@ -72,116 +72,7 @@ keys_questions = {
|
||||||
"tags" : forms.ask_domain_tags
|
"tags" : forms.ask_domain_tags
|
||||||
}
|
}
|
||||||
|
|
||||||
#===========================#
|
|
||||||
# Templates #==================================================
|
|
||||||
#===========================#
|
|
||||||
#=============================#
|
|
||||||
# Domain configuration file #
|
|
||||||
# Create file with new domain #
|
|
||||||
#-----------------------------#
|
|
||||||
ini_domain = """[DOMAIN]
|
|
||||||
activated = no
|
|
||||||
name = %s
|
|
||||||
title =
|
|
||||||
date =
|
|
||||||
about =
|
|
||||||
tags =
|
|
||||||
mail =
|
|
||||||
license = gfdl-1.3
|
|
||||||
license_url = https://www.gnu.org/licenses/fdl-1.3.txt
|
|
||||||
legals_url =
|
|
||||||
terms_url =
|
|
||||||
statuses_url =
|
|
||||||
|
|
||||||
[WEBSITE]
|
|
||||||
www_url =
|
|
||||||
wip_url =
|
|
||||||
lang =
|
|
||||||
css = tyto
|
|
||||||
separator = |
|
|
||||||
article_code = yes
|
|
||||||
static = no
|
|
||||||
|
|
||||||
[WEBSITE_MODULES]
|
|
||||||
navbar = yes
|
|
||||||
sidebar_title =
|
|
||||||
sidebar_items = 6
|
|
||||||
rss_items = 100
|
|
||||||
sitemaps = yes
|
|
||||||
|
|
||||||
[TEMPLATE_FILENAMES]
|
|
||||||
favicon = favicon.png
|
|
||||||
logo = logo.png
|
|
||||||
styles = styles.css
|
|
||||||
rss = rss.xml
|
|
||||||
stats = tyto_stats.ini
|
|
||||||
|
|
||||||
[USER_DIRS]
|
|
||||||
root =
|
|
||||||
articles =
|
|
||||||
images =
|
|
||||||
files =
|
|
||||||
modules =
|
|
||||||
database =
|
|
||||||
template =
|
|
||||||
|
|
||||||
[USER_TEMPLATE_FILES]
|
|
||||||
logo =
|
|
||||||
favicon =
|
|
||||||
styles =
|
|
||||||
|
|
||||||
[USER_MODULES_FILES]
|
|
||||||
metas =
|
|
||||||
header =
|
|
||||||
navbar =
|
|
||||||
sidebar =
|
|
||||||
footer =
|
|
||||||
|
|
||||||
[SERVER]
|
|
||||||
root = /var/www/
|
|
||||||
domain =
|
|
||||||
wip =
|
|
||||||
www =
|
|
||||||
|
|
||||||
[WIP_DIRS]
|
|
||||||
images =
|
|
||||||
files =
|
|
||||||
template =
|
|
||||||
|
|
||||||
[WIP_FILES]
|
|
||||||
favicon =
|
|
||||||
logo =
|
|
||||||
styles =
|
|
||||||
rss =
|
|
||||||
stats =
|
|
||||||
metas =
|
|
||||||
header =
|
|
||||||
navbar =
|
|
||||||
sidebar =
|
|
||||||
footer =
|
|
||||||
|
|
||||||
[WWW_DIRS]
|
|
||||||
images =
|
|
||||||
files =
|
|
||||||
template =
|
|
||||||
|
|
||||||
[WWW_FILES]
|
|
||||||
favicon =
|
|
||||||
logo =
|
|
||||||
styles =
|
|
||||||
rss =
|
|
||||||
stats =
|
|
||||||
metas =
|
|
||||||
header =
|
|
||||||
navbar =
|
|
||||||
sidebar =
|
|
||||||
footer =
|
|
||||||
|
|
||||||
[TYTO]
|
|
||||||
domain_hash =
|
|
||||||
domain_conf =
|
|
||||||
domain_user =
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Template file configuration for each a created domain
|
# Template file configuration for each a created domain
|
||||||
#
|
#
|
||||||
|
@ -199,9 +90,6 @@ root =
|
||||||
ini_domains_list = """[DOMAINS]
|
ini_domains_list = """[DOMAINS]
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Domain keys that can be empty
|
|
||||||
opt_domain_keys = ("legals_url", "terms_url", "statuses_url")
|
|
||||||
|
|
||||||
#=============================#
|
#=============================#
|
||||||
# articles configuration file #
|
# articles configuration file #
|
||||||
#-----------------------------#
|
#-----------------------------#
|
||||||
|
@ -253,8 +141,3 @@ lines =
|
||||||
|
|
||||||
# Put here values where posts target cannot begin with
|
# Put here values where posts target cannot begin with
|
||||||
notarget = ("./", "../")
|
notarget = ("./", "../")
|
||||||
|
|
||||||
#===================#
|
|
||||||
# Artcicle contents #==========================================================
|
|
||||||
#===================#
|
|
||||||
post_sep = "-----"
|
|
||||||
|
|
Binary file not shown.
|
@ -61,6 +61,7 @@ err_post_sep = "Séparateur manquant"
|
||||||
err_post_head = "Erreur dans l'Entête"
|
err_post_head = "Erreur dans l'Entête"
|
||||||
err_post_empty = "Article vide"
|
err_post_empty = "Article vide"
|
||||||
err_ini_file = "Configuration invalide"
|
err_ini_file = "Configuration invalide"
|
||||||
|
err_post_data = "Article: donnée manquante"
|
||||||
|
|
||||||
# Warnings
|
# Warnings
|
||||||
warn_no_dom = "Domaine non configuré"
|
warn_no_dom = "Domaine non configuré"
|
||||||
|
|
Loading…
Reference in New Issue