예제 #1
0
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),
    )
예제 #2
0
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,
    )
예제 #3
0
    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
예제 #4
0
파일: app.py 프로젝트: lvh/pc-bot
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),
    )
예제 #5
0
파일: agenda.py 프로젝트: lvh/pc-bot
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)
예제 #6
0
파일: agenda.py 프로젝트: lvh/pc-bot
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: