61 lines
1.8 KiB
Python
61 lines
1.8 KiB
Python
import csv
|
|
import json
|
|
import os
|
|
from creole.rest_tools.clean_writer import rest2html
|
|
|
|
|
|
sheet = csv.reader(open('slides.csv'))
|
|
|
|
keys = sheet.__next__()
|
|
|
|
|
|
def get_content(slide, default):
|
|
if not slide: # Happens for home slide
|
|
slide = '_home'
|
|
filename = 'slides/{}.rst'.format(slide)
|
|
if not os.path.isfile(filename):
|
|
desc = default.strip()
|
|
if desc:
|
|
desc = "**תוכן זמני:** {}".format(desc)
|
|
open(filename, 'w').write(desc)
|
|
print('Created {}.'.format(filename))
|
|
return rest2html(open(filename).read())
|
|
|
|
|
|
def main():
|
|
col_id = None
|
|
col = None
|
|
cols = []
|
|
for r in sheet:
|
|
d = dict(zip(keys,r))
|
|
if not d['slide'].strip(): # new column
|
|
if col is not None: # deal with previous col
|
|
col['has_slides'] = len(col['slides'])>0
|
|
cols.append(col)
|
|
col_id = d['column']
|
|
col = {
|
|
'id': col_id,
|
|
'title': d['title'],
|
|
'theme': d['theme'].lower(),
|
|
'content': get_content(col_id, d['description']),
|
|
'has_menu': False,
|
|
'slides': []}
|
|
else:
|
|
slide_id = '_'.join(filter(None, [col_id, d['slide']]))
|
|
col['slides'].append({
|
|
'id': slide_id,
|
|
'title': d['title'],
|
|
'theme': d['theme'].lower(),
|
|
'has_menu': False,
|
|
'content': get_content(slide_id, d['description'])})
|
|
col['has_slides'] = len(col['slides'])>0
|
|
cols.append(col)
|
|
cols[0]['has_menu'] = True
|
|
cols[0]['menu'] = [{"id": c['id'], "title": c['title']} for c in cols[1:]]
|
|
|
|
json.dump({"title": cols[0]['title'], "columns": cols}, open('slides.json', 'w'), indent=4)
|
|
print('successfully wrote slides.json')
|
|
|
|
if __name__=='__main__':
|
|
main()
|