euscanwww: big ugly commit, sorry
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
This commit is contained in:
		@@ -1,3 +1,5 @@
 | 
			
		||||
from optparse import make_option
 | 
			
		||||
 | 
			
		||||
from django.core.management.base import BaseCommand, CommandError
 | 
			
		||||
from euscanwww.euscan.models import Package
 | 
			
		||||
 | 
			
		||||
@@ -5,6 +7,49 @@ class Command(BaseCommand):
 | 
			
		||||
    _overlays = {}
 | 
			
		||||
    help = 'List packages'
 | 
			
		||||
 | 
			
		||||
    option_list = BaseCommand.option_list + (
 | 
			
		||||
        make_option('--after',
 | 
			
		||||
            action='store',
 | 
			
		||||
            dest='after',
 | 
			
		||||
            default=False,
 | 
			
		||||
            help='After package'),
 | 
			
		||||
        make_option('--before',
 | 
			
		||||
            action='store',
 | 
			
		||||
            dest='before',
 | 
			
		||||
            default=False,
 | 
			
		||||
            help='Before package'),
 | 
			
		||||
        make_option('--limit',
 | 
			
		||||
            action='store',
 | 
			
		||||
            dest='limit',
 | 
			
		||||
            default=False,
 | 
			
		||||
            help='limit'),
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def handle(self, *args, **options):
 | 
			
		||||
        for pkg in Package.objects.all():
 | 
			
		||||
        after = None
 | 
			
		||||
        before = None
 | 
			
		||||
 | 
			
		||||
        if options['after']:
 | 
			
		||||
            category, name = options['after'].split('/')
 | 
			
		||||
            after = Package.objects.get(category=category, name=name)
 | 
			
		||||
 | 
			
		||||
        if options['before']:
 | 
			
		||||
            category, name = options['before'].split('/')
 | 
			
		||||
            before = Package.objects.get(category=category, name=name)
 | 
			
		||||
 | 
			
		||||
        packages = Package.objects
 | 
			
		||||
 | 
			
		||||
        if after or before:
 | 
			
		||||
            if after:
 | 
			
		||||
                packages = packages.filter(id__gte=after.id)
 | 
			
		||||
            if before:
 | 
			
		||||
                packages = packages.filter(id__lte=before.id)
 | 
			
		||||
        else:
 | 
			
		||||
            packages = packages.all()
 | 
			
		||||
 | 
			
		||||
        if options['limit']:
 | 
			
		||||
            packages = packages[:int(options['limit'])]
 | 
			
		||||
 | 
			
		||||
        for pkg in packages:
 | 
			
		||||
            self.stdout.write('%s/%s\n' % (pkg.category, pkg.name))
 | 
			
		||||
        self.stdout.close()
 | 
			
		||||
 
 | 
			
		||||
@@ -74,6 +74,9 @@ class Command(BaseCommand):
 | 
			
		||||
            sys.stderr.write(self.style.ERROR("Gentoolkit fatal error: '%s'\n" % str(err)))
 | 
			
		||||
 | 
			
		||||
        if pkg.metadata:
 | 
			
		||||
            obj.herds.clear()
 | 
			
		||||
            obj.maintainers.clear()
 | 
			
		||||
 | 
			
		||||
            for herd in pkg.metadata.herds(True):
 | 
			
		||||
                herd = self.store_herd(options, herd[0], herd[1])
 | 
			
		||||
                obj.herds.add(herd)
 | 
			
		||||
@@ -88,6 +91,10 @@ class Command(BaseCommand):
 | 
			
		||||
        obj.save()
 | 
			
		||||
 | 
			
		||||
    def store_herd(self, options, name, email):
 | 
			
		||||
        if not name:
 | 
			
		||||
            name = '{nil}'
 | 
			
		||||
        name = name.strip("\r").strip("\n").strip("\t").strip()
 | 
			
		||||
 | 
			
		||||
        herd, created = Herd.objects.get_or_create(herd=name)
 | 
			
		||||
 | 
			
		||||
        if created or herd.email != email:
 | 
			
		||||
@@ -102,13 +109,16 @@ class Command(BaseCommand):
 | 
			
		||||
    def store_maintainer(self, options, name, email):
 | 
			
		||||
        if not name:
 | 
			
		||||
            name = email
 | 
			
		||||
        if not name:
 | 
			
		||||
            name = '{nil}'
 | 
			
		||||
 | 
			
		||||
        maintainer, created = Maintainer.objects.get_or_create(name=name, email=email)
 | 
			
		||||
        maintainer, created = Maintainer.objects.get_or_create(email=email)
 | 
			
		||||
 | 
			
		||||
        if created:
 | 
			
		||||
            if not options['quiet']:
 | 
			
		||||
                sys.stdout.write('[m] %s <%s>\n' % (name.encode('utf-8'), email))
 | 
			
		||||
 | 
			
		||||
            maintainer.name = name
 | 
			
		||||
            maintainer.save()
 | 
			
		||||
 | 
			
		||||
        return maintainer
 | 
			
		||||
 
 | 
			
		||||
@@ -120,6 +120,7 @@ class Command(BaseCommand):
 | 
			
		||||
        # Delete previous versions to handle incremental scan correctly
 | 
			
		||||
        Version.objects.filter(package=obj, packaged=True).delete()
 | 
			
		||||
 | 
			
		||||
        obj.n_packaged = 0
 | 
			
		||||
        obj.n_versions = Version.objects.filter(package=obj).count()
 | 
			
		||||
        obj.save()
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user