Preparing check process, head tags in article

This commit is contained in:
Cyrille L 2023-09-30 16:02:05 +02:00
parent 5b4356d229
commit c530449369
14 changed files with 209 additions and 129 deletions

View File

@ -9,6 +9,9 @@ Tyto - Littérateur
# CURRENTLY IN DEV !
## [1.9.12]
- preparing check process : head tags in article
## [1.9.11]
- Preparing for multi-targets with "all"
- check if article is a .tyto format

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python3
# Version: 1.9.11
# Updated: 2023-09-29 1696004712
# Version: 1.9.12
# Updated: 2023-09-30 1696082419
# Tyto - Littérateur
# Copyright (C) 2023 Cyrille Louarn <echolib+tyto@a-lec.org>

View File

@ -76,8 +76,14 @@ def is_article(target):
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 #
@ -89,7 +95,65 @@ def multiple_targets():
#=======================#
# check header contents #
#-----------------------#
def header_contents():
print("check: uri_db =", post.cf_uri, post.wrk_id)
print("wrk_target", post.wrk_target)
print(post.head_contents, post.text_contents)
def head_contents():
for ln, line in enumerate(post.head_contents.rsplit("\n"), 1):
if not line or line.isspace() or line.startswith("#"): continue
# 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

View File

@ -88,6 +88,7 @@ def out(nbr, var, val, show, color, stop):
22 : langs.logs.err_post_head,
23 : langs.logs.err_post_empty,
50 : langs.logs.err_date,
51 : langs.logs.err_post_data,
# WARNINGS (100-200)
100 : langs.logs.warn_no_dom,
101 : langs.logs.domain_created,

View File

@ -145,7 +145,7 @@ def cf_create():
forms.ask_domain_shortname(name)
# 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_file(ult_cf_uri, tyto.ini_domain_user)
@ -595,6 +595,9 @@ except:
debug.out(2, "PWD", "?", True, 2, True)
#======#
# main #
#======#
#==========================================#
# utl: $USER/.local/Tyto #
# 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_dlf_uri = os.path.join(ult_dir, "domains.ini") # Domains list file
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 =
"""

View File

@ -36,8 +36,6 @@ import os, configparser
import domain, debug, tools, tyto
error = 0
#============================================#
# Check if current directory is in articles/ #
# Check if article from target exists #
@ -102,7 +100,7 @@ def is_tyto_format():
if not line:
continue
if line.startswith(tyto.post_sep):
if line.startswith(post_sep):
separator = True
continue
@ -110,7 +108,7 @@ def is_tyto_format():
else: head_contents = "%s%s\n"%(head_contents, line)
if not separator:
debug.out(21, tyto.post_sep, uri, True, 2, False)
debug.out(21, post_sep, uri, True, 2, False)
error = 21
return False
@ -156,3 +154,18 @@ def cf_valid():
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)

View File

@ -72,116 +72,7 @@ keys_questions = {
"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
#
@ -199,9 +90,6 @@ root =
ini_domains_list = """[DOMAINS]
"""
# Domain keys that can be empty
opt_domain_keys = ("legals_url", "terms_url", "statuses_url")
#=============================#
# articles configuration file #
#-----------------------------#
@ -253,8 +141,3 @@ lines =
# Put here values where posts target cannot begin with
notarget = ("./", "../")
#===================#
# Artcicle contents #==========================================================
#===================#
post_sep = "-----"

View File

@ -61,6 +61,7 @@ err_post_sep = "Séparateur manquant"
err_post_head = "Erreur dans l'Entête"
err_post_empty = "Article vide"
err_ini_file = "Configuration invalide"
err_post_data = "Article: donnée manquante"
# Warnings
warn_no_dom = "Domaine non configuré"