add commit_id to Package

This commit is contained in:
Laura Klünder 2016-09-13 18:22:44 +02:00
parent 30e8204055
commit 8d2e18c890
4 changed files with 33 additions and 1 deletions

View file

@ -16,7 +16,7 @@ class LevelSerializer(serializers.ModelSerializer):
class PackageSerializer(serializers.ModelSerializer):
class Meta:
model = Package
fields = ('name', 'home_repo', 'depends', 'bounds')
fields = ('name', 'home_repo', 'commit_id', 'depends', 'bounds')
def to_representation(self, obj):
result = super().to_representation(obj)

View file

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.1 on 2016-09-13 16:12
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('mapdata', '0002_package_home_repo'),
]
operations = [
migrations.AddField(
model_name='package',
name='commit_id',
field=models.CharField(max_length=40, null=True, verbose_name='current commit id'),
),
]

View file

@ -12,6 +12,7 @@ class Package(models.Model):
help_text=_('e.g. de.c3nav.33c3.base'))
depends = models.ManyToManyField('Package')
home_repo = models.URLField(_('URL to the home git repository'), null=True)
commit_id = models.CharField(_('current commit id'), max_length=40, null=True)
bottom = models.DecimalField(_('bottom coordinate'), null=True, max_digits=6, decimal_places=2)
left = models.DecimalField(_('left coordinate'), null=True, max_digits=6, decimal_places=2)

View file

@ -1,5 +1,6 @@
import json
import os
import subprocess
from django.conf import settings
from django.core.management.base import CommandError
@ -34,6 +35,16 @@ def read_package(directory, objects=None):
raise CommandError('no pkg.json found')
package = Package.fromfile(package, directory)
try:
result = subprocess.Popen(['git', '-C', path, 'rev-parse', '--verify', 'HEAD'], stdout=subprocess.PIPE)
returncode = result.wait()
except:
pass
else:
if returncode == 0:
package['commit_id'] = result.stdout.read().strip()
objects.add_package(package)
objects.add_levels(_read_folder(package['name'], Level, os.path.join(path, 'levels')))
objects.add_sources(_read_folder(package['name'], Source, os.path.join(path, 'sources'), check_sister_file=True))