diff --git a/euscanwww/djeuscan/models.py b/euscanwww/djeuscan/models.py index 5101ea8..0c38909 100644 --- a/euscanwww/djeuscan/models.py +++ b/euscanwww/djeuscan/models.py @@ -88,9 +88,12 @@ class Package(models.Model): class Meta: unique_together = ['category', 'name'] - def __unicode__(self): + def cp(self): return '%s/%s' % (self.category, self.name) + def __unicode__(self): + return self.cp() + def save(self, *args, **kwargs): self.full_clean() @@ -137,10 +140,17 @@ class Version(models.Model): class Meta: unique_together = ['package', 'slot', 'revision', 'version', 'overlay'] + def cpv(self): + return '%s/%s-%s-%s' % ( + self.package.category, self.package.name, self.version, + self.revision if self.revision != 'r0' else '' + ) + def __unicode__(self): return '%s/%s-%s-%s:%s [%s]' % ( self.package.category, self.package.name, self.version, - self.revision, self.slot, self.overlay or "" + self.revision if self.revision != 'r0' else '', + self.slot, self.overlay or "" ) def save(self, *args, **kwargs): diff --git a/euscanwww/djeuscan/processing/scan/scan_metadata.py b/euscanwww/djeuscan/processing/scan/scan_metadata.py index f9e5e86..ee028d4 100644 --- a/euscanwww/djeuscan/processing/scan/scan_metadata.py +++ b/euscanwww/djeuscan/processing/scan/scan_metadata.py @@ -160,6 +160,7 @@ class ScanMetadata(object): maintainer = self.store_maintainer( maintainer_name, maintainer_email ) + herd.maintainers.add(maintainer) @@ -169,7 +170,7 @@ def scan_metadata(packages=None, category=None, logger=None, populate=False): if category: packages = Package.objects.filter(category=category) - elif not packages: + elif packages == None: packages = Package.objects.all() if populate: diff --git a/euscanwww/djeuscan/processing/scan/scan_upstream.py b/euscanwww/djeuscan/processing/scan/scan_upstream.py index 8461a25..02b4287 100644 --- a/euscanwww/djeuscan/processing/scan/scan_upstream.py +++ b/euscanwww/djeuscan/processing/scan/scan_upstream.py @@ -31,8 +31,11 @@ class ScanUpstream(object): ebuild = out[package]["metadata"]["ebuild"] except KeyError: self.logger.error( - "Error while scanning upstream for package %s!\n%s", - package, + "Error while scanning upstream for package %s!", + package + ) + self.logger.debug( + "Error %s", out_json ) return {} diff --git a/euscanwww/djeuscan/tasks.py b/euscanwww/djeuscan/tasks.py index 77cce14..07ea20f 100644 --- a/euscanwww/djeuscan/tasks.py +++ b/euscanwww/djeuscan/tasks.py @@ -158,6 +158,7 @@ def update_portage_trees(): @task def update_portage(packages=None): update_portage_trees() + scan_metadata(packages=None, populate=True) ( group_one(scan_portage, portage.settings.categories, attr_name="category", purge_packages=True, diff --git a/euscanwww/djeuscan/templates/euscan/package.html b/euscanwww/djeuscan/templates/euscan/package.html index 40037d9..2357318 100644 --- a/euscanwww/djeuscan/templates/euscan/package.html +++ b/euscanwww/djeuscan/templates/euscan/package.html @@ -132,6 +132,7 @@ {% endif %} {{ version.version }} - {{ version.urls }} + {% if confidence < 100 %}({{ version.confidence }}%){% endif %} {% endfor %} @@ -168,9 +169,7 @@
euscan log

Date: {{ log.datetime }} -

-      {{ log.result|ansi_to_html|safe }}
-    
+
{{ msg|ansi_to_html|safe }}
{% endif %} diff --git a/euscanwww/djeuscan/templatetags/djeuscan_helpers.py b/euscanwww/djeuscan/templatetags/djeuscan_helpers.py index 2df1d07..427b421 100644 --- a/euscanwww/djeuscan/templatetags/djeuscan_helpers.py +++ b/euscanwww/djeuscan/templatetags/djeuscan_helpers.py @@ -3,8 +3,6 @@ from django.conf import settings from euscan.version import is_version_type_stable, get_version_type -from djeuscan.utils import plaintext2html - register = template.Library() @@ -73,4 +71,6 @@ def version_type(version): @register.filter def ansi_to_html(text): - return plaintext2html(text) + from ansi2html import Ansi2HTMLConverter + conv = Ansi2HTMLConverter(inline=True, linkify=True) + return conv.convert(text, full=False) diff --git a/euscanwww/djeuscan/utils.py b/euscanwww/djeuscan/utils.py deleted file mode 100644 index 60965e0..0000000 --- a/euscanwww/djeuscan/utils.py +++ /dev/null @@ -1,92 +0,0 @@ -import re -import cgi - -colorcodes = { - 'bold': ('\\\u001b[01m|\\\u001b[36;01m', '\\\u001b[39;49;00m'), - 'cyan': ('\\\u001b[36m', '\\\u001b[39m'), - 'blue': ('\\\u001b[34m', '\\\u001b[39m'), - 'red': ('\\\u001b[31m', '\\\u001b[39m'), - 'magenta': ('\\\u001b[35m', '\\\u001b[39m'), - 'green': ('\\\u001b[32;01m', '\\\u001b[39;49;00m'), - 'underline': ('\\\u001b[4m', '\\\u001b[24m'), -} - - -def recolor(color, text): - regexp = r"(?:%s)(.*?)(?:%s)" % colorcodes[color] - regexp = regexp.replace('[', r'\[') - return re.sub( - regexp, r'''\1''' % color, text - ) - - -def bold(text): - regexp = "(?:%s)(.*?)(?:%s)" % colorcodes['bold'] - regexp = regexp.replace('[', r'\[') - return re.sub(regexp, r'\1', text) - - -def underline(text): - regexp = "(?:%s)(.*?)(?:%s)" % colorcodes['underline'] - regexp = regexp.replace('[', r'\[') - return re.sub( - regexp, r'\1', text - ) - - -def removebells(text): - return text.replace('\07', '') - - -def removebackspaces(text): - backspace_or_eol = r'(.\010)|(\033\[K)' - n = 1 - while n > 0: - text, n = re.subn(backspace_or_eol, '', text, 1) - return text - - -def plaintext2html(text, tabstop=4): - def do_sub(m): - c = m.groupdict() - if c['htmlchars']: - return cgi.escape(c['htmlchars']) - if c['lineend']: - return '
' - elif c['space']: - t = m.group().replace('\t', ' ' * tabstop) - t = t.replace(' ', ' ') - return t - elif c['space'] == '\t': - return ' ' * tabstop - else: - url = m.group('protocal') - if url.startswith(' '): - prefix = ' ' - url = url[1:] - else: - prefix = '' - last = m.groups()[-1] - if last in ['\n', '\r', '\r\n']: - last = '
' - return '%s%s' % (prefix, url) - re_string = re.compile( - r'(?P[<&>])|(?P^[ \t]+)|(?P\r\n|\r|\n)|' - r'(?P(^|\s)((http|ftp)://.*?))(\s|$)', - re.S | re.M | re.I - ) - result = re.sub(re_string, do_sub, text) - - result = re.sub(r"\\n", "
", result) - - result = recolor('cyan', result) - result = recolor('blue', result) - result = recolor('red', result) - result = recolor('magenta', result) - result = recolor('green', result) - result = bold(result) - result = underline(result) - result = removebells(result) - result = removebackspaces(result) - - return result diff --git a/euscanwww/djeuscan/views.py b/euscanwww/djeuscan/views.py index b1eb056..af7d7be 100644 --- a/euscanwww/djeuscan/views.py +++ b/euscanwww/djeuscan/views.py @@ -1,6 +1,7 @@ """ Views """ import inspect +import json from annoying.decorators import render_to, ajax_request from django.http import Http404 @@ -202,6 +203,13 @@ def package(request, category, package): log = log[0] if log else None vlog = VersionLog.objects.for_package(package, order=True) + result = json.loads(log.result) if log else None + + if result and package.cp() in result: + msg = result[package.cp()]['messages'] + else: + msg = "" + try: last_scan = EuscanResult.objects.for_package(package).latest().datetime except EuscanResult.DoesNotExist: @@ -242,6 +250,7 @@ def package(request, category, package): 'upstream': upstream, 'log': log, 'vlog': vlog, + 'msg' : msg, 'last_scan': last_scan, 'favourited': favourited, 'refreshed': refreshed, diff --git a/euscanwww/euscanwww/settings.py b/euscanwww/euscanwww/settings.py index 2397c10..fc6b668 100644 --- a/euscanwww/euscanwww/settings.py +++ b/euscanwww/euscanwww/settings.py @@ -239,7 +239,6 @@ CELERYD_CONCURRENCY = 4 TASKS_UPSTREAM_GROUPS = 32 CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler" -CELERYBEAT_SCHEDULE = {} # LDAP authentication # TODO: Test data - change me! diff --git a/euscanwww/htdocs/img/refresh-active.png b/euscanwww/htdocs/img/refresh-active.png index c4b88d7..6306868 100644 Binary files a/euscanwww/htdocs/img/refresh-active.png and b/euscanwww/htdocs/img/refresh-active.png differ diff --git a/euscanwww/htdocs/img/refresh-inactive.png b/euscanwww/htdocs/img/refresh-inactive.png index 457c6c9..7e8585f 100644 Binary files a/euscanwww/htdocs/img/refresh-inactive.png and b/euscanwww/htdocs/img/refresh-inactive.png differ diff --git a/euscanwww/htdocs/img/unwatch-icon.png b/euscanwww/htdocs/img/unwatch-icon.png index f6875a6..28ae542 100644 Binary files a/euscanwww/htdocs/img/unwatch-icon.png and b/euscanwww/htdocs/img/unwatch-icon.png differ diff --git a/euscanwww/htdocs/img/watch-icon.png b/euscanwww/htdocs/img/watch-icon.png index c341241..c4f0b59 100644 Binary files a/euscanwww/htdocs/img/watch-icon.png and b/euscanwww/htdocs/img/watch-icon.png differ