aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPapoteur <papoteur@mageia.org>2018-06-17 09:00:08 +0200
committerPapoteur <papoteur@mageia.org>2018-06-17 09:00:08 +0200
commit2b68d8ce8225b2b907cb1e0189aded92d67e5614 (patch)
tree81e6487c605592b50d87264e04dd9fdd8f1f0764
parentebcc36d2786a600f7a6d90fc37cf7a57177b39d9 (diff)
downloadtools-2b68d8ce8225b2b907cb1e0189aded92d67e5614.tar
tools-2b68d8ce8225b2b907cb1e0189aded92d67e5614.tar.gz
tools-2b68d8ce8225b2b907cb1e0189aded92d67e5614.tar.bz2
tools-2b68d8ce8225b2b907cb1e0189aded92d67e5614.tar.xz
tools-2b68d8ce8225b2b907cb1e0189aded92d67e5614.zip
Add scripts for managing Calenco publications and generating desktop files for packaged manuals
-rw-r--r--docs/scripts/create_publications.py99
-rw-r--r--docs/scripts/generate_desktop.py27
-rw-r--r--docs/scripts/generate_help_desktop.py30
-rw-r--r--docs/scripts/update_publications.py74
4 files changed, 230 insertions, 0 deletions
diff --git a/docs/scripts/create_publications.py b/docs/scripts/create_publications.py
new file mode 100644
index 00000000..c260c760
--- /dev/null
+++ b/docs/scripts/create_publications.py
@@ -0,0 +1,99 @@
+import requests, json, time
+from requests.auth import HTTPBasicAuth
+
+'''
+This script can create a collection of publications in Calenco. It use Rest API to launch requests to Calenco.
+Specify:
+- your credentials
+- the workspace ws
+- the storsrv, defined in Calenco and pointing to the server storing the publications
+Check the publication list, in particular the collection of language in each manual
+'''
+def test():
+ resp = requests.get('http://mageia.calenco.com:8284/workspaces/Documentation/publications/DrakX-FR-WebHelp', auth=HTTPBasicAuth('name','pw'))
+ if resp.status_code != 200:
+ # This means something went wrong.
+ print('GET /workspaces/ {}'.format(resp.status_code))
+ exit()
+ #for item in resp.json():
+ item = resp.json()
+ print(item)
+
+#print('name: {}\nhref: {}\nautomatic: {}\n isOutdatad: {}\n xsl : :{}\n input : :{}\n output ::{}\n'.format(item['name'],
+# item['href'], item['automatic'], item['isOutdated'], item['xsl'], item['input'], item['output']))
+def create_pub(pub_params,ws):
+ user = "to_complete@mageia.org"
+ pw = "password_to_complete"
+ site = "http://mageia.calenco.com:8284/workspaces/"
+
+ resp = requests.post('{}{}/publications'.format(site,ws),
+ auth=HTTPBasicAuth(user, pw),
+ data=json.dumps(pub_params))
+ #item = resp.json()
+ print('Pour : %s'% pub_params['name'] )
+ print(resp.status_code, resp.text)
+ if resp.status_code == 201:
+ time.sleep(10)
+
+ws = "Mga7"
+dest = "/public_html/{}".format(ws)
+#storsrv = "storageservers/STOR0504658793a605a18f558fcea37f7931" Documentation
+storsrv = "storageservers/STOR5fa984e7e2ee1d4be873674cf37561b1"
+
+pub_params={}
+pub_paths = {'DrakLive' : 'draklive', 'MCC' : 'mcc', 'DrakX' : 'installer', 'NetInstall' : 'netinstall'}
+# code de deux lettres de la langue, manuel parmi DrakLive, MCC, DrakX, NetInstall
+listLang = {
+ "DrakLive": ('cs','de','el','en','es','et','eu','fr','hr','ja','nb','nl','pt_BR','ro','ru','sk','sq','sl','sv','tr','uk','zh_CN'),
+ 'DrakX' : ('ca','cs','de','el','en','eo','es','et','eu','fr','hr','hu','ja','nb','nl','pl',
+ 'pt_BR','ro','ru','sk','sl','sq','sv','tr','uk','zh_CN') ,
+ 'MCC' : ('ca','cs','da','de','el','en','es','et','eu','fr','hu','id','it','ja','nb','nl','pl',
+ 'pt_BR','ro','ru','sk','sl','sq','sv','tr','uk','zh_CN'),
+ 'NetInstall' : ('ca','cs','de','el','en','es','et','eu','fr','hu','ja','nb','nl',
+ 'pt_BR','ru','sl','sv','tr','uk','zh_CN')
+ }
+pubs = []
+for manual in listLang.keys():
+ for lang in listLang[manual]:
+ pubs.append([lang,manual])
+
+for pub in pubs:
+ #WebHelp
+ pub_params['input']= '/workspaces/{ws}/content/{lang}/{manual}.xml'.format(manual=pub[1], lang=pub[0],ws = ws)
+ pub_params['name'] = '{manual}-{lang}-WebHelp'.format(manual=pub[1], lang=pub[0].upper())
+ pub_params['rs-path'] = "{dest}/{lang}/{path}".format( lang=pub[0].lower(), path=pub_paths[pub[1]], dest=dest)
+ pub_params['outname'] = '{manual}'.format(manual=pub_paths[pub[1]])
+ pub_params['intype'] = 'DocBook5.0'
+ pub_params['toolchain'] = 'DocBook_Screen_WebHelp'
+ pub_params['xsl'] = '/workspaces/{}/content/WebHelp-DrakX.xsl'.format(ws)
+ if (pub[1] == "DrakLive"):
+ pub_params['xslparams'] = 'profile.condition=live'
+ elif(pub[1] == "DrakX"):
+ pub_params['xslparams'] = 'profile.condition=classical'
+ pub_params['method'] = 'FTP'
+ pub_params['storsrv'] = '/workspaces/{}/{}'.format(ws,storsrv)
+ pub_params['rs-multifile'] = True
+ pub_params['automatic'] = True
+ create_pub(pub_params,ws)
+ # WebHelp-zipped
+ pub_params['name'] = '{manual}-{lang}-WebHelp-zipped'.format(manual=pub[1], lang=pub[0].upper())
+ del pub_params['rs-multifile']
+ pub_params['rs-path'] = "{dest}/zipped/{path}/{lang}".format(dest = dest, lang=pub[0].lower(), path=pub_paths[pub[1]])
+ pub_params['outname'] = '{manual}-{lang}-WebHelp-zipped.zip'.format(lang=pub[0].upper(), manual=pub[1])
+ create_pub(pub_params,ws)
+ # Epub
+ pub_params['name'] = '{manual}-{lang}-EPUB'.format(manual=pub[1], lang=pub[0].upper())
+ pub_params['rs-path'] = "/public_html/EPUB/{path}".format( path=pub_paths[pub[1]])
+ pub_params['toolchain'] = 'DocBook_EPUB3_Chunk'
+ pub_params['xsl'] = 'http://www.calenco.com/xsl/epub3/epub.xsl'
+ pub_params['outname'] = '{manual}-{lang}-EPUB.epub'.format(lang=pub[0].upper(), manual=pub[1])
+ create_pub(pub_params,ws)
+ # PDF (cover)
+ pub_params['input']= '/workspaces/{ws}/content/{lang}/{manual}-cover.xml'.format(manual=pub[1], lang=pub[0], ws = ws)
+ pub_params['name'] = '{manual}-cover-{lang}-PDF'.format(manual=pub[1], lang=pub[0].upper())
+ pub_params['rs-path'] = "{dest}/PDF/{path}".format( path=pub_paths[pub[1]],dest=dest)
+ pub_params['xsl'] = 'http://www.calenco.com/xsl/docbook/ns/fo/calenco-fo.xsl'
+ pub_params['outname'] = '{manual}-cover-{lang}-PDF.pdf'.format(lang=pub[0].upper(), manual=pub[1])
+ pub_params['toolchain'] = 'DocBook_to_PDF_FOP'
+ create_pub(pub_params,ws)
+
diff --git a/docs/scripts/generate_desktop.py b/docs/scripts/generate_desktop.py
new file mode 100644
index 00000000..28cabea9
--- /dev/null
+++ b/docs/scripts/generate_desktop.py
@@ -0,0 +1,27 @@
+
+import os
+manuals =["netinstall","mcc", "installer","draklive"]
+langs={}
+langs['netinstall'] = ['ca','cs','de','el','en','es','et','eu','fr','ja','nb','nl','pt_br','sl','sv','tr','uk','zh_CN']
+langs['installer']=['ca','cs','de','el','en','eo','es','et','eu','fr','hr','hu','id','it','ja','nb','nl','pl','pt_br','ro','ru','sq','sv','tr','uk','zh_CN']
+langs['mcc']=['ca','cs','da','de','el','en','eo','es','et','eu','fr','id','it','ja','nb','nl','pl','pt_br','ro','ru','sq','sv','tr','uk','zh_CN']
+langs['draklive']=['cs','de','el','en','es','et','eu','fr','hr','ja','nb','nl','ro','ru','sk','sl','sq','sv','tr','uk','zh_CN']
+
+languages_fr = {'ca':'catalan','cs':'tchèque','da':'danois', 'de':'allemand', 'el':'grec', 'en':'anglais','eo':'espéranto', 'es':'espagnol',
+ 'et':'estonien','eu':'basque', 'fr':'français', 'hr':'croate','hu':'hongrois','id':'indonésien','it':'italien','ja':'japonais','nb':'norvégien','nl':'néerlandais','pl':'polonais',
+ 'pt_br':'Brésilien','ro':'roumain','ru':'russe', 'sk':'slovaque','sl':'slovène','sq':'albanais','sv':'suédois','tr':'turc', 'uk':'ukrainien', 'zh_CN':'chinois'}
+languages_en = {'ca':'Catalan', 'cs':'Chech', 'da':'Danish','de':'German', 'el':'Greek', 'en':'English','eo':'Esperanto', 'es':'Spanish', 'et':'Estonian', 'eu':'Basque', 'fr':'French',
+ 'hr':'Croatian','hu':'Hungarian','id':'Indonesian','it':'Italian', 'ja':'Japanese','nl':'Dutch', 'nb':'Bokmal Norwegian','pl':'Polish', 'pt_br':'Brazilian Portuguese',
+ 'ro':'Romanian','ru':'Russian', 'sk':'Slovak','sl':'Slovenian','sq':'Albanian', 'sv':'Swedish', 'tr':'Turkish', 'uk':'Ukranian','zh_CN':'Simplified Chinese'}
+for manual in manuals:
+ for lang in langs[manual]:
+ nom_fichier = '/home/yves/Documents/mageia-doc-trunk/{1}/desktop/mageia-doc-{1}-{0}.desktop'.format( lang, manual)
+ with open(nom_fichier , 'w', encoding="utf-8") as nf:
+ nf.write('[Desktop Entry]\n')
+ nf.write('Name=@VENDOR@ Net Installer Manual in ' + languages_en[lang])
+ nf.write("\nName[fr]=Manuel utilisateur de l'installation réseau de @VENDOR@ en " + languages_fr[lang])
+ nf.write('\nComment=The @VENDOR@ manuals in ' + languages_en[lang])
+ nf.write('\nComment[fr]=Les manuels utilisateur de @VENDOR@ en ' + languages_fr[lang])
+ nf.write('\nExec=@BINDIR@/www-browser @DOCDIR@/mageia/{0}/{1}/index.html'.format(lang,manual))
+ nf.write('\nIcon=documentation_section\nTerminal=false\nType=Application\nStartupNotify=true\nCategories=Documentation;Settings;')
+
diff --git a/docs/scripts/generate_help_desktop.py b/docs/scripts/generate_help_desktop.py
new file mode 100644
index 00000000..66c038ec
--- /dev/null
+++ b/docs/scripts/generate_help_desktop.py
@@ -0,0 +1,30 @@
+
+import os
+manuals =["netinstall","mcc", "installer","draklive"]
+langs={}
+langs['netinstall'] = ['ca','cs','de','el','en','es','et','eu','fr','ja','nb','nl','pt_br','sl','sv','tr','uk','zh_CN']
+langs['installer']=['ca','cs','de','el','en','eo','es','et','eu','fr','hr','hu','id','it','ja','nb','nl','pl','pt_br','ro','ru','sq','sv','tr','uk','zh_CN']
+langs['mcc']=['ca','cs','da','de','el','en','eo','es','et','eu','fr','id','it','ja','nb','nl','pl','pt_br','ro','ru','sq','sv','tr','uk','zh_CN']
+langs['draklive']=['cs','de','el','en','es','et','eu','fr','hr','ja','nb','nl','ro','ru','sk','sl','sq','sv','tr','uk','zh_CN']
+product={}
+product['netinstall'] = "Installation with tiny image"
+product['installer']= "DrakX installer"
+product['mcc']="Mageia Control Center"
+product['draklive']="Live installer"
+languages_fr = {'ca':'catalan','cs':'tchèque','da':'danois', 'de':'allemand', 'el':'grec', 'en':'anglais','eo':'espéranto', 'es':'espagnol',
+ 'et':'estonien','eu':'basque', 'fr':'français', 'hr':'croate','hu':'hongrois','id':'indonésien','it':'italien','ja':'japonais','nb':'norvégien','nl':'néerlandais','pl':'polonais',
+ 'pt_br':'Brésilien','ro':'roumain','ru':'russe', 'sk':'slovaque','sl':'slovène','sq':'albanais','sv':'suédois','tr':'turc', 'uk':'ukrainien', 'zh_CN':'chinois'}
+languages_en = {'ca':'Catalan', 'cs':'Chech', 'da':'Danish','de':'German', 'el':'Greek', 'en':'English','eo':'Esperanto', 'es':'Spanish', 'et':'Estonian', 'eu':'Basque', 'fr':'French',
+ 'hr':'Croatian','hu':'Hungarian','id':'Indonesian','it':'Italian', 'ja':'Japanese','nl':'Dutch', 'nb':'Bokmal Norwegian','pl':'Polish', 'pt_br':'Brazilian Portuguese',
+ 'ro':'Romanian','ru':'Russian', 'sk':'Slovak','sl':'Slovenian','sq':'Albanian', 'sv':'Swedish', 'tr':'Turkish', 'uk':'Ukranian','zh_CN':'Simplified Chinese'}
+
+for manual in manuals:
+ for lang in langs[manual]:
+ nom_fichier = '/home/yves/Documents/mageia-doc-trunk/{1}/help-desktop/mageia-doc-help-{1}-{0}.desktop'.format( lang, manual)
+ with open(nom_fichier , 'w', encoding="utf-8") as nf:
+ nf.write('[Desktop Entry]\n')
+ nf.write("X-DocPath=file:@DOCDIR@/mageia/{0}/{1}/index.html\n".format(lang,manual))
+ nf.write('Icon=mageia\n')
+ nf.write('Name={0} manual in {1}\n'.format(product[manual], languages_en[lang]))
+ nf.write("Name[fr]=Manuel d'nstallation de Mageia en {}\n".format(languages_fr[lang]))
+ nf.write("Comment=Help for {}\n".format(product[manual]))
diff --git a/docs/scripts/update_publications.py b/docs/scripts/update_publications.py
new file mode 100644
index 00000000..20aa3458
--- /dev/null
+++ b/docs/scripts/update_publications.py
@@ -0,0 +1,74 @@
+import requests, json
+from requests.auth import HTTPBasicAuth
+import os.path as path
+import time
+
+def list_pubs(manual):
+ pub_params={}
+ user = "to_complete@mageia.org"
+ pw = "to_complete"
+ site = "http://mageia.calenco.com:8284/workspaces/"
+ ws = "Mga7"
+ #storsrv = "storageservers/STOR0504658793a605a18f558fcea37f7931"
+ storsrv = "storageservers/Default"
+ headers = {'content-type': 'application/json'}
+ if manual != '':
+ pub_params['file'] = manual
+ pub_params['input']= '/workspaces/%s/publications'.format(ws)
+ print("Wait to get the list of publications...\n")
+ resp = requests.get(site+ws+'/publications',
+ auth=HTTPBasicAuth(user, pw),
+ data=json.dumps(pub_params))
+ if int(resp.status_code) != 200:
+ # This means something went wrong.
+ print('GET /workspaces/ {}'.format(resp.status_code))
+ exit()
+ print("Writing liste.csv")
+ with open("listeMga7.csv",'w') as f:
+ f.write("Name\thref\tInput\tOutput\tupdated\tStatus\tAutomatic\n")
+ for item in resp.json():
+ print(item)
+ if item['output']['method'] in ('FTP','SFTP'):
+ serv=item['output']['storsrv']
+ f.write("{name}\t{href}\t{input}\t{output}\t{updated}\t{status}\t{automatic}\t{server}\t{path}\n".format(name=item["name"],href=item["href"],updated=item["updated"],
+ output=item['output']['name'],status=item["status"],automatic=item["automatic"], input=item['input']['href'], server = serv, path=item['output']['path']))
+ else:
+ serv=''
+ exit()
+ # Set a new storage server
+ for item in resp.json():
+ # Point to prestored server
+ if item['output']['method'] in ('FTP','SFTP'):
+ print('{site}{ws}/publications/{name}'.format(site=site, ws=ws,name=item['name']))
+ print(item['output']['path'], item['output']['storsrv'])
+ item['output']['rs-path']=item['output']['path']
+ if not item['output']['zip'] :
+ item['output']['rs-multifile']='multifile'
+ item['output']['storsrv']= '/workspaces/{ws}/strorageservers/{storsrv}'.format (ws=ws, storsrv=storsrv)
+ resp2 = requests.put('{site}{ws}/publications/{name}'.format(site=site, ws=ws,name=item['name']),
+ auth=HTTPBasicAuth(user, pw),
+ data=json.dumps(item),
+ headers=headers)
+ if int(resp2.status_code) != 200:
+ # This means something went wrong.
+ print('PUT /workspaces/ {}: {}'.format(resp2.status_code, resp2.text))
+ time.sleep(15)
+ exit()
+ # renew each publication
+ for item in resp.json():
+ if item['name'].find('WebHelp') != -1:
+ pub_params = {}
+ pub_params['name']= item['name']
+ print(item['name'], pub_params)
+ resp2 = requests.post('{site}{ws}/pubsqueue'.format(site=site, ws=ws),
+ auth=HTTPBasicAuth(user, pw),
+ data=json.dumps(pub_params),
+ headers=headers)
+ if int(resp2.status_code) != 202:
+ # This means something went wrong.
+ print('GET /workspaces/ {}'.format(resp2.status_code))
+ exit()
+ # Add delay of 30 seconds between each publication
+ time.sleep(30)
+
+list_pubs('')