Upload
kathrin-kaufmann
View
607
Download
0
Embed Size (px)
DESCRIPTION
Presentation of the Iron Blogger Hamburg at Barcamp Hamburg 2013.
Blogs und Bier? Das lob' ich mir! #ironbloggerhh
#bchh // 15.11.2013
#ironbloggerhh://hi!
carolinn hasenfarm kommanderkat moeffju
#ironblogger://wie alles anfing
Benjamin Mako Hill2011 Boston, USA
Because you you should blog more.
Because there’s no motivation like peer pressure.
Because doing things for beer is never a bad idea.
://HamburgJanuar 201375 Iron Blogger_innen 40 Aktive 5.840 Beiträgeø 126 pro Woche
://Hamburg2 Treffen bisherNächster Termin:04.12.Aktueller Kassenstand: 230 €
Spenden85€ Opferhilfe Hamburg150€ Kinderhospiz Sternenbrücke
#ironblogger://Technik im Moment
4 Python SkripteDatenhaltung in git Ausführung über cronAbrechnung in ledgerWochenpost über XML-RPC
#!/usr/bin/env pythonimport yamlimport feedparserimport datetimeimport sysimport osfrom dateutil.parser import parseimport dateutil.tz as tzimport settings
config=settings.load_settings()
with open('bloggers.yml') as f: users = yaml.safe_load(f.read())
if not os.path.exists('out'): os.makedirs('out')try: with open('out/report.yml') as f: log = yaml.safe_load(f.read())except IOError: log = {}
START = datetime.datetime.strptime(config['start_date'],'%Y/%m/%d')
def parse_published(pub): try: return parse(pub).astimezone(tz.tzlocal()).replace(tzinfo=None) except: return parse(pub).replace(tzinfo=None)def get_date(post): for k in ('published', 'created', 'updated'): if k in post: return post[k] raise ValueError
…
def render_template(path, week=None, **kwargs): with open('out/report.yml') as r: report = yaml.safe_load(r)
with open('bloggers.yml') as f: users = yaml.safe_load(f) if week: week = parse(week, default=START) else: week = START
week = (week - START).days / 7 week_start = START + (week * datetime.timedelta(7)) week_end = START + ((week + 1) * datetime.timedelta(7))
good = [] lame = [] skip = [] skipped_users = [] userlist = [] punted = []
class User(object): pass
for (un, rec) in users.items(): u = User() u.username = un u.name = rec['name'] u.links = rec['links'] u.twitter = rec.get('twitter') u.start_de = datetime.datetime.strptime(rec['start'], "%Y/%m/%d").strftime("%d.%m.%Y") u.start = rec['start'] u.end = rec.get('end') u.punt = rec.get('punt') u.stop = rec.get('stop') u.skip = parse_skip(rec) u.weeks = report.get(un, [])
userlist.append(u)
# create a subset of punted users if u.punt: punted.append(u)
def user_key(u): return (u.start, u.username)
userlist.sort(key=user_key) punted.sort(key=user_key)
for u in userlist: user_start = parse(u.start, default=START) if u.stop: continue try: if u.end and u.end <= week_start: continue except Exception as e: pass try: if u.end and parse(u.end, default=START) <= week_start: continue except Exception as e: pass
if should_skip(u.skip, week): skipped_users.append(u) elif user_start > week_start: skip.append(u) elif len(u.weeks) <= week or not u.weeks[week]: lame.append(u) else: good.append(u)
debts = get_debts()
return Template(filename=path, output_encoding='utf-8').render( week=week, week_start=week_start, week_end=week_end, good=good, lame=lame, skip=skip, skipped_users=skipped_users, userlist=userlist, pool=(get_balance('Pool') - get_balance('Event')), paid=get_balance('Pool:Paid'), event=get_balance('Pool:Event'), cgi=cgi, debts=debts, punted=punted, **kwargs)
Meins!GruppenmotivationFilterbubbleVernetzungEinstiegBier!
#ironblogger://Next Level?
#ironblogger://Danke!
@kommanderkat @carolinn@hasenfarm@moeffju
Credits
● Mako Hill by Joi Ito http://www.flickr.com/photos/joi/1022023224/ (CC-BY)
● Ironblogger Logos - Inken Meyer● Foto Ironblogger Treffen Hamburg - Steffen Groenveld● Foto Ironblogger Treffen Stuttgart - Ute Mündlein● Cat with Beer by swardraws http://www.flickr.
com/photos/swardraws/1344472184 ● Alle Tag Clouds made with love and http://wordle.net/