diff --git a/MANIFEST.in b/MANIFEST.in index 51d607e..82db4f2 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,3 @@ include README.md -include stacktask/*/templates/* +graft stacktask/api/v*/templates diff --git a/conf/conf.yaml b/conf/conf.yaml index 22ed3a6..23b415b 100644 --- a/conf/conf.yaml +++ b/conf/conf.yaml @@ -2,6 +2,7 @@ SECRET_KEY: '+er!!4olta#17a=n%uotcazg2ncpl==yjog%1*o-(cr%zys-)!' ADDITIONAL_APPS: + - stacktask.api.v1 - stacktask.tenant_setup DATABASES: diff --git a/setup.py b/setup.py index 85c6b62..9a829ea 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ from setuptools import setup, find_packages setup( name='stacktask', - version='0.1.0a4', + version='0.1.0a5', description='A user registration service for openstack.', long_description=( 'A registration service to sit alongside keystone and ' + @@ -23,6 +23,7 @@ setup( keywords='openstack registration keystone users tasks workflow', packages=find_packages(), + package_data={'stacktask': ['api/v*/templates/*.txt']}, install_requires=[ 'Django>=1.7.3', diff --git a/stacktask/api_v1/__init__.py b/stacktask/api/__init__.py similarity index 100% rename from stacktask/api_v1/__init__.py rename to stacktask/api/__init__.py diff --git a/stacktask/api_v1/admin.py b/stacktask/api/admin.py similarity index 92% rename from stacktask/api_v1/admin.py rename to stacktask/api/admin.py index 3e50e64..253a1be 100644 --- a/stacktask/api_v1/admin.py +++ b/stacktask/api/admin.py @@ -13,7 +13,7 @@ # under the License. from django.contrib import admin -from stacktask.api_v1.models import Token, Registration +from stacktask.api.models import Token, Registration admin.site.register(Token) admin.site.register(Registration) diff --git a/stacktask/api_v1/migrations/0001_initial.py b/stacktask/api/migrations/0001_initial.py similarity index 85% rename from stacktask/api_v1/migrations/0001_initial.py rename to stacktask/api/migrations/0001_initial.py index 35658a0..be4b3f0 100644 --- a/stacktask/api_v1/migrations/0001_initial.py +++ b/stacktask/api/migrations/0001_initial.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals from django.db import models, migrations import jsonfield.fields import django.utils.timezone -import stacktask.api_v1.models +import stacktask.api.models class Migration(migrations.Migration): @@ -25,7 +25,7 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Registration', fields=[ - ('uuid', models.CharField(default=stacktask.api_v1.models.hex_uuid, max_length=200, serialize=False, primary_key=True)), + ('uuid', models.CharField(default=stacktask.api.models.hex_uuid, max_length=200, serialize=False, primary_key=True)), ('reg_ip', models.GenericIPAddressField()), ('keystone_user', jsonfield.fields.JSONField(default={})), ('action_view', models.CharField(max_length=200)), @@ -43,12 +43,12 @@ class Migration(migrations.Migration): ('token', models.CharField(max_length=200, serialize=False, primary_key=True)), ('created', models.DateTimeField(default=django.utils.timezone.now)), ('expires', models.DateTimeField()), - ('registration', models.ForeignKey(to='api_v1.Registration')), + ('registration', models.ForeignKey(to='api.Registration')), ], ), migrations.AddField( model_name='notification', name='registration', - field=models.ForeignKey(to='api_v1.Registration'), + field=models.ForeignKey(to='api.Registration'), ), ] diff --git a/stacktask/api_v1/migrations/__init__.py b/stacktask/api/migrations/__init__.py similarity index 100% rename from stacktask/api_v1/migrations/__init__.py rename to stacktask/api/migrations/__init__.py diff --git a/stacktask/api_v1/models.py b/stacktask/api/models.py similarity index 100% rename from stacktask/api_v1/models.py rename to stacktask/api/models.py diff --git a/stacktask/api/tests.py b/stacktask/api/tests.py new file mode 100644 index 0000000..5c954a0 --- /dev/null +++ b/stacktask/api/tests.py @@ -0,0 +1,15 @@ +# Copyright (C) 2015 Catalyst IT Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from stacktask.api.v1 import tests diff --git a/stacktask/api/urls.py b/stacktask/api/urls.py new file mode 100644 index 0000000..6d5ea2b --- /dev/null +++ b/stacktask/api/urls.py @@ -0,0 +1,20 @@ +# Copyright (C) 2015 Catalyst IT Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from django.conf.urls import patterns, url, include + +urlpatterns = patterns( + '', + url(r'^v1/', include('stacktask.api.v1.urls')), +) diff --git a/stacktask/api/v1/__init__.py b/stacktask/api/v1/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/stacktask/api/v1/models.py b/stacktask/api/v1/models.py new file mode 100644 index 0000000..aa1603c --- /dev/null +++ b/stacktask/api/v1/models.py @@ -0,0 +1,15 @@ +# Copyright (C) 2015 Catalyst IT Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from django.db import models diff --git a/stacktask/api_v1/templates/completed.txt b/stacktask/api/v1/templates/completed.txt similarity index 100% rename from stacktask/api_v1/templates/completed.txt rename to stacktask/api/v1/templates/completed.txt diff --git a/stacktask/api_v1/templates/initial.txt b/stacktask/api/v1/templates/initial.txt similarity index 100% rename from stacktask/api_v1/templates/initial.txt rename to stacktask/api/v1/templates/initial.txt diff --git a/stacktask/api_v1/templates/token.txt b/stacktask/api/v1/templates/token.txt similarity index 100% rename from stacktask/api_v1/templates/token.txt rename to stacktask/api/v1/templates/token.txt diff --git a/stacktask/api_v1/tests.py b/stacktask/api/v1/tests.py similarity index 99% rename from stacktask/api_v1/tests.py rename to stacktask/api/v1/tests.py index 449eb19..3040c27 100644 --- a/stacktask/api_v1/tests.py +++ b/stacktask/api/v1/tests.py @@ -14,7 +14,7 @@ from rest_framework import status from rest_framework.test import APITestCase -from stacktask.api_v1.models import Registration, Token +from stacktask.api.models import Registration, Token import mock from django.utils import timezone from datetime import timedelta diff --git a/stacktask/api_v1/urls.py b/stacktask/api/v1/urls.py similarity index 97% rename from stacktask/api_v1/urls.py rename to stacktask/api/v1/urls.py index 8d48f48..0189a8b 100644 --- a/stacktask/api_v1/urls.py +++ b/stacktask/api/v1/urls.py @@ -13,7 +13,7 @@ # under the License. from django.conf.urls import patterns, url -from stacktask.api_v1 import views +from stacktask.api.v1 import views urlpatterns = patterns( '', diff --git a/stacktask/api_v1/views.py b/stacktask/api/v1/views.py similarity index 99% rename from stacktask/api_v1/views.py rename to stacktask/api/v1/views.py index bf63097..ed1bb64 100644 --- a/stacktask/api_v1/views.py +++ b/stacktask/api/v1/views.py @@ -15,7 +15,7 @@ from decorator import decorator from rest_framework.views import APIView from rest_framework.response import Response -from .models import Registration, Token, Notification +from stacktask.api.models import Registration, Token, Notification from django.utils import timezone from datetime import timedelta from uuid import uuid4 diff --git a/stacktask/base/migrations/0001_initial.py b/stacktask/base/migrations/0001_initial.py index 0b9715e..399161e 100644 --- a/stacktask/base/migrations/0001_initial.py +++ b/stacktask/base/migrations/0001_initial.py @@ -9,7 +9,7 @@ import jsonfield.fields class Migration(migrations.Migration): dependencies = [ - ('api_v1', '0001_initial'), + ('api', '0001_initial'), ] operations = [ @@ -25,7 +25,7 @@ class Migration(migrations.Migration): ('need_token', models.BooleanField()), ('order', models.IntegerField()), ('created', models.DateTimeField(default=django.utils.timezone.now)), - ('registration', models.ForeignKey(to='api_v1.Registration')), + ('registration', models.ForeignKey(to='api.Registration')), ], ), ] diff --git a/stacktask/base/models.py b/stacktask/base/models.py index ab99afe..2de0672 100644 --- a/stacktask/base/models.py +++ b/stacktask/base/models.py @@ -33,7 +33,7 @@ class Action(models.Model): state = models.CharField(max_length=200, default="default") valid = models.BooleanField(default=False) need_token = models.BooleanField() - registration = models.ForeignKey('api_v1.Registration') + registration = models.ForeignKey('api.Registration') order = models.IntegerField() diff --git a/stacktask/base/tests.py b/stacktask/base/tests.py index 11e9775..8ff13ae 100644 --- a/stacktask/base/tests.py +++ b/stacktask/base/tests.py @@ -13,9 +13,9 @@ # under the License. from django.test import TestCase -from stacktask.api_v1.models import Registration -from stacktask.api_v1.tests import FakeManager, setup_temp_cache -from stacktask.api_v1 import tests +from stacktask.api.models import Registration +from stacktask.api.v1.tests import FakeManager, setup_temp_cache +from stacktask.api.v1 import tests from stacktask.base.models import NewUser, NewProject, ResetUser import mock diff --git a/stacktask/settings.py b/stacktask/settings.py index 31a5d9b..7dcd839 100644 --- a/stacktask/settings.py +++ b/stacktask/settings.py @@ -51,7 +51,7 @@ INSTALLED_APPS = ( 'django.contrib.staticfiles', 'rest_framework', 'stacktask.base', - 'stacktask.api_v1', + 'stacktask.api', ) MIDDLEWARE_CLASSES = ( diff --git a/stacktask/tenant_setup/tests.py b/stacktask/tenant_setup/tests.py index 83f477a..8490da3 100644 --- a/stacktask/tenant_setup/tests.py +++ b/stacktask/tenant_setup/tests.py @@ -13,9 +13,9 @@ # under the License. from django.test import TestCase -from stacktask.api_v1.models import Registration -from stacktask.api_v1.tests import FakeManager, setup_temp_cache -from stacktask.api_v1 import tests +from stacktask.api.models import Registration +from stacktask.api.v1.tests import FakeManager, setup_temp_cache +from stacktask.api.v1 import tests from stacktask.tenant_setup.models import DefaultProjectResources, AddAdminToProject import mock diff --git a/stacktask/urls.py b/stacktask/urls.py index 64f2661..edee564 100644 --- a/stacktask/urls.py +++ b/stacktask/urls.py @@ -18,5 +18,5 @@ from django.contrib import admin urlpatterns = patterns( '', url(r'^admin/', include(admin.site.urls)), - url(r'^v1/', include('stacktask.api_v1.urls')), + url(r'^', include('stacktask.api.urls')), )