euscanwww: don't delete packages when deleting related versions
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
This commit is contained in:
parent
2effd34b01
commit
5062f29e3c
4
TODO
4
TODO
@ -17,7 +17,9 @@ euscan
|
|||||||
- <upsteam><watch options="quirck1 quirck2">http://my.soft/tar-(\d+).ball</watch></upstream>
|
- <upsteam><watch options="quirck1 quirck2">http://my.soft/tar-(\d+).ball</watch></upstream>
|
||||||
- cleaner code to separate gentoo mangled version and upstream unmangled versions
|
- cleaner code to separate gentoo mangled version and upstream unmangled versions
|
||||||
- try to import $PV -> $MY_PV transformations from ebuilds ?
|
- try to import $PV -> $MY_PV transformations from ebuilds ?
|
||||||
|
- Add a way to how we failled to find a new version
|
||||||
- add a HTTP cache (1day, configurable)
|
- add a HTTP cache (1day, configurable)
|
||||||
|
- add a way to enable/disable methods: other_distributions,remote_euscan,handlers, etc....
|
||||||
|
|
||||||
Site Handlers
|
Site Handlers
|
||||||
-------------
|
-------------
|
||||||
@ -37,6 +39,8 @@ euscanwww
|
|||||||
- add an /about/config page that describe the current config (overlays, stuff in make.conf, euscan default settings, etc..) [0.2.0]
|
- add an /about/config page that describe the current config (overlays, stuff in make.conf, euscan default settings, etc..) [0.2.0]
|
||||||
- add a table for overlays, change euscan_versions [0.2.0]
|
- add a table for overlays, change euscan_versions [0.2.0]
|
||||||
- rss scan world + post ?
|
- rss scan world + post ?
|
||||||
|
- always keep in db the last upstream version (could be marked as packaged without overlay ?)
|
||||||
|
- store euscan status (and used methods ?)
|
||||||
|
|
||||||
### Commands [0.2.0]
|
### Commands [0.2.0]
|
||||||
|
|
||||||
|
@ -7,6 +7,11 @@ from django.forms.models import model_to_dict
|
|||||||
|
|
||||||
from euscan.models import Version, Package, Herd, Maintainer, EuscanResult, VersionLog
|
from euscan.models import Version, Package, Herd, Maintainer, EuscanResult, VersionLog
|
||||||
from euscan.forms import WorldForm, PackagesForm
|
from euscan.forms import WorldForm, PackagesForm
|
||||||
|
from api.emitters import EuscanXMLEmitter
|
||||||
|
|
||||||
|
# replace default XMLEmitter with ours
|
||||||
|
from piston.emitters import Emitter
|
||||||
|
Emitter.register('xml', EuscanXMLEmitter, 'text/xml; charset=utf-8')
|
||||||
|
|
||||||
def xint(i):
|
def xint(i):
|
||||||
try:
|
try:
|
||||||
@ -75,7 +80,7 @@ class MaintainersHandler(AnonymousBaseHandler):
|
|||||||
maintainers = renameFields(maintainers, [('maintainers__id', 'id'),
|
maintainers = renameFields(maintainers, [('maintainers__id', 'id'),
|
||||||
('maintainers__name', 'name'),
|
('maintainers__name', 'name'),
|
||||||
('maintainers__email', 'email')])
|
('maintainers__email', 'email')])
|
||||||
return maintainers
|
return { 'maintainers' : maintainers }
|
||||||
|
|
||||||
# /api/1.0/herds
|
# /api/1.0/herds
|
||||||
class HerdsHandler(AnonymousBaseHandler):
|
class HerdsHandler(AnonymousBaseHandler):
|
||||||
@ -89,7 +94,7 @@ class HerdsHandler(AnonymousBaseHandler):
|
|||||||
n_versions=Sum('n_versions'))
|
n_versions=Sum('n_versions'))
|
||||||
|
|
||||||
herds = renameFields(herds, [('herds__herd', 'herd')])
|
herds = renameFields(herds, [('herds__herd', 'herd')])
|
||||||
return herds
|
return { 'herds' : herds }
|
||||||
|
|
||||||
# /api/1.0/categories
|
# /api/1.0/categories
|
||||||
class CategoriesHandler(AnonymousBaseHandler):
|
class CategoriesHandler(AnonymousBaseHandler):
|
||||||
@ -101,7 +106,7 @@ class CategoriesHandler(AnonymousBaseHandler):
|
|||||||
n_overlay=Sum('n_overlay'),
|
n_overlay=Sum('n_overlay'),
|
||||||
n_versions=Sum('n_versions'))
|
n_versions=Sum('n_versions'))
|
||||||
|
|
||||||
return categories
|
return { 'categories' : categories }
|
||||||
|
|
||||||
# /api/1.0/packages/by-maintainer/
|
# /api/1.0/packages/by-maintainer/
|
||||||
# /api/1.0/packages/by-category/
|
# /api/1.0/packages/by-category/
|
||||||
@ -189,4 +194,3 @@ class PackageHandler(AnonymousBaseHandler):
|
|||||||
package['log'] = model_to_dict(log, ['result', 'datetime'])
|
package['log'] = model_to_dict(log, ['result', 'datetime'])
|
||||||
|
|
||||||
return package
|
return package
|
||||||
|
|
||||||
|
@ -32,11 +32,14 @@ class Package(models.Model):
|
|||||||
|
|
||||||
' And we also pre-compute last versions '
|
' And we also pre-compute last versions '
|
||||||
last_version_gentoo = models.ForeignKey('Version', blank=True, null=True,
|
last_version_gentoo = models.ForeignKey('Version', blank=True, null=True,
|
||||||
related_name="last_version_gentoo")
|
related_name="last_version_gentoo",
|
||||||
|
on_delete=models.SET_NULL)
|
||||||
last_version_overlay = models.ForeignKey('Version', blank=True, null=True,
|
last_version_overlay = models.ForeignKey('Version', blank=True, null=True,
|
||||||
related_name="last_version_overlay")
|
related_name="last_version_overlay",
|
||||||
|
on_delete=models.SET_NULL)
|
||||||
last_version_upstream = models.ForeignKey('Version', blank=True, null=True,
|
last_version_upstream = models.ForeignKey('Version', blank=True, null=True,
|
||||||
related_name="last_version_upstream")
|
related_name="last_version_upstream",
|
||||||
|
on_delete=models.SET_NULL)
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return '%s/%s' % (self.category, self.name)
|
return '%s/%s' % (self.category, self.name)
|
||||||
|
@ -101,10 +101,25 @@ def overlay(request, overlay):
|
|||||||
|
|
||||||
@render_to('euscan/package.html')
|
@render_to('euscan/package.html')
|
||||||
def package(request, category, package):
|
def package(request, category, package):
|
||||||
|
|
||||||
|
def version_key(version):
|
||||||
|
from distutils.version import StrictVersion, LooseVersion
|
||||||
|
|
||||||
|
version = version.version
|
||||||
|
try:
|
||||||
|
return StrictVersion(version)
|
||||||
|
# in case of abnormal version number, fall back to LooseVersion
|
||||||
|
except ValueError:
|
||||||
|
return LooseVersion(version)
|
||||||
|
|
||||||
package = get_object_or_404(Package, category=category, name=package)
|
package = get_object_or_404(Package, category=category, name=package)
|
||||||
package.homepages = package.homepage.split(' ')
|
package.homepages = package.homepage.split(' ')
|
||||||
packaged = Version.objects.filter(package=package, packaged=True).order_by('version', 'revision')
|
packaged = Version.objects.filter(package=package, packaged=True)
|
||||||
upstream = Version.objects.filter(package=package, packaged=False).order_by('version', 'revision')
|
upstream = Version.objects.filter(package=package, packaged=False)
|
||||||
|
|
||||||
|
packaged = sorted(packaged, key=version_key)
|
||||||
|
upstream = sorted(upstream, key=version_key)
|
||||||
|
|
||||||
log = EuscanResult.objects.filter(package=package).order_by('-datetime')[:1]
|
log = EuscanResult.objects.filter(package=package).order_by('-datetime')[:1]
|
||||||
log = log[0] if log else None
|
log = log[0] if log else None
|
||||||
vlog = VersionLog.objects.filter(package=package).order_by('-id')
|
vlog = VersionLog.objects.filter(package=package).order_by('-id')
|
||||||
|
@ -22,7 +22,6 @@ def filter_versions(cp, versions):
|
|||||||
|
|
||||||
for url, version in versions:
|
for url, version in versions:
|
||||||
|
|
||||||
|
|
||||||
''' Try to keep the most specific urls (determinted by the length) '''
|
''' Try to keep the most specific urls (determinted by the length) '''
|
||||||
if version in filtered and len(url) < len(filtered[version]):
|
if version in filtered and len(url) < len(filtered[version]):
|
||||||
continue
|
continue
|
||||||
|
Loading…
Reference in New Issue
Block a user