euscanwww: add new charts
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
This commit is contained in:
		
							
								
								
									
										21
									
								
								euscanwww/euscan/management/commands/regen-rrds.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								euscanwww/euscan/management/commands/regen-rrds.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
import datetime
 | 
			
		||||
 | 
			
		||||
from optparse import make_option
 | 
			
		||||
 | 
			
		||||
from django.core.management.base import BaseCommand, CommandError
 | 
			
		||||
from euscanwww.euscan.models import Package, HerdLog, MaintainerLog, CategoryLog, Herd, Maintainer, Version
 | 
			
		||||
from euscanwww.euscan import charts
 | 
			
		||||
 | 
			
		||||
class Command(BaseCommand):
 | 
			
		||||
    _overlays = {}
 | 
			
		||||
    help = 'Regenerate rrd database'
 | 
			
		||||
 | 
			
		||||
    def handle(self, *args, **options):
 | 
			
		||||
        for clog in CategoryLog.objects.all():
 | 
			
		||||
            charts.rrd_update('category-%s' % clog.category, clog.datetime, clog)
 | 
			
		||||
 | 
			
		||||
        for hlog in HerdLog.objects.all():
 | 
			
		||||
            charts.rrd_update('herd-%d' % hlog.herd.id, hlog.datetime, hlog)
 | 
			
		||||
 | 
			
		||||
        for mlog in MaintainerLog.objects.all():
 | 
			
		||||
            charts.rrd_update('maintainer-%d' % mlog.maintainer.id, mlog.datetime, mlog)
 | 
			
		||||
@@ -6,6 +6,15 @@ from django.db.models import Count, Sum
 | 
			
		||||
from django.db.transaction import commit_on_success
 | 
			
		||||
from django.core.management.base import BaseCommand, CommandError
 | 
			
		||||
from euscanwww.euscan.models import Package, HerdLog, MaintainerLog, CategoryLog, Herd, Maintainer, Version
 | 
			
		||||
from euscanwww.euscan import charts
 | 
			
		||||
 | 
			
		||||
class World:
 | 
			
		||||
    n_packages_gentoo   = 0
 | 
			
		||||
    n_packages_overlay  = 0
 | 
			
		||||
    n_packages_outdated = 0
 | 
			
		||||
    n_versions_gentoo   = 0
 | 
			
		||||
    n_versions_overlay  = 0
 | 
			
		||||
    n_versions_upstream = 0
 | 
			
		||||
 | 
			
		||||
class Command(BaseCommand):
 | 
			
		||||
    _overlays = {}
 | 
			
		||||
@@ -26,6 +35,7 @@ class Command(BaseCommand):
 | 
			
		||||
        categories = {}
 | 
			
		||||
        herds = {}
 | 
			
		||||
        maintainers = {}
 | 
			
		||||
        world = World()
 | 
			
		||||
 | 
			
		||||
        # Could be done using raw SQL queries, but I don't have time for that
 | 
			
		||||
        # right now ...
 | 
			
		||||
@@ -55,40 +65,60 @@ class Command(BaseCommand):
 | 
			
		||||
            package.n_overlay = Version.objects.filter(package=package, packaged=True).exclude(overlay='gentoo').count()
 | 
			
		||||
            package.save()
 | 
			
		||||
 | 
			
		||||
            n_packages_gentoo = int(package.n_packaged == package.n_versions)
 | 
			
		||||
            n_packages_overlay = int(package.n_overlay and package.n_packaged + package.n_overlay == package.n_versions)
 | 
			
		||||
            n_packages_outdated = int(package.n_packaged + package.n_overlay < package.n_versions)
 | 
			
		||||
 | 
			
		||||
            for herd in package.herds.all():
 | 
			
		||||
                herds[herd].n_packages += 1
 | 
			
		||||
                herds[herd].n_versions += package.n_versions
 | 
			
		||||
                herds[herd].n_packaged += package.n_packaged
 | 
			
		||||
                herds[herd].n_overlay += package.n_overlay
 | 
			
		||||
                herds[herd].n_packages_gentoo   += n_packages_gentoo
 | 
			
		||||
                herds[herd].n_packages_overlay  += n_packages_overlay
 | 
			
		||||
                herds[herd].n_packages_outdated += n_packages_outdated
 | 
			
		||||
 | 
			
		||||
                herds[herd].n_versions_gentoo   += package.n_packaged
 | 
			
		||||
                herds[herd].n_versions_overlay  += package.n_overlay
 | 
			
		||||
                herds[herd].n_versions_upstream += package.n_versions - package.n_packaged - package.n_overlay
 | 
			
		||||
 | 
			
		||||
            for maintainer in package.maintainers.all():
 | 
			
		||||
                maintainers[maintainer].n_packages += 1
 | 
			
		||||
                maintainers[maintainer].n_versions += package.n_versions
 | 
			
		||||
                maintainers[maintainer].n_packaged += package.n_packaged
 | 
			
		||||
                maintainers[maintainer].n_overlay += package.n_overlay
 | 
			
		||||
                maintainers[maintainer].n_packages_gentoo   += n_packages_gentoo
 | 
			
		||||
                maintainers[maintainer].n_packages_overlay  += n_packages_overlay
 | 
			
		||||
                maintainers[maintainer].n_packages_outdated += n_packages_outdated
 | 
			
		||||
 | 
			
		||||
            categories[package.category].n_packages += 1
 | 
			
		||||
            categories[package.category].n_versions += package.n_versions
 | 
			
		||||
            categories[package.category].n_packaged += package.n_packaged
 | 
			
		||||
            categories[package.category].n_overlay += package.n_overlay
 | 
			
		||||
                maintainers[maintainer].n_versions_gentoo   += package.n_packaged
 | 
			
		||||
                maintainers[maintainer].n_versions_overlay  += package.n_overlay
 | 
			
		||||
                maintainers[maintainer].n_versions_upstream += package.n_versions - package.n_packaged - package.n_overlay
 | 
			
		||||
 | 
			
		||||
            categories[package.category].n_packages_gentoo   += n_packages_gentoo
 | 
			
		||||
            categories[package.category].n_packages_overlay  += n_packages_overlay
 | 
			
		||||
            categories[package.category].n_packages_outdated += n_packages_outdated
 | 
			
		||||
 | 
			
		||||
            categories[package.category].n_versions_gentoo   += package.n_packaged
 | 
			
		||||
            categories[package.category].n_versions_overlay  += package.n_overlay
 | 
			
		||||
            categories[package.category].n_versions_upstream += package.n_versions - package.n_packaged - package.n_overlay
 | 
			
		||||
 | 
			
		||||
            world.n_packages_gentoo   += n_packages_gentoo
 | 
			
		||||
            world.n_packages_overlay  += n_packages_overlay
 | 
			
		||||
            world.n_packages_outdated += n_packages_outdated
 | 
			
		||||
 | 
			
		||||
            world.n_versions_gentoo   += package.n_packaged
 | 
			
		||||
            world.n_versions_overlay  += package.n_overlay
 | 
			
		||||
            world.n_versions_upstream += package.n_versions - package.n_packaged - package.n_overlay
 | 
			
		||||
 | 
			
		||||
        for clog in categories.values():
 | 
			
		||||
            if not options['quiet']:
 | 
			
		||||
                self.stdout.write('[c] %s - [%d, %d/%d/%d]\n' %
 | 
			
		||||
                                  (clog.category, clog.n_packages,
 | 
			
		||||
                                   clog.n_packaged, clog.n_overlay, clog.n_versions))
 | 
			
		||||
                self.stdout.write('[c] %s\n' % clog)
 | 
			
		||||
            charts.rrd_update('category-%s' % clog.category, now, clog)
 | 
			
		||||
            clog.save()
 | 
			
		||||
 | 
			
		||||
        for hlog in herds.values():
 | 
			
		||||
            if not options['quiet']:
 | 
			
		||||
                self.stdout.write('[h] %s - [%d, %d/%d/%d]\n' %
 | 
			
		||||
                                  (hlog.herd, hlog.n_packages,
 | 
			
		||||
                                   hlog.n_packaged, hlog.n_overlay, hlog.n_versions))
 | 
			
		||||
                self.stdout.write('[h] %s\n' % hlog)
 | 
			
		||||
            charts.rrd_update('herd-%d' % hlog.herd.id, now, hlog)
 | 
			
		||||
            hlog.save()
 | 
			
		||||
 | 
			
		||||
        for mlog in maintainers.values():
 | 
			
		||||
            if not options['quiet']:
 | 
			
		||||
                self.stdout.write('[m] %s - [%d, %d/%d/%d]\n' %
 | 
			
		||||
                                  (mlog.maintainer, mlog.n_packages,
 | 
			
		||||
                                   mlog.n_packaged, mlog.n_overlay, mlog.n_versions))
 | 
			
		||||
                self.stdout.write('[m] %s\n' % mlog)
 | 
			
		||||
            charts.rrd_update('maintainer-%d' % mlog.maintainer.id, now, mlog)
 | 
			
		||||
            mlog.save()
 | 
			
		||||
 | 
			
		||||
        charts.rrd_update('world', now, world)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user