Commit b2e34f97 authored by Stefano Rivera's avatar Stefano Rivera

Skip existing sub-projects

parent 63128841
......@@ -27,6 +27,7 @@ import git
import logging
import os
import re
import shutil
import fnmatch
logger = logging.getLogger('weblate')
......@@ -136,10 +137,16 @@ class Command(BaseCommand):
# Create remaining subprojects sharing git repository
for name in names:
slug = name
if SubProject.objects.filter(project=project, name=name,
slug=slug).exists():
logger.warn('Subproject %s already exists, skipping', name)
continue
logger.info('Creating subproject %s', name)
SubProject.objects.create(
name=name,
slug=name,
slug=slug,
project=project,
repo=sharedrepo,
branch=branch,
......@@ -156,6 +163,13 @@ class Command(BaseCommand):
# Create first subproject (this one will get full git repo)
name = names.pop()
if SubProject.objects.filter(project=project, name=name).exists():
logger.warn('Subproject %s already exists, skipping and using it '
'as main subproject', name)
shutil.rmtree(workdir)
return names, 'weblate://%s/%s' % (project.slug, name)
logger.info('Creating subproject %s as main subproject', name)
# Rename gitrepository to new name
......
......@@ -40,6 +40,28 @@ class ImportTest(RepoTestCase):
# We should have loaded two subprojects
self.assertEqual(project.subproject_set.count(), 2)
def test_re_import(self):
project = self.create_project()
call_command(
'import_project',
'test',
self.repo_path,
'master',
'**/*.po',
)
# We should have loaded two subprojects
self.assertEqual(project.subproject_set.count(), 2)
# We should load no more subprojects
call_command(
'import_project',
'test',
self.repo_path,
'master',
'**/*.po',
)
self.assertEqual(project.subproject_set.count(), 2)
def test_import_against_existing(self):
'''
Test importing with a weblate:// URL
......
......@@ -73,6 +73,11 @@ class RepoTestCase(TestCase):
# Create repository copy for the test
shutil.copytree(self.base_repo_path, self.repo_path)
# Remove possibly existing project directory
test_repo_path = os.path.join(settings.GIT_ROOT, 'test')
if os.path.exists(test_repo_path):
shutil.rmtree(test_repo_path)
def create_project(self):
'''
Creates test project.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment