add commit_id to Package
This commit is contained in:
parent
30e8204055
commit
8d2e18c890
4 changed files with 33 additions and 1 deletions
|
@ -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)
|
||||
|
|
20
src/c3nav/mapdata/migrations/0003_package_commit_id.py
Normal file
20
src/c3nav/mapdata/migrations/0003_package_commit_id.py
Normal 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'),
|
||||
),
|
||||
]
|
|
@ -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)
|
||||
|
|
|
@ -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))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue