예제 #1
0
def report_gifs(multi=False, count=False, html=False, dump_all=False):
    """ report gifs sorted by number of upvotes per use
     optionally filter to only gifs used multiple times """

    if count:
        print 'gifs: {}'.format(Gif.count())
        print 'gif urls: {}'.format(GifUrl.count())
        print 'uses: {}'.format(Usage.count())

    gifscores = [] 
    for gif in Gif.all():
        uses = Usage.get_all_by_gif(gif)
        use = uses[0]
        if use.recent():
            gifscores.append({
                'score_per_use': sum([use.upvotes for use in uses]) / len(uses),
                'uses': len(uses),
                'imgur_id': GifUrl.by_id(use.gif_url_id).get_imgur_id(),
                'url': GifUrl.by_id(use.gif_url_id).url })

    env = Environment(loader=PackageLoader(__name__, 'templates'))
    template = env.get_template('gif.html')
    gifs=sorted(gifscores, key=lambda k: k['score_per_use'], reverse=True)

    if not dump_all:
        gifs = gifs[:30]

    if html:
        print template.render(gifs=gifs)
    else:
        for gif in gifs:
            pprint(gif)
예제 #2
0
def record(id,metric,total,report=True):
    from models import NamedBase, Usage
    base = NamedBase.objects.get(pk=id)
    usage = Usage(base=base,metric=metric,total=total,rate=0,rateCumulative=0,rateTime=datetime.datetime.now(),nInProgress=0,reports=1,squares=(total*total))
    usage.save()
    base.usages.add(usage)
    base.save()
    if report:
        reportusage(base)
    return usage
예제 #3
0
def render_usage(request):
    """Render the usage page"""
    usagesummary = Usage.get_full_usagesummary()
    _dict = {}
    _dict["usagesummary"] = usagesummary
    return render_to_response('allusage.html', append_dict(_dict, request), \
            context_instance=RequestContext(request))
예제 #4
0
def home(request):
    """Render the home page """
    hostings = HostingContainer.objects.all()
    usagesummary = Usage.usages_to_summary(Usage.objects.all())
    servicerequestform = ServiceRequestForm()
    _dict = {}
    _dict["servicerequestform"] = servicerequestform
    if request.user.is_authenticated() and request.user.is_staff:
        _dict["hostingcontainers"] = hostings
        _dict["hostingcontainerform"] = HostingContainerForm(initial={
            'name': "Container",
            })
        _dict["serviceform"] = DataServiceForm(initial={
            'name': "Service",
            "starttime":datetime.datetime.today(),
            "endtime":datetime.datetime.today() + datetime.timedelta(hours=1)
            })
        _dict["usagesummary"] = usagesummary
        return render_to_response('home.html', append_dict(_dict, request), \
            context_instance=RequestContext(request))
    elif request.user.is_authenticated():
        return render_to_response('home.html', append_dict(_dict, request), \
            context_instance=RequestContext(request))
    else:
        return redirect(reverse('login'))
        from django.contrib.auth.forms import AuthenticationForm
        from django_openid_auth.forms import OpenIDLoginForm
        _dict["authform"] = AuthenticationForm()
        _dict["form"] = OpenIDLoginForm()
        return render_to_response('login.html', append_dict(_dict, request), \
            context_instance=RequestContext(request))
예제 #5
0
 def read(self, request, containerid=None, serviceid=None,
             mfileid=None, authid=None):
     if containerid or serviceid or mfileid:
         base = NamedBase.objects.get(
                 id__in=[containerid, serviceid, mfileid])
         result = {}
         result["usages"] = base.get_real_base().get_usage_summary()
         result["reportnum"] = base.reportnum
         return result
     elif authid:
         auth = Auth.objects.get(pk=authid)
         base = utils.get_base_for_auth(auth)
         result = {}
         result["usages"] = base.get_real_base().get_usage_summary()
         result["reportnum"] = base.reportnum
         return result
     elif request.user.is_staff:
         result = {}
         result["usages"] = Usage.get_full_usagesummary()
         result["reportnum"] = -1
         return result
     else:
         response = rc.BAD_REQUEST
         response.write("Invalid Request!")
         return response
예제 #6
0
def save_request(request):
    usage = Usage()
    usage.ip = request.META.get('REMOTE_ADDR')
    usage.method = request.method
    usage.path = request.path
    usage.params = request.META.get('QUERY_STRING')
    usage.save()
예제 #7
0
def stats(request, baseid=None):
    from jobservice.models import Job
    job_json = Job.get_job_plots(request, baseid=baseid)
    mfile_json = MFile.get_mfile_plots(request, baseid=baseid)
    usage_json = Usage.get_usage_plots(request, baseid=baseid)
    json = job_json + mfile_json + usage_json
    if json == None:
        return HttpResponseNotFound()
    _json = simplejson.dumps(json)
    return HttpResponse(_json, mimetype="application/json")
예제 #8
0
def updaterecording(id,metric,rate,report=True):
    from models import NamedBase, Usage
    base = NamedBase.objects.get(pk=id)

    try:
        usage = Usage.objects.get(base=base,metric=metric)
        if rate == usage.rate:
            logging.debug("Usage allready exists for %s at current rate %s " % (usage.metric,rate))
        else:
            logging.debug("Usage allready exists for %s at rate %s, changing rate to %s " % (usage.metric, usage.rate, rate))
            update_usage(usage,rate=rate)
            if report:
                reportusage(base)
            return usage
    except Usage.DoesNotExist:
        usage = Usage(base=base,metric=metric,rate=rate,total=0.0,reports=1,nInProgress=1,rateCumulative=0,rateTime=datetime.datetime.now())
        usage.save()
        if report:
            reportusage(base)
        return usage
예제 #9
0
def run():
    um = UsageManager()
    y = getUptime()
    um.update(Usage.create(y))
    um.sync()
예제 #10
0
def run():
    um = UsageManager()
    y = getUptime()
    um.update(Usage.create(y))
    um.sync()
def main(argv=None):
    if argv is None:
        argv = sys.argv
    try:
        try:
            opts, args = getopt.getopt(argv[1:], "shc", ["send", "help"])
        except getopt.error, msg:
            raise Usage(msg)

        # option processing
        send = False
        for option, value in opts:
            if option in ("-s", "--send"):
                send = True
            if option in ("-h", "--help"):
                raise Usage(help_message)

        # Parse configuration
        config = parse_yaml()
        for key in REQRD:
            if key not in config.keys():
                raise Exception(
                    'Required parameter %s not in yaml config file!' % (key,))

        participants = config['PARTICIPANTS']
        couples = config['COUPLES']
        if len(participants) < 2:
            raise Exception('Not enough participants specified.')

        # Mail parsing
        f = open('templates/mail.html', 'r')
        mail_html = ""
        while 1:
            line = f.readline()
            if not line:
                break
            mail_html += line

        f.close()

        givers = []
        for person in participants:
            name, email = re.match(r'([^<]*)<([^>]*)>', person).groups()
            name = name.strip()
            partner = None
            for couple in couples:
                names = [n.strip() for n in couple.split(',')]
                if name in names:
                    # is part of this couple
                    for member in names:
                        if name != member:
                            partner = member
            person = Person(name, email, partner)
            givers.append(person)

        recievers = givers[:]
        pairs = create_pairs(givers, recievers)
        if not send:
            print """
                    Test pairings:

                    %s

                    To send out emails with new pairings,
                    call with the --send argument:

                    $ python secret_santa.py --send

            """ % ("\n".join([str(p) for p in pairs]))

        for pair in pairs:

            if send:
                to = "%s <%s>" % (pair.giver.name, pair.giver.email)
                mail = HtmlMail(
                    config['SUBJECT'], config['FROM'], to, config['USERNAME'],
                    config['PASSWORD'])

                mail.send(
                    parse_email(config['TEMPLATE']).format(
                        config['SUBJECT'], pair.giver.name, pair.reciever.name,
                        config['LIMIT'], config['DEATHLINE'])
                )
                print "Emailed %s <%s>" % (pair.giver.name, pair.giver.email)