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 e in u['links']:
(title, url) = e[0:2]
(title, url) = e[1:3]
try:
e[0] = e[0].strip()
e[1] = e[1].strip()
except:
e[0] = e[0]
if len(e) == 3:
e[1] = e[1]
if len(e) == 4:
continue
link = fetch_links(url)
if link:

View File

@ -76,8 +76,6 @@ def render_template(path, week=None, **kwargs):
week_start = START + (week * datetime.timedelta(7))
week_end = START + ((week + 1) * datetime.timedelta(7))
good = []
lame = []
skip = []
skipped_users = []
userlist = []
@ -97,7 +95,9 @@ def render_template(path, week=None, **kwargs):
u.end = rec.get('end')
u.stop = rec.get('stop')
u.skip = parse_skip(rec)
u.weeks = report.get(un, [])
u.posts = report.get(un, {})
u.goodblogs = []
u.lameblogs = []
userlist.append(u)
@ -118,21 +118,25 @@ def render_template(path, week=None, **kwargs):
continue
if u.end and parse(u.end, default=START) <= week_start:
continue
if should_skip(u.skip, week):
skipped_users.append(u)
continue
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)
continue
for blog in u.links:
b=blog[0]
weeks=u.posts[b]
if len(weeks) <= week or not weeks[week]:
u.lameblogs.append(b)
else:
u.goodblogs.append(b)
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,
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'),
debts=debts, punted=punted, **kwargs)

View File

@ -66,14 +66,16 @@ def parse_feeds(weeks, uri):
if len(sys.argv) > 1:
for username in sys.argv[1:]:
weeks = log.setdefault(username, [])
blogs = log.setdefault(username, {})
for l in users[username]['links']:
parse_feeds(weeks, l[2])
weeks = blogs.setdefault(l[0], [])
parse_feeds(weeks, l[3])
else:
for (username, u) in users.items():
weeks = log.setdefault(username, [])
blogs = log.setdefault(username, {})
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:
yaml.safe_dump(log, f)

View File

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

View File

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

View File

@ -17,7 +17,7 @@
<td align="left" valign="top">
% if u.links:
% for a in u.links:
<a href="${a[1]}">${a[0]}</a>
<a href="${a[2]}">${a[1]}</a>
% endfor
% else:
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>
<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> \
% 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
:</span></dt>
<dd>
<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>
% endfor
</ul>
</dd>
% endif
% endfor
% endfor
% endfor
</dl>
<h3>Die Faulen:</h3>
<h3>Die Faulen:</h3> <% lame=0 %>
<ul>
% for u in sorted(lame, key=lambda u:u.name[u.name.rfind(' '):].lower()):
<li class="user"><strong>${u.name} </strong> \
% for u in sorted(userlist, key=lambda u:u.name[u.name.rfind(' '):].lower()):
% 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:
@<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
</li>
% endif
% endfor
% endfor
% endfor
</ul>
@ -65,9 +83,9 @@ Zusammenfassung f&uuml;r die Woche ab ${week_start.strftime("%d.%m.%Y")}:
<h3>Kasse:</h3>
<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> 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>
</table>
@ -89,9 +107,11 @@ Zusammenfassung f&uuml;r die Woche ab ${week_start.strftime("%d.%m.%Y")}:
%endif
</table>
% if punted:
<h3>Zuvor ausgeschieden (m&uuml;ssen 30 &euro; f&uuml;r den Wiedereinstieg bezahlen):</h3>
<ul>
% for (u) in sorted(punted, key=lambda p:p.name[p.name.rfind(' '):].lower()):
<li>${u.name} (seit ${u.end_de})</li>
% endfor
</ul>
% endif