summaryrefslogtreecommitdiff
path: root/packages/utils.py
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2012-08-08 22:07:06 -0500
committerDan McGee <dan@archlinux.org>2012-08-08 22:07:06 -0500
commit241ff8fbd79f9f17cd326a34eb39096851f630ba (patch)
treef95a16608c41545b759dce1d6a4303a48374fdf1 /packages/utils.py
parent411ccfb3c74c521969ca6b68459289134976547d (diff)
Extract parse_version function from reporead logic
Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'packages/utils.py')
-rw-r--r--packages/utils.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/packages/utils.py b/packages/utils.py
index 6d54d71a..d4b4e611 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(