#!/usr/bin/env python2 # -*- coding: utf-8 -*- import code,csv,sys,os,datetime,locale #import dateutil.parser from templates import * import sys sys.path.append("/mnt/web103/c1/41/53451241/htdocs/grav/pythonlib") import HTMLParser #for unescaping #TODO check input via regexp? #TODO use style tage instead on inline css #locale.setlocale(locale.LC_ALL, 'de_DE.Utf-8') #locale.setlocale(locale.LC_ALL, 'de_DE.ISO8859-1') html_escape_table = { "&": "&", '"': """, "'": "'", ">": ">", "<": "<", u"ä": "ä", u"ö": "ö", u"ü": "ü", u"Ä": "Ä", u"Ö": "Ö", u"Ü": "Ü", u"ß": "ß", } def html_escape(text): """Produce entities within text.""" return u"".join(html_escape_table.get(c,c) for c in text.decode("utf-8")) workdir=os.path.dirname(os.path.realpath(__file__))+"/" #workdir=sys.path[0] #workdir=os.path.dirname(__file__) #workdir=os.path.abspath('') outtype="kirchenwn"#web,ortsblatt,gembr,kirchenwn logmessage="" #print("hi") #print(workdir) #remove

tags surrounding parameter block of twig filter param=sys.argv[1].replace('

','').replace('

','') #unescape html (grav passes csv as html-escaped string) param=HTMLParser.HTMLParser().unescape(param.decode('utf-8')).encode('utf-8') #reader=[line.split(";") for line in param.split("\n")] #naive parsing, doesnt support quoted cells reader = csv.reader(param.split('\n'), delimiter=';') #logmessage+="param: {}".format(param) #reader = csv.reader(open(workdir+'termine.csv'), delimiter=';', quotechar='"') #reader = csv.reader(open(workdir+'_termine-csv/text.de.md'), delimiter=';', quotechar='"') reader.next()#skip header #lines=[] table_content="" lastdate=datetime.date(2000,1,1)#date in past -> add heading to first month logmessage+="lastdate is {}".format(lastdate) for row in reader: try: if not row:#ignore empty lines continue if not row[0].startswith("20"):#ignore non-date lines (header, comments,...) continue if not len(row)==4: print("error: row has wrong length, malformed csv?") print(row) continue #date=dateutil.parser.parse(row[0]).date() date=datetime.date(*[int(i) for i in row[0].split("-")]) category=row[2] yesterday=datetime.datetime.now().date()-datetime.timedelta(days=1) if date.month>=yesterday.month and outtype in ["web","gembr"]and date.month!=lastdate.month:#add heading style="font-family: Calibri,sans-serif;font-size: 160%;font-weight:bold;text-align:center;" #style="font-size: 18pt;font-weight:bold;" #monthname=html_escape(date.strftime("%B"))+" %i"%date.year monthname=html_escape(monthnames[date.month])+" %i"%date.year #line='%s'%(style,monthname) #line=html_line_template.format(date="",time=monthname,text="",weekday="",style=style,padding=5) if outtype is "web": line='%s'%(style,monthname) elif outtype is "gembr": line=gembr_html_line_template.format(date="",time="%s"%monthname,text="",weekday="") table_content+=line+"\n" if outtype=="kirchenwn" and category in ["godi","text_fett"]: weekday=weekday_names[date.weekday()] datestr=" %02i.%02i.%04i"%(date.day,date.month,date.year) text=web_templates[category].format(param=row[3]) line=web_html_line_template.format(date=datestr,time=row[1],text=html_escape(text),weekday=weekday,padding=5,style="") table_content+=line+"\n" if outtype in ["web","gembr"] and date>yesterday: if date!=lastdate: weekday=weekday_names_short[date.weekday()] datestr=" %02i.%02i."%(date.day,date.month) else: weekday="" datestr="" text=web_templates[category].format(param=row[3]) #if outtype=="ortsblatt": #style+="font-family: 'Times New Roman', serif;" if outtype is "web": style="font-family: Calibri,sans-serif;" if category in ["godi","text_fett"]: style+="font-size: 100%;text-decoration: underline;font-weight:bold;" else: style+="font-size: 100%;"#font-size: 14pt; time=" ".join(row[1].split(" "))#make space in "10.00 Uhr" non breaking line=web_html_line_template.format(date=datestr,time=time,text=html_escape(text),weekday=weekday,style=style,padding=5) elif outtype is "gembr": if category in ["godi","text_fett"]: line=gembr_html_line_template_bold_ul.format(date=datestr,time=row[1],text=html_escape(text),weekday=weekday) else: line=gembr_html_line_template.format(date=datestr,time=row[1],text=html_escape(text),weekday=weekday) table_content+=line+"\n" lastdate=date except Exception as e: print "error at row:" print row print e pass logmessage+="generated sucessfully" table_html=html_template.format(table_content=table_content) table_html+="""""".format(logmessage) #f = open("table.html",'w') #f.writelines(table_html) #f.close() print(table_html)