diff options
author | Dan McGee <dan@archlinux.org> | 2012-08-09 05:07:06 +0200 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2012-08-09 05:07:06 +0200 |
commit | 241ff8fbd79f9f17cd326a34eb39096851f630ba (patch) | |
tree | f95a16608c41545b759dce1d6a4303a48374fdf1 /packages | |
parent | 411ccfb3c74c521969ca6b68459289134976547d (diff) | |
download | archweb-241ff8fbd79f9f17cd326a34eb39096851f630ba.tar.gz archweb-241ff8fbd79f9f17cd326a34eb39096851f630ba.tar.xz |
Extract parse_version function from reporead logic
Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'packages')
-rw-r--r-- | packages/utils.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/packages/utils.py b/packages/utils.py index 6d54d71..d4b4e61 100644 --- a/packages/utils.py +++ b/packages/utils.py @@ -1,6 +1,7 @@ from collections import defaultdict from itertools import chain from operator import itemgetter +import re from django.core.serializers.json import DjangoJSONEncoder from django.db import connection @@ -14,6 +15,23 @@ from .models import (PackageGroup, PackageRelation, License, Depend, Conflict, Provision, Replacement, SignoffSpecification, Signoff, DEFAULT_SIGNOFF_SPEC) + +VERSION_RE = re.compile(r'^((\d+):)?(.+)-([^-]+)$') + + +def parse_version(version): + match = VERSION_RE.match(version) + if not match: + return None, None, 0 + ver = match.group(3) + rel = match.group(4) + if match.group(2): + epoch = int(match.group(2)) + else: + epoch = 0 + return ver, rel, epoch + + @cache_function(127) def get_group_info(include_arches=None): raw_groups = PackageGroup.objects.values_list( |