def index(): total = len(TalkProposal.objects) reviewed = len(TalkProposal.objects(status__ne='unreviewed')) remaining = total - reviewed accepted = len(TalkProposal.objects(status__in=('thunderdome', 'accepted'))) rejected = len(TalkProposal.objects(status__in=('rejected', 'posted'))) number_of_meetings = len(Meeting.objects) talks_per_meeting = float(reviewed) / number_of_meetings talks_by_status = TalkProposal.objects.item_frequencies('status').items() return flask.render_template( 'index.html', total=total, reviewed=reviewed, remaining=remaining, percent_reviewed=float(reviewed) / total, accepted=accepted, percent_accepted=(float(accepted) / reviewed) if reviewed else 0, rejected=rejected, percent_rejected=(float(rejected) / reviewed) if reviewed else 0, number_of_meetings=number_of_meetings, talks_per_meeting=talks_per_meeting, meetings_left=int(math.ceil(float(remaining) / talks_per_meeting)), talks_by_status_json=json.dumps(talks_by_status), )
def index(): total = len(TalkProposal.objects) reviewed = len(TalkProposal.objects(status__ne='unreviewed')) remaining = total - reviewed accepted = len(TalkProposal.objects(kittendome_result='thunderdome')) rejected = len(TalkProposal.objects(kittendome_result='rejected')) number_of_meetings = len(Meeting.objects) talks_per_meeting = float(reviewed) / number_of_meetings groups_total = len(Group.objects) groups_reviewed = len(Group.objects(decided=True)) total_tdome_talks = sum(Group.objects.filter(decided=True).item_frequencies('talks').values()) tdome_results = {} for result in ('accepted', 'damaged', 'rejected'): c = len(TalkProposal.objects(thunderdome_result=result)) tdome_results[result] = { 'count': c, 'percent': float(c)/total_tdome_talks } talks_by_status = TalkProposal.objects.item_frequencies('status') talks_by_status.update(TalkProposal.objects.item_frequencies('alternative')) talks_by_status.pop(None) talks_by_status['rejected'] -= sum(talks_by_status.get(k, 0) for k,v in TalkProposal.TALK_ALTERNATIVES) talks_by_status = sorted(talks_by_status.items()) return flask.render_template('index.html', total = total, reviewed = reviewed, remaining = remaining, kittendome_complete = (remaining == 0), percent_reviewed = float(reviewed) / total, accepted = accepted, percent_accepted = (float(accepted) / reviewed) if reviewed else 0, rejected = rejected, percent_rejected = (float(rejected) / reviewed) if reviewed else 0, number_of_meetings = number_of_meetings, talks_per_meeting = talks_per_meeting, meetings_left = int(math.ceil(float(remaining) / talks_per_meeting)), talks_by_status_json = json.dumps(talks_by_status), groups_total = groups_total, groups_reviewed = groups_reviewed, groups_remaining = groups_total - groups_reviewed, groups_reviewed_percent = float(groups_reviewed) / groups_total, thunderdome_results = tdome_results, )
def handle_review(self): """Print out an agenda for a single kittendome meeting.""" talks = TalkProposal.objects(status__in=("unreviewed", "hold")).order_by("talk_id")[: self.args.num] overflow = TalkProposal.objects(status__in=("unreviewed", "hold")).order_by("talk_id")[ self.args.num : self.args.num + self.args.overflow ] print "=== AGENDA ===" print for t in talks: print t.agenda_format if overflow: print "=== OVERFLOW ===" print for t in overflow: print t.agenda_format
def index(): total = len(TalkProposal.objects) reviewed = len(TalkProposal.objects(status__ne='unreviewed')) remaining = total - reviewed accepted = len(TalkProposal.objects(status__in=('thunderdome', 'accepted'))) rejected = len(TalkProposal.objects(status__in=('rejected', 'posted'))) number_of_meetings = len(Meeting.objects) talks_per_meeting = float(reviewed) / number_of_meetings talks_by_status = TalkProposal.objects.item_frequencies('status').items() return flask.render_template('index.html', total = total, reviewed = reviewed, remaining = remaining, percent_reviewed = float(reviewed) / total, accepted = accepted, percent_accepted = (float(accepted) / reviewed) if reviewed else 0, rejected = rejected, percent_rejected = (float(rejected) / reviewed) if reviewed else 0, number_of_meetings = number_of_meetings, talks_per_meeting = talks_per_meeting, meetings_left = int(math.ceil(float(remaining) / talks_per_meeting)), talks_by_status_json = json.dumps(talks_by_status), )
import sys import argparse import pycon_bot.mongo from pycon_bot.models import TalkProposal p = argparse.ArgumentParser() p.add_argument('--dsn') p.add_argument('-n', '--num', type=int, default=10) p.add_argument('-o', '--overflow', type=int, default=4) args = p.parse_args() if not pycon_bot.mongo.connect(args.dsn): sys.stderr.write("Need to pass --dsn or set env[MONGO_DSN].") sys.exit(1) talks = TalkProposal.objects(status__in=('unreviewed', 'hold')).order_by('talk_id')[:args.num] overflow = TalkProposal.objects(status__in=('unreviewed', 'hold')).order_by('talk_id')[args.num:args.num+args.overflow] def pt(t): return "#%s - %s - %s\n%s\n" % (t.talk_id, t.title, t.speaker, t.review_url) print "=== AGENDA ===" print for t in talks: print pt(t) if overflow: print "=== OVERFLOW ===" print for t in overflow: print pt(t)
import sys import argparse import pycon_bot.mongo from pycon_bot.models import TalkProposal p = argparse.ArgumentParser() p.add_argument('--dsn') p.add_argument('-n', '--num', type=int, default=10) p.add_argument('-o', '--overflow', type=int, default=4) args = p.parse_args() if not pycon_bot.mongo.connect(args.dsn): sys.stderr.write("Need to pass --dsn or set env[MONGO_DSN].") sys.exit(1) talks = TalkProposal.objects( status__in=('unreviewed', 'hold')).order_by('talk_id')[:args.num] overflow = TalkProposal.objects( status__in=('unreviewed', 'hold')).order_by('talk_id')[args.num:args.num + args.overflow] def pt(t): return "#%s - %s - %s\n%s\n" % (t.talk_id, t.title, t.speaker, t.review_url) print "=== AGENDA ===" print for t in talks: print pt(t) if overflow: