Change behaviour with multiple blogs to count every slacking blog w

ith 5 EUR each. Change render results to reflect this.
This commit is contained in:
Thomas Renger 2012-10-07 09:55:42 +02:00
parent 9bd17bf520
commit a54d80db4e
7 changed files with 72 additions and 35 deletions

View File

@ -27,12 +27,12 @@ def fetch_links(url):
for (name, u) in users.items(): for (name, u) in users.items():
for e in u['links']: for e in u['links']:
(title, url) = e[0:2] (title, url) = e[1:3]
try: try:
e[0] = e[0].strip() e[1] = e[1].strip()
except: except:
e[0] = e[0] e[1] = e[1]
if len(e) == 3: if len(e) == 4:
continue continue
link = fetch_links(url) link = fetch_links(url)
if link: if link:

View File

@ -76,8 +76,6 @@ def render_template(path, week=None, **kwargs):
week_start = START + (week * datetime.timedelta(7)) week_start = START + (week * datetime.timedelta(7))
week_end = START + ((week + 1) * datetime.timedelta(7)) week_end = START + ((week + 1) * datetime.timedelta(7))
good = []
lame = []
skip = [] skip = []
skipped_users = [] skipped_users = []
userlist = [] userlist = []
@ -97,7 +95,9 @@ def render_template(path, week=None, **kwargs):
u.end = rec.get('end') u.end = rec.get('end')
u.stop = rec.get('stop') u.stop = rec.get('stop')
u.skip = parse_skip(rec) u.skip = parse_skip(rec)
u.weeks = report.get(un, []) u.posts = report.get(un, {})
u.goodblogs = []
u.lameblogs = []
userlist.append(u) userlist.append(u)
@ -118,21 +118,25 @@ def render_template(path, week=None, **kwargs):
continue continue
if u.end and parse(u.end, default=START) <= week_start: if u.end and parse(u.end, default=START) <= week_start:
continue continue
if should_skip(u.skip, week): if should_skip(u.skip, week):
skipped_users.append(u) skipped_users.append(u)
continue
elif user_start > week_start: elif user_start > week_start:
skip.append(u) skip.append(u)
elif len(u.weeks) <= week or not u.weeks[week]: continue
lame.append(u) for blog in u.links:
else: b=blog[0]
good.append(u) weeks=u.posts[b]
if len(weeks) <= week or not weeks[week]:
u.lameblogs.append(b)
else:
u.goodblogs.append(b)
debts = get_debts() debts = get_debts()
return Template(filename=path, output_encoding='utf-8').render( return Template(filename=path, output_encoding='utf-8').render(
week=week, week_start=week_start,week_end=week_end, week=week, week_start=week_start,week_end=week_end,
good=good, lame=lame, skip=skip, skipped_users=skipped_users, userlist=userlist, skip=skip, skipped_users=skipped_users, userlist=userlist,
pool=(get_balance('Pool')-get_balance('Event')), paid=get_balance('Pool:Paid'), pool=(get_balance('Pool')-get_balance('Event')), paid=get_balance('Pool:Paid'),
event=get_balance('Pool:Event'), event=get_balance('Pool:Event'),
debts=debts, punted=punted, **kwargs) debts=debts, punted=punted, **kwargs)

View File

@ -66,14 +66,16 @@ def parse_feeds(weeks, uri):
if len(sys.argv) > 1: if len(sys.argv) > 1:
for username in sys.argv[1:]: for username in sys.argv[1:]:
weeks = log.setdefault(username, []) blogs = log.setdefault(username, {})
for l in users[username]['links']: for l in users[username]['links']:
parse_feeds(weeks, l[2]) weeks = blogs.setdefault(l[0], [])
parse_feeds(weeks, l[3])
else: else:
for (username, u) in users.items(): for (username, u) in users.items():
weeks = log.setdefault(username, []) blogs = log.setdefault(username, {})
for l in u['links']: for l in u['links']:
parse_feeds(weeks, l[2]) weeks = blogs.setdefault(l[0], [])
parse_feeds(weeks, l[3])
with open('out/report.yml', 'w') as f: with open('out/report.yml', 'w') as f:
yaml.safe_dump(log, f) yaml.safe_dump(log, f)

View File

@ -2,16 +2,25 @@
Subject: IRON BLOGGER results for the week beginning ${week_start.strftime("%F")} Subject: IRON BLOGGER results for the week beginning ${week_start.strftime("%F")}
To: ${mail} To: ${mail}
SLACKERS: ${", ".join(sorted([u.username for u in lame]))} SLACKERS:
<% lame=0 %>
% for u in sorted(userlist, key=lambda u:u.name[u.name.rfind(' '):].lower()):
% for b in u.lameblogs:
<% lame+=1 %> - ${u.name} in ${b}
% endfor
% endfor
% if punt: % if punt:
PUNTED for balance ≥$30: ${", ".join(sorted(punt))} PUNTED for balance ≥$30: ${", ".join(sorted(punt))}
% endif % endif
People who posted: People who posted:
% for u in sorted(good, key=lambda u:u.name[u.name.rfind(' '):].lower()): % for u in sorted(userlist, key=lambda u:u.name[u.name.rfind(' '):].lower()):
${u.name} (${u.username}): % for b in u.goodblogs:
% for p in u.weeks[week]: ${u.name} in ${b} (${u.username}):
- ${p['url']} % for p in u.posts[b][week]:
- ${p['url']}
% endfor
% endfor % endfor
% endfor % endfor
@ -30,7 +39,7 @@ People who are currently skipped:
% endif % endif
Beer pool: Beer pool:
This Week: € ${5 * len(lame)} This Week: € ${5 * lame}
Total: € ${pool} Total: € ${pool}
Paid: € ${paid} Paid: € ${paid}
Events: € ${event} Events: € ${event}

View File

@ -1,6 +1,8 @@
# This Python file uses the following encoding: utf-8 # This Python file uses the following encoding: utf-8
% for u in sorted(lame, key=lambda u:u.username): % for u in sorted(userlist, key=lambda u:u.username):
${week_end.strftime("%F")} Week ${week} % for b in u.lameblogs:
${week_end.strftime("%F")} Week ${week}, Blog ${b}
User:${u.username} $-5 User:${u.username} $-5
Pool:Owed:${u.username} Pool:Owed:${u.username}
% endfor % endfor
% endfor

View File

@ -17,7 +17,7 @@
<td align="left" valign="top"> <td align="left" valign="top">
% if u.links: % if u.links:
% for a in u.links: % for a in u.links:
<a href="${a[1]}">${a[0]}</a> <a href="${a[2]}">${a[1]}</a>
% endfor % endfor
% else: % else:
fehlt noch fehlt noch

View File

@ -1,30 +1,48 @@
Zusammenfassung f&uuml;r die Woche ab ${week_start.strftime("%d.%m.%Y")}: Zusammenfassung der Woche ab ${week_start.strftime("%d.%m.%Y")}:
<h3>Die Flei&szlig;igen:</h3> <h3>Die Flei&szlig;igen:</h3>
<dl> <dl>
% for u in sorted(good, key=lambda u:u.name[u.name.rfind(' '):].lower()): % for u in sorted(userlist, key=lambda u:u.name[u.name.rfind(' '):].lower()):
% for g in u.goodblogs:
% for b in u.links:
% if b[0] == g:
<dt><span class="user"><strong>${u.name} </strong> \ <dt><span class="user"><strong>${u.name} </strong> \
% if u.twitter != False: % if u.twitter != False:
@<a href="http://twitter.com/${u.username}">${u.username}</a> \ (@<a href="http://twitter.com/${u.username}">${u.username}</a>) \
% endif
% if len(u.links) != 1:
in <a href="${b[2]}">${b[1]}</a> \
% endif % endif
:</span></dt> :</span></dt>
<dd> <dd>
<ul> <ul>
% for p in u.weeks[week]: % for p in u.posts[g][week]:
<li><a href="${p['url']}">${p['title'] or "[ohne Titel]"}</a></li> <li><a href="${p['url']}">${p['title'] or "[ohne Titel]"}</a></li>
% endfor % endfor
</ul> </ul>
</dd> </dd>
% endif
% endfor
% endfor
% endfor % endfor
</dl> </dl>
<h3>Die Faulen:</h3> <h3>Die Faulen:</h3> <% lame=0 %>
<ul> <ul>
% for u in sorted(lame, key=lambda u:u.name[u.name.rfind(' '):].lower()): % for u in sorted(userlist, key=lambda u:u.name[u.name.rfind(' '):].lower()):
<li class="user"><strong>${u.name} </strong> \ % for g in u.lameblogs:
% for b in u.links:
% if b[0] == g:
<li class="user"><strong>${u.name} </strong> <% lame+=1 %> \
% if u.twitter != False: % if u.twitter != False:
@<a href="http://twitter.com/${u.username}">${u.username}</a> \ @<a href="http://twitter.com/${u.username}">${u.username}</a> \
% endif % endif
% if len(u.links) != 1:
in <a href="${b[2]}">${b[1]}</a> \
% endif
</li> </li>
% endif
% endfor
% endfor
% endfor % endfor
</ul> </ul>
@ -65,9 +83,9 @@ Zusammenfassung f&uuml;r die Woche ab ${week_start.strftime("%d.%m.%Y")}:
<h3>Kasse:</h3> <h3>Kasse:</h3>
<table style="border-left-style:none; border-right-style:none;"> <table style="border-left-style:none; border-right-style:none;">
<tr> <td> Diese Woche: </td> <td> ${5 * len(lame)}&nbsp;&euro; </td> </tr> <tr> <td> Diese Woche: </td> <td> ${5 * lame}&nbsp;&euro; </td> </tr>
<tr> <td> Insgesamt: </td> <td> ${pool}&nbsp;&euro;</td> </tr> <tr> <td> Insgesamt: </td> <td> ${pool}&nbsp;&euro;</td> </tr>
<tr> <td> Beglichen: </td> <td> ${paid}&nbsp;&euro;</td> </tr> <tr> <td> beglichen: </td> <td> ${paid}&nbsp;&euro;</td> </tr>
<tr> <td> verfeiert: </td> <td> ${event}&nbsp;&euro;</td> </tr> <tr> <td> verfeiert: </td> <td> ${event}&nbsp;&euro;</td> </tr>
</table> </table>
@ -89,9 +107,11 @@ Zusammenfassung f&uuml;r die Woche ab ${week_start.strftime("%d.%m.%Y")}:
%endif %endif
</table> </table>
% if punted:
<h3>Zuvor ausgeschieden (m&uuml;ssen 30 &euro; f&uuml;r den Wiedereinstieg bezahlen):</h3> <h3>Zuvor ausgeschieden (m&uuml;ssen 30 &euro; f&uuml;r den Wiedereinstieg bezahlen):</h3>
<ul> <ul>
% for (u) in sorted(punted, key=lambda p:p.name[p.name.rfind(' '):].lower()): % for (u) in sorted(punted, key=lambda p:p.name[p.name.rfind(' '):].lower()):
<li>${u.name} (seit ${u.end_de})</li> <li>${u.name} (seit ${u.end_de})</li>
% endfor % endfor
</ul> </ul>
% endif