Refactoring sites.
parent
31f0480791
commit
bebd6808ba
|
@ -9,8 +9,8 @@ from rest_framework.permissions import AllowAny
|
||||||
from rest_framework import status, viewsets
|
from rest_framework import status, viewsets
|
||||||
from rest_framework.decorators import list_route
|
from rest_framework.decorators import list_route
|
||||||
|
|
||||||
from greenmine.base.models import SiteMember
|
from greenmine.base.domains.models import DomainMember
|
||||||
from greenmine.base.sites import get_active_site
|
from greenmine.base.domains import get_active_domain
|
||||||
from greenmine.base.users.models import User, Role
|
from greenmine.base.users.models import User, Role
|
||||||
from greenmine.base.users.serializers import UserSerializer
|
from greenmine.base.users.serializers import UserSerializer
|
||||||
from greenmine.base import exceptions as exc
|
from greenmine.base import exceptions as exc
|
||||||
|
@ -31,13 +31,13 @@ class AuthViewSet(viewsets.ViewSet):
|
||||||
response_data["auth_token"] = auth.get_token_for_user(user)
|
response_data["auth_token"] = auth.get_token_for_user(user)
|
||||||
return response_data
|
return response_data
|
||||||
|
|
||||||
def _create_site_member(self, user):
|
def _create_domain_member(self, user):
|
||||||
site = get_active_site()
|
domain = get_active_domain()
|
||||||
|
|
||||||
if SiteMember.objects.filter(site=site, user=user).count() == 0:
|
if DomainMember.objects.filter(site=domain, user=user).count() == 0:
|
||||||
site_member = SiteMember(site=site, user=user, email=user.email,
|
domain_member = DomainMember(site=domain, user=user, email=user.email,
|
||||||
is_owner=False, is_staff=False)
|
is_owner=False, is_staff=False)
|
||||||
site_member.save()
|
domain_member.save()
|
||||||
|
|
||||||
def _send_public_register_email(self, user):
|
def _send_public_register_email(self, user):
|
||||||
context = {"user": user}
|
context = {"user": user}
|
||||||
|
@ -47,8 +47,8 @@ class AuthViewSet(viewsets.ViewSet):
|
||||||
email.send()
|
email.send()
|
||||||
|
|
||||||
def _public_register(self, request):
|
def _public_register(self, request):
|
||||||
if not request.site.public_register:
|
if not request.domain.public_register:
|
||||||
raise exc.BadRequest("Public register is disabled for this site.")
|
raise exc.BadRequest("Public register is disabled for this domain.")
|
||||||
|
|
||||||
serializer = PublicRegisterSerializer(data=request.DATA)
|
serializer = PublicRegisterSerializer(data=request.DATA)
|
||||||
if not serializer.is_valid():
|
if not serializer.is_valid():
|
||||||
|
@ -63,7 +63,7 @@ class AuthViewSet(viewsets.ViewSet):
|
||||||
user.set_password(data["password"])
|
user.set_password(data["password"])
|
||||||
user.save()
|
user.save()
|
||||||
|
|
||||||
self._create_site_member(user)
|
self._create_domain_member(user)
|
||||||
|
|
||||||
#self._send_public_register_email(user)
|
#self._send_public_register_email(user)
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ class AuthViewSet(viewsets.ViewSet):
|
||||||
user.set_password(data["password"])
|
user.set_password(data["password"])
|
||||||
user.save()
|
user.save()
|
||||||
|
|
||||||
self._create_site_member(user)
|
self._create_domain_member(user)
|
||||||
|
|
||||||
membership.user = user
|
membership.user = user
|
||||||
membership.save()
|
membership.save()
|
||||||
|
|
|
@ -15,10 +15,10 @@ from rest_framework.response import Response
|
||||||
|
|
||||||
from greenmine import urls
|
from greenmine import urls
|
||||||
from greenmine.base import auth
|
from greenmine.base import auth
|
||||||
from greenmine.base.users.tests import create_user, create_site
|
from greenmine.base.users.tests import create_user, create_domain
|
||||||
from greenmine.projects.tests import create_project
|
from greenmine.projects.tests import create_project
|
||||||
|
|
||||||
from greenmine.base.models import Site, SiteMember
|
from greenmine.base.domains.models import Domain, DomainMember
|
||||||
from greenmine.projects.models import Membership
|
from greenmine.projects.models import Membership
|
||||||
|
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ urls.urlpatterns += patterns("",
|
||||||
|
|
||||||
|
|
||||||
class TokenAuthTests(test.TestCase):
|
class TokenAuthTests(test.TestCase):
|
||||||
fixtures = ["initial_site.json"]
|
fixtures = ["initial_domains.json",]
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.user1 = create_user(1)
|
self.user1 = create_user(1)
|
||||||
|
|
||||||
|
@ -53,10 +53,12 @@ class TokenAuthTests(test.TestCase):
|
||||||
|
|
||||||
|
|
||||||
class RegisterTests(test.TestCase):
|
class RegisterTests(test.TestCase):
|
||||||
|
fixtures = ["initial_domains.json",]
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.user1 = create_user(1)
|
self.user1 = create_user(1)
|
||||||
self.site1 = create_site("localhost1", True)
|
self.site1 = create_domain("localhost1", True)
|
||||||
self.site2 = create_site("localhost2", False)
|
self.site2 = create_domain("localhost2", False)
|
||||||
self.role = self._create_role()
|
self.role = self._create_role()
|
||||||
self.project = create_project(1, self.user1)
|
self.project = create_project(1, self.user1)
|
||||||
|
|
||||||
|
@ -74,7 +76,7 @@ class RegisterTests(test.TestCase):
|
||||||
response = self.client.post(url, data, HTTP_X_HOST=self.site1.name)
|
response = self.client.post(url, data, HTTP_X_HOST=self.site1.name)
|
||||||
self.assertEqual(response.status_code, 201)
|
self.assertEqual(response.status_code, 201)
|
||||||
|
|
||||||
self.assertEqual(SiteMember.objects.filter(site=self.site1).count(), 1)
|
self.assertEqual(DomainMember.objects.filter(site=self.site1).count(), 1)
|
||||||
self.assertEqual(self.project.memberships.count(), 0)
|
self.assertEqual(self.project.memberships.count(), 0)
|
||||||
|
|
||||||
|
|
||||||
|
@ -130,8 +132,8 @@ class RegisterTests(test.TestCase):
|
||||||
self.assertEqual(response.status_code, 201)
|
self.assertEqual(response.status_code, 201)
|
||||||
self.assertEqual(self.project.memberships.exclude(user__isnull=True).count(), 1)
|
self.assertEqual(self.project.memberships.exclude(user__isnull=True).count(), 1)
|
||||||
self.assertEqual(self.project.memberships.get().role, self.role)
|
self.assertEqual(self.project.memberships.get().role, self.role)
|
||||||
self.assertEqual(SiteMember.objects.filter(site=self.site1).count(), 0)
|
self.assertEqual(DomainMember.objects.filter(site=self.site1).count(), 0)
|
||||||
self.assertEqual(SiteMember.objects.filter(site=self.site2).count(), 1)
|
self.assertEqual(DomainMember.objects.filter(site=self.site2).count(), 1)
|
||||||
|
|
||||||
def test_private_register_03(self):
|
def test_private_register_03(self):
|
||||||
membership = self._create_invitation("pepe@pepe.com")
|
membership = self._create_invitation("pepe@pepe.com")
|
||||||
|
@ -154,8 +156,8 @@ class RegisterTests(test.TestCase):
|
||||||
self.assertEqual(response.status_code, 201)
|
self.assertEqual(response.status_code, 201)
|
||||||
self.assertEqual(self.project.memberships.exclude(user__isnull=True).count(), 1)
|
self.assertEqual(self.project.memberships.exclude(user__isnull=True).count(), 1)
|
||||||
self.assertEqual(self.project.memberships.get().role, self.role)
|
self.assertEqual(self.project.memberships.get().role, self.role)
|
||||||
self.assertEqual(SiteMember.objects.filter(site=self.site1).count(), 0)
|
self.assertEqual(DomainMember.objects.filter(site=self.site1).count(), 0)
|
||||||
self.assertEqual(SiteMember.objects.filter(site=self.site2).count(), 1)
|
self.assertEqual(DomainMember.objects.filter(site=self.site2).count(), 1)
|
||||||
|
|
||||||
|
|
||||||
def _create_invitation(self, email):
|
def _create_invitation(self, email):
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import logging
|
||||||
|
from threading import local
|
||||||
|
|
||||||
|
from django.db.models import get_model
|
||||||
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
|
|
||||||
|
from .. import exceptions as exc
|
||||||
|
|
||||||
|
|
||||||
|
_local = local()
|
||||||
|
log = logging.getLogger("greenmine.domains")
|
||||||
|
|
||||||
|
|
||||||
|
class DomainNotFound(exc.BaseException):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def get_default_domain():
|
||||||
|
from django.conf import settings
|
||||||
|
try:
|
||||||
|
sid = settings.SITE_ID
|
||||||
|
except AttributeError:
|
||||||
|
raise ImproperlyConfigured("You're using the \"domains framework\" without having "
|
||||||
|
"set the DOMAIN_ID setting. Create a domain in your database "
|
||||||
|
"and set the DOMAIN_ID setting to fix this error.")
|
||||||
|
|
||||||
|
model_cls = get_model("domains", "Domain")
|
||||||
|
cached = getattr(_local, "default_domain", None)
|
||||||
|
if cached is None:
|
||||||
|
try:
|
||||||
|
cached = _local.default_domain = model_cls.objects.get(pk=sid)
|
||||||
|
except model_cls.DoesNotExist:
|
||||||
|
raise ImproperlyConfigured("default domain not found on database.")
|
||||||
|
|
||||||
|
return cached
|
||||||
|
|
||||||
|
|
||||||
|
def get_domain_for_domain_name(domain):
|
||||||
|
log.debug("Trying activate domain for domain name: {}".format(domain))
|
||||||
|
cache = getattr(_local, "cache", {})
|
||||||
|
|
||||||
|
if domain in cache:
|
||||||
|
return cache[domain]
|
||||||
|
|
||||||
|
model_cls = get_model("domains", "Domain")
|
||||||
|
|
||||||
|
try:
|
||||||
|
domain = model_cls.objects.get(domain=domain)
|
||||||
|
except model_cls.DoesNotExist:
|
||||||
|
log.warning("Domain does not exist for domain: {}".format(domain))
|
||||||
|
raise DomainNotFound("domain not found")
|
||||||
|
else:
|
||||||
|
cache[domain] = domain
|
||||||
|
|
||||||
|
return domain
|
||||||
|
|
||||||
|
|
||||||
|
def activate(domain):
|
||||||
|
log.debug("Activating domain: {}".format(domain))
|
||||||
|
_local.active_domain = domain
|
||||||
|
|
||||||
|
|
||||||
|
def deactivate():
|
||||||
|
if hasattr(_local, "active_domain"):
|
||||||
|
log.debug("Deactivating domain: {}".format(_local.active_domain))
|
||||||
|
del _local.active_domain
|
||||||
|
|
||||||
|
|
||||||
|
def get_active_domain():
|
||||||
|
active_domain = getattr(_local, "active_domain", None)
|
||||||
|
if active_domain is None:
|
||||||
|
return get_default_domain()
|
||||||
|
return active_domain
|
||||||
|
|
||||||
|
def clear_domain_cache(**kwargs):
|
||||||
|
if hasattr(_local, "default_domain"):
|
||||||
|
del _local.default_domain
|
||||||
|
|
||||||
|
if hasattr(_local, "cache"):
|
||||||
|
del _local.cache
|
|
@ -1,9 +1,10 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from .models import Site
|
|
||||||
|
from .models import Domain
|
||||||
|
|
||||||
|
|
||||||
class SiteAdmin(admin.ModelAdmin):
|
class DomainAdmin(admin.ModelAdmin):
|
||||||
list_display = ('domain', 'name')
|
list_display = ('domain', 'name')
|
||||||
search_fields = ('domain', 'name')
|
search_fields = ('domain', 'name')
|
||||||
|
|
||||||
admin.site.register(Site, SiteAdmin)
|
admin.site.register(Domain, DomainAdmin)
|
|
@ -4,9 +4,9 @@ from rest_framework import viewsets
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
|
||||||
|
|
||||||
class SiteViewSet(viewsets.ViewSet):
|
class DomainViewSet(viewsets.ViewSet):
|
||||||
def status(self, request, **kwargs):
|
def status(self, request, **kwargs):
|
||||||
return Response({})
|
return Response({})
|
||||||
|
|
||||||
|
|
||||||
sitestatus = SiteViewSet.as_view({"head": "status", "get": "status"})
|
domainstatus = DomainViewSet.as_view({"head": "status", "get": "status"})
|
|
@ -1,8 +1,10 @@
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model": "base.site",
|
"model": "domains.domain",
|
||||||
"fields": {
|
"fields": {
|
||||||
|
"public_register": false,
|
||||||
"domain": "localhost",
|
"domain": "localhost",
|
||||||
|
"scheme": null,
|
||||||
"name": "localhost"
|
"name": "localhost"
|
||||||
},
|
},
|
||||||
"pk": 1
|
"pk": 1
|
|
@ -0,0 +1,33 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import json
|
||||||
|
|
||||||
|
from django import http
|
||||||
|
|
||||||
|
from greenmine.base import domains
|
||||||
|
from greenmine.base.exceptions import format_exception
|
||||||
|
|
||||||
|
|
||||||
|
class DomainsMiddleware(object):
|
||||||
|
def process_request(self, request):
|
||||||
|
domain = request.META.get("HTTP_X_HOST", None)
|
||||||
|
if domain is not None:
|
||||||
|
try:
|
||||||
|
domain = domains.get_domain_for_domain_name(domain)
|
||||||
|
except domains.DomainNotFound as e:
|
||||||
|
detail = format_exception(e)
|
||||||
|
return http.HttpResponseBadRequest(json.dumps(detail))
|
||||||
|
else:
|
||||||
|
domain = domains.get_default_domain()
|
||||||
|
|
||||||
|
request.domain = domain
|
||||||
|
domains.activate(domain)
|
||||||
|
|
||||||
|
def process_response(self, request, response):
|
||||||
|
domains.deactivate()
|
||||||
|
|
||||||
|
if hasattr(request, "domain"):
|
||||||
|
response["X-Site-Host"] = request.domain.domain
|
||||||
|
response["X-Site-Register"] = "on" if request.domain.public_register else "off"
|
||||||
|
|
||||||
|
return response
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import datetime
|
from south.utils import datetime_utils as datetime
|
||||||
from south.db import db
|
from south.db import db
|
||||||
from south.v2 import SchemaMigration
|
from south.v2 import SchemaMigration
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
@ -8,104 +8,105 @@ from django.db import models
|
||||||
class Migration(SchemaMigration):
|
class Migration(SchemaMigration):
|
||||||
|
|
||||||
def forwards(self, orm):
|
def forwards(self, orm):
|
||||||
# Adding model 'Site'
|
# Adding model 'Domain'
|
||||||
db.create_table('base_site', (
|
db.create_table('domains_domain', (
|
||||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
('domain', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255)),
|
('domain', self.gf('django.db.models.fields.CharField')(max_length=255, unique=True)),
|
||||||
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||||
('scheme', self.gf('django.db.models.fields.CharField')(max_length=60, default=None, null=True)),
|
('scheme', self.gf('django.db.models.fields.CharField')(max_length=60, null=True, default=None)),
|
||||||
('public_register', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
('public_register', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||||
))
|
))
|
||||||
db.send_create_signal('base', ['Site'])
|
db.send_create_signal('domains', ['Domain'])
|
||||||
|
|
||||||
# Adding model 'SiteMember'
|
# Adding model 'DomainMember'
|
||||||
db.create_table('base_sitemember', (
|
db.create_table('domains_domainmember', (
|
||||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
('site', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', to=orm['base.Site'])),
|
('site', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', to=orm['domains.Domain'])),
|
||||||
('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['users.User'])),
|
('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['users.User'])),
|
||||||
('email', self.gf('django.db.models.fields.EmailField')(max_length=255)),
|
('email', self.gf('django.db.models.fields.EmailField')(max_length=255)),
|
||||||
('is_owner', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
('is_owner', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||||
('is_staff', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
('is_staff', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||||
))
|
))
|
||||||
db.send_create_signal('base', ['SiteMember'])
|
db.send_create_signal('domains', ['DomainMember'])
|
||||||
|
|
||||||
|
# Adding unique constraint on 'DomainMember', fields ['site', 'user']
|
||||||
|
db.create_unique('domains_domainmember', ['site_id', 'user_id'])
|
||||||
|
|
||||||
# Adding unique constraint on 'SiteMember', fields ['site', 'user']
|
|
||||||
db.create_unique('base_sitemember', ['site_id', 'user_id'])
|
|
||||||
|
|
||||||
def backwards(self, orm):
|
def backwards(self, orm):
|
||||||
# Removing unique constraint on 'SiteMember', fields ['site', 'user']
|
# Removing unique constraint on 'DomainMember', fields ['site', 'user']
|
||||||
db.delete_unique('base_sitemember', ['site_id', 'user_id'])
|
db.delete_unique('domains_domainmember', ['site_id', 'user_id'])
|
||||||
|
|
||||||
# Deleting model 'Site'
|
# Deleting model 'Domain'
|
||||||
db.delete_table('base_site')
|
db.delete_table('domains_domain')
|
||||||
|
|
||||||
# Deleting model 'SiteMember'
|
# Deleting model 'DomainMember'
|
||||||
db.delete_table('base_sitemember')
|
db.delete_table('domains_domainmember')
|
||||||
|
|
||||||
|
|
||||||
models = {
|
models = {
|
||||||
'auth.group': {
|
'auth.group': {
|
||||||
'Meta': {'object_name': 'Group'},
|
'Meta': {'object_name': 'Group'},
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'unique': 'True'}),
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'to': "orm['auth.Permission']", 'symmetrical': 'False'})
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'blank': 'True', 'symmetrical': 'False'})
|
||||||
},
|
},
|
||||||
'auth.permission': {
|
'auth.permission': {
|
||||||
'Meta': {'object_name': 'Permission', 'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)"},
|
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'object_name': 'Permission', 'unique_together': "(('content_type', 'codename'),)"},
|
||||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
},
|
},
|
||||||
'base.site': {
|
|
||||||
'Meta': {'object_name': 'Site', 'ordering': "('domain',)"},
|
|
||||||
'domain': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'public_register': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'scheme': ('django.db.models.fields.CharField', [], {'max_length': '60', 'default': 'None', 'null': 'True'})
|
|
||||||
},
|
|
||||||
'base.sitemember': {
|
|
||||||
'Meta': {'object_name': 'SiteMember', 'ordering': "['email']", 'unique_together': "(('site', 'user'),)"},
|
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '255'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_owner': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'site': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['base.Site']"}),
|
|
||||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'to': "orm['users.User']"})
|
|
||||||
},
|
|
||||||
'contenttypes.contenttype': {
|
'contenttypes.contenttype': {
|
||||||
'Meta': {'object_name': 'ContentType', 'db_table': "'django_content_type'", 'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)"},
|
'Meta': {'ordering': "('name',)", 'db_table': "'django_content_type'", 'object_name': 'ContentType', 'unique_together': "(('app_label', 'model'),)"},
|
||||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||||
},
|
},
|
||||||
|
'domains.domain': {
|
||||||
|
'Meta': {'ordering': "('domain',)", 'object_name': 'Domain'},
|
||||||
|
'domain': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'public_register': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'scheme': ('django.db.models.fields.CharField', [], {'max_length': '60', 'null': 'True', 'default': 'None'})
|
||||||
|
},
|
||||||
|
'domains.domainmember': {
|
||||||
|
'Meta': {'ordering': "['email']", 'object_name': 'DomainMember', 'unique_together': "(('site', 'user'),)"},
|
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '255'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_owner': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'site': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['domains.Domain']"}),
|
||||||
|
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'to': "orm['users.User']"})
|
||||||
|
},
|
||||||
'users.user': {
|
'users.user': {
|
||||||
'Meta': {'object_name': 'User', 'ordering': "['username']"},
|
'Meta': {'ordering': "['username']", 'object_name': 'User'},
|
||||||
'color': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '9', 'default': "'#669933'"}),
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '9', 'blank': 'True', 'default': "'#669933'"}),
|
||||||
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
'default_language': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '20', 'default': "''"}),
|
'default_language': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True', 'default': "''"}),
|
||||||
'default_timezone': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '20', 'default': "''"}),
|
'default_timezone': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True', 'default': "''"}),
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'blank': 'True', 'max_length': '75'}),
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||||
'first_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'to': "orm['auth.Group']", 'related_name': "'user_set'", 'symmetrical': 'False'}),
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'related_name': "'user_set'", 'blank': 'True', 'symmetrical': 'False'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
'last_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'notify_level': ('django.db.models.fields.CharField', [], {'max_length': '32', 'default': "'all_owned_projects'"}),
|
'notify_level': ('django.db.models.fields.CharField', [], {'max_length': '32', 'default': "'all_owned_projects'"}),
|
||||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
'photo': ('django.db.models.fields.files.FileField', [], {'blank': 'True', 'max_length': '500', 'null': 'True'}),
|
'photo': ('django.db.models.fields.files.FileField', [], {'max_length': '500', 'blank': 'True', 'null': 'True'}),
|
||||||
'token': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '200', 'default': 'None', 'null': 'True'}),
|
'token': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True', 'null': 'True', 'default': 'None'}),
|
||||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'to': "orm['auth.Permission']", 'related_name': "'user_set'", 'symmetrical': 'False'}),
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'related_name': "'user_set'", 'blank': 'True', 'symmetrical': 'False'}),
|
||||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
'username': ('django.db.models.fields.CharField', [], {'max_length': '30', 'unique': 'True'})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
complete_apps = ['base']
|
complete_apps = ['domains']
|
|
@ -0,0 +1,66 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import string
|
||||||
|
|
||||||
|
from django.db import models
|
||||||
|
from django.db.models.signals import pre_save, pre_delete
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
from django.core.exceptions import ValidationError
|
||||||
|
|
||||||
|
from . import clear_domain_cache
|
||||||
|
|
||||||
|
|
||||||
|
def _simple_domain_name_validator(value):
|
||||||
|
"""
|
||||||
|
Validates that the given value contains no whitespaces to prevent common
|
||||||
|
typos.
|
||||||
|
"""
|
||||||
|
if not value:
|
||||||
|
return
|
||||||
|
|
||||||
|
checks = ((s in value) for s in string.whitespace)
|
||||||
|
if any(checks):
|
||||||
|
raise ValidationError(
|
||||||
|
_("The domain name cannot contain any spaces or tabs."),
|
||||||
|
code='invalid',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class Domain(models.Model):
|
||||||
|
domain = models.CharField(_('domain name'), max_length=255, unique=True,
|
||||||
|
validators=[_simple_domain_name_validator])
|
||||||
|
name = models.CharField(_('display name'), max_length=255)
|
||||||
|
scheme = models.CharField(_('scheme'), max_length=60, null=True, default=None)
|
||||||
|
|
||||||
|
# Site Metadata
|
||||||
|
public_register = models.BooleanField(default=False)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = _('domain')
|
||||||
|
verbose_name_plural = _('domain')
|
||||||
|
ordering = ('domain',)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.domain
|
||||||
|
|
||||||
|
|
||||||
|
class DomainMember(models.Model):
|
||||||
|
site = models.ForeignKey("Domain", related_name="+")
|
||||||
|
user = models.ForeignKey("users.User", related_name="+", null=True)
|
||||||
|
|
||||||
|
email = models.EmailField(max_length=255)
|
||||||
|
is_owner = models.BooleanField(default=False)
|
||||||
|
is_staff = models.BooleanField(default=False)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
ordering = ["email"]
|
||||||
|
verbose_name = "Domain Member"
|
||||||
|
verbose_name_plural = "Domain Members"
|
||||||
|
unique_together = ("site", "user")
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return "DomainMember: {0}:{1}".format(self.site, self.user)
|
||||||
|
|
||||||
|
|
||||||
|
pre_save.connect(clear_domain_cache, sender=Domain)
|
||||||
|
pre_delete.connect(clear_domain_cache, sender=Domain)
|
|
@ -3,7 +3,6 @@
|
||||||
import json
|
import json
|
||||||
|
|
||||||
from django import http
|
from django import http
|
||||||
from greenmine.base import sites
|
|
||||||
|
|
||||||
|
|
||||||
COORS_ALLOWED_ORIGINS = '*'
|
COORS_ALLOWED_ORIGINS = '*'
|
||||||
|
@ -16,8 +15,6 @@ COORS_EXPOSE_HEADERS = ["x-pagination-count", "x-paginated", "x-paginated-by",
|
||||||
"x-paginated-by", "x-pagination-current", "x-site-host",
|
"x-paginated-by", "x-pagination-current", "x-site-host",
|
||||||
"x-site-register"]
|
"x-site-register"]
|
||||||
|
|
||||||
from .exceptions import format_exception
|
|
||||||
|
|
||||||
|
|
||||||
class CoorsMiddleware(object):
|
class CoorsMiddleware(object):
|
||||||
def _populate_response(self, response):
|
def _populate_response(self, response):
|
||||||
|
@ -39,28 +36,3 @@ class CoorsMiddleware(object):
|
||||||
def process_response(self, request, response):
|
def process_response(self, request, response):
|
||||||
self._populate_response(response)
|
self._populate_response(response)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
class SitesMiddleware(object):
|
|
||||||
def process_request(self, request):
|
|
||||||
domain = request.META.get("HTTP_X_HOST", None)
|
|
||||||
if domain is not None:
|
|
||||||
try:
|
|
||||||
site = sites.get_site_for_domain(domain)
|
|
||||||
except sites.SiteNotFound as e:
|
|
||||||
detail = format_exception(e)
|
|
||||||
return http.HttpResponseBadRequest(json.dumps(detail))
|
|
||||||
else:
|
|
||||||
site = sites.get_default_site()
|
|
||||||
|
|
||||||
request.site = site
|
|
||||||
sites.activate(site)
|
|
||||||
|
|
||||||
def process_response(self, request, response):
|
|
||||||
sites.deactivate()
|
|
||||||
|
|
||||||
if hasattr(request, "site"):
|
|
||||||
response["X-Site-Host"] = request.site.domain
|
|
||||||
response["X-Site-Register"] = "on" if request.site.public_register else "off"
|
|
||||||
|
|
||||||
return response
|
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import datetime
|
|
||||||
from south.db import db
|
|
||||||
from south.v2 import SchemaMigration
|
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(SchemaMigration):
|
|
||||||
|
|
||||||
def forwards(self, orm):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def backwards(self, orm):
|
|
||||||
pass
|
|
||||||
|
|
||||||
models = {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
complete_apps = ['base']
|
|
|
@ -1,95 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import datetime
|
|
||||||
from south.db import db
|
|
||||||
from south.v2 import DataMigration
|
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
class Migration(DataMigration):
|
|
||||||
|
|
||||||
def forwards(self, orm):
|
|
||||||
"Write your forwards methods here."
|
|
||||||
# Note: Don't use "from appname.models import ModelName".
|
|
||||||
# Use orm.ModelName to refer to models in this application,
|
|
||||||
# and orm['appname.ModelName'] for models in other applications.
|
|
||||||
|
|
||||||
from django.core.management import call_command
|
|
||||||
call_command("loaddata", "initial_site.json")
|
|
||||||
|
|
||||||
site = orm["base.Site"].objects.get(pk=1)
|
|
||||||
|
|
||||||
for user in orm["users.User"].objects.all():
|
|
||||||
orm["base.SiteMember"].objects.create(user=user, site=site, email=user.email)
|
|
||||||
|
|
||||||
orm["base.SiteMember"].objects.filter(user_id=1).update(is_staff=True, is_owner=True)
|
|
||||||
|
|
||||||
|
|
||||||
def backwards(self, orm):
|
|
||||||
"Write your backwards methods here."
|
|
||||||
|
|
||||||
models = {
|
|
||||||
'auth.group': {
|
|
||||||
'Meta': {'object_name': 'Group'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'blank': 'True', 'to': "orm['auth.Permission']"})
|
|
||||||
},
|
|
||||||
'auth.permission': {
|
|
||||||
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission', 'ordering': "('content_type__app_label', 'content_type__model', 'codename')"},
|
|
||||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
|
||||||
},
|
|
||||||
'base.site': {
|
|
||||||
'Meta': {'object_name': 'Site', 'ordering': "('domain',)"},
|
|
||||||
'domain': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'public_register': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'scheme': ('django.db.models.fields.CharField', [], {'default': 'None', 'null': 'True', 'max_length': '60'})
|
|
||||||
},
|
|
||||||
'base.sitemember': {
|
|
||||||
'Meta': {'unique_together': "(('site', 'user'),)", 'object_name': 'SiteMember', 'ordering': "['email']"},
|
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '255'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_owner': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'site': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['base.Site']"}),
|
|
||||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['users.User']", 'null': 'True'})
|
|
||||||
},
|
|
||||||
'contenttypes.contenttype': {
|
|
||||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'", 'ordering': "('name',)"},
|
|
||||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
|
||||||
},
|
|
||||||
'users.user': {
|
|
||||||
'Meta': {'object_name': 'User', 'ordering': "['username']"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'default': "'#669933'", 'blank': 'True', 'max_length': '9'}),
|
|
||||||
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'default_language': ('django.db.models.fields.CharField', [], {'default': "''", 'blank': 'True', 'max_length': '20'}),
|
|
||||||
'default_timezone': ('django.db.models.fields.CharField', [], {'default': "''", 'blank': 'True', 'max_length': '20'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'blank': 'True', 'max_length': '75'}),
|
|
||||||
'first_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
|
||||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'symmetrical': 'False', 'related_name': "'user_set'", 'to': "orm['auth.Group']"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'last_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
|
||||||
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'notify_level': ('django.db.models.fields.CharField', [], {'default': "'all_owned_projects'", 'max_length': '32'}),
|
|
||||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
|
||||||
'photo': ('django.db.models.fields.files.FileField', [], {'blank': 'True', 'null': 'True', 'max_length': '500'}),
|
|
||||||
'token': ('django.db.models.fields.CharField', [], {'default': 'None', 'blank': 'True', 'null': 'True', 'max_length': '200'}),
|
|
||||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'symmetrical': 'False', 'related_name': "'user_set'", 'to': "orm['auth.Permission']"}),
|
|
||||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
complete_apps = ['base']
|
|
||||||
symmetrical = True
|
|
|
@ -1,70 +1,5 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
import string
|
|
||||||
|
|
||||||
from django.db import models
|
|
||||||
from django.db.models.signals import pre_save, pre_delete
|
|
||||||
from django.utils.translation import ugettext_lazy as _
|
|
||||||
from django.core.exceptions import ValidationError
|
|
||||||
|
|
||||||
from . import sites
|
|
||||||
|
|
||||||
|
|
||||||
def _simple_domain_name_validator(value):
|
|
||||||
"""
|
|
||||||
Validates that the given value contains no whitespaces to prevent common
|
|
||||||
typos.
|
|
||||||
"""
|
|
||||||
if not value:
|
|
||||||
return
|
|
||||||
checks = ((s in value) for s in string.whitespace)
|
|
||||||
if any(checks):
|
|
||||||
raise ValidationError(
|
|
||||||
_("The domain name cannot contain any spaces or tabs."),
|
|
||||||
code='invalid',
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class Site(models.Model):
|
|
||||||
domain = models.CharField(_('domain name'), max_length=255, unique=True,
|
|
||||||
validators=[_simple_domain_name_validator])
|
|
||||||
name = models.CharField(_('display name'), max_length=255)
|
|
||||||
scheme = models.CharField(_('scheme'), max_length=60, null=True, default=None)
|
|
||||||
|
|
||||||
# Site Metadata
|
|
||||||
public_register = models.BooleanField(default=False)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
verbose_name = _('site')
|
|
||||||
verbose_name_plural = _('sites')
|
|
||||||
ordering = ('domain',)
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return self.domain
|
|
||||||
|
|
||||||
|
|
||||||
class SiteMember(models.Model):
|
|
||||||
site = models.ForeignKey("Site", related_name="+")
|
|
||||||
user = models.ForeignKey("users.User", related_name="+", null=True)
|
|
||||||
|
|
||||||
email = models.EmailField(max_length=255)
|
|
||||||
is_owner = models.BooleanField(default=False)
|
|
||||||
is_staff = models.BooleanField(default=False)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
ordering = ["email"]
|
|
||||||
verbose_name = "Site Member"
|
|
||||||
verbose_name_plural = "Site Members"
|
|
||||||
unique_together = ("site", "user")
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return "SiteMember: {0}:{1}".format(self.site, self.user)
|
|
||||||
|
|
||||||
|
|
||||||
pre_save.connect(sites.clear_site_cache, sender=Site)
|
|
||||||
pre_delete.connect(sites.clear_site_cache, sender=Site)
|
|
||||||
|
|
||||||
|
|
||||||
# Patch api view for correctly return 401 responses on
|
# Patch api view for correctly return 401 responses on
|
||||||
# request is authenticated instead of 403
|
# request is authenticated instead of 403
|
||||||
from . import monkey
|
from . import monkey
|
||||||
|
|
|
@ -1,82 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
import logging
|
|
||||||
from threading import local
|
|
||||||
|
|
||||||
from django.db.models import get_model
|
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
|
||||||
|
|
||||||
from . import exceptions as exc
|
|
||||||
|
|
||||||
|
|
||||||
_local = local()
|
|
||||||
log = logging.getLogger("greenmine.sites")
|
|
||||||
|
|
||||||
|
|
||||||
class SiteNotFound(exc.BaseException):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def get_default_site():
|
|
||||||
from django.conf import settings
|
|
||||||
try:
|
|
||||||
sid = settings.SITE_ID
|
|
||||||
except AttributeError:
|
|
||||||
raise ImproperlyConfigured("You're using the \"sites framework\" without having "
|
|
||||||
"set the SITE_ID setting. Create a site in your database "
|
|
||||||
"and set the SITE_ID setting to fix this error.")
|
|
||||||
|
|
||||||
model_cls = get_model("base", "Site")
|
|
||||||
cached = getattr(_local, "default_site", None)
|
|
||||||
if cached is None:
|
|
||||||
try:
|
|
||||||
cached = _local.default_site = model_cls.objects.get(pk=sid)
|
|
||||||
except model_cls.DoesNotExist:
|
|
||||||
raise ImproperlyConfigured("default site not found on database.")
|
|
||||||
|
|
||||||
return cached
|
|
||||||
|
|
||||||
|
|
||||||
def get_site_for_domain(domain):
|
|
||||||
log.debug("Trying activate site for domain: {}".format(domain))
|
|
||||||
cache = getattr(_local, "cache", {})
|
|
||||||
|
|
||||||
if domain in cache:
|
|
||||||
return cache[domain]
|
|
||||||
|
|
||||||
model_cls = get_model("base", "Site")
|
|
||||||
|
|
||||||
try:
|
|
||||||
site = model_cls.objects.get(domain=domain)
|
|
||||||
except model_cls.DoesNotExist:
|
|
||||||
log.warning("Site does not exist for domain: {}".format(domain))
|
|
||||||
raise SiteNotFound("site not found")
|
|
||||||
else:
|
|
||||||
cache[domain] = site
|
|
||||||
|
|
||||||
return site
|
|
||||||
|
|
||||||
|
|
||||||
def activate(site):
|
|
||||||
log.debug("Activating site: {}".format(site))
|
|
||||||
_local.active_site = site
|
|
||||||
|
|
||||||
|
|
||||||
def deactivate():
|
|
||||||
if hasattr(_local, "active_site"):
|
|
||||||
log.debug("Deactivating site: {}".format(_local.active_site))
|
|
||||||
del _local.active_site
|
|
||||||
|
|
||||||
|
|
||||||
def get_active_site():
|
|
||||||
active_site = getattr(_local, "active_site", None)
|
|
||||||
if active_site is None:
|
|
||||||
return get_default_site()
|
|
||||||
return active_site
|
|
||||||
|
|
||||||
def clear_site_cache(**kwargs):
|
|
||||||
if hasattr(_local, "default_site"):
|
|
||||||
del _local.default_site
|
|
||||||
|
|
||||||
if hasattr(_local, "cache"):
|
|
||||||
del _local.cache
|
|
|
@ -23,5 +23,16 @@
|
||||||
"email": "niwi@niwi.be",
|
"email": "niwi@niwi.be",
|
||||||
"date_joined": "2013-04-01T13:48:21.711Z"
|
"date_joined": "2013-04-01T13:48:21.711Z"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model": "domains.domainmember",
|
||||||
|
"pk": 1,
|
||||||
|
"fields": {
|
||||||
|
"is_staff": true,
|
||||||
|
"is_owner": true,
|
||||||
|
"user": 1,
|
||||||
|
"site": 1,
|
||||||
|
"email": "niwi@niwi.be"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import datetime
|
from south.utils import datetime_utils as datetime
|
||||||
from south.db import db
|
from south.db import db
|
||||||
from south.v2 import SchemaMigration
|
from south.v2 import SchemaMigration
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
@ -15,18 +15,20 @@ class Migration(SchemaMigration):
|
||||||
('last_login', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)),
|
('last_login', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)),
|
||||||
('is_superuser', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
('is_superuser', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||||
('username', self.gf('django.db.models.fields.CharField')(max_length=30, unique=True)),
|
('username', self.gf('django.db.models.fields.CharField')(max_length=30, unique=True)),
|
||||||
('first_name', self.gf('django.db.models.fields.CharField')(max_length=30, blank=True)),
|
('first_name', self.gf('django.db.models.fields.CharField')(blank=True, max_length=30)),
|
||||||
('last_name', self.gf('django.db.models.fields.CharField')(max_length=30, blank=True)),
|
('last_name', self.gf('django.db.models.fields.CharField')(blank=True, max_length=30)),
|
||||||
('email', self.gf('django.db.models.fields.EmailField')(max_length=75, blank=True)),
|
('email', self.gf('django.db.models.fields.EmailField')(blank=True, max_length=75)),
|
||||||
('is_staff', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
('is_staff', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||||
('is_active', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
('is_active', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||||
('date_joined', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)),
|
('date_joined', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)),
|
||||||
('color', self.gf('django.db.models.fields.CharField')(default='#669933', max_length=9, blank=True)),
|
('notify_level', self.gf('django.db.models.fields.CharField')(max_length=32, default='all_owned_projects')),
|
||||||
|
('notify_changes_by_me', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||||
|
('color', self.gf('django.db.models.fields.CharField')(blank=True, max_length=9, default='#669933')),
|
||||||
('description', self.gf('django.db.models.fields.TextField')(blank=True)),
|
('description', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||||
('photo', self.gf('django.db.models.fields.files.FileField')(max_length=500, blank=True, null=True)),
|
('photo', self.gf('django.db.models.fields.files.FileField')(blank=True, max_length=500, null=True)),
|
||||||
('default_language', self.gf('django.db.models.fields.CharField')(default='', max_length=20, blank=True)),
|
('default_language', self.gf('django.db.models.fields.CharField')(blank=True, max_length=20, default='')),
|
||||||
('default_timezone', self.gf('django.db.models.fields.CharField')(default='', max_length=20, blank=True)),
|
('default_timezone', self.gf('django.db.models.fields.CharField')(blank=True, max_length=20, default='')),
|
||||||
('token', self.gf('django.db.models.fields.CharField')(default=None, max_length=200, blank=True, null=True)),
|
('token', self.gf('django.db.models.fields.CharField')(blank=True, max_length=200, default=None, null=True)),
|
||||||
('colorize_tags', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
('colorize_tags', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||||
))
|
))
|
||||||
db.send_create_signal('users', ['User'])
|
db.send_create_signal('users', ['User'])
|
||||||
|
@ -53,7 +55,7 @@ class Migration(SchemaMigration):
|
||||||
db.create_table('users_role', (
|
db.create_table('users_role', (
|
||||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
('name', self.gf('django.db.models.fields.CharField')(max_length=200)),
|
('name', self.gf('django.db.models.fields.CharField')(max_length=200)),
|
||||||
('slug', self.gf('django.db.models.fields.SlugField')(max_length=250, unique=True, blank=True)),
|
('slug', self.gf('django.db.models.fields.SlugField')(blank=True, max_length=250, unique=True)),
|
||||||
('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
|
('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
|
||||||
('computable', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
('computable', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||||
))
|
))
|
||||||
|
@ -91,52 +93,54 @@ class Migration(SchemaMigration):
|
||||||
'Meta': {'object_name': 'Group'},
|
'Meta': {'object_name': 'Group'},
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'unique': 'True'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'unique': 'True'}),
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Permission']", 'blank': 'True'})
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'symmetrical': 'False', 'to': "orm['auth.Permission']"})
|
||||||
},
|
},
|
||||||
'auth.permission': {
|
'auth.permission': {
|
||||||
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'object_name': 'Permission'},
|
'Meta': {'object_name': 'Permission', 'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)"},
|
||||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
},
|
},
|
||||||
'contenttypes.contenttype': {
|
'contenttypes.contenttype': {
|
||||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'ordering': "('name',)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
'Meta': {'object_name': 'ContentType', 'db_table': "'django_content_type'", 'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)"},
|
||||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||||
},
|
},
|
||||||
'users.role': {
|
'users.role': {
|
||||||
'Meta': {'ordering': "['order', 'slug']", 'object_name': 'Role'},
|
'Meta': {'object_name': 'Role', 'ordering': "['order', 'slug']"},
|
||||||
'computable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
'computable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'roles'", 'symmetrical': 'False', 'to': "orm['auth.Permission']"}),
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'roles'", 'symmetrical': 'False', 'to': "orm['auth.Permission']"}),
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'unique': 'True', 'blank': 'True'})
|
'slug': ('django.db.models.fields.SlugField', [], {'blank': 'True', 'max_length': '250', 'unique': 'True'})
|
||||||
},
|
},
|
||||||
'users.user': {
|
'users.user': {
|
||||||
'Meta': {'ordering': "['username']", 'object_name': 'User'},
|
'Meta': {'object_name': 'User', 'ordering': "['username']"},
|
||||||
'color': ('django.db.models.fields.CharField', [], {'default': "'#669933'", 'max_length': '9', 'blank': 'True'}),
|
'color': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '9', 'default': "'#669933'"}),
|
||||||
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
'default_language': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '20', 'blank': 'True'}),
|
'default_language': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '20', 'default': "''"}),
|
||||||
'default_timezone': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '20', 'blank': 'True'}),
|
'default_timezone': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '20', 'default': "''"}),
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
'email': ('django.db.models.fields.EmailField', [], {'blank': 'True', 'max_length': '75'}),
|
||||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
'first_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
||||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'symmetrical': 'False', 'to': "orm['auth.Group']", 'blank': 'True'}),
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'user_set'", 'symmetrical': 'False', 'to': "orm['auth.Group']"}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
'last_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
||||||
|
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'notify_level': ('django.db.models.fields.CharField', [], {'max_length': '32', 'default': "'all_owned_projects'"}),
|
||||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
'photo': ('django.db.models.fields.files.FileField', [], {'max_length': '500', 'blank': 'True', 'null': 'True'}),
|
'photo': ('django.db.models.fields.files.FileField', [], {'blank': 'True', 'max_length': '500', 'null': 'True'}),
|
||||||
'token': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '200', 'blank': 'True', 'null': 'True'}),
|
'token': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '200', 'default': 'None', 'null': 'True'}),
|
||||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'symmetrical': 'False', 'to': "orm['auth.Permission']", 'blank': 'True'}),
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'user_set'", 'symmetrical': 'False', 'to': "orm['auth.Permission']"}),
|
||||||
'username': ('django.db.models.fields.CharField', [], {'max_length': '30', 'unique': 'True'})
|
'username': ('django.db.models.fields.CharField', [], {'max_length': '30', 'unique': 'True'})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,87 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import datetime
|
|
||||||
from south.db import db
|
|
||||||
from south.v2 import SchemaMigration
|
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(SchemaMigration):
|
|
||||||
|
|
||||||
def forwards(self, orm):
|
|
||||||
# Adding field 'User.notify_level'
|
|
||||||
db.add_column('users_user', 'notify_level',
|
|
||||||
self.gf('django.db.models.fields.CharField')(max_length=32, default='all_owned_projects'),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
# Adding field 'User.notify_changes_by_me'
|
|
||||||
db.add_column('users_user', 'notify_changes_by_me',
|
|
||||||
self.gf('django.db.models.fields.BooleanField')(default=False),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
|
|
||||||
def backwards(self, orm):
|
|
||||||
# Deleting field 'User.notify_level'
|
|
||||||
db.delete_column('users_user', 'notify_level')
|
|
||||||
|
|
||||||
# Deleting field 'User.notify_changes_by_me'
|
|
||||||
db.delete_column('users_user', 'notify_changes_by_me')
|
|
||||||
|
|
||||||
|
|
||||||
models = {
|
|
||||||
'auth.group': {
|
|
||||||
'Meta': {'object_name': 'Group'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'blank': 'True', 'to': "orm['auth.Permission']"})
|
|
||||||
},
|
|
||||||
'auth.permission': {
|
|
||||||
'Meta': {'object_name': 'Permission', 'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)"},
|
|
||||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
|
||||||
},
|
|
||||||
'contenttypes.contenttype': {
|
|
||||||
'Meta': {'object_name': 'ContentType', 'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'db_table': "'django_content_type'"},
|
|
||||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
|
||||||
},
|
|
||||||
'users.role': {
|
|
||||||
'Meta': {'object_name': 'Role', 'ordering': "['order', 'slug']"},
|
|
||||||
'computable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'roles'", 'symmetrical': 'False', 'to': "orm['auth.Permission']"}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'blank': 'True', 'max_length': '250'})
|
|
||||||
},
|
|
||||||
'users.user': {
|
|
||||||
'Meta': {'object_name': 'User', 'ordering': "['username']"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '9', 'default': "'#669933'", 'blank': 'True'}),
|
|
||||||
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'default_language': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "''", 'blank': 'True'}),
|
|
||||||
'default_timezone': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "''", 'blank': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
|
||||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
|
||||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'symmetrical': 'False', 'blank': 'True', 'to': "orm['auth.Group']"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
|
||||||
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'notify_level': ('django.db.models.fields.CharField', [], {'max_length': '32', 'default': "'all_owned_projects'"}),
|
|
||||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
|
||||||
'photo': ('django.db.models.fields.files.FileField', [], {'max_length': '500', 'blank': 'True', 'null': 'True'}),
|
|
||||||
'token': ('django.db.models.fields.CharField', [], {'max_length': '200', 'default': 'None', 'blank': 'True', 'null': 'True'}),
|
|
||||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'symmetrical': 'False', 'blank': 'True', 'to': "orm['auth.Permission']"}),
|
|
||||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
complete_apps = ['users']
|
|
|
@ -5,6 +5,8 @@ from django.db.models.loading import get_model
|
||||||
|
|
||||||
def create_user(id, save=True, is_superuser=False):
|
def create_user(id, save=True, is_superuser=False):
|
||||||
model = get_model("users", "User")
|
model = get_model("users", "User")
|
||||||
|
domain_member_model = get_model("domains", "DomainMember")
|
||||||
|
domain_model = get_model("domains", "Domain")
|
||||||
|
|
||||||
instance = model(
|
instance = model(
|
||||||
username="user{0}".format(id),
|
username="user{0}".format(id),
|
||||||
|
@ -18,17 +20,26 @@ def create_user(id, save=True, is_superuser=False):
|
||||||
instance.is_staff = True
|
instance.is_staff = True
|
||||||
instance.is_superuser = True
|
instance.is_superuser = True
|
||||||
|
|
||||||
if save:
|
instance.save()
|
||||||
instance.save()
|
|
||||||
|
domain = domain_model.objects.get(pk=1)
|
||||||
|
dm = domain_member_model.objects.create(user=instance,
|
||||||
|
email=instance.email,
|
||||||
|
site=domain)
|
||||||
|
if id == 1:
|
||||||
|
dm.is_owner = True
|
||||||
|
dm.is_staff = True
|
||||||
|
dm.save()
|
||||||
|
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
|
||||||
def create_site(name, public_register=False):
|
def create_domain(name, public_register=False):
|
||||||
site_model = get_model("base", "Site")
|
domain_model = get_model("domains", "Domain")
|
||||||
|
|
||||||
instance = site_model(name=name,
|
instance = domain_model(name=name,
|
||||||
domain=name,
|
domain=name,
|
||||||
public_register=public_register)
|
public_register=public_register)
|
||||||
|
|
||||||
instance.save()
|
instance.save()
|
||||||
return instance
|
return instance
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django_jinja import library
|
from django_jinja import library
|
||||||
|
|
||||||
from greenmine.base import sites
|
from greenmine.base import domains
|
||||||
|
|
||||||
|
|
||||||
URLS = {
|
URLS = {
|
||||||
|
@ -24,9 +24,9 @@ lib = library.Library()
|
||||||
|
|
||||||
@lib.global_function(name="resolve_front_url")
|
@lib.global_function(name="resolve_front_url")
|
||||||
def resolve(type, *args):
|
def resolve(type, *args):
|
||||||
site = sites.get_active_site()
|
domain = domains.get_active_domain()
|
||||||
url_tmpl = "{scheme}//{domain}{url}"
|
url_tmpl = "{scheme}//{domain}{url}"
|
||||||
|
|
||||||
scheme = site.scheme and "{0}:".format(site.scheme) or ""
|
scheme = domain.scheme and "{0}:".format(domain.scheme) or ""
|
||||||
url = URLS[type].format(*args)
|
url = URLS[type].format(*args)
|
||||||
return url_tmpl.format(scheme=scheme, domain=site.domain, url=url)
|
return url_tmpl.format(scheme=scheme, domain=domain.domain, url=url)
|
||||||
|
|
|
@ -61,10 +61,12 @@ class ProjectViewSet(ModelCrudViewSet):
|
||||||
def pre_save(self, obj):
|
def pre_save(self, obj):
|
||||||
obj.owner = self.request.user
|
obj.owner = self.request.user
|
||||||
|
|
||||||
|
# FIXME
|
||||||
|
|
||||||
# Assign site only if it current
|
# Assign site only if it current
|
||||||
# value is None
|
# value is None
|
||||||
if not obj.site:
|
if not obj.site:
|
||||||
obj.site = self.request.site
|
obj.site = self.request.domain
|
||||||
|
|
||||||
super().pre_save(obj)
|
super().pre_save(obj)
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import datetime
|
from south.utils import datetime_utils as datetime
|
||||||
from south.db import db
|
from south.db import db
|
||||||
from south.v2 import SchemaMigration
|
from south.v2 import SchemaMigration
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
@ -11,21 +11,20 @@ class Migration(SchemaMigration):
|
||||||
# Adding model 'Issue'
|
# Adding model 'Issue'
|
||||||
db.create_table('issues_issue', (
|
db.create_table('issues_issue', (
|
||||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
('uuid', self.gf('django.db.models.fields.CharField')(max_length=40, blank=True, unique=True)),
|
('ref', self.gf('django.db.models.fields.BigIntegerField')(null=True, default=None, db_index=True, blank=True)),
|
||||||
('ref', self.gf('django.db.models.fields.BigIntegerField')(db_index=True, default=None, null=True, blank=True)),
|
('owner', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['users.User'], null=True, default=None, related_name='owned_issues', blank=True)),
|
||||||
('owner', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['users.User'], default=None, related_name='owned_issues', null=True, blank=True)),
|
('status', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['projects.IssueStatus'], related_name='issues')),
|
||||||
('status', self.gf('django.db.models.fields.related.ForeignKey')(related_name='issues', to=orm['projects.IssueStatus'])),
|
('severity', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['projects.Severity'], related_name='issues')),
|
||||||
('severity', self.gf('django.db.models.fields.related.ForeignKey')(related_name='issues', to=orm['projects.Severity'])),
|
('priority', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['projects.Priority'], related_name='issues')),
|
||||||
('priority', self.gf('django.db.models.fields.related.ForeignKey')(related_name='issues', to=orm['projects.Priority'])),
|
('type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['projects.IssueType'], related_name='issues')),
|
||||||
('type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='issues', to=orm['projects.IssueType'])),
|
('milestone', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['milestones.Milestone'], null=True, default=None, related_name='issues', blank=True)),
|
||||||
('milestone', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['milestones.Milestone'], default=None, related_name='issues', null=True, blank=True)),
|
('project', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['projects.Project'], related_name='issues')),
|
||||||
('project', self.gf('django.db.models.fields.related.ForeignKey')(related_name='issues', to=orm['projects.Project'])),
|
('created_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||||
('created_date', self.gf('django.db.models.fields.DateTimeField')(blank=True, auto_now_add=True)),
|
('modified_date', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
|
||||||
('modified_date', self.gf('django.db.models.fields.DateTimeField')(blank=True, auto_now_add=True)),
|
|
||||||
('finished_date', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
|
('finished_date', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
|
||||||
('subject', self.gf('django.db.models.fields.CharField')(max_length=500)),
|
('subject', self.gf('django.db.models.fields.CharField')(max_length=500)),
|
||||||
('description', self.gf('django.db.models.fields.TextField')(blank=True)),
|
('description', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||||
('assigned_to', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['users.User'], default=None, related_name='issues_assigned_to_me', null=True, blank=True)),
|
('assigned_to', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['users.User'], null=True, default=None, related_name='issues_assigned_to_me', blank=True)),
|
||||||
('tags', self.gf('picklefield.fields.PickledObjectField')(blank=True)),
|
('tags', self.gf('picklefield.fields.PickledObjectField')(blank=True)),
|
||||||
))
|
))
|
||||||
db.send_create_signal('issues', ['Issue'])
|
db.send_create_signal('issues', ['Issue'])
|
||||||
|
@ -58,8 +57,8 @@ class Migration(SchemaMigration):
|
||||||
'auth.group': {
|
'auth.group': {
|
||||||
'Meta': {'object_name': 'Group'},
|
'Meta': {'object_name': 'Group'},
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'unique': 'True'}),
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'blank': 'True', 'to': "orm['auth.Permission']"})
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||||
},
|
},
|
||||||
'auth.permission': {
|
'auth.permission': {
|
||||||
'Meta': {'object_name': 'Permission', 'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)"},
|
'Meta': {'object_name': 'Permission', 'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)"},
|
||||||
|
@ -69,103 +68,158 @@ class Migration(SchemaMigration):
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
},
|
},
|
||||||
'contenttypes.contenttype': {
|
'contenttypes.contenttype': {
|
||||||
'Meta': {'object_name': 'ContentType', 'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'db_table': "'django_content_type'"},
|
'Meta': {'object_name': 'ContentType', 'db_table': "'django_content_type'", 'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)"},
|
||||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||||
},
|
},
|
||||||
|
'domains.domain': {
|
||||||
|
'Meta': {'object_name': 'Domain', 'ordering': "('domain',)"},
|
||||||
|
'domain': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'public_register': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'scheme': ('django.db.models.fields.CharField', [], {'null': 'True', 'default': 'None', 'max_length': '60'})
|
||||||
|
},
|
||||||
'issues.issue': {
|
'issues.issue': {
|
||||||
'Meta': {'object_name': 'Issue', 'ordering': "['project', 'created_date']", 'unique_together': "(('ref', 'project'),)"},
|
'Meta': {'object_name': 'Issue', 'ordering': "['project', 'created_date']", 'unique_together': "(('ref', 'project'),)"},
|
||||||
'assigned_to': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'default': 'None', 'related_name': "'issues_assigned_to_me'", 'null': 'True', 'blank': 'True'}),
|
'assigned_to': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'null': 'True', 'default': 'None', 'related_name': "'issues_assigned_to_me'", 'blank': 'True'}),
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
'finished_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
'finished_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'milestone': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['milestones.Milestone']", 'default': 'None', 'related_name': "'issues'", 'null': 'True', 'blank': 'True'}),
|
'milestone': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['milestones.Milestone']", 'null': 'True', 'default': 'None', 'related_name': "'issues'", 'blank': 'True'}),
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'default': 'None', 'related_name': "'owned_issues'", 'null': 'True', 'blank': 'True'}),
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'null': 'True', 'default': 'None', 'related_name': "'owned_issues'", 'blank': 'True'}),
|
||||||
'priority': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issues'", 'to': "orm['projects.Priority']"}),
|
'priority': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Priority']", 'related_name': "'issues'"}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issues'", 'to': "orm['projects.Project']"}),
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'issues'"}),
|
||||||
'ref': ('django.db.models.fields.BigIntegerField', [], {'db_index': 'True', 'default': 'None', 'null': 'True', 'blank': 'True'}),
|
'ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': 'None', 'db_index': 'True', 'blank': 'True'}),
|
||||||
'severity': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issues'", 'to': "orm['projects.Severity']"}),
|
'severity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Severity']", 'related_name': "'issues'"}),
|
||||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issues'", 'to': "orm['projects.IssueStatus']"}),
|
'status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.IssueStatus']", 'related_name': "'issues'"}),
|
||||||
'subject': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
'subject': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
||||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issues'", 'to': "orm['projects.IssueType']"}),
|
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.IssueType']", 'related_name': "'issues'"}),
|
||||||
'uuid': ('django.db.models.fields.CharField', [], {'max_length': '40', 'blank': 'True', 'unique': 'True'}),
|
'watchers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['users.User']", 'null': 'True', 'symmetrical': 'False', 'related_name': "'watched_issues'", 'blank': 'True'})
|
||||||
'watchers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['users.User']", 'symmetrical': 'False', 'blank': 'True', 'null': 'True', 'related_name': "'watched_issues'"})
|
|
||||||
},
|
},
|
||||||
'milestones.milestone': {
|
'milestones.milestone': {
|
||||||
'Meta': {'object_name': 'Milestone', 'ordering': "['project', '-created_date']", 'unique_together': "(('name', 'project'),)"},
|
'Meta': {'object_name': 'Milestone', 'ordering': "['project', 'created_date']", 'unique_together': "(('name', 'project'),)"},
|
||||||
'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
'disponibility': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'null': 'True', 'blank': 'True'}),
|
'disponibility': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': '0.0', 'blank': 'True'}),
|
||||||
'estimated_finish': ('django.db.models.fields.DateField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
|
'estimated_finish': ('django.db.models.fields.DateField', [], {'null': 'True', 'default': 'None', 'blank': 'True'}),
|
||||||
'estimated_start': ('django.db.models.fields.DateField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
|
'estimated_start': ('django.db.models.fields.DateField', [], {'null': 'True', 'default': 'None', 'blank': 'True'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '200'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'db_index': 'True'}),
|
||||||
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
|
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'related_name': "'owned_milestones'", 'null': 'True', 'blank': 'True'}),
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'null': 'True', 'related_name': "'owned_milestones'", 'blank': 'True'}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'milestones'", 'to': "orm['projects.Project']"}),
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'milestones'"}),
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'blank': 'True', 'unique': 'True'}),
|
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'blank': 'True', 'max_length': '250'})
|
||||||
'uuid': ('django.db.models.fields.CharField', [], {'max_length': '40', 'blank': 'True', 'unique': 'True'})
|
|
||||||
},
|
},
|
||||||
'projects.issuestatus': {
|
'projects.issuestatus': {
|
||||||
'Meta': {'object_name': 'IssueStatus', 'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)"},
|
'Meta': {'object_name': 'IssueStatus', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issue_statuses'", 'to': "orm['projects.Project']"})
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'issue_statuses'"})
|
||||||
},
|
},
|
||||||
'projects.issuetype': {
|
'projects.issuetype': {
|
||||||
'Meta': {'object_name': 'IssueType', 'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)"},
|
'Meta': {'object_name': 'IssueType', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issue_types'", 'to': "orm['projects.Project']"})
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'issue_types'"})
|
||||||
},
|
},
|
||||||
'projects.membership': {
|
'projects.membership': {
|
||||||
'Meta': {'object_name': 'Membership', 'ordering': "['project', 'role', 'user']", 'unique_together': "(('user', 'project'),)"},
|
'Meta': {'object_name': 'Membership', 'ordering': "['project', 'role']"},
|
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'null': 'True', 'default': 'None', 'max_length': '255'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['projects.Project']"}),
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'memberships'"}),
|
||||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.Role']"}),
|
'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.Role']", 'related_name': "'memberships'"}),
|
||||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.User']"})
|
'token': ('django.db.models.fields.CharField', [], {'null': 'True', 'default': 'None', 'blank': 'True', 'max_length': '60', 'unique': 'True'}),
|
||||||
|
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'null': 'True', 'default': 'None', 'related_name': "'memberships'", 'blank': 'True'})
|
||||||
},
|
},
|
||||||
'projects.priority': {
|
'projects.points': {
|
||||||
'Meta': {'object_name': 'Priority', 'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)"},
|
'Meta': {'object_name': 'Points', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'priorities'", 'to': "orm['projects.Project']"})
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'points'"}),
|
||||||
|
'value': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': 'None', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
'projects.priority': {
|
||||||
|
'Meta': {'object_name': 'Priority', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'priorities'"})
|
||||||
},
|
},
|
||||||
'projects.project': {
|
'projects.project': {
|
||||||
'Meta': {'object_name': 'Project', 'ordering': "['name']"},
|
'Meta': {'object_name': 'Project', 'ordering': "['name']"},
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'default_issue_status': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'related_name': "'+'", 'unique': 'True', 'to': "orm['projects.IssueStatus']", 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
|
||||||
|
'default_issue_type': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'related_name': "'+'", 'unique': 'True', 'to': "orm['projects.IssueType']", 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
|
||||||
|
'default_points': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'related_name': "'+'", 'unique': 'True', 'to': "orm['projects.Points']", 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
|
||||||
|
'default_priority': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'related_name': "'+'", 'unique': 'True', 'to': "orm['projects.Priority']", 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
|
||||||
|
'default_question_status': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'related_name': "'+'", 'unique': 'True', 'to': "orm['projects.QuestionStatus']", 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
|
||||||
|
'default_severity': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'related_name': "'+'", 'unique': 'True', 'to': "orm['projects.Severity']", 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
|
||||||
|
'default_task_status': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'related_name': "'+'", 'unique': 'True', 'to': "orm['projects.TaskStatus']", 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
|
||||||
|
'default_us_status': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'related_name': "'+'", 'unique': 'True', 'to': "orm['projects.UserStoryStatus']", 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
|
||||||
'description': ('django.db.models.fields.TextField', [], {}),
|
'description': ('django.db.models.fields.TextField', [], {}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
||||||
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
||||||
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
||||||
'members': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['users.User']", 'symmetrical': 'False', 'through': "orm['projects.Membership']", 'related_name': "'projects'"}),
|
'members': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['users.User']", 'symmetrical': 'False', 'related_name': "'projects'", 'through': "orm['projects.Membership']"}),
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '250', 'unique': 'True'}),
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'}),
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_projects'", 'to': "orm['users.User']"}),
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'related_name': "'owned_projects'"}),
|
||||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'blank': 'True', 'unique': 'True'}),
|
'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['domains.Domain']", 'null': 'True', 'default': 'None', 'related_name': "'projects'"}),
|
||||||
|
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'blank': 'True', 'max_length': '250'}),
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
||||||
'total_milestones': ('django.db.models.fields.IntegerField', [], {'default': '0', 'null': 'True', 'blank': 'True'}),
|
'total_milestones': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'default': '0', 'blank': 'True'}),
|
||||||
'total_story_points': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True'}),
|
'total_story_points': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': 'None'})
|
||||||
'uuid': ('django.db.models.fields.CharField', [], {'max_length': '40', 'blank': 'True', 'unique': 'True'})
|
},
|
||||||
|
'projects.questionstatus': {
|
||||||
|
'Meta': {'object_name': 'QuestionStatus', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'question_status'"})
|
||||||
},
|
},
|
||||||
'projects.severity': {
|
'projects.severity': {
|
||||||
'Meta': {'object_name': 'Severity', 'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)"},
|
'Meta': {'object_name': 'Severity', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'severities'", 'to': "orm['projects.Project']"})
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'severities'"})
|
||||||
|
},
|
||||||
|
'projects.taskstatus': {
|
||||||
|
'Meta': {'object_name': 'TaskStatus', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'task_statuses'"})
|
||||||
|
},
|
||||||
|
'projects.userstorystatus': {
|
||||||
|
'Meta': {'object_name': 'UserStoryStatus', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'us_statuses'"})
|
||||||
},
|
},
|
||||||
'users.role': {
|
'users.role': {
|
||||||
'Meta': {'object_name': 'Role', 'ordering': "['order', 'slug']"},
|
'Meta': {'object_name': 'Role', 'ordering': "['order', 'slug']"},
|
||||||
|
@ -174,7 +228,7 @@ class Migration(SchemaMigration):
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'related_name': "'roles'"}),
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'related_name': "'roles'"}),
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'blank': 'True', 'unique': 'True'})
|
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'blank': 'True', 'max_length': '250'})
|
||||||
},
|
},
|
||||||
'users.user': {
|
'users.user': {
|
||||||
'Meta': {'object_name': 'User', 'ordering': "['username']"},
|
'Meta': {'object_name': 'User', 'ordering': "['username']"},
|
||||||
|
@ -186,18 +240,20 @@ class Migration(SchemaMigration):
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True', 'related_name': "'user_set'"}),
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'related_name': "'user_set'", 'blank': 'True'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
|
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'notify_level': ('django.db.models.fields.CharField', [], {'max_length': '32', 'default': "'all_owned_projects'"}),
|
||||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
'photo': ('django.db.models.fields.files.FileField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
|
'photo': ('django.db.models.fields.files.FileField', [], {'null': 'True', 'blank': 'True', 'max_length': '500'}),
|
||||||
'token': ('django.db.models.fields.CharField', [], {'max_length': '200', 'default': 'None', 'null': 'True', 'blank': 'True'}),
|
'token': ('django.db.models.fields.CharField', [], {'null': 'True', 'default': 'None', 'blank': 'True', 'max_length': '200'}),
|
||||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True', 'related_name': "'user_set'"}),
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'related_name': "'user_set'", 'blank': 'True'}),
|
||||||
'username': ('django.db.models.fields.CharField', [], {'max_length': '30', 'unique': 'True'})
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,174 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import datetime
|
|
||||||
from south.db import db
|
|
||||||
from south.v2 import SchemaMigration
|
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(SchemaMigration):
|
|
||||||
|
|
||||||
def forwards(self, orm):
|
|
||||||
# Deleting field 'Issue.uuid'
|
|
||||||
db.delete_column('issues_issue', 'uuid')
|
|
||||||
|
|
||||||
|
|
||||||
# Changing field 'Issue.modified_date'
|
|
||||||
db.alter_column('issues_issue', 'modified_date', self.gf('django.db.models.fields.DateTimeField')(auto_now=True))
|
|
||||||
|
|
||||||
def backwards(self, orm):
|
|
||||||
# Adding field 'Issue.uuid'
|
|
||||||
db.add_column('issues_issue', 'uuid',
|
|
||||||
self.gf('django.db.models.fields.CharField')(unique=True, blank=True, max_length=40, default=''),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
|
|
||||||
# Changing field 'Issue.modified_date'
|
|
||||||
db.alter_column('issues_issue', 'modified_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True))
|
|
||||||
|
|
||||||
models = {
|
|
||||||
'auth.group': {
|
|
||||||
'Meta': {'object_name': 'Group'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'blank': 'True', 'symmetrical': 'False'})
|
|
||||||
},
|
|
||||||
'auth.permission': {
|
|
||||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
|
||||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
|
||||||
},
|
|
||||||
'contenttypes.contenttype': {
|
|
||||||
'Meta': {'db_table': "'django_content_type'", 'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType'},
|
|
||||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
|
||||||
},
|
|
||||||
'issues.issue': {
|
|
||||||
'Meta': {'ordering': "['project', 'created_date']", 'unique_together': "(('ref', 'project'),)", 'object_name': 'Issue'},
|
|
||||||
'assigned_to': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issues_assigned_to_me'", 'to': "orm['users.User']", 'null': 'True', 'blank': 'True', 'default': 'None'}),
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
|
||||||
'finished_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'milestone': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issues'", 'to': "orm['milestones.Milestone']", 'null': 'True', 'blank': 'True', 'default': 'None'}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_issues'", 'to': "orm['users.User']", 'null': 'True', 'blank': 'True', 'default': 'None'}),
|
|
||||||
'priority': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issues'", 'to': "orm['projects.Priority']"}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issues'", 'to': "orm['projects.Project']"}),
|
|
||||||
'ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True', 'db_index': 'True', 'default': 'None'}),
|
|
||||||
'severity': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issues'", 'to': "orm['projects.Severity']"}),
|
|
||||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issues'", 'to': "orm['projects.IssueStatus']"}),
|
|
||||||
'subject': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
|
||||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issues'", 'to': "orm['projects.IssueType']"}),
|
|
||||||
'watchers': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'watched_issues'", 'to': "orm['users.User']", 'null': 'True', 'blank': 'True', 'symmetrical': 'False'})
|
|
||||||
},
|
|
||||||
'milestones.milestone': {
|
|
||||||
'Meta': {'ordering': "['project', '-created_date']", 'unique_together': "(('name', 'project'),)", 'object_name': 'Milestone'},
|
|
||||||
'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
|
||||||
'disponibility': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True', 'default': '0.0'}),
|
|
||||||
'estimated_finish': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True', 'default': 'None'}),
|
|
||||||
'estimated_start': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True', 'default': 'None'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '200'}),
|
|
||||||
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_milestones'", 'to': "orm['users.User']", 'null': 'True', 'blank': 'True'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'milestones'", 'to': "orm['projects.Project']"}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'blank': 'True', 'max_length': '250'})
|
|
||||||
},
|
|
||||||
'projects.issuestatus': {
|
|
||||||
'Meta': {'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'IssueStatus'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issue_statuses'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.issuetype': {
|
|
||||||
'Meta': {'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'IssueType'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issue_types'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.membership': {
|
|
||||||
'Meta': {'ordering': "['project', 'role', 'user']", 'unique_together': "(('user', 'project'),)", 'object_name': 'Membership'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['projects.Project']"}),
|
|
||||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.Role']"}),
|
|
||||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.User']"})
|
|
||||||
},
|
|
||||||
'projects.priority': {
|
|
||||||
'Meta': {'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'Priority'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'priorities'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.project': {
|
|
||||||
'Meta': {'ordering': "['name']", 'object_name': 'Project'},
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'members': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'projects'", 'through': "orm['projects.Membership']", 'to': "orm['users.User']", 'symmetrical': 'False'}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_projects'", 'to': "orm['users.User']"}),
|
|
||||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'blank': 'True', 'max_length': '250'}),
|
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
|
||||||
'total_milestones': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True', 'default': '0'}),
|
|
||||||
'total_story_points': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': 'None'})
|
|
||||||
},
|
|
||||||
'projects.severity': {
|
|
||||||
'Meta': {'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'Severity'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'severities'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'users.role': {
|
|
||||||
'Meta': {'ordering': "['order', 'slug']", 'object_name': 'Role'},
|
|
||||||
'computable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'roles'", 'to': "orm['auth.Permission']", 'symmetrical': 'False'}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'blank': 'True', 'max_length': '250'})
|
|
||||||
},
|
|
||||||
'users.user': {
|
|
||||||
'Meta': {'ordering': "['username']", 'object_name': 'User'},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '9', 'default': "'#669933'"}),
|
|
||||||
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'default_language': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '20', 'default': "''"}),
|
|
||||||
'default_timezone': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '20', 'default': "''"}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'blank': 'True', 'max_length': '75'}),
|
|
||||||
'first_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
|
||||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'to': "orm['auth.Group']", 'blank': 'True', 'symmetrical': 'False'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'last_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
|
||||||
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'notify_level': ('django.db.models.fields.CharField', [], {'max_length': '32', 'default': "'all_owned_projects'"}),
|
|
||||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
|
||||||
'photo': ('django.db.models.fields.files.FileField', [], {'null': 'True', 'blank': 'True', 'max_length': '500'}),
|
|
||||||
'token': ('django.db.models.fields.CharField', [], {'null': 'True', 'blank': 'True', 'max_length': '200', 'default': 'None'}),
|
|
||||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'to': "orm['auth.Permission']", 'blank': 'True', 'symmetrical': 'False'}),
|
|
||||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
complete_apps = ['issues']
|
|
|
@ -15,7 +15,7 @@ from . import create_issue
|
||||||
|
|
||||||
|
|
||||||
class IssuesTestCase(test.TestCase):
|
class IssuesTestCase(test.TestCase):
|
||||||
fixtures = ["initial_role.json", "initial_site.json"]
|
fixtures = ["initial_role.json", "initial_domains.json"]
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.user1 = create_user(1) # Project owner
|
self.user1 = create_user(1) # Project owner
|
||||||
|
|
|
@ -89,6 +89,7 @@ class Command(BaseCommand):
|
||||||
role = self.sd.db_object_from_queryset(Role.objects.all())
|
role = self.sd.db_object_from_queryset(Role.objects.all())
|
||||||
|
|
||||||
Membership.objects.create(
|
Membership.objects.create(
|
||||||
|
email=user.email,
|
||||||
project=project,
|
project=project,
|
||||||
role=role,
|
role=role,
|
||||||
user=user)
|
user=user)
|
||||||
|
@ -273,6 +274,7 @@ class Command(BaseCommand):
|
||||||
name='Project Example {0}'.format(counter),
|
name='Project Example {0}'.format(counter),
|
||||||
description='Project example {0} description'.format(counter),
|
description='Project example {0} description'.format(counter),
|
||||||
owner=random.choice(self.users),
|
owner=random.choice(self.users),
|
||||||
|
site_id=1,
|
||||||
public=True,
|
public=True,
|
||||||
total_story_points=self.sd.int(600, 3000),
|
total_story_points=self.sd.int(600, 3000),
|
||||||
total_milestones=self.sd.int(5,10))
|
total_milestones=self.sd.int(5,10))
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import datetime
|
from south.utils import datetime_utils as datetime
|
||||||
from south.db import db
|
from south.db import db
|
||||||
from south.v2 import SchemaMigration
|
from south.v2 import SchemaMigration
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
@ -8,11 +8,51 @@ from django.db import models
|
||||||
class Migration(SchemaMigration):
|
class Migration(SchemaMigration):
|
||||||
|
|
||||||
def forwards(self, orm):
|
def forwards(self, orm):
|
||||||
|
# Adding model 'Membership'
|
||||||
|
db.create_table('projects_membership', (
|
||||||
|
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
|
('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='memberships', to=orm['users.User'], null=True, blank=True, default=None)),
|
||||||
|
('project', self.gf('django.db.models.fields.related.ForeignKey')(related_name='memberships', to=orm['projects.Project'])),
|
||||||
|
('role', self.gf('django.db.models.fields.related.ForeignKey')(related_name='memberships', to=orm['users.Role'])),
|
||||||
|
('email', self.gf('django.db.models.fields.EmailField')(null=True, max_length=255, default=None)),
|
||||||
|
('created_at', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True, default=datetime.datetime.now)),
|
||||||
|
('token', self.gf('django.db.models.fields.CharField')(unique=True, blank=True, null=True, max_length=60, default=None)),
|
||||||
|
))
|
||||||
|
db.send_create_signal('projects', ['Membership'])
|
||||||
|
|
||||||
|
# Adding model 'Project'
|
||||||
|
db.create_table('projects_project', (
|
||||||
|
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
|
('default_points', self.gf('django.db.models.fields.related.OneToOneField')(related_name='+', unique=True, blank=True, to=orm['projects.Points'], null=True, on_delete=models.SET_NULL)),
|
||||||
|
('default_us_status', self.gf('django.db.models.fields.related.OneToOneField')(related_name='+', unique=True, blank=True, to=orm['projects.UserStoryStatus'], null=True, on_delete=models.SET_NULL)),
|
||||||
|
('default_task_status', self.gf('django.db.models.fields.related.OneToOneField')(related_name='+', unique=True, blank=True, to=orm['projects.TaskStatus'], null=True, on_delete=models.SET_NULL)),
|
||||||
|
('default_priority', self.gf('django.db.models.fields.related.OneToOneField')(related_name='+', unique=True, blank=True, to=orm['projects.Priority'], null=True, on_delete=models.SET_NULL)),
|
||||||
|
('default_severity', self.gf('django.db.models.fields.related.OneToOneField')(related_name='+', unique=True, blank=True, to=orm['projects.Severity'], null=True, on_delete=models.SET_NULL)),
|
||||||
|
('default_issue_status', self.gf('django.db.models.fields.related.OneToOneField')(related_name='+', unique=True, blank=True, to=orm['projects.IssueStatus'], null=True, on_delete=models.SET_NULL)),
|
||||||
|
('default_issue_type', self.gf('django.db.models.fields.related.OneToOneField')(related_name='+', unique=True, blank=True, to=orm['projects.IssueType'], null=True, on_delete=models.SET_NULL)),
|
||||||
|
('default_question_status', self.gf('django.db.models.fields.related.OneToOneField')(related_name='+', unique=True, blank=True, to=orm['projects.QuestionStatus'], null=True, on_delete=models.SET_NULL)),
|
||||||
|
('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=250)),
|
||||||
|
('slug', self.gf('django.db.models.fields.SlugField')(unique=True, blank=True, max_length=250)),
|
||||||
|
('description', self.gf('django.db.models.fields.TextField')()),
|
||||||
|
('created_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||||
|
('modified_date', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
|
||||||
|
('owner', self.gf('django.db.models.fields.related.ForeignKey')(related_name='owned_projects', to=orm['users.User'])),
|
||||||
|
('public', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||||
|
('last_us_ref', self.gf('django.db.models.fields.BigIntegerField')(null=True, default=1)),
|
||||||
|
('last_task_ref', self.gf('django.db.models.fields.BigIntegerField')(null=True, default=1)),
|
||||||
|
('last_issue_ref', self.gf('django.db.models.fields.BigIntegerField')(null=True, default=1)),
|
||||||
|
('total_milestones', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True, default=0)),
|
||||||
|
('total_story_points', self.gf('django.db.models.fields.FloatField')(null=True, default=None)),
|
||||||
|
('tags', self.gf('picklefield.fields.PickledObjectField')(blank=True)),
|
||||||
|
('site', self.gf('django.db.models.fields.related.ForeignKey')(related_name='projects', null=True, to=orm['domains.Domain'], default=None)),
|
||||||
|
))
|
||||||
|
db.send_create_signal('projects', ['Project'])
|
||||||
|
|
||||||
# Adding model 'Attachment'
|
# Adding model 'Attachment'
|
||||||
db.create_table('projects_attachment', (
|
db.create_table('projects_attachment', (
|
||||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
('owner', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['users.User'], related_name='change_attachments')),
|
('owner', self.gf('django.db.models.fields.related.ForeignKey')(related_name='change_attachments', to=orm['users.User'])),
|
||||||
('project', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['projects.Project'], related_name='attachments')),
|
('project', self.gf('django.db.models.fields.related.ForeignKey')(related_name='attachments', to=orm['projects.Project'])),
|
||||||
('content_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'])),
|
('content_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'])),
|
||||||
('object_id', self.gf('django.db.models.fields.PositiveIntegerField')()),
|
('object_id', self.gf('django.db.models.fields.PositiveIntegerField')()),
|
||||||
('created_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
('created_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||||
|
@ -21,45 +61,13 @@ class Migration(SchemaMigration):
|
||||||
))
|
))
|
||||||
db.send_create_signal('projects', ['Attachment'])
|
db.send_create_signal('projects', ['Attachment'])
|
||||||
|
|
||||||
# Adding model 'Membership'
|
|
||||||
db.create_table('projects_membership', (
|
|
||||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
|
||||||
('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['users.User'], related_name='memberships')),
|
|
||||||
('project', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['projects.Project'], related_name='memberships')),
|
|
||||||
('role', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['users.Role'], related_name='memberships')),
|
|
||||||
))
|
|
||||||
db.send_create_signal('projects', ['Membership'])
|
|
||||||
|
|
||||||
# Adding unique constraint on 'Membership', fields ['user', 'project']
|
|
||||||
db.create_unique('projects_membership', ['user_id', 'project_id'])
|
|
||||||
|
|
||||||
# Adding model 'Project'
|
|
||||||
db.create_table('projects_project', (
|
|
||||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
|
||||||
('uuid', self.gf('django.db.models.fields.CharField')(max_length=40, unique=True, blank=True)),
|
|
||||||
('name', self.gf('django.db.models.fields.CharField')(max_length=250, unique=True)),
|
|
||||||
('slug', self.gf('django.db.models.fields.SlugField')(max_length=250, unique=True, blank=True)),
|
|
||||||
('description', self.gf('django.db.models.fields.TextField')()),
|
|
||||||
('created_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
|
||||||
('modified_date', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
|
|
||||||
('owner', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['users.User'], related_name='owned_projects')),
|
|
||||||
('public', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
|
||||||
('last_us_ref', self.gf('django.db.models.fields.BigIntegerField')(null=True, default=1)),
|
|
||||||
('last_task_ref', self.gf('django.db.models.fields.BigIntegerField')(null=True, default=1)),
|
|
||||||
('last_issue_ref', self.gf('django.db.models.fields.BigIntegerField')(null=True, default=1)),
|
|
||||||
('total_milestones', self.gf('django.db.models.fields.IntegerField')(null=True, default=0, blank=True)),
|
|
||||||
('total_story_points', self.gf('django.db.models.fields.FloatField')(null=True, default=None)),
|
|
||||||
('tags', self.gf('picklefield.fields.PickledObjectField')(blank=True)),
|
|
||||||
))
|
|
||||||
db.send_create_signal('projects', ['Project'])
|
|
||||||
|
|
||||||
# Adding model 'UserStoryStatus'
|
# Adding model 'UserStoryStatus'
|
||||||
db.create_table('projects_userstorystatus', (
|
db.create_table('projects_userstorystatus', (
|
||||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||||
('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
|
('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
|
||||||
('is_closed', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
('is_closed', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||||
('project', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['projects.Project'], related_name='us_statuses')),
|
('project', self.gf('django.db.models.fields.related.ForeignKey')(related_name='us_statuses', to=orm['projects.Project'])),
|
||||||
))
|
))
|
||||||
db.send_create_signal('projects', ['UserStoryStatus'])
|
db.send_create_signal('projects', ['UserStoryStatus'])
|
||||||
|
|
||||||
|
@ -71,8 +79,8 @@ class Migration(SchemaMigration):
|
||||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||||
('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
|
('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
|
||||||
('value', self.gf('django.db.models.fields.FloatField')(null=True, default=None, blank=True)),
|
('value', self.gf('django.db.models.fields.FloatField')(null=True, blank=True, default=None)),
|
||||||
('project', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['projects.Project'], related_name='points')),
|
('project', self.gf('django.db.models.fields.related.ForeignKey')(related_name='points', to=orm['projects.Project'])),
|
||||||
))
|
))
|
||||||
db.send_create_signal('projects', ['Points'])
|
db.send_create_signal('projects', ['Points'])
|
||||||
|
|
||||||
|
@ -86,7 +94,7 @@ class Migration(SchemaMigration):
|
||||||
('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
|
('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
|
||||||
('is_closed', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
('is_closed', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||||
('color', self.gf('django.db.models.fields.CharField')(max_length=20, default='#999999')),
|
('color', self.gf('django.db.models.fields.CharField')(max_length=20, default='#999999')),
|
||||||
('project', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['projects.Project'], related_name='task_statuses')),
|
('project', self.gf('django.db.models.fields.related.ForeignKey')(related_name='task_statuses', to=orm['projects.Project'])),
|
||||||
))
|
))
|
||||||
db.send_create_signal('projects', ['TaskStatus'])
|
db.send_create_signal('projects', ['TaskStatus'])
|
||||||
|
|
||||||
|
@ -98,7 +106,8 @@ class Migration(SchemaMigration):
|
||||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||||
('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
|
('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
|
||||||
('project', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['projects.Project'], related_name='priorities')),
|
('color', self.gf('django.db.models.fields.CharField')(max_length=20, default='#999999')),
|
||||||
|
('project', self.gf('django.db.models.fields.related.ForeignKey')(related_name='priorities', to=orm['projects.Project'])),
|
||||||
))
|
))
|
||||||
db.send_create_signal('projects', ['Priority'])
|
db.send_create_signal('projects', ['Priority'])
|
||||||
|
|
||||||
|
@ -110,7 +119,8 @@ class Migration(SchemaMigration):
|
||||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||||
('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
|
('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
|
||||||
('project', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['projects.Project'], related_name='severities')),
|
('color', self.gf('django.db.models.fields.CharField')(max_length=20, default='#999999')),
|
||||||
|
('project', self.gf('django.db.models.fields.related.ForeignKey')(related_name='severities', to=orm['projects.Project'])),
|
||||||
))
|
))
|
||||||
db.send_create_signal('projects', ['Severity'])
|
db.send_create_signal('projects', ['Severity'])
|
||||||
|
|
||||||
|
@ -123,7 +133,8 @@ class Migration(SchemaMigration):
|
||||||
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||||
('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
|
('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
|
||||||
('is_closed', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
('is_closed', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||||
('project', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['projects.Project'], related_name='issue_statuses')),
|
('color', self.gf('django.db.models.fields.CharField')(max_length=20, default='#999999')),
|
||||||
|
('project', self.gf('django.db.models.fields.related.ForeignKey')(related_name='issue_statuses', to=orm['projects.Project'])),
|
||||||
))
|
))
|
||||||
db.send_create_signal('projects', ['IssueStatus'])
|
db.send_create_signal('projects', ['IssueStatus'])
|
||||||
|
|
||||||
|
@ -135,7 +146,8 @@ class Migration(SchemaMigration):
|
||||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||||
('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
|
('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
|
||||||
('project', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['projects.Project'], related_name='issue_types')),
|
('color', self.gf('django.db.models.fields.CharField')(max_length=20, default='#999999')),
|
||||||
|
('project', self.gf('django.db.models.fields.related.ForeignKey')(related_name='issue_types', to=orm['projects.Project'])),
|
||||||
))
|
))
|
||||||
db.send_create_signal('projects', ['IssueType'])
|
db.send_create_signal('projects', ['IssueType'])
|
||||||
|
|
||||||
|
@ -148,7 +160,8 @@ class Migration(SchemaMigration):
|
||||||
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||||
('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
|
('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
|
||||||
('is_closed', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
('is_closed', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||||
('project', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['projects.Project'], related_name='question_status')),
|
('color', self.gf('django.db.models.fields.CharField')(max_length=20, default='#999999')),
|
||||||
|
('project', self.gf('django.db.models.fields.related.ForeignKey')(related_name='question_status', to=orm['projects.Project'])),
|
||||||
))
|
))
|
||||||
db.send_create_signal('projects', ['QuestionStatus'])
|
db.send_create_signal('projects', ['QuestionStatus'])
|
||||||
|
|
||||||
|
@ -181,18 +194,15 @@ class Migration(SchemaMigration):
|
||||||
# Removing unique constraint on 'UserStoryStatus', fields ['project', 'name']
|
# Removing unique constraint on 'UserStoryStatus', fields ['project', 'name']
|
||||||
db.delete_unique('projects_userstorystatus', ['project_id', 'name'])
|
db.delete_unique('projects_userstorystatus', ['project_id', 'name'])
|
||||||
|
|
||||||
# Removing unique constraint on 'Membership', fields ['user', 'project']
|
|
||||||
db.delete_unique('projects_membership', ['user_id', 'project_id'])
|
|
||||||
|
|
||||||
# Deleting model 'Attachment'
|
|
||||||
db.delete_table('projects_attachment')
|
|
||||||
|
|
||||||
# Deleting model 'Membership'
|
# Deleting model 'Membership'
|
||||||
db.delete_table('projects_membership')
|
db.delete_table('projects_membership')
|
||||||
|
|
||||||
# Deleting model 'Project'
|
# Deleting model 'Project'
|
||||||
db.delete_table('projects_project')
|
db.delete_table('projects_project')
|
||||||
|
|
||||||
|
# Deleting model 'Attachment'
|
||||||
|
db.delete_table('projects_attachment')
|
||||||
|
|
||||||
# Deleting model 'UserStoryStatus'
|
# Deleting model 'UserStoryStatus'
|
||||||
db.delete_table('projects_userstorystatus')
|
db.delete_table('projects_userstorystatus')
|
||||||
|
|
||||||
|
@ -222,8 +232,8 @@ class Migration(SchemaMigration):
|
||||||
'auth.group': {
|
'auth.group': {
|
||||||
'Meta': {'object_name': 'Group'},
|
'Meta': {'object_name': 'Group'},
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'unique': 'True'}),
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'blank': 'True', 'symmetrical': 'False'})
|
||||||
},
|
},
|
||||||
'auth.permission': {
|
'auth.permission': {
|
||||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||||
|
@ -239,6 +249,14 @@ class Migration(SchemaMigration):
|
||||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||||
},
|
},
|
||||||
|
'domains.domain': {
|
||||||
|
'Meta': {'ordering': "('domain',)", 'object_name': 'Domain'},
|
||||||
|
'domain': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'public_register': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'scheme': ('django.db.models.fields.CharField', [], {'null': 'True', 'max_length': '60', 'default': 'None'})
|
||||||
|
},
|
||||||
'projects.attachment': {
|
'projects.attachment': {
|
||||||
'Meta': {'ordering': "['project', 'created_date']", 'object_name': 'Attachment'},
|
'Meta': {'ordering': "['project', 'created_date']", 'object_name': 'Attachment'},
|
||||||
'attached_file': ('django.db.models.fields.files.FileField', [], {'null': 'True', 'blank': 'True', 'max_length': '500'}),
|
'attached_file': ('django.db.models.fields.files.FileField', [], {'null': 'True', 'blank': 'True', 'max_length': '500'}),
|
||||||
|
@ -247,96 +265,112 @@ class Migration(SchemaMigration):
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||||
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'related_name': "'change_attachments'"}),
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'change_attachments'", 'to': "orm['users.User']"}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'attachments'"})
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attachments'", 'to': "orm['projects.Project']"})
|
||||||
},
|
},
|
||||||
'projects.issuestatus': {
|
'projects.issuestatus': {
|
||||||
'Meta': {'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'IssueStatus'},
|
'Meta': {'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'IssueStatus'},
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'issue_statuses'"})
|
|
||||||
},
|
|
||||||
'projects.issuetype': {
|
|
||||||
'Meta': {'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'IssueType'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'issue_types'"})
|
|
||||||
},
|
|
||||||
'projects.membership': {
|
|
||||||
'Meta': {'ordering': "['project', 'role', 'user']", 'unique_together': "(('user', 'project'),)", 'object_name': 'Membership'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'memberships'"}),
|
|
||||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.Role']", 'related_name': "'memberships'"}),
|
|
||||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'related_name': "'memberships'"})
|
|
||||||
},
|
|
||||||
'projects.points': {
|
|
||||||
'Meta': {'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'Points'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'points'"}),
|
|
||||||
'value': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': 'None', 'blank': 'True'})
|
|
||||||
},
|
|
||||||
'projects.priority': {
|
|
||||||
'Meta': {'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'Priority'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'priorities'"})
|
|
||||||
},
|
|
||||||
'projects.project': {
|
|
||||||
'Meta': {'ordering': "['name']", 'object_name': 'Project'},
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'members': ('django.db.models.fields.related.ManyToManyField', [], {'through': "orm['projects.Membership']", 'to': "orm['users.User']", 'symmetrical': 'False', 'related_name': "'projects'"}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '250', 'unique': 'True'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'related_name': "'owned_projects'"}),
|
|
||||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'unique': 'True', 'blank': 'True'}),
|
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
|
||||||
'total_milestones': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'default': '0', 'blank': 'True'}),
|
|
||||||
'total_story_points': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': 'None'}),
|
|
||||||
'uuid': ('django.db.models.fields.CharField', [], {'max_length': '40', 'unique': 'True', 'blank': 'True'})
|
|
||||||
},
|
|
||||||
'projects.questionstatus': {
|
|
||||||
'Meta': {'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'QuestionStatus'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'question_status'"})
|
|
||||||
},
|
|
||||||
'projects.severity': {
|
|
||||||
'Meta': {'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'Severity'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'severities'"})
|
|
||||||
},
|
|
||||||
'projects.taskstatus': {
|
|
||||||
'Meta': {'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'TaskStatus'},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'task_statuses'"})
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issue_statuses'", 'to': "orm['projects.Project']"})
|
||||||
},
|
},
|
||||||
'projects.userstorystatus': {
|
'projects.issuetype': {
|
||||||
'Meta': {'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'UserStoryStatus'},
|
'Meta': {'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'IssueType'},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issue_types'", 'to': "orm['projects.Project']"})
|
||||||
|
},
|
||||||
|
'projects.membership': {
|
||||||
|
'Meta': {'ordering': "['project', 'role']", 'object_name': 'Membership'},
|
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True', 'default': 'datetime.datetime.now'}),
|
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'null': 'True', 'max_length': '255', 'default': 'None'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['projects.Project']"}),
|
||||||
|
'role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.Role']"}),
|
||||||
|
'token': ('django.db.models.fields.CharField', [], {'unique': 'True', 'blank': 'True', 'null': 'True', 'max_length': '60', 'default': 'None'}),
|
||||||
|
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.User']", 'null': 'True', 'blank': 'True', 'default': 'None'})
|
||||||
|
},
|
||||||
|
'projects.points': {
|
||||||
|
'Meta': {'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'Points'},
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'points'", 'to': "orm['projects.Project']"}),
|
||||||
|
'value': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True', 'default': 'None'})
|
||||||
|
},
|
||||||
|
'projects.priority': {
|
||||||
|
'Meta': {'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'Priority'},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'priorities'", 'to': "orm['projects.Project']"})
|
||||||
|
},
|
||||||
|
'projects.project': {
|
||||||
|
'Meta': {'ordering': "['name']", 'object_name': 'Project'},
|
||||||
|
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'default_issue_status': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'blank': 'True', 'to': "orm['projects.IssueStatus']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
|
||||||
|
'default_issue_type': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'blank': 'True', 'to': "orm['projects.IssueType']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
|
||||||
|
'default_points': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'blank': 'True', 'to': "orm['projects.Points']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
|
||||||
|
'default_priority': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'blank': 'True', 'to': "orm['projects.Priority']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
|
||||||
|
'default_question_status': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'blank': 'True', 'to': "orm['projects.QuestionStatus']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
|
||||||
|
'default_severity': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'blank': 'True', 'to': "orm['projects.Severity']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
|
||||||
|
'default_task_status': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'blank': 'True', 'to': "orm['projects.TaskStatus']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
|
||||||
|
'default_us_status': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'blank': 'True', 'to': "orm['projects.UserStoryStatus']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
|
||||||
|
'description': ('django.db.models.fields.TextField', [], {}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
||||||
|
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
||||||
|
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
||||||
|
'members': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'projects'", 'through': "orm['projects.Membership']", 'to': "orm['users.User']", 'symmetrical': 'False'}),
|
||||||
|
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'}),
|
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_projects'", 'to': "orm['users.User']"}),
|
||||||
|
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'site': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'projects'", 'null': 'True', 'to': "orm['domains.Domain']", 'default': 'None'}),
|
||||||
|
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'blank': 'True', 'max_length': '250'}),
|
||||||
|
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
||||||
|
'total_milestones': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True', 'default': '0'}),
|
||||||
|
'total_story_points': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': 'None'})
|
||||||
|
},
|
||||||
|
'projects.questionstatus': {
|
||||||
|
'Meta': {'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'QuestionStatus'},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'us_statuses'"})
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_status'", 'to': "orm['projects.Project']"})
|
||||||
|
},
|
||||||
|
'projects.severity': {
|
||||||
|
'Meta': {'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'Severity'},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'severities'", 'to': "orm['projects.Project']"})
|
||||||
|
},
|
||||||
|
'projects.taskstatus': {
|
||||||
|
'Meta': {'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'TaskStatus'},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'task_statuses'", 'to': "orm['projects.Project']"})
|
||||||
|
},
|
||||||
|
'projects.userstorystatus': {
|
||||||
|
'Meta': {'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'UserStoryStatus'},
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'us_statuses'", 'to': "orm['projects.Project']"})
|
||||||
},
|
},
|
||||||
'users.role': {
|
'users.role': {
|
||||||
'Meta': {'ordering': "['order', 'slug']", 'object_name': 'Role'},
|
'Meta': {'ordering': "['order', 'slug']", 'object_name': 'Role'},
|
||||||
|
@ -344,31 +378,33 @@ class Migration(SchemaMigration):
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'related_name': "'roles'"}),
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'roles'", 'to': "orm['auth.Permission']", 'symmetrical': 'False'}),
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'unique': 'True', 'blank': 'True'})
|
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'blank': 'True', 'max_length': '250'})
|
||||||
},
|
},
|
||||||
'users.user': {
|
'users.user': {
|
||||||
'Meta': {'ordering': "['username']", 'object_name': 'User'},
|
'Meta': {'ordering': "['username']", 'object_name': 'User'},
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '9', 'default': "'#669933'", 'blank': 'True'}),
|
'color': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '9', 'default': "'#669933'"}),
|
||||||
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
'default_language': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "''", 'blank': 'True'}),
|
'default_language': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '20', 'default': "''"}),
|
||||||
'default_timezone': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "''", 'blank': 'True'}),
|
'default_timezone': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '20', 'default': "''"}),
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
'email': ('django.db.models.fields.EmailField', [], {'blank': 'True', 'max_length': '75'}),
|
||||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
'first_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
||||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'to': "orm['auth.Group']", 'blank': 'True', 'symmetrical': 'False'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
'last_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
||||||
|
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'notify_level': ('django.db.models.fields.CharField', [], {'max_length': '32', 'default': "'all_owned_projects'"}),
|
||||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
'photo': ('django.db.models.fields.files.FileField', [], {'null': 'True', 'blank': 'True', 'max_length': '500'}),
|
'photo': ('django.db.models.fields.files.FileField', [], {'null': 'True', 'blank': 'True', 'max_length': '500'}),
|
||||||
'token': ('django.db.models.fields.CharField', [], {'null': 'True', 'blank': 'True', 'default': 'None', 'max_length': '200'}),
|
'token': ('django.db.models.fields.CharField', [], {'null': 'True', 'blank': 'True', 'max_length': '200', 'default': 'None'}),
|
||||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'to': "orm['auth.Permission']", 'blank': 'True', 'symmetrical': 'False'}),
|
||||||
'username': ('django.db.models.fields.CharField', [], {'max_length': '30', 'unique': 'True'})
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,177 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import datetime
|
|
||||||
from south.db import db
|
|
||||||
from south.v2 import SchemaMigration
|
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(SchemaMigration):
|
|
||||||
|
|
||||||
def forwards(self, orm):
|
|
||||||
# Deleting field 'Project.uuid'
|
|
||||||
db.delete_column('projects_project', 'uuid')
|
|
||||||
|
|
||||||
|
|
||||||
def backwards(self, orm):
|
|
||||||
# Adding field 'Project.uuid'
|
|
||||||
db.add_column('projects_project', 'uuid',
|
|
||||||
self.gf('django.db.models.fields.CharField')(unique=True, default='', max_length=40, blank=True),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
|
|
||||||
models = {
|
|
||||||
'auth.group': {
|
|
||||||
'Meta': {'object_name': 'Group'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
|
||||||
},
|
|
||||||
'auth.permission': {
|
|
||||||
'Meta': {'object_name': 'Permission', 'unique_together': "(('content_type', 'codename'),)", 'ordering': "('content_type__app_label', 'content_type__model', 'codename')"},
|
|
||||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
|
||||||
},
|
|
||||||
'contenttypes.contenttype': {
|
|
||||||
'Meta': {'db_table': "'django_content_type'", 'object_name': 'ContentType', 'unique_together': "(('app_label', 'model'),)", 'ordering': "('name',)"},
|
|
||||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
|
||||||
},
|
|
||||||
'projects.attachment': {
|
|
||||||
'Meta': {'object_name': 'Attachment', 'ordering': "['project', 'created_date']"},
|
|
||||||
'attached_file': ('django.db.models.fields.files.FileField', [], {'null': 'True', 'max_length': '500', 'blank': 'True'}),
|
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'change_attachments'", 'to': "orm['users.User']"}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attachments'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.issuestatus': {
|
|
||||||
'Meta': {'object_name': 'IssueStatus', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'name']"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issue_statuses'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.issuetype': {
|
|
||||||
'Meta': {'object_name': 'IssueType', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'name']"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issue_types'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.membership': {
|
|
||||||
'Meta': {'object_name': 'Membership', 'unique_together': "(('user', 'project'),)", 'ordering': "['project', 'role', 'user']"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['projects.Project']"}),
|
|
||||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.Role']"}),
|
|
||||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.User']"})
|
|
||||||
},
|
|
||||||
'projects.points': {
|
|
||||||
'Meta': {'object_name': 'Points', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'name']"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'points'", 'to': "orm['projects.Project']"}),
|
|
||||||
'value': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': 'None', 'blank': 'True'})
|
|
||||||
},
|
|
||||||
'projects.priority': {
|
|
||||||
'Meta': {'object_name': 'Priority', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'name']"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'priorities'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.project': {
|
|
||||||
'Meta': {'object_name': 'Project', 'ordering': "['name']"},
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'members': ('django.db.models.fields.related.ManyToManyField', [], {'through': "orm['projects.Membership']", 'related_name': "'projects'", 'symmetrical': 'False', 'to': "orm['users.User']"}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_projects'", 'to': "orm['users.User']"}),
|
|
||||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '250', 'blank': 'True'}),
|
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
|
||||||
'total_milestones': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'default': '0', 'blank': 'True'}),
|
|
||||||
'total_story_points': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': 'None'})
|
|
||||||
},
|
|
||||||
'projects.questionstatus': {
|
|
||||||
'Meta': {'object_name': 'QuestionStatus', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'name']"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_status'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.severity': {
|
|
||||||
'Meta': {'object_name': 'Severity', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'name']"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'severities'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.taskstatus': {
|
|
||||||
'Meta': {'object_name': 'TaskStatus', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'name']"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'default': "'#999999'", 'max_length': '20'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'task_statuses'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.userstorystatus': {
|
|
||||||
'Meta': {'object_name': 'UserStoryStatus', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'name']"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'us_statuses'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'users.role': {
|
|
||||||
'Meta': {'object_name': 'Role', 'ordering': "['order', 'slug']"},
|
|
||||||
'computable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'roles'", 'symmetrical': 'False', 'to': "orm['auth.Permission']"}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '250', 'blank': 'True'})
|
|
||||||
},
|
|
||||||
'users.user': {
|
|
||||||
'Meta': {'object_name': 'User', 'ordering': "['username']"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'default': "'#669933'", 'max_length': '9', 'blank': 'True'}),
|
|
||||||
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'default_language': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '20', 'blank': 'True'}),
|
|
||||||
'default_timezone': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '20', 'blank': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
|
||||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
|
||||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'symmetrical': 'False', 'to': "orm['auth.Group']", 'blank': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
|
||||||
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'notify_level': ('django.db.models.fields.CharField', [], {'default': "'all_owned_projects'", 'max_length': '32'}),
|
|
||||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
|
||||||
'photo': ('django.db.models.fields.files.FileField', [], {'null': 'True', 'max_length': '500', 'blank': 'True'}),
|
|
||||||
'token': ('django.db.models.fields.CharField', [], {'null': 'True', 'default': 'None', 'max_length': '200', 'blank': 'True'}),
|
|
||||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'symmetrical': 'False', 'to': "orm['auth.Permission']", 'blank': 'True'}),
|
|
||||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
complete_apps = ['projects']
|
|
|
@ -1,241 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import datetime
|
|
||||||
from south.db import db
|
|
||||||
from south.v2 import SchemaMigration
|
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(SchemaMigration):
|
|
||||||
|
|
||||||
def forwards(self, orm):
|
|
||||||
# Adding field 'Project.default_points'
|
|
||||||
db.add_column('projects_project', 'default_points',
|
|
||||||
self.gf('django.db.models.fields.related.OneToOneField')(null=True, to=orm['projects.Points'], unique=True, related_name='+', on_delete=models.PROTECT, blank=True),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
# Adding field 'Project.default_us_status'
|
|
||||||
db.add_column('projects_project', 'default_us_status',
|
|
||||||
self.gf('django.db.models.fields.related.OneToOneField')(null=True, to=orm['projects.UserStoryStatus'], unique=True, related_name='+', on_delete=models.PROTECT, blank=True),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
# Adding field 'Project.default_task_status'
|
|
||||||
db.add_column('projects_project', 'default_task_status',
|
|
||||||
self.gf('django.db.models.fields.related.OneToOneField')(null=True, to=orm['projects.TaskStatus'], unique=True, related_name='+', on_delete=models.PROTECT, blank=True),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
# Adding field 'Project.default_priority'
|
|
||||||
db.add_column('projects_project', 'default_priority',
|
|
||||||
self.gf('django.db.models.fields.related.OneToOneField')(null=True, to=orm['projects.Priority'], unique=True, related_name='+', on_delete=models.PROTECT, blank=True),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
# Adding field 'Project.default_severity'
|
|
||||||
db.add_column('projects_project', 'default_severity',
|
|
||||||
self.gf('django.db.models.fields.related.OneToOneField')(null=True, to=orm['projects.Severity'], unique=True, related_name='+', on_delete=models.PROTECT, blank=True),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
# Adding field 'Project.default_issue_status'
|
|
||||||
db.add_column('projects_project', 'default_issue_status',
|
|
||||||
self.gf('django.db.models.fields.related.OneToOneField')(null=True, to=orm['projects.IssueStatus'], unique=True, related_name='+', on_delete=models.PROTECT, blank=True),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
# Adding field 'Project.default_issue_type'
|
|
||||||
db.add_column('projects_project', 'default_issue_type',
|
|
||||||
self.gf('django.db.models.fields.related.OneToOneField')(null=True, to=orm['projects.IssueType'], unique=True, related_name='+', on_delete=models.PROTECT, blank=True),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
# Adding field 'Project.default_question_status'
|
|
||||||
db.add_column('projects_project', 'default_question_status',
|
|
||||||
self.gf('django.db.models.fields.related.OneToOneField')(null=True, to=orm['projects.QuestionStatus'], unique=True, related_name='+', on_delete=models.PROTECT, blank=True),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
|
|
||||||
def backwards(self, orm):
|
|
||||||
# Deleting field 'Project.default_points'
|
|
||||||
db.delete_column('projects_project', 'default_points_id')
|
|
||||||
|
|
||||||
# Deleting field 'Project.default_us_status'
|
|
||||||
db.delete_column('projects_project', 'default_us_status_id')
|
|
||||||
|
|
||||||
# Deleting field 'Project.default_task_status'
|
|
||||||
db.delete_column('projects_project', 'default_task_status_id')
|
|
||||||
|
|
||||||
# Deleting field 'Project.default_priority'
|
|
||||||
db.delete_column('projects_project', 'default_priority_id')
|
|
||||||
|
|
||||||
# Deleting field 'Project.default_severity'
|
|
||||||
db.delete_column('projects_project', 'default_severity_id')
|
|
||||||
|
|
||||||
# Deleting field 'Project.default_issue_status'
|
|
||||||
db.delete_column('projects_project', 'default_issue_status_id')
|
|
||||||
|
|
||||||
# Deleting field 'Project.default_issue_type'
|
|
||||||
db.delete_column('projects_project', 'default_issue_type_id')
|
|
||||||
|
|
||||||
# Deleting field 'Project.default_question_status'
|
|
||||||
db.delete_column('projects_project', 'default_question_status_id')
|
|
||||||
|
|
||||||
|
|
||||||
models = {
|
|
||||||
'auth.group': {
|
|
||||||
'Meta': {'object_name': 'Group'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'to': "orm['auth.Permission']", 'symmetrical': 'False'})
|
|
||||||
},
|
|
||||||
'auth.permission': {
|
|
||||||
'Meta': {'object_name': 'Permission', 'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)"},
|
|
||||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
|
||||||
},
|
|
||||||
'contenttypes.contenttype': {
|
|
||||||
'Meta': {'db_table': "'django_content_type'", 'object_name': 'ContentType', 'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)"},
|
|
||||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
|
||||||
},
|
|
||||||
'projects.attachment': {
|
|
||||||
'Meta': {'object_name': 'Attachment', 'ordering': "['project', 'created_date']"},
|
|
||||||
'attached_file': ('django.db.models.fields.files.FileField', [], {'null': 'True', 'max_length': '500', 'blank': 'True'}),
|
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now': 'True'}),
|
|
||||||
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'related_name': "'change_attachments'"}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'attachments'"})
|
|
||||||
},
|
|
||||||
'projects.issuestatus': {
|
|
||||||
'Meta': {'object_name': 'IssueStatus', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'issue_statuses'"})
|
|
||||||
},
|
|
||||||
'projects.issuetype': {
|
|
||||||
'Meta': {'object_name': 'IssueType', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'issue_types'"})
|
|
||||||
},
|
|
||||||
'projects.membership': {
|
|
||||||
'Meta': {'object_name': 'Membership', 'ordering': "['project', 'role', 'user']", 'unique_together': "(('user', 'project'),)"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'memberships'"}),
|
|
||||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.Role']", 'related_name': "'memberships'"}),
|
|
||||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'related_name': "'memberships'"})
|
|
||||||
},
|
|
||||||
'projects.points': {
|
|
||||||
'Meta': {'object_name': 'Points', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'points'"}),
|
|
||||||
'value': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': 'None', 'blank': 'True'})
|
|
||||||
},
|
|
||||||
'projects.priority': {
|
|
||||||
'Meta': {'object_name': 'Priority', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'priorities'"})
|
|
||||||
},
|
|
||||||
'projects.project': {
|
|
||||||
'Meta': {'object_name': 'Project', 'ordering': "['name']"},
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
|
||||||
'default_issue_status': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'to': "orm['projects.IssueStatus']", 'unique': 'True', 'related_name': "'+'", 'on_delete': 'models.PROTECT', 'blank': 'True'}),
|
|
||||||
'default_issue_type': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'to': "orm['projects.IssueType']", 'unique': 'True', 'related_name': "'+'", 'on_delete': 'models.PROTECT', 'blank': 'True'}),
|
|
||||||
'default_points': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'to': "orm['projects.Points']", 'unique': 'True', 'related_name': "'+'", 'on_delete': 'models.PROTECT', 'blank': 'True'}),
|
|
||||||
'default_priority': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'to': "orm['projects.Priority']", 'unique': 'True', 'related_name': "'+'", 'on_delete': 'models.PROTECT', 'blank': 'True'}),
|
|
||||||
'default_question_status': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'to': "orm['projects.QuestionStatus']", 'unique': 'True', 'related_name': "'+'", 'on_delete': 'models.PROTECT', 'blank': 'True'}),
|
|
||||||
'default_severity': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'to': "orm['projects.Severity']", 'unique': 'True', 'related_name': "'+'", 'on_delete': 'models.PROTECT', 'blank': 'True'}),
|
|
||||||
'default_task_status': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'to': "orm['projects.TaskStatus']", 'unique': 'True', 'related_name': "'+'", 'on_delete': 'models.PROTECT', 'blank': 'True'}),
|
|
||||||
'default_us_status': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'to': "orm['projects.UserStoryStatus']", 'unique': 'True', 'related_name': "'+'", 'on_delete': 'models.PROTECT', 'blank': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'members': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'projects'", 'through': "orm['projects.Membership']", 'to': "orm['users.User']", 'symmetrical': 'False'}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'related_name': "'owned_projects'"}),
|
|
||||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'blank': 'True', 'unique': 'True', 'max_length': '250'}),
|
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
|
||||||
'total_milestones': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'default': '0', 'blank': 'True'}),
|
|
||||||
'total_story_points': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': 'None'})
|
|
||||||
},
|
|
||||||
'projects.questionstatus': {
|
|
||||||
'Meta': {'object_name': 'QuestionStatus', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'question_status'"})
|
|
||||||
},
|
|
||||||
'projects.severity': {
|
|
||||||
'Meta': {'object_name': 'Severity', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'severities'"})
|
|
||||||
},
|
|
||||||
'projects.taskstatus': {
|
|
||||||
'Meta': {'object_name': 'TaskStatus', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'task_statuses'"})
|
|
||||||
},
|
|
||||||
'projects.userstorystatus': {
|
|
||||||
'Meta': {'object_name': 'UserStoryStatus', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'us_statuses'"})
|
|
||||||
},
|
|
||||||
'users.role': {
|
|
||||||
'Meta': {'object_name': 'Role', 'ordering': "['order', 'slug']"},
|
|
||||||
'computable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'roles'", 'to': "orm['auth.Permission']", 'symmetrical': 'False'}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'blank': 'True', 'unique': 'True', 'max_length': '250'})
|
|
||||||
},
|
|
||||||
'users.user': {
|
|
||||||
'Meta': {'object_name': 'User', 'ordering': "['username']"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '9', 'default': "'#669933'"}),
|
|
||||||
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'default_language': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '20', 'default': "''"}),
|
|
||||||
'default_timezone': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '20', 'default': "''"}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'blank': 'True', 'max_length': '75'}),
|
|
||||||
'first_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
|
||||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'blank': 'True', 'to': "orm['auth.Group']", 'symmetrical': 'False'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'last_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
|
||||||
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'notify_level': ('django.db.models.fields.CharField', [], {'max_length': '32', 'default': "'all_owned_projects'"}),
|
|
||||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
|
||||||
'photo': ('django.db.models.fields.files.FileField', [], {'null': 'True', 'max_length': '500', 'blank': 'True'}),
|
|
||||||
'token': ('django.db.models.fields.CharField', [], {'null': 'True', 'max_length': '200', 'default': 'None', 'blank': 'True'}),
|
|
||||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'blank': 'True', 'to': "orm['auth.Permission']", 'symmetrical': 'False'}),
|
|
||||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
complete_apps = ['projects']
|
|
|
@ -1,270 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import datetime
|
|
||||||
from south.db import db
|
|
||||||
from south.v2 import SchemaMigration
|
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(SchemaMigration):
|
|
||||||
|
|
||||||
def forwards(self, orm):
|
|
||||||
# Adding field 'IssueStatus.color'
|
|
||||||
db.add_column('projects_issuestatus', 'color',
|
|
||||||
self.gf('django.db.models.fields.CharField')(max_length=20, default='#999999'),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
# Adding field 'Severity.color'
|
|
||||||
db.add_column('projects_severity', 'color',
|
|
||||||
self.gf('django.db.models.fields.CharField')(max_length=20, default='#999999'),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
# Adding field 'QuestionStatus.color'
|
|
||||||
db.add_column('projects_questionstatus', 'color',
|
|
||||||
self.gf('django.db.models.fields.CharField')(max_length=20, default='#999999'),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
# Adding field 'IssueType.color'
|
|
||||||
db.add_column('projects_issuetype', 'color',
|
|
||||||
self.gf('django.db.models.fields.CharField')(max_length=20, default='#999999'),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
|
|
||||||
# Changing field 'Project.default_issue_type'
|
|
||||||
db.alter_column('projects_project', 'default_issue_type_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, null=True, on_delete=models.SET_NULL, to=orm['projects.IssueType']))
|
|
||||||
|
|
||||||
# Changing field 'Project.default_points'
|
|
||||||
db.alter_column('projects_project', 'default_points_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, null=True, on_delete=models.SET_NULL, to=orm['projects.Points']))
|
|
||||||
|
|
||||||
# Changing field 'Project.default_priority'
|
|
||||||
db.alter_column('projects_project', 'default_priority_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, null=True, on_delete=models.SET_NULL, to=orm['projects.Priority']))
|
|
||||||
|
|
||||||
# Changing field 'Project.default_question_status'
|
|
||||||
db.alter_column('projects_project', 'default_question_status_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, null=True, on_delete=models.SET_NULL, to=orm['projects.QuestionStatus']))
|
|
||||||
|
|
||||||
# Changing field 'Project.default_us_status'
|
|
||||||
db.alter_column('projects_project', 'default_us_status_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, null=True, on_delete=models.SET_NULL, to=orm['projects.UserStoryStatus']))
|
|
||||||
|
|
||||||
# Changing field 'Project.default_severity'
|
|
||||||
db.alter_column('projects_project', 'default_severity_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, null=True, on_delete=models.SET_NULL, to=orm['projects.Severity']))
|
|
||||||
|
|
||||||
# Changing field 'Project.default_task_status'
|
|
||||||
db.alter_column('projects_project', 'default_task_status_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, null=True, on_delete=models.SET_NULL, to=orm['projects.TaskStatus']))
|
|
||||||
|
|
||||||
# Changing field 'Project.default_issue_status'
|
|
||||||
db.alter_column('projects_project', 'default_issue_status_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, null=True, on_delete=models.SET_NULL, to=orm['projects.IssueStatus']))
|
|
||||||
# Adding field 'Priority.color'
|
|
||||||
db.add_column('projects_priority', 'color',
|
|
||||||
self.gf('django.db.models.fields.CharField')(max_length=20, default='#999999'),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
|
|
||||||
def backwards(self, orm):
|
|
||||||
# Deleting field 'IssueStatus.color'
|
|
||||||
db.delete_column('projects_issuestatus', 'color')
|
|
||||||
|
|
||||||
# Deleting field 'Severity.color'
|
|
||||||
db.delete_column('projects_severity', 'color')
|
|
||||||
|
|
||||||
# Deleting field 'QuestionStatus.color'
|
|
||||||
db.delete_column('projects_questionstatus', 'color')
|
|
||||||
|
|
||||||
# Deleting field 'IssueType.color'
|
|
||||||
db.delete_column('projects_issuetype', 'color')
|
|
||||||
|
|
||||||
|
|
||||||
# Changing field 'Project.default_issue_type'
|
|
||||||
db.alter_column('projects_project', 'default_issue_type_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, null=True, on_delete=models.PROTECT, to=orm['projects.IssueType']))
|
|
||||||
|
|
||||||
# Changing field 'Project.default_points'
|
|
||||||
db.alter_column('projects_project', 'default_points_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, null=True, on_delete=models.PROTECT, to=orm['projects.Points']))
|
|
||||||
|
|
||||||
# Changing field 'Project.default_priority'
|
|
||||||
db.alter_column('projects_project', 'default_priority_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, null=True, on_delete=models.PROTECT, to=orm['projects.Priority']))
|
|
||||||
|
|
||||||
# Changing field 'Project.default_question_status'
|
|
||||||
db.alter_column('projects_project', 'default_question_status_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, null=True, on_delete=models.PROTECT, to=orm['projects.QuestionStatus']))
|
|
||||||
|
|
||||||
# Changing field 'Project.default_us_status'
|
|
||||||
db.alter_column('projects_project', 'default_us_status_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, null=True, on_delete=models.PROTECT, to=orm['projects.UserStoryStatus']))
|
|
||||||
|
|
||||||
# Changing field 'Project.default_severity'
|
|
||||||
db.alter_column('projects_project', 'default_severity_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, null=True, on_delete=models.PROTECT, to=orm['projects.Severity']))
|
|
||||||
|
|
||||||
# Changing field 'Project.default_task_status'
|
|
||||||
db.alter_column('projects_project', 'default_task_status_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, null=True, on_delete=models.PROTECT, to=orm['projects.TaskStatus']))
|
|
||||||
|
|
||||||
# Changing field 'Project.default_issue_status'
|
|
||||||
db.alter_column('projects_project', 'default_issue_status_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, null=True, on_delete=models.PROTECT, to=orm['projects.IssueStatus']))
|
|
||||||
# Deleting field 'Priority.color'
|
|
||||||
db.delete_column('projects_priority', 'color')
|
|
||||||
|
|
||||||
|
|
||||||
models = {
|
|
||||||
'auth.group': {
|
|
||||||
'Meta': {'object_name': 'Group'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'unique': 'True'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'blank': 'True', 'symmetrical': 'False'})
|
|
||||||
},
|
|
||||||
'auth.permission': {
|
|
||||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'object_name': 'Permission', 'unique_together': "(('content_type', 'codename'),)"},
|
|
||||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
|
||||||
},
|
|
||||||
'contenttypes.contenttype': {
|
|
||||||
'Meta': {'ordering': "('name',)", 'db_table': "'django_content_type'", 'object_name': 'ContentType', 'unique_together': "(('app_label', 'model'),)"},
|
|
||||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
|
||||||
},
|
|
||||||
'projects.attachment': {
|
|
||||||
'Meta': {'ordering': "['project', 'created_date']", 'object_name': 'Attachment'},
|
|
||||||
'attached_file': ('django.db.models.fields.files.FileField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
|
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'change_attachments'", 'to': "orm['users.User']"}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attachments'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.issuestatus': {
|
|
||||||
'Meta': {'ordering': "['project', 'order', 'name']", 'object_name': 'IssueStatus', 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issue_statuses'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.issuetype': {
|
|
||||||
'Meta': {'ordering': "['project', 'order', 'name']", 'object_name': 'IssueType', 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issue_types'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.membership': {
|
|
||||||
'Meta': {'ordering': "['project', 'role', 'user']", 'object_name': 'Membership', 'unique_together': "(('user', 'project'),)"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['projects.Project']"}),
|
|
||||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.Role']"}),
|
|
||||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.User']"})
|
|
||||||
},
|
|
||||||
'projects.points': {
|
|
||||||
'Meta': {'ordering': "['project', 'order', 'name']", 'object_name': 'Points', 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'points'", 'to': "orm['projects.Project']"}),
|
|
||||||
'value': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True', 'default': 'None'})
|
|
||||||
},
|
|
||||||
'projects.priority': {
|
|
||||||
'Meta': {'ordering': "['project', 'order', 'name']", 'object_name': 'Priority', 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'priorities'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.project': {
|
|
||||||
'Meta': {'ordering': "['name']", 'object_name': 'Project'},
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
|
||||||
'default_issue_status': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'null': 'True', 'on_delete': 'models.SET_NULL', 'related_name': "'+'", 'blank': 'True', 'to': "orm['projects.IssueStatus']"}),
|
|
||||||
'default_issue_type': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'null': 'True', 'on_delete': 'models.SET_NULL', 'related_name': "'+'", 'blank': 'True', 'to': "orm['projects.IssueType']"}),
|
|
||||||
'default_points': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'null': 'True', 'on_delete': 'models.SET_NULL', 'related_name': "'+'", 'blank': 'True', 'to': "orm['projects.Points']"}),
|
|
||||||
'default_priority': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'null': 'True', 'on_delete': 'models.SET_NULL', 'related_name': "'+'", 'blank': 'True', 'to': "orm['projects.Priority']"}),
|
|
||||||
'default_question_status': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'null': 'True', 'on_delete': 'models.SET_NULL', 'related_name': "'+'", 'blank': 'True', 'to': "orm['projects.QuestionStatus']"}),
|
|
||||||
'default_severity': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'null': 'True', 'on_delete': 'models.SET_NULL', 'related_name': "'+'", 'blank': 'True', 'to': "orm['projects.Severity']"}),
|
|
||||||
'default_task_status': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'null': 'True', 'on_delete': 'models.SET_NULL', 'related_name': "'+'", 'blank': 'True', 'to': "orm['projects.TaskStatus']"}),
|
|
||||||
'default_us_status': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'null': 'True', 'on_delete': 'models.SET_NULL', 'related_name': "'+'", 'blank': 'True', 'to': "orm['projects.UserStoryStatus']"}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'members': ('django.db.models.fields.related.ManyToManyField', [], {'through': "orm['projects.Membership']", 'symmetrical': 'False', 'related_name': "'projects'", 'to': "orm['users.User']"}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '250', 'unique': 'True'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_projects'", 'to': "orm['users.User']"}),
|
|
||||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'blank': 'True', 'unique': 'True'}),
|
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
|
||||||
'total_milestones': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True', 'default': '0'}),
|
|
||||||
'total_story_points': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': 'None'})
|
|
||||||
},
|
|
||||||
'projects.questionstatus': {
|
|
||||||
'Meta': {'ordering': "['project', 'order', 'name']", 'object_name': 'QuestionStatus', 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_status'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.severity': {
|
|
||||||
'Meta': {'ordering': "['project', 'order', 'name']", 'object_name': 'Severity', 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'severities'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.taskstatus': {
|
|
||||||
'Meta': {'ordering': "['project', 'order', 'name']", 'object_name': 'TaskStatus', 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'task_statuses'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.userstorystatus': {
|
|
||||||
'Meta': {'ordering': "['project', 'order', 'name']", 'object_name': 'UserStoryStatus', 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'us_statuses'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'users.role': {
|
|
||||||
'Meta': {'ordering': "['order', 'slug']", 'object_name': 'Role'},
|
|
||||||
'computable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'roles'", 'to': "orm['auth.Permission']"}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'blank': 'True', 'unique': 'True'})
|
|
||||||
},
|
|
||||||
'users.user': {
|
|
||||||
'Meta': {'ordering': "['username']", 'object_name': 'User'},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '9', 'blank': 'True', 'default': "'#669933'"}),
|
|
||||||
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'default_language': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True', 'default': "''"}),
|
|
||||||
'default_timezone': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True', 'default': "''"}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
|
||||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
|
||||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'user_set'", 'blank': 'True', 'to': "orm['auth.Group']"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
|
||||||
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'notify_level': ('django.db.models.fields.CharField', [], {'max_length': '32', 'default': "'all_owned_projects'"}),
|
|
||||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
|
||||||
'photo': ('django.db.models.fields.files.FileField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
|
|
||||||
'token': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'default': 'None', 'blank': 'True'}),
|
|
||||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'user_set'", 'blank': 'True', 'to': "orm['auth.Permission']"}),
|
|
||||||
'username': ('django.db.models.fields.CharField', [], {'max_length': '30', 'unique': 'True'})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
complete_apps = ['projects']
|
|
|
@ -1,242 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import datetime
|
|
||||||
from south.db import db
|
|
||||||
from south.v2 import SchemaMigration
|
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(SchemaMigration):
|
|
||||||
|
|
||||||
def forwards(self, orm):
|
|
||||||
# Removing unique constraint on 'Membership', fields ['user', 'project']
|
|
||||||
db.delete_unique('projects_membership', ['user_id', 'project_id'])
|
|
||||||
|
|
||||||
# Adding field 'Project.site'
|
|
||||||
db.add_column('projects_project', 'site',
|
|
||||||
self.gf('django.db.models.fields.related.ForeignKey')(default=None, related_name='projects', null=True, to=orm['base.Site']),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
# Adding field 'Membership.email'
|
|
||||||
db.add_column('projects_membership', 'email',
|
|
||||||
self.gf('django.db.models.fields.EmailField')(max_length=255, default=None, null=True),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
# Adding field 'Membership.created_at'
|
|
||||||
db.add_column('projects_membership', 'created_at',
|
|
||||||
self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now, blank=True, auto_now_add=True),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
# Adding field 'Membership.token'
|
|
||||||
db.add_column('projects_membership', 'token',
|
|
||||||
self.gf('django.db.models.fields.CharField')(max_length=60, default=None, blank=True, null=True, unique=True),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
|
|
||||||
# Changing field 'Membership.user'
|
|
||||||
db.alter_column('projects_membership', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['users.User']))
|
|
||||||
|
|
||||||
def backwards(self, orm):
|
|
||||||
# Deleting field 'Project.site'
|
|
||||||
db.delete_column('projects_project', 'site_id')
|
|
||||||
|
|
||||||
# Deleting field 'Membership.email'
|
|
||||||
db.delete_column('projects_membership', 'email')
|
|
||||||
|
|
||||||
# Deleting field 'Membership.created_at'
|
|
||||||
db.delete_column('projects_membership', 'created_at')
|
|
||||||
|
|
||||||
# Deleting field 'Membership.token'
|
|
||||||
db.delete_column('projects_membership', 'token')
|
|
||||||
|
|
||||||
|
|
||||||
# User chose to not deal with backwards NULL issues for 'Membership.user'
|
|
||||||
raise RuntimeError("Cannot reverse this migration. 'Membership.user' and its values cannot be restored.")
|
|
||||||
|
|
||||||
# The following code is provided here to aid in writing a correct migration
|
|
||||||
# Changing field 'Membership.user'
|
|
||||||
db.alter_column('projects_membership', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['users.User']))
|
|
||||||
# Adding unique constraint on 'Membership', fields ['user', 'project']
|
|
||||||
db.create_unique('projects_membership', ['user_id', 'project_id'])
|
|
||||||
|
|
||||||
|
|
||||||
models = {
|
|
||||||
'auth.group': {
|
|
||||||
'Meta': {'object_name': 'Group'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'unique': 'True'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'blank': 'True', 'to': "orm['auth.Permission']"})
|
|
||||||
},
|
|
||||||
'auth.permission': {
|
|
||||||
'Meta': {'object_name': 'Permission', 'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)"},
|
|
||||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
|
||||||
},
|
|
||||||
'base.site': {
|
|
||||||
'Meta': {'object_name': 'Site', 'ordering': "('domain',)"},
|
|
||||||
'domain': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'public_register': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'scheme': ('django.db.models.fields.CharField', [], {'max_length': '60', 'default': 'None', 'null': 'True'})
|
|
||||||
},
|
|
||||||
'contenttypes.contenttype': {
|
|
||||||
'Meta': {'object_name': 'ContentType', 'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'db_table': "'django_content_type'"},
|
|
||||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
|
||||||
},
|
|
||||||
'projects.attachment': {
|
|
||||||
'Meta': {'object_name': 'Attachment', 'ordering': "['project', 'created_date']"},
|
|
||||||
'attached_file': ('django.db.models.fields.files.FileField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
|
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'change_attachments'", 'to': "orm['users.User']"}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attachments'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.issuestatus': {
|
|
||||||
'Meta': {'object_name': 'IssueStatus', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issue_statuses'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.issuetype': {
|
|
||||||
'Meta': {'object_name': 'IssueType', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issue_types'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.membership': {
|
|
||||||
'Meta': {'object_name': 'Membership', 'ordering': "['project', 'role']"},
|
|
||||||
'created_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True', 'auto_now_add': 'True'}),
|
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'default': 'None', 'null': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['projects.Project']"}),
|
|
||||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.Role']"}),
|
|
||||||
'token': ('django.db.models.fields.CharField', [], {'max_length': '60', 'default': 'None', 'blank': 'True', 'null': 'True', 'unique': 'True'}),
|
|
||||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'memberships'", 'null': 'True', 'to': "orm['users.User']", 'blank': 'True'})
|
|
||||||
},
|
|
||||||
'projects.points': {
|
|
||||||
'Meta': {'object_name': 'Points', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'points'", 'to': "orm['projects.Project']"}),
|
|
||||||
'value': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'})
|
|
||||||
},
|
|
||||||
'projects.priority': {
|
|
||||||
'Meta': {'object_name': 'Priority', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'priorities'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.project': {
|
|
||||||
'Meta': {'object_name': 'Project', 'ordering': "['name']"},
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
|
||||||
'default_issue_status': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['projects.IssueStatus']", 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
|
|
||||||
'default_issue_type': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['projects.IssueType']", 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
|
|
||||||
'default_points': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['projects.Points']", 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
|
|
||||||
'default_priority': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['projects.Priority']", 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
|
|
||||||
'default_question_status': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['projects.QuestionStatus']", 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
|
|
||||||
'default_severity': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['projects.Severity']", 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
|
|
||||||
'default_task_status': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['projects.TaskStatus']", 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
|
|
||||||
'default_us_status': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['projects.UserStoryStatus']", 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
|
||||||
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
|
||||||
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
|
||||||
'members': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'projects'", 'through': "orm['projects.Membership']", 'to': "orm['users.User']"}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '250', 'unique': 'True'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_projects'", 'to': "orm['users.User']"}),
|
|
||||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'site': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'projects'", 'null': 'True', 'to': "orm['base.Site']"}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'blank': 'True', 'unique': 'True'}),
|
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
|
||||||
'total_milestones': ('django.db.models.fields.IntegerField', [], {'default': '0', 'null': 'True', 'blank': 'True'}),
|
|
||||||
'total_story_points': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True'})
|
|
||||||
},
|
|
||||||
'projects.questionstatus': {
|
|
||||||
'Meta': {'object_name': 'QuestionStatus', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_status'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.severity': {
|
|
||||||
'Meta': {'object_name': 'Severity', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'severities'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.taskstatus': {
|
|
||||||
'Meta': {'object_name': 'TaskStatus', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'task_statuses'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.userstorystatus': {
|
|
||||||
'Meta': {'object_name': 'UserStoryStatus', 'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'us_statuses'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'users.role': {
|
|
||||||
'Meta': {'object_name': 'Role', 'ordering': "['order', 'slug']"},
|
|
||||||
'computable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'roles'", 'to': "orm['auth.Permission']"}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'blank': 'True', 'unique': 'True'})
|
|
||||||
},
|
|
||||||
'users.user': {
|
|
||||||
'Meta': {'object_name': 'User', 'ordering': "['username']"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '9', 'default': "'#669933'", 'blank': 'True'}),
|
|
||||||
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'default_language': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "''", 'blank': 'True'}),
|
|
||||||
'default_timezone': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "''", 'blank': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
|
||||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
|
||||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'user_set'", 'blank': 'True', 'to': "orm['auth.Group']"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
|
||||||
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'notify_level': ('django.db.models.fields.CharField', [], {'max_length': '32', 'default': "'all_owned_projects'"}),
|
|
||||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
|
||||||
'photo': ('django.db.models.fields.files.FileField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
|
|
||||||
'token': ('django.db.models.fields.CharField', [], {'max_length': '200', 'default': 'None', 'null': 'True', 'blank': 'True'}),
|
|
||||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'user_set'", 'blank': 'True', 'to': "orm['auth.Permission']"}),
|
|
||||||
'username': ('django.db.models.fields.CharField', [], {'max_length': '30', 'unique': 'True'})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
complete_apps = ['projects']
|
|
|
@ -1,210 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import datetime
|
|
||||||
from south.db import db
|
|
||||||
from south.v2 import DataMigration
|
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
class Migration(DataMigration):
|
|
||||||
depends_on = (
|
|
||||||
("base", "0003_initial_sites_data"),
|
|
||||||
)
|
|
||||||
|
|
||||||
def forwards(self, orm):
|
|
||||||
"Write your forwards methods here."
|
|
||||||
# Note: Don't use "from appname.models import ModelName".
|
|
||||||
# Use orm.ModelName to refer to models in this application,
|
|
||||||
# and orm['appname.ModelName'] for models in other applications.
|
|
||||||
site = orm["base.Site"].objects.get(pk=1)
|
|
||||||
for project in orm["projects.Project"].objects.all():
|
|
||||||
project.site = site
|
|
||||||
project.save()
|
|
||||||
|
|
||||||
for member in orm["projects.Membership"].objects.all():
|
|
||||||
member.email = member.user.email
|
|
||||||
member.save()
|
|
||||||
|
|
||||||
def backwards(self, orm):
|
|
||||||
"Write your backwards methods here."
|
|
||||||
|
|
||||||
models = {
|
|
||||||
'auth.group': {
|
|
||||||
'Meta': {'object_name': 'Group'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'unique': 'True'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'blank': 'True', 'to': "orm['auth.Permission']"})
|
|
||||||
},
|
|
||||||
'auth.permission': {
|
|
||||||
'Meta': {'object_name': 'Permission', 'unique_together': "(('content_type', 'codename'),)", 'ordering': "('content_type__app_label', 'content_type__model', 'codename')"},
|
|
||||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
|
||||||
},
|
|
||||||
'base.site': {
|
|
||||||
'Meta': {'object_name': 'Site', 'ordering': "('domain',)"},
|
|
||||||
'domain': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'public_register': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'scheme': ('django.db.models.fields.CharField', [], {'max_length': '60', 'default': 'None', 'null': 'True'})
|
|
||||||
},
|
|
||||||
'contenttypes.contenttype': {
|
|
||||||
'Meta': {'object_name': 'ContentType', 'unique_together': "(('app_label', 'model'),)", 'ordering': "('name',)", 'db_table': "'django_content_type'"},
|
|
||||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
|
||||||
},
|
|
||||||
'projects.attachment': {
|
|
||||||
'Meta': {'object_name': 'Attachment', 'ordering': "['project', 'created_date']"},
|
|
||||||
'attached_file': ('django.db.models.fields.files.FileField', [], {'max_length': '500', 'blank': 'True', 'null': 'True'}),
|
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'change_attachments'", 'to': "orm['users.User']"}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attachments'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.issuestatus': {
|
|
||||||
'Meta': {'object_name': 'IssueStatus', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'order', 'name']"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issue_statuses'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.issuetype': {
|
|
||||||
'Meta': {'object_name': 'IssueType', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'order', 'name']"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issue_types'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.membership': {
|
|
||||||
'Meta': {'object_name': 'Membership', 'ordering': "['project', 'role']"},
|
|
||||||
'created_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True', 'auto_now_add': 'True'}),
|
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'default': 'None', 'null': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['projects.Project']"}),
|
|
||||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.Role']"}),
|
|
||||||
'token': ('django.db.models.fields.CharField', [], {'max_length': '60', 'unique': 'True', 'default': 'None', 'null': 'True', 'blank': 'True'}),
|
|
||||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'memberships'", 'default': 'None', 'null': 'True', 'to': "orm['users.User']"})
|
|
||||||
},
|
|
||||||
'projects.points': {
|
|
||||||
'Meta': {'object_name': 'Points', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'order', 'name']"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'points'", 'to': "orm['projects.Project']"}),
|
|
||||||
'value': ('django.db.models.fields.FloatField', [], {'blank': 'True', 'default': 'None', 'null': 'True'})
|
|
||||||
},
|
|
||||||
'projects.priority': {
|
|
||||||
'Meta': {'object_name': 'Priority', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'order', 'name']"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'priorities'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.project': {
|
|
||||||
'Meta': {'object_name': 'Project', 'ordering': "['name']"},
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
|
||||||
'default_issue_status': ('django.db.models.fields.related.OneToOneField', [], {'on_delete': 'models.SET_NULL', 'unique': 'True', 'null': 'True', 'related_name': "'+'", 'blank': 'True', 'to': "orm['projects.IssueStatus']"}),
|
|
||||||
'default_issue_type': ('django.db.models.fields.related.OneToOneField', [], {'on_delete': 'models.SET_NULL', 'unique': 'True', 'null': 'True', 'related_name': "'+'", 'blank': 'True', 'to': "orm['projects.IssueType']"}),
|
|
||||||
'default_points': ('django.db.models.fields.related.OneToOneField', [], {'on_delete': 'models.SET_NULL', 'unique': 'True', 'null': 'True', 'related_name': "'+'", 'blank': 'True', 'to': "orm['projects.Points']"}),
|
|
||||||
'default_priority': ('django.db.models.fields.related.OneToOneField', [], {'on_delete': 'models.SET_NULL', 'unique': 'True', 'null': 'True', 'related_name': "'+'", 'blank': 'True', 'to': "orm['projects.Priority']"}),
|
|
||||||
'default_question_status': ('django.db.models.fields.related.OneToOneField', [], {'on_delete': 'models.SET_NULL', 'unique': 'True', 'null': 'True', 'related_name': "'+'", 'blank': 'True', 'to': "orm['projects.QuestionStatus']"}),
|
|
||||||
'default_severity': ('django.db.models.fields.related.OneToOneField', [], {'on_delete': 'models.SET_NULL', 'unique': 'True', 'null': 'True', 'related_name': "'+'", 'blank': 'True', 'to': "orm['projects.Severity']"}),
|
|
||||||
'default_task_status': ('django.db.models.fields.related.OneToOneField', [], {'on_delete': 'models.SET_NULL', 'unique': 'True', 'null': 'True', 'related_name': "'+'", 'blank': 'True', 'to': "orm['projects.TaskStatus']"}),
|
|
||||||
'default_us_status': ('django.db.models.fields.related.OneToOneField', [], {'on_delete': 'models.SET_NULL', 'unique': 'True', 'null': 'True', 'related_name': "'+'", 'blank': 'True', 'to': "orm['projects.UserStoryStatus']"}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
|
||||||
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
|
||||||
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
|
||||||
'members': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'projects'", 'symmetrical': 'False', 'to': "orm['users.User']", 'through': "orm['projects.Membership']"}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '250', 'unique': 'True'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_projects'", 'to': "orm['users.User']"}),
|
|
||||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'site': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'projects'", 'default': 'None', 'null': 'True', 'to': "orm['base.Site']"}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'unique': 'True', 'blank': 'True'}),
|
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
|
||||||
'total_milestones': ('django.db.models.fields.IntegerField', [], {'blank': 'True', 'default': '0', 'null': 'True'}),
|
|
||||||
'total_story_points': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True'})
|
|
||||||
},
|
|
||||||
'projects.questionstatus': {
|
|
||||||
'Meta': {'object_name': 'QuestionStatus', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'order', 'name']"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_status'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.severity': {
|
|
||||||
'Meta': {'object_name': 'Severity', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'order', 'name']"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'severities'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.taskstatus': {
|
|
||||||
'Meta': {'object_name': 'TaskStatus', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'order', 'name']"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'task_statuses'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.userstorystatus': {
|
|
||||||
'Meta': {'object_name': 'UserStoryStatus', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'order', 'name']"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'us_statuses'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'users.role': {
|
|
||||||
'Meta': {'object_name': 'Role', 'ordering': "['order', 'slug']"},
|
|
||||||
'computable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'roles'", 'symmetrical': 'False', 'to': "orm['auth.Permission']"}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'unique': 'True', 'blank': 'True'})
|
|
||||||
},
|
|
||||||
'users.user': {
|
|
||||||
'Meta': {'object_name': 'User', 'ordering': "['username']"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '9', 'default': "'#669933'", 'blank': 'True'}),
|
|
||||||
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'default_language': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "''", 'blank': 'True'}),
|
|
||||||
'default_timezone': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "''", 'blank': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
|
||||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
|
||||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'blank': 'True', 'symmetrical': 'False', 'to': "orm['auth.Group']"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
|
||||||
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'notify_level': ('django.db.models.fields.CharField', [], {'max_length': '32', 'default': "'all_owned_projects'"}),
|
|
||||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
|
||||||
'photo': ('django.db.models.fields.files.FileField', [], {'max_length': '500', 'blank': 'True', 'null': 'True'}),
|
|
||||||
'token': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True', 'default': 'None', 'null': 'True'}),
|
|
||||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'blank': 'True', 'symmetrical': 'False', 'to': "orm['auth.Permission']"}),
|
|
||||||
'username': ('django.db.models.fields.CharField', [], {'max_length': '30', 'unique': 'True'})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
complete_apps = ['projects']
|
|
||||||
symmetrical = True
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import datetime
|
from south.utils import datetime_utils as datetime
|
||||||
from south.db import db
|
from south.db import db
|
||||||
from south.v2 import SchemaMigration
|
from south.v2 import SchemaMigration
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
@ -11,17 +11,16 @@ class Migration(SchemaMigration):
|
||||||
# Adding model 'Milestone'
|
# Adding model 'Milestone'
|
||||||
db.create_table('milestones_milestone', (
|
db.create_table('milestones_milestone', (
|
||||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
('uuid', self.gf('django.db.models.fields.CharField')(blank=True, unique=True, max_length=40)),
|
('name', self.gf('django.db.models.fields.CharField')(max_length=200, db_index=True)),
|
||||||
('name', self.gf('django.db.models.fields.CharField')(db_index=True, max_length=200)),
|
('slug', self.gf('django.db.models.fields.SlugField')(max_length=250, unique=True, blank=True)),
|
||||||
('slug', self.gf('django.db.models.fields.SlugField')(blank=True, unique=True, max_length=250)),
|
('owner', self.gf('django.db.models.fields.related.ForeignKey')(null=True, related_name='owned_milestones', blank=True, to=orm['users.User'])),
|
||||||
('owner', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, to=orm['users.User'], related_name='owned_milestones', null=True)),
|
|
||||||
('project', self.gf('django.db.models.fields.related.ForeignKey')(related_name='milestones', to=orm['projects.Project'])),
|
('project', self.gf('django.db.models.fields.related.ForeignKey')(related_name='milestones', to=orm['projects.Project'])),
|
||||||
('estimated_start', self.gf('django.db.models.fields.DateField')(blank=True, default=None, null=True)),
|
('estimated_start', self.gf('django.db.models.fields.DateField')(null=True, default=None, blank=True)),
|
||||||
('estimated_finish', self.gf('django.db.models.fields.DateField')(blank=True, default=None, null=True)),
|
('estimated_finish', self.gf('django.db.models.fields.DateField')(null=True, default=None, blank=True)),
|
||||||
('created_date', self.gf('django.db.models.fields.DateTimeField')(blank=True, auto_now_add=True)),
|
('created_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||||
('modified_date', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
|
('modified_date', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
|
||||||
('closed', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
('closed', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||||
('disponibility', self.gf('django.db.models.fields.FloatField')(blank=True, default=0.0, null=True)),
|
('disponibility', self.gf('django.db.models.fields.FloatField')(null=True, default=0.0, blank=True)),
|
||||||
('order', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=1)),
|
('order', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=1)),
|
||||||
))
|
))
|
||||||
db.send_create_signal('milestones', ['Milestone'])
|
db.send_create_signal('milestones', ['Milestone'])
|
||||||
|
@ -42,8 +41,8 @@ class Migration(SchemaMigration):
|
||||||
'auth.group': {
|
'auth.group': {
|
||||||
'Meta': {'object_name': 'Group'},
|
'Meta': {'object_name': 'Group'},
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'unique': 'True'}),
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'symmetrical': 'False', 'to': "orm['auth.Permission']"})
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'blank': 'True', 'to': "orm['auth.Permission']"})
|
||||||
},
|
},
|
||||||
'auth.permission': {
|
'auth.permission': {
|
||||||
'Meta': {'object_name': 'Permission', 'unique_together': "(('content_type', 'codename'),)", 'ordering': "('content_type__app_label', 'content_type__model', 'codename')"},
|
'Meta': {'object_name': 'Permission', 'unique_together': "(('content_type', 'codename'),)", 'ordering': "('content_type__app_label', 'content_type__model', 'codename')"},
|
||||||
|
@ -53,53 +52,138 @@ class Migration(SchemaMigration):
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
},
|
},
|
||||||
'contenttypes.contenttype': {
|
'contenttypes.contenttype': {
|
||||||
'Meta': {'object_name': 'ContentType', 'unique_together': "(('app_label', 'model'),)", 'ordering': "('name',)", 'db_table': "'django_content_type'"},
|
'Meta': {'db_table': "'django_content_type'", 'object_name': 'ContentType', 'unique_together': "(('app_label', 'model'),)", 'ordering': "('name',)"},
|
||||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||||
},
|
},
|
||||||
|
'domains.domain': {
|
||||||
|
'Meta': {'object_name': 'Domain', 'ordering': "('domain',)"},
|
||||||
|
'domain': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'public_register': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'scheme': ('django.db.models.fields.CharField', [], {'null': 'True', 'max_length': '60', 'default': 'None'})
|
||||||
|
},
|
||||||
'milestones.milestone': {
|
'milestones.milestone': {
|
||||||
'Meta': {'object_name': 'Milestone', 'unique_together': "(('name', 'project'),)", 'ordering': "['project', '-created_date']"},
|
'Meta': {'object_name': 'Milestone', 'unique_together': "(('name', 'project'),)", 'ordering': "['project', 'created_date']"},
|
||||||
'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
'disponibility': ('django.db.models.fields.FloatField', [], {'blank': 'True', 'default': '0.0', 'null': 'True'}),
|
'disponibility': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': '0.0', 'blank': 'True'}),
|
||||||
'estimated_finish': ('django.db.models.fields.DateField', [], {'blank': 'True', 'default': 'None', 'null': 'True'}),
|
'estimated_finish': ('django.db.models.fields.DateField', [], {'null': 'True', 'default': 'None', 'blank': 'True'}),
|
||||||
'estimated_start': ('django.db.models.fields.DateField', [], {'blank': 'True', 'default': 'None', 'null': 'True'}),
|
'estimated_start': ('django.db.models.fields.DateField', [], {'null': 'True', 'default': 'None', 'blank': 'True'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '200'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'db_index': 'True'}),
|
||||||
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
|
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'to': "orm['users.User']", 'related_name': "'owned_milestones'", 'null': 'True'}),
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'null': 'True', 'related_name': "'owned_milestones'", 'blank': 'True', 'to': "orm['users.User']"}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'milestones'", 'to': "orm['projects.Project']"}),
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'milestones'", 'to': "orm['projects.Project']"}),
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'blank': 'True', 'unique': 'True', 'max_length': '250'}),
|
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'unique': 'True', 'blank': 'True'})
|
||||||
'uuid': ('django.db.models.fields.CharField', [], {'blank': 'True', 'unique': 'True', 'max_length': '40'})
|
},
|
||||||
|
'projects.issuestatus': {
|
||||||
|
'Meta': {'object_name': 'IssueStatus', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'order', 'name']"},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issue_statuses'", 'to': "orm['projects.Project']"})
|
||||||
|
},
|
||||||
|
'projects.issuetype': {
|
||||||
|
'Meta': {'object_name': 'IssueType', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'order', 'name']"},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issue_types'", 'to': "orm['projects.Project']"})
|
||||||
},
|
},
|
||||||
'projects.membership': {
|
'projects.membership': {
|
||||||
'Meta': {'object_name': 'Membership', 'unique_together': "(('user', 'project'),)", 'ordering': "['project', 'role', 'user']"},
|
'Meta': {'object_name': 'Membership', 'ordering': "['project', 'role']"},
|
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'default': 'datetime.datetime.now', 'blank': 'True'}),
|
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'null': 'True', 'max_length': '255', 'default': 'None'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['projects.Project']"}),
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['projects.Project']"}),
|
||||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.Role']"}),
|
'role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.Role']"}),
|
||||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.User']"})
|
'token': ('django.db.models.fields.CharField', [], {'null': 'True', 'max_length': '60', 'unique': 'True', 'default': 'None', 'blank': 'True'}),
|
||||||
|
'user': ('django.db.models.fields.related.ForeignKey', [], {'null': 'True', 'related_name': "'memberships'", 'default': 'None', 'blank': 'True', 'to': "orm['users.User']"})
|
||||||
|
},
|
||||||
|
'projects.points': {
|
||||||
|
'Meta': {'object_name': 'Points', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'order', 'name']"},
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'points'", 'to': "orm['projects.Project']"}),
|
||||||
|
'value': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': 'None', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
'projects.priority': {
|
||||||
|
'Meta': {'object_name': 'Priority', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'order', 'name']"},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'priorities'", 'to': "orm['projects.Project']"})
|
||||||
},
|
},
|
||||||
'projects.project': {
|
'projects.project': {
|
||||||
'Meta': {'object_name': 'Project', 'ordering': "['name']"},
|
'Meta': {'object_name': 'Project', 'ordering': "['name']"},
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'default_issue_status': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'related_name': "'+'", 'to': "orm['projects.IssueStatus']"}),
|
||||||
|
'default_issue_type': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'related_name': "'+'", 'to': "orm['projects.IssueType']"}),
|
||||||
|
'default_points': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'related_name': "'+'", 'to': "orm['projects.Points']"}),
|
||||||
|
'default_priority': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'related_name': "'+'", 'to': "orm['projects.Priority']"}),
|
||||||
|
'default_question_status': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'related_name': "'+'", 'to': "orm['projects.QuestionStatus']"}),
|
||||||
|
'default_severity': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'related_name': "'+'", 'to': "orm['projects.Severity']"}),
|
||||||
|
'default_task_status': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'related_name': "'+'", 'to': "orm['projects.TaskStatus']"}),
|
||||||
|
'default_us_status': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'related_name': "'+'", 'to': "orm['projects.UserStoryStatus']"}),
|
||||||
'description': ('django.db.models.fields.TextField', [], {}),
|
'description': ('django.db.models.fields.TextField', [], {}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
||||||
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
||||||
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
||||||
'members': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'projects'", 'symmetrical': 'False', 'through': "orm['projects.Membership']", 'to': "orm['users.User']"}),
|
'members': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'projects'", 'to': "orm['users.User']", 'through': "orm['projects.Membership']"}),
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '250', 'unique': 'True'}),
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_projects'", 'to': "orm['users.User']"}),
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_projects'", 'to': "orm['users.User']"}),
|
||||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'blank': 'True', 'unique': 'True', 'max_length': '250'}),
|
'site': ('django.db.models.fields.related.ForeignKey', [], {'null': 'True', 'related_name': "'projects'", 'default': 'None', 'to': "orm['domains.Domain']"}),
|
||||||
|
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'unique': 'True', 'blank': 'True'}),
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
||||||
'total_milestones': ('django.db.models.fields.IntegerField', [], {'blank': 'True', 'default': '0', 'null': 'True'}),
|
'total_milestones': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'default': '0', 'blank': 'True'}),
|
||||||
'total_story_points': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True'}),
|
'total_story_points': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': 'None'})
|
||||||
'uuid': ('django.db.models.fields.CharField', [], {'blank': 'True', 'unique': 'True', 'max_length': '40'})
|
},
|
||||||
|
'projects.questionstatus': {
|
||||||
|
'Meta': {'object_name': 'QuestionStatus', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'order', 'name']"},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_status'", 'to': "orm['projects.Project']"})
|
||||||
|
},
|
||||||
|
'projects.severity': {
|
||||||
|
'Meta': {'object_name': 'Severity', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'order', 'name']"},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'severities'", 'to': "orm['projects.Project']"})
|
||||||
|
},
|
||||||
|
'projects.taskstatus': {
|
||||||
|
'Meta': {'object_name': 'TaskStatus', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'order', 'name']"},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'task_statuses'", 'to': "orm['projects.Project']"})
|
||||||
|
},
|
||||||
|
'projects.userstorystatus': {
|
||||||
|
'Meta': {'object_name': 'UserStoryStatus', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'order', 'name']"},
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'us_statuses'", 'to': "orm['projects.Project']"})
|
||||||
},
|
},
|
||||||
'users.role': {
|
'users.role': {
|
||||||
'Meta': {'object_name': 'Role', 'ordering': "['order', 'slug']"},
|
'Meta': {'object_name': 'Role', 'ordering': "['order', 'slug']"},
|
||||||
|
@ -107,31 +191,33 @@ class Migration(SchemaMigration):
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'roles'", 'symmetrical': 'False', 'to': "orm['auth.Permission']"}),
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'roles'", 'to': "orm['auth.Permission']"}),
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'blank': 'True', 'unique': 'True', 'max_length': '250'})
|
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'unique': 'True', 'blank': 'True'})
|
||||||
},
|
},
|
||||||
'users.user': {
|
'users.user': {
|
||||||
'Meta': {'object_name': 'User', 'ordering': "['username']"},
|
'Meta': {'object_name': 'User', 'ordering': "['username']"},
|
||||||
'color': ('django.db.models.fields.CharField', [], {'blank': 'True', 'default': "'#669933'", 'max_length': '9'}),
|
'color': ('django.db.models.fields.CharField', [], {'max_length': '9', 'default': "'#669933'", 'blank': 'True'}),
|
||||||
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
'default_language': ('django.db.models.fields.CharField', [], {'blank': 'True', 'default': "''", 'max_length': '20'}),
|
'default_language': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "''", 'blank': 'True'}),
|
||||||
'default_timezone': ('django.db.models.fields.CharField', [], {'blank': 'True', 'default': "''", 'max_length': '20'}),
|
'default_timezone': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "''", 'blank': 'True'}),
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'blank': 'True', 'max_length': '75'}),
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||||
'first_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'symmetrical': 'False', 'to': "orm['auth.Group']", 'blank': 'True'}),
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'blank': 'True', 'related_name': "'user_set'", 'to': "orm['auth.Group']"}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
'last_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
|
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'notify_level': ('django.db.models.fields.CharField', [], {'max_length': '32', 'default': "'all_owned_projects'"}),
|
||||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
'photo': ('django.db.models.fields.files.FileField', [], {'blank': 'True', 'null': 'True', 'max_length': '500'}),
|
'photo': ('django.db.models.fields.files.FileField', [], {'null': 'True', 'max_length': '500', 'blank': 'True'}),
|
||||||
'token': ('django.db.models.fields.CharField', [], {'blank': 'True', 'default': 'None', 'null': 'True', 'max_length': '200'}),
|
'token': ('django.db.models.fields.CharField', [], {'null': 'True', 'max_length': '200', 'default': 'None', 'blank': 'True'}),
|
||||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'symmetrical': 'False', 'to': "orm['auth.Permission']", 'blank': 'True'}),
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'blank': 'True', 'related_name': "'user_set'", 'to': "orm['auth.Permission']"}),
|
||||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
'username': ('django.db.models.fields.CharField', [], {'max_length': '30', 'unique': 'True'})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,119 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import datetime
|
|
||||||
from south.db import db
|
|
||||||
from south.v2 import SchemaMigration
|
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(SchemaMigration):
|
|
||||||
|
|
||||||
def forwards(self, orm):
|
|
||||||
# Deleting field 'Milestone.uuid'
|
|
||||||
db.delete_column('milestones_milestone', 'uuid')
|
|
||||||
|
|
||||||
|
|
||||||
def backwards(self, orm):
|
|
||||||
# Adding field 'Milestone.uuid'
|
|
||||||
db.add_column('milestones_milestone', 'uuid',
|
|
||||||
self.gf('django.db.models.fields.CharField')(default='', max_length=40, blank=True, unique=True),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
|
|
||||||
models = {
|
|
||||||
'auth.group': {
|
|
||||||
'Meta': {'object_name': 'Group'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'unique': 'True'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'blank': 'True', 'to': "orm['auth.Permission']"})
|
|
||||||
},
|
|
||||||
'auth.permission': {
|
|
||||||
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'object_name': 'Permission'},
|
|
||||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
|
||||||
},
|
|
||||||
'contenttypes.contenttype': {
|
|
||||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'ordering': "('name',)", 'db_table': "'django_content_type'", 'object_name': 'ContentType'},
|
|
||||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
|
||||||
},
|
|
||||||
'milestones.milestone': {
|
|
||||||
'Meta': {'unique_together': "(('name', 'project'),)", 'ordering': "['project', '-created_date']", 'object_name': 'Milestone'},
|
|
||||||
'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
|
||||||
'disponibility': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'blank': 'True', 'null': 'True'}),
|
|
||||||
'estimated_finish': ('django.db.models.fields.DateField', [], {'default': 'None', 'blank': 'True', 'null': 'True'}),
|
|
||||||
'estimated_start': ('django.db.models.fields.DateField', [], {'default': 'None', 'blank': 'True', 'null': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'db_index': 'True'}),
|
|
||||||
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'blank': 'True', 'null': 'True', 'related_name': "'owned_milestones'"}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'milestones'"}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'blank': 'True', 'unique': 'True'})
|
|
||||||
},
|
|
||||||
'projects.membership': {
|
|
||||||
'Meta': {'unique_together': "(('user', 'project'),)", 'ordering': "['project', 'role', 'user']", 'object_name': 'Membership'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'memberships'"}),
|
|
||||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.Role']", 'related_name': "'memberships'"}),
|
|
||||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'related_name': "'memberships'"})
|
|
||||||
},
|
|
||||||
'projects.project': {
|
|
||||||
'Meta': {'ordering': "['name']", 'object_name': 'Project'},
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
|
||||||
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
|
||||||
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
|
||||||
'members': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['users.User']", 'through': "orm['projects.Membership']", 'related_name': "'projects'"}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '250', 'unique': 'True'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'related_name': "'owned_projects'"}),
|
|
||||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'blank': 'True', 'unique': 'True'}),
|
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
|
||||||
'total_milestones': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True', 'null': 'True'}),
|
|
||||||
'total_story_points': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True'})
|
|
||||||
},
|
|
||||||
'users.role': {
|
|
||||||
'Meta': {'ordering': "['order', 'slug']", 'object_name': 'Role'},
|
|
||||||
'computable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Permission']", 'related_name': "'roles'"}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'blank': 'True', 'unique': 'True'})
|
|
||||||
},
|
|
||||||
'users.user': {
|
|
||||||
'Meta': {'ordering': "['username']", 'object_name': 'User'},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'default': "'#669933'", 'max_length': '9', 'blank': 'True'}),
|
|
||||||
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'default_language': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '20', 'blank': 'True'}),
|
|
||||||
'default_timezone': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '20', 'blank': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
|
||||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
|
||||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'blank': 'True', 'to': "orm['auth.Group']", 'related_name': "'user_set'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
|
||||||
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'notify_level': ('django.db.models.fields.CharField', [], {'default': "'all_owned_projects'", 'max_length': '32'}),
|
|
||||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
|
||||||
'photo': ('django.db.models.fields.files.FileField', [], {'max_length': '500', 'blank': 'True', 'null': 'True'}),
|
|
||||||
'token': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '200', 'blank': 'True', 'null': 'True'}),
|
|
||||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'blank': 'True', 'to': "orm['auth.Permission']", 'related_name': "'user_set'"}),
|
|
||||||
'username': ('django.db.models.fields.CharField', [], {'max_length': '30', 'unique': 'True'})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
complete_apps = ['milestones']
|
|
|
@ -14,7 +14,7 @@ from . import create_milestone
|
||||||
|
|
||||||
|
|
||||||
class MilestonesTestCase(test.TestCase):
|
class MilestonesTestCase(test.TestCase):
|
||||||
fixtures = ["initial_role.json", ]
|
fixtures = ["initial_role.json", "initial_domains.json",]
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.user1 = create_user(1)
|
self.user1 = create_user(1)
|
||||||
|
|
|
@ -114,7 +114,7 @@ class Project(ProjectDefaults, models.Model):
|
||||||
total_story_points = models.FloatField(default=None, null=True, blank=False,
|
total_story_points = models.FloatField(default=None, null=True, blank=False,
|
||||||
verbose_name=_("total story points"))
|
verbose_name=_("total story points"))
|
||||||
tags = PickledObjectField(null=False, blank=True, verbose_name=_("tags"))
|
tags = PickledObjectField(null=False, blank=True, verbose_name=_("tags"))
|
||||||
site = models.ForeignKey("base.Site", related_name="projects", null=True, default=None)
|
site = models.ForeignKey("domains.Domain", related_name="projects", null=True, default=None)
|
||||||
|
|
||||||
notifiable_fields = [
|
notifiable_fields = [
|
||||||
"name",
|
"name",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import datetime
|
from south.utils import datetime_utils as datetime
|
||||||
from south.db import db
|
from south.db import db
|
||||||
from south.v2 import SchemaMigration
|
from south.v2 import SchemaMigration
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
@ -11,19 +11,18 @@ class Migration(SchemaMigration):
|
||||||
# Adding model 'Task'
|
# Adding model 'Task'
|
||||||
db.create_table('tasks_task', (
|
db.create_table('tasks_task', (
|
||||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
('uuid', self.gf('django.db.models.fields.CharField')(unique=True, blank=True, max_length=40)),
|
('user_story', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, to=orm['userstories.UserStory'], related_name='tasks', null=True)),
|
||||||
('user_story', self.gf('django.db.models.fields.related.ForeignKey')(related_name='tasks', to=orm['userstories.UserStory'], null=True, blank=True)),
|
('ref', self.gf('django.db.models.fields.BigIntegerField')(db_index=True, blank=True, default=None, null=True)),
|
||||||
('ref', self.gf('django.db.models.fields.BigIntegerField')(null=True, blank=True, db_index=True, default=None)),
|
('owner', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, default=None, related_name='owned_tasks', to=orm['users.User'], null=True)),
|
||||||
('owner', self.gf('django.db.models.fields.related.ForeignKey')(related_name='owned_tasks', to=orm['users.User'], null=True, blank=True, default=None)),
|
|
||||||
('status', self.gf('django.db.models.fields.related.ForeignKey')(related_name='tasks', to=orm['projects.TaskStatus'])),
|
('status', self.gf('django.db.models.fields.related.ForeignKey')(related_name='tasks', to=orm['projects.TaskStatus'])),
|
||||||
('project', self.gf('django.db.models.fields.related.ForeignKey')(related_name='tasks', to=orm['projects.Project'])),
|
('project', self.gf('django.db.models.fields.related.ForeignKey')(related_name='tasks', to=orm['projects.Project'])),
|
||||||
('milestone', self.gf('django.db.models.fields.related.ForeignKey')(related_name='tasks', to=orm['milestones.Milestone'], null=True, blank=True, default=None)),
|
('milestone', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, default=None, related_name='tasks', to=orm['milestones.Milestone'], null=True)),
|
||||||
('created_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
('created_date', self.gf('django.db.models.fields.DateTimeField')(blank=True, auto_now_add=True)),
|
||||||
('modified_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
('modified_date', self.gf('django.db.models.fields.DateTimeField')(blank=True, auto_now=True)),
|
||||||
('finished_date', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
|
('finished_date', self.gf('django.db.models.fields.DateTimeField')(blank=True, null=True)),
|
||||||
('subject', self.gf('django.db.models.fields.CharField')(max_length=500)),
|
('subject', self.gf('django.db.models.fields.CharField')(max_length=500)),
|
||||||
('description', self.gf('django.db.models.fields.TextField')(blank=True)),
|
('description', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||||
('assigned_to', self.gf('django.db.models.fields.related.ForeignKey')(related_name='user_storys_assigned_to_me', to=orm['users.User'], null=True, blank=True, default=None)),
|
('assigned_to', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, default=None, related_name='user_storys_assigned_to_me', to=orm['users.User'], null=True)),
|
||||||
('tags', self.gf('picklefield.fields.PickledObjectField')(blank=True)),
|
('tags', self.gf('picklefield.fields.PickledObjectField')(blank=True)),
|
||||||
('is_iocaine', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
('is_iocaine', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||||
))
|
))
|
||||||
|
@ -58,7 +57,7 @@ class Migration(SchemaMigration):
|
||||||
'Meta': {'object_name': 'Group'},
|
'Meta': {'object_name': 'Group'},
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'blank': 'True', 'symmetrical': 'False'})
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'to': "orm['auth.Permission']", 'symmetrical': 'False'})
|
||||||
},
|
},
|
||||||
'auth.permission': {
|
'auth.permission': {
|
||||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||||
|
@ -68,65 +67,125 @@ class Migration(SchemaMigration):
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
},
|
},
|
||||||
'contenttypes.contenttype': {
|
'contenttypes.contenttype': {
|
||||||
'Meta': {'db_table': "'django_content_type'", 'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType'},
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||||
},
|
},
|
||||||
'milestones.milestone': {
|
'domains.domain': {
|
||||||
'Meta': {'ordering': "['project', '-created_date']", 'unique_together': "(('name', 'project'),)", 'object_name': 'Milestone'},
|
'Meta': {'ordering': "('domain',)", 'object_name': 'Domain'},
|
||||||
'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'domain': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
|
||||||
'disponibility': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True', 'default': '0.0'}),
|
|
||||||
'estimated_finish': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True', 'default': 'None'}),
|
|
||||||
'estimated_start': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True', 'default': 'None'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'public_register': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'scheme': ('django.db.models.fields.CharField', [], {'max_length': '60', 'default': 'None', 'null': 'True'})
|
||||||
|
},
|
||||||
|
'milestones.milestone': {
|
||||||
|
'Meta': {'ordering': "['project', 'created_date']", 'unique_together': "(('name', 'project'),)", 'object_name': 'Milestone'},
|
||||||
|
'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
||||||
|
'disponibility': ('django.db.models.fields.FloatField', [], {'blank': 'True', 'default': '0.0', 'null': 'True'}),
|
||||||
|
'estimated_finish': ('django.db.models.fields.DateField', [], {'blank': 'True', 'default': 'None', 'null': 'True'}),
|
||||||
|
'estimated_start': ('django.db.models.fields.DateField', [], {'blank': 'True', 'default': 'None', 'null': 'True'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'modified_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '200'}),
|
'name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '200'}),
|
||||||
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
|
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_milestones'", 'to': "orm['users.User']", 'null': 'True', 'blank': 'True'}),
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'to': "orm['users.User']", 'related_name': "'owned_milestones'", 'null': 'True'}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'milestones'", 'to': "orm['projects.Project']"}),
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'milestones'", 'to': "orm['projects.Project']"}),
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'blank': 'True', 'max_length': '250'}),
|
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'blank': 'True', 'max_length': '250'})
|
||||||
'uuid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'blank': 'True', 'max_length': '40'})
|
},
|
||||||
|
'projects.issuestatus': {
|
||||||
|
'Meta': {'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'IssueStatus'},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'default': "'#999999'", 'max_length': '20'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issue_statuses'", 'to': "orm['projects.Project']"})
|
||||||
|
},
|
||||||
|
'projects.issuetype': {
|
||||||
|
'Meta': {'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'IssueType'},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'default': "'#999999'", 'max_length': '20'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'issue_types'", 'to': "orm['projects.Project']"})
|
||||||
},
|
},
|
||||||
'projects.membership': {
|
'projects.membership': {
|
||||||
'Meta': {'ordering': "['project', 'role', 'user']", 'unique_together': "(('user', 'project'),)", 'object_name': 'Membership'},
|
'Meta': {'ordering': "['project', 'role']", 'object_name': 'Membership'},
|
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True', 'default': 'datetime.datetime.now'}),
|
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'default': 'None', 'null': 'True'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['projects.Project']"}),
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['projects.Project']"}),
|
||||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.Role']"}),
|
'role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.Role']"}),
|
||||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.User']"})
|
'token': ('django.db.models.fields.CharField', [], {'max_length': '60', 'blank': 'True', 'default': 'None', 'unique': 'True', 'null': 'True'}),
|
||||||
|
'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'default': 'None', 'related_name': "'memberships'", 'to': "orm['users.User']", 'null': 'True'})
|
||||||
},
|
},
|
||||||
'projects.points': {
|
'projects.points': {
|
||||||
'Meta': {'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'Points'},
|
'Meta': {'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'Points'},
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'points'", 'to': "orm['projects.Project']"}),
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'points'", 'to': "orm['projects.Project']"}),
|
||||||
'value': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True', 'default': 'None'})
|
'value': ('django.db.models.fields.FloatField', [], {'blank': 'True', 'default': 'None', 'null': 'True'})
|
||||||
|
},
|
||||||
|
'projects.priority': {
|
||||||
|
'Meta': {'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'Priority'},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'default': "'#999999'", 'max_length': '20'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'priorities'", 'to': "orm['projects.Project']"})
|
||||||
},
|
},
|
||||||
'projects.project': {
|
'projects.project': {
|
||||||
'Meta': {'ordering': "['name']", 'object_name': 'Project'},
|
'Meta': {'ordering': "['name']", 'object_name': 'Project'},
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
||||||
|
'default_issue_status': ('django.db.models.fields.related.OneToOneField', [], {'on_delete': 'models.SET_NULL', 'blank': 'True', 'to': "orm['projects.IssueStatus']", 'unique': 'True', 'null': 'True', 'related_name': "'+'"}),
|
||||||
|
'default_issue_type': ('django.db.models.fields.related.OneToOneField', [], {'on_delete': 'models.SET_NULL', 'blank': 'True', 'to': "orm['projects.IssueType']", 'unique': 'True', 'null': 'True', 'related_name': "'+'"}),
|
||||||
|
'default_points': ('django.db.models.fields.related.OneToOneField', [], {'on_delete': 'models.SET_NULL', 'blank': 'True', 'to': "orm['projects.Points']", 'unique': 'True', 'null': 'True', 'related_name': "'+'"}),
|
||||||
|
'default_priority': ('django.db.models.fields.related.OneToOneField', [], {'on_delete': 'models.SET_NULL', 'blank': 'True', 'to': "orm['projects.Priority']", 'unique': 'True', 'null': 'True', 'related_name': "'+'"}),
|
||||||
|
'default_question_status': ('django.db.models.fields.related.OneToOneField', [], {'on_delete': 'models.SET_NULL', 'blank': 'True', 'to': "orm['projects.QuestionStatus']", 'unique': 'True', 'null': 'True', 'related_name': "'+'"}),
|
||||||
|
'default_severity': ('django.db.models.fields.related.OneToOneField', [], {'on_delete': 'models.SET_NULL', 'blank': 'True', 'to': "orm['projects.Severity']", 'unique': 'True', 'null': 'True', 'related_name': "'+'"}),
|
||||||
|
'default_task_status': ('django.db.models.fields.related.OneToOneField', [], {'on_delete': 'models.SET_NULL', 'blank': 'True', 'to': "orm['projects.TaskStatus']", 'unique': 'True', 'null': 'True', 'related_name': "'+'"}),
|
||||||
|
'default_us_status': ('django.db.models.fields.related.OneToOneField', [], {'on_delete': 'models.SET_NULL', 'blank': 'True', 'to': "orm['projects.UserStoryStatus']", 'unique': 'True', 'null': 'True', 'related_name': "'+'"}),
|
||||||
'description': ('django.db.models.fields.TextField', [], {}),
|
'description': ('django.db.models.fields.TextField', [], {}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
||||||
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
||||||
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
||||||
'members': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'projects'", 'through': "orm['projects.Membership']", 'to': "orm['users.User']", 'symmetrical': 'False'}),
|
'members': ('django.db.models.fields.related.ManyToManyField', [], {'through': "orm['projects.Membership']", 'related_name': "'projects'", 'symmetrical': 'False', 'to': "orm['users.User']"}),
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
'modified_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'}),
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'}),
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_projects'", 'to': "orm['users.User']"}),
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_projects'", 'to': "orm['users.User']"}),
|
||||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'site': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'projects'", 'to': "orm['domains.Domain']", 'null': 'True'}),
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'blank': 'True', 'max_length': '250'}),
|
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'blank': 'True', 'max_length': '250'}),
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
||||||
'total_milestones': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True', 'default': '0'}),
|
'total_milestones': ('django.db.models.fields.IntegerField', [], {'blank': 'True', 'default': '0', 'null': 'True'}),
|
||||||
'total_story_points': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': 'None'}),
|
'total_story_points': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True'})
|
||||||
'uuid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'blank': 'True', 'max_length': '40'})
|
},
|
||||||
|
'projects.questionstatus': {
|
||||||
|
'Meta': {'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'QuestionStatus'},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'default': "'#999999'", 'max_length': '20'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_status'", 'to': "orm['projects.Project']"})
|
||||||
|
},
|
||||||
|
'projects.severity': {
|
||||||
|
'Meta': {'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'Severity'},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'default': "'#999999'", 'max_length': '20'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'severities'", 'to': "orm['projects.Project']"})
|
||||||
},
|
},
|
||||||
'projects.taskstatus': {
|
'projects.taskstatus': {
|
||||||
'Meta': {'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'TaskStatus'},
|
'Meta': {'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'TaskStatus'},
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
'color': ('django.db.models.fields.CharField', [], {'default': "'#999999'", 'max_length': '20'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
@ -134,7 +193,7 @@ class Migration(SchemaMigration):
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'task_statuses'", 'to': "orm['projects.Project']"})
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'task_statuses'", 'to': "orm['projects.Project']"})
|
||||||
},
|
},
|
||||||
'projects.userstorystatus': {
|
'projects.userstorystatus': {
|
||||||
'Meta': {'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'UserStoryStatus'},
|
'Meta': {'ordering': "['project', 'order', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'UserStoryStatus'},
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
@ -143,23 +202,22 @@ class Migration(SchemaMigration):
|
||||||
},
|
},
|
||||||
'tasks.task': {
|
'tasks.task': {
|
||||||
'Meta': {'ordering': "['project', 'created_date']", 'unique_together': "(('ref', 'project'),)", 'object_name': 'Task'},
|
'Meta': {'ordering': "['project', 'created_date']", 'unique_together': "(('ref', 'project'),)", 'object_name': 'Task'},
|
||||||
'assigned_to': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_storys_assigned_to_me'", 'to': "orm['users.User']", 'null': 'True', 'blank': 'True', 'default': 'None'}),
|
'assigned_to': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'default': 'None', 'related_name': "'user_storys_assigned_to_me'", 'to': "orm['users.User']", 'null': 'True'}),
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
'finished_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
'finished_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'null': 'True'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'is_iocaine': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_iocaine': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'milestone': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tasks'", 'to': "orm['milestones.Milestone']", 'null': 'True', 'blank': 'True', 'default': 'None'}),
|
'milestone': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'default': 'None', 'related_name': "'tasks'", 'to': "orm['milestones.Milestone']", 'null': 'True'}),
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
'modified_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now': 'True'}),
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_tasks'", 'to': "orm['users.User']", 'null': 'True', 'blank': 'True', 'default': 'None'}),
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'default': 'None', 'related_name': "'owned_tasks'", 'to': "orm['users.User']", 'null': 'True'}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tasks'", 'to': "orm['projects.Project']"}),
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tasks'", 'to': "orm['projects.Project']"}),
|
||||||
'ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True', 'db_index': 'True', 'default': 'None'}),
|
'ref': ('django.db.models.fields.BigIntegerField', [], {'db_index': 'True', 'blank': 'True', 'default': 'None', 'null': 'True'}),
|
||||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tasks'", 'to': "orm['projects.TaskStatus']"}),
|
'status': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tasks'", 'to': "orm['projects.TaskStatus']"}),
|
||||||
'subject': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
'subject': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
||||||
'user_story': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tasks'", 'to': "orm['userstories.UserStory']", 'null': 'True', 'blank': 'True'}),
|
'user_story': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'to': "orm['userstories.UserStory']", 'related_name': "'tasks'", 'null': 'True'}),
|
||||||
'uuid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'blank': 'True', 'max_length': '40'}),
|
'watchers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'to': "orm['users.User']", 'related_name': "'watched_tasks'", 'symmetrical': 'False', 'null': 'True'})
|
||||||
'watchers': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'watched_tasks'", 'to': "orm['users.User']", 'null': 'True', 'blank': 'True', 'symmetrical': 'False'})
|
|
||||||
},
|
},
|
||||||
'users.role': {
|
'users.role': {
|
||||||
'Meta': {'ordering': "['order', 'slug']", 'object_name': 'Role'},
|
'Meta': {'ordering': "['order', 'slug']", 'object_name': 'Role'},
|
||||||
|
@ -167,34 +225,36 @@ class Migration(SchemaMigration):
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'roles'", 'to': "orm['auth.Permission']", 'symmetrical': 'False'}),
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'roles'", 'symmetrical': 'False', 'to': "orm['auth.Permission']"}),
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'blank': 'True', 'max_length': '250'})
|
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'blank': 'True', 'max_length': '250'})
|
||||||
},
|
},
|
||||||
'users.user': {
|
'users.user': {
|
||||||
'Meta': {'ordering': "['username']", 'object_name': 'User'},
|
'Meta': {'ordering': "['username']", 'object_name': 'User'},
|
||||||
'color': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '9', 'default': "'#669933'"}),
|
'color': ('django.db.models.fields.CharField', [], {'blank': 'True', 'default': "'#669933'", 'max_length': '9'}),
|
||||||
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
'default_language': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '20', 'default': "''"}),
|
'default_language': ('django.db.models.fields.CharField', [], {'blank': 'True', 'default': "''", 'max_length': '20'}),
|
||||||
'default_timezone': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '20', 'default': "''"}),
|
'default_timezone': ('django.db.models.fields.CharField', [], {'blank': 'True', 'default': "''", 'max_length': '20'}),
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'blank': 'True', 'max_length': '75'}),
|
'email': ('django.db.models.fields.EmailField', [], {'blank': 'True', 'max_length': '75'}),
|
||||||
'first_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
'first_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
||||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'to': "orm['auth.Group']", 'blank': 'True', 'symmetrical': 'False'}),
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'user_set'", 'symmetrical': 'False', 'to': "orm['auth.Group']"}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
'last_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
'last_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
||||||
|
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'notify_level': ('django.db.models.fields.CharField', [], {'default': "'all_owned_projects'", 'max_length': '32'}),
|
||||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
'photo': ('django.db.models.fields.files.FileField', [], {'null': 'True', 'blank': 'True', 'max_length': '500'}),
|
'photo': ('django.db.models.fields.files.FileField', [], {'max_length': '500', 'blank': 'True', 'null': 'True'}),
|
||||||
'token': ('django.db.models.fields.CharField', [], {'null': 'True', 'blank': 'True', 'max_length': '200', 'default': 'None'}),
|
'token': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True', 'default': 'None', 'null': 'True'}),
|
||||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'to': "orm['auth.Permission']", 'blank': 'True', 'symmetrical': 'False'}),
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'user_set'", 'symmetrical': 'False', 'to': "orm['auth.Permission']"}),
|
||||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||||
},
|
},
|
||||||
'userstories.rolepoints': {
|
'userstories.rolepoints': {
|
||||||
'Meta': {'object_name': 'RolePoints', 'unique_together': "(('user_story', 'role'),)"},
|
'Meta': {'ordering': "['user_story', 'role']", 'unique_together': "(('user_story', 'role'),)", 'object_name': 'RolePoints'},
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'points': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'role_points'", 'to': "orm['projects.Points']"}),
|
'points': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'role_points'", 'to': "orm['projects.Points']"}),
|
||||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'role_points'", 'to': "orm['users.Role']"}),
|
'role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'role_points'", 'to': "orm['users.Role']"}),
|
||||||
|
@ -203,23 +263,22 @@ class Migration(SchemaMigration):
|
||||||
'userstories.userstory': {
|
'userstories.userstory': {
|
||||||
'Meta': {'ordering': "['project', 'order']", 'unique_together': "(('ref', 'project'),)", 'object_name': 'UserStory'},
|
'Meta': {'ordering': "['project', 'order']", 'unique_together': "(('ref', 'project'),)", 'object_name': 'UserStory'},
|
||||||
'client_requirement': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'client_requirement': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
'finish_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
'finish_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'null': 'True'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'milestone': ('django.db.models.fields.related.ForeignKey', [], {'null': 'True', 'blank': 'True', 'related_name': "'user_stories'", 'to': "orm['milestones.Milestone']", 'on_delete': 'models.SET_NULL', 'default': 'None'}),
|
'milestone': ('django.db.models.fields.related.ForeignKey', [], {'on_delete': 'models.SET_NULL', 'blank': 'True', 'to': "orm['milestones.Milestone']", 'related_name': "'user_stories'", 'default': 'None', 'null': 'True'}),
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
'modified_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now': 'True'}),
|
||||||
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '100'}),
|
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '100'}),
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_user_stories'", 'to': "orm['users.User']", 'null': 'True', 'blank': 'True', 'on_delete': 'models.SET_NULL'}),
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'on_delete': 'models.SET_NULL', 'blank': 'True', 'to': "orm['users.User']", 'related_name': "'owned_user_stories'", 'null': 'True'}),
|
||||||
'points': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'userstories'", 'through': "orm['userstories.RolePoints']", 'to': "orm['projects.Points']", 'symmetrical': 'False'}),
|
'points': ('django.db.models.fields.related.ManyToManyField', [], {'through': "orm['userstories.RolePoints']", 'related_name': "'userstories'", 'symmetrical': 'False', 'to': "orm['projects.Points']"}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_stories'", 'to': "orm['projects.Project']"}),
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_stories'", 'to': "orm['projects.Project']"}),
|
||||||
'ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True', 'db_index': 'True', 'default': 'None'}),
|
'ref': ('django.db.models.fields.BigIntegerField', [], {'db_index': 'True', 'blank': 'True', 'default': 'None', 'null': 'True'}),
|
||||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_stories'", 'to': "orm['projects.UserStoryStatus']", 'null': 'True', 'blank': 'True', 'on_delete': 'models.SET_NULL'}),
|
'status': ('django.db.models.fields.related.ForeignKey', [], {'on_delete': 'models.SET_NULL', 'blank': 'True', 'to': "orm['projects.UserStoryStatus']", 'related_name': "'user_stories'", 'null': 'True'}),
|
||||||
'subject': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
'subject': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
||||||
'team_requirement': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'team_requirement': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'uuid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'blank': 'True', 'max_length': '40'}),
|
'watchers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'to': "orm['users.User']", 'related_name': "'watched_us'", 'symmetrical': 'False', 'null': 'True'})
|
||||||
'watchers': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'watched_us'", 'to': "orm['users.User']", 'null': 'True', 'blank': 'True', 'symmetrical': 'False'})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,196 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import datetime
|
|
||||||
from south.db import db
|
|
||||||
from south.v2 import SchemaMigration
|
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(SchemaMigration):
|
|
||||||
|
|
||||||
def forwards(self, orm):
|
|
||||||
# Deleting field 'Task.uuid'
|
|
||||||
db.delete_column('tasks_task', 'uuid')
|
|
||||||
|
|
||||||
|
|
||||||
# Changing field 'Task.modified_date'
|
|
||||||
db.alter_column('tasks_task', 'modified_date', self.gf('django.db.models.fields.DateTimeField')(auto_now=True))
|
|
||||||
|
|
||||||
def backwards(self, orm):
|
|
||||||
# Adding field 'Task.uuid'
|
|
||||||
db.add_column('tasks_task', 'uuid',
|
|
||||||
self.gf('django.db.models.fields.CharField')(unique=True, max_length=40, default='', blank=True),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
|
|
||||||
# Changing field 'Task.modified_date'
|
|
||||||
db.alter_column('tasks_task', 'modified_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True))
|
|
||||||
|
|
||||||
models = {
|
|
||||||
'auth.group': {
|
|
||||||
'Meta': {'object_name': 'Group'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'blank': 'True', 'to': "orm['auth.Permission']"})
|
|
||||||
},
|
|
||||||
'auth.permission': {
|
|
||||||
'Meta': {'object_name': 'Permission', 'unique_together': "(('content_type', 'codename'),)", 'ordering': "('content_type__app_label', 'content_type__model', 'codename')"},
|
|
||||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
|
||||||
},
|
|
||||||
'contenttypes.contenttype': {
|
|
||||||
'Meta': {'object_name': 'ContentType', 'unique_together': "(('app_label', 'model'),)", 'ordering': "('name',)", 'db_table': "'django_content_type'"},
|
|
||||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
|
||||||
},
|
|
||||||
'milestones.milestone': {
|
|
||||||
'Meta': {'object_name': 'Milestone', 'unique_together': "(('name', 'project'),)", 'ordering': "['project', '-created_date']"},
|
|
||||||
'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
|
||||||
'disponibility': ('django.db.models.fields.FloatField', [], {'blank': 'True', 'default': '0.0', 'null': 'True'}),
|
|
||||||
'estimated_finish': ('django.db.models.fields.DateField', [], {'blank': 'True', 'default': 'None', 'null': 'True'}),
|
|
||||||
'estimated_start': ('django.db.models.fields.DateField', [], {'blank': 'True', 'default': 'None', 'null': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '200'}),
|
|
||||||
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_milestones'", 'null': 'True', 'to': "orm['users.User']"}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'milestones'", 'to': "orm['projects.Project']"}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '250', 'blank': 'True'})
|
|
||||||
},
|
|
||||||
'projects.membership': {
|
|
||||||
'Meta': {'object_name': 'Membership', 'unique_together': "(('user', 'project'),)", 'ordering': "['project', 'role', 'user']"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['projects.Project']"}),
|
|
||||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.Role']"}),
|
|
||||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.User']"})
|
|
||||||
},
|
|
||||||
'projects.points': {
|
|
||||||
'Meta': {'object_name': 'Points', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'name']"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'points'", 'to': "orm['projects.Project']"}),
|
|
||||||
'value': ('django.db.models.fields.FloatField', [], {'blank': 'True', 'default': 'None', 'null': 'True'})
|
|
||||||
},
|
|
||||||
'projects.project': {
|
|
||||||
'Meta': {'object_name': 'Project', 'ordering': "['name']"},
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
|
||||||
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
|
||||||
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
|
||||||
'members': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'projects'", 'symmetrical': 'False', 'to': "orm['users.User']", 'through': "orm['projects.Membership']"}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_projects'", 'to': "orm['users.User']"}),
|
|
||||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '250', 'blank': 'True'}),
|
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
|
||||||
'total_milestones': ('django.db.models.fields.IntegerField', [], {'blank': 'True', 'default': '0', 'null': 'True'}),
|
|
||||||
'total_story_points': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True'})
|
|
||||||
},
|
|
||||||
'projects.taskstatus': {
|
|
||||||
'Meta': {'object_name': 'TaskStatus', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'name']"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "'#999999'"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'task_statuses'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'projects.userstorystatus': {
|
|
||||||
'Meta': {'object_name': 'UserStoryStatus', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'name']"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'us_statuses'", 'to': "orm['projects.Project']"})
|
|
||||||
},
|
|
||||||
'tasks.task': {
|
|
||||||
'Meta': {'object_name': 'Task', 'unique_together': "(('ref', 'project'),)", 'ordering': "['project', 'created_date']"},
|
|
||||||
'assigned_to': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'user_storys_assigned_to_me'", 'default': 'None', 'null': 'True', 'to': "orm['users.User']"}),
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
|
||||||
'finished_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'null': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_iocaine': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'milestone': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'tasks'", 'default': 'None', 'null': 'True', 'to': "orm['milestones.Milestone']"}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_tasks'", 'default': 'None', 'null': 'True', 'to': "orm['users.User']"}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tasks'", 'to': "orm['projects.Project']"}),
|
|
||||||
'ref': ('django.db.models.fields.BigIntegerField', [], {'db_index': 'True', 'blank': 'True', 'default': 'None', 'null': 'True'}),
|
|
||||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tasks'", 'to': "orm['projects.TaskStatus']"}),
|
|
||||||
'subject': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
|
||||||
'user_story': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'tasks'", 'null': 'True', 'to': "orm['userstories.UserStory']"}),
|
|
||||||
'watchers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'watched_tasks'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['users.User']"})
|
|
||||||
},
|
|
||||||
'users.role': {
|
|
||||||
'Meta': {'object_name': 'Role', 'ordering': "['order', 'slug']"},
|
|
||||||
'computable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'roles'", 'symmetrical': 'False', 'to': "orm['auth.Permission']"}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '250', 'blank': 'True'})
|
|
||||||
},
|
|
||||||
'users.user': {
|
|
||||||
'Meta': {'object_name': 'User', 'ordering': "['username']"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '9', 'default': "'#669933'", 'blank': 'True'}),
|
|
||||||
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'default_language': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "''", 'blank': 'True'}),
|
|
||||||
'default_timezone': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "''", 'blank': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
|
||||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
|
||||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'blank': 'True', 'symmetrical': 'False', 'to': "orm['auth.Group']"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
|
||||||
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'notify_level': ('django.db.models.fields.CharField', [], {'max_length': '32', 'default': "'all_owned_projects'"}),
|
|
||||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
|
||||||
'photo': ('django.db.models.fields.files.FileField', [], {'max_length': '500', 'blank': 'True', 'null': 'True'}),
|
|
||||||
'token': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True', 'default': 'None', 'null': 'True'}),
|
|
||||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_set'", 'blank': 'True', 'symmetrical': 'False', 'to': "orm['auth.Permission']"}),
|
|
||||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
|
||||||
},
|
|
||||||
'userstories.rolepoints': {
|
|
||||||
'Meta': {'object_name': 'RolePoints', 'unique_together': "(('user_story', 'role'),)"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'points': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'role_points'", 'to': "orm['projects.Points']"}),
|
|
||||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'role_points'", 'to': "orm['users.Role']"}),
|
|
||||||
'user_story': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'role_points'", 'to': "orm['userstories.UserStory']"})
|
|
||||||
},
|
|
||||||
'userstories.userstory': {
|
|
||||||
'Meta': {'object_name': 'UserStory', 'unique_together': "(('ref', 'project'),)", 'ordering': "['project', 'order']"},
|
|
||||||
'client_requirement': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
|
||||||
'finish_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'null': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'milestone': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_stories'", 'default': 'None', 'null': 'True', 'to': "orm['milestones.Milestone']", 'blank': 'True', 'on_delete': 'models.SET_NULL'}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '100'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_user_stories'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['users.User']"}),
|
|
||||||
'points': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'userstories'", 'symmetrical': 'False', 'to': "orm['projects.Points']", 'through': "orm['userstories.RolePoints']"}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_stories'", 'to': "orm['projects.Project']"}),
|
|
||||||
'ref': ('django.db.models.fields.BigIntegerField', [], {'db_index': 'True', 'blank': 'True', 'default': 'None', 'null': 'True'}),
|
|
||||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'user_stories'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['projects.UserStoryStatus']"}),
|
|
||||||
'subject': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
|
||||||
'team_requirement': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'watchers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'watched_us'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['users.User']"})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
complete_apps = ['tasks']
|
|
|
@ -18,7 +18,7 @@ from . import create_task
|
||||||
|
|
||||||
|
|
||||||
class TasksTestCase(test.TestCase):
|
class TasksTestCase(test.TestCase):
|
||||||
fixtures = ["initial_role.json", "initial_site.json"]
|
fixtures = ["initial_role.json", "initial_domains.json"]
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.user1 = create_user(1) # Project owner
|
self.user1 = create_user(1) # Project owner
|
||||||
|
|
|
@ -13,7 +13,7 @@ from greenmine.projects.models import Project, Membership
|
||||||
from . import create_project, add_membership
|
from . import create_project, add_membership
|
||||||
|
|
||||||
class ProfileTestCase(test.TestCase):
|
class ProfileTestCase(test.TestCase):
|
||||||
fixtures = ["initial_role.json", "initial_site.json"]
|
fixtures = ["initial_role.json", "initial_domains.json"]
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.user1 = create_user(1, is_superuser=True)
|
self.user1 = create_user(1, is_superuser=True)
|
||||||
|
@ -154,7 +154,7 @@ class ProfileTestCase(test.TestCase):
|
||||||
|
|
||||||
|
|
||||||
class ProjectsTestCase(test.TestCase):
|
class ProjectsTestCase(test.TestCase):
|
||||||
fixtures = ["initial_role.json", "initial_site.json"]
|
fixtures = ["initial_role.json", "initial_domains.json"]
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.user1 = create_user(1)
|
self.user1 = create_user(1)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import datetime
|
from south.utils import datetime_utils as datetime
|
||||||
from south.db import db
|
from south.db import db
|
||||||
from south.v2 import SchemaMigration
|
from south.v2 import SchemaMigration
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
@ -11,9 +11,9 @@ class Migration(SchemaMigration):
|
||||||
# Adding model 'RolePoints'
|
# Adding model 'RolePoints'
|
||||||
db.create_table('userstories_rolepoints', (
|
db.create_table('userstories_rolepoints', (
|
||||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
('user_story', self.gf('django.db.models.fields.related.ForeignKey')(related_name='role_points', to=orm['userstories.UserStory'])),
|
('user_story', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['userstories.UserStory'], related_name='role_points')),
|
||||||
('role', self.gf('django.db.models.fields.related.ForeignKey')(related_name='role_points', to=orm['users.Role'])),
|
('role', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['users.Role'], related_name='role_points')),
|
||||||
('points', self.gf('django.db.models.fields.related.ForeignKey')(related_name='role_points', to=orm['projects.Points'])),
|
('points', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['projects.Points'], related_name='role_points')),
|
||||||
))
|
))
|
||||||
db.send_create_signal('userstories', ['RolePoints'])
|
db.send_create_signal('userstories', ['RolePoints'])
|
||||||
|
|
||||||
|
@ -23,16 +23,15 @@ class Migration(SchemaMigration):
|
||||||
# Adding model 'UserStory'
|
# Adding model 'UserStory'
|
||||||
db.create_table('userstories_userstory', (
|
db.create_table('userstories_userstory', (
|
||||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
('uuid', self.gf('django.db.models.fields.CharField')(max_length=40, unique=True, blank=True)),
|
('ref', self.gf('django.db.models.fields.BigIntegerField')(default=None, blank=True, db_index=True, null=True)),
|
||||||
('ref', self.gf('django.db.models.fields.BigIntegerField')(db_index=True, null=True, default=None, blank=True)),
|
('milestone', self.gf('django.db.models.fields.related.ForeignKey')(related_name='user_stories', default=None, blank=True, on_delete=models.SET_NULL, null=True, to=orm['milestones.Milestone'])),
|
||||||
('milestone', self.gf('django.db.models.fields.related.ForeignKey')(null=True, blank=True, to=orm['milestones.Milestone'], default=None, related_name='user_stories', on_delete=models.SET_NULL)),
|
('project', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['projects.Project'], related_name='user_stories')),
|
||||||
('project', self.gf('django.db.models.fields.related.ForeignKey')(related_name='user_stories', to=orm['projects.Project'])),
|
('owner', self.gf('django.db.models.fields.related.ForeignKey')(related_name='owned_user_stories', blank=True, on_delete=models.SET_NULL, null=True, to=orm['users.User'])),
|
||||||
('owner', self.gf('django.db.models.fields.related.ForeignKey')(null=True, blank=True, related_name='owned_user_stories', to=orm['users.User'], on_delete=models.SET_NULL)),
|
('status', self.gf('django.db.models.fields.related.ForeignKey')(related_name='user_stories', blank=True, on_delete=models.SET_NULL, null=True, to=orm['projects.UserStoryStatus'])),
|
||||||
('status', self.gf('django.db.models.fields.related.ForeignKey')(null=True, blank=True, related_name='user_stories', to=orm['projects.UserStoryStatus'], on_delete=models.SET_NULL)),
|
|
||||||
('order', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=100)),
|
('order', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=100)),
|
||||||
('created_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
('created_date', self.gf('django.db.models.fields.DateTimeField')(blank=True, auto_now_add=True)),
|
||||||
('modified_date', self.gf('django.db.models.fields.DateTimeField')(blank=True, auto_now=True)),
|
('modified_date', self.gf('django.db.models.fields.DateTimeField')(blank=True, auto_now=True)),
|
||||||
('finish_date', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
|
('finish_date', self.gf('django.db.models.fields.DateTimeField')(blank=True, null=True)),
|
||||||
('subject', self.gf('django.db.models.fields.CharField')(max_length=500)),
|
('subject', self.gf('django.db.models.fields.CharField')(max_length=500)),
|
||||||
('description', self.gf('django.db.models.fields.TextField')(blank=True)),
|
('description', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||||
('client_requirement', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
('client_requirement', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||||
|
@ -75,140 +74,210 @@ class Migration(SchemaMigration):
|
||||||
'auth.group': {
|
'auth.group': {
|
||||||
'Meta': {'object_name': 'Group'},
|
'Meta': {'object_name': 'Group'},
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'unique': 'True'}),
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'blank': 'True', 'to': "orm['auth.Permission']"})
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'blank': 'True', 'to': "orm['auth.Permission']"})
|
||||||
},
|
},
|
||||||
'auth.permission': {
|
'auth.permission': {
|
||||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission', 'ordering': "('content_type__app_label', 'content_type__model', 'codename')"},
|
||||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
},
|
},
|
||||||
'contenttypes.contenttype': {
|
'contenttypes.contenttype': {
|
||||||
'Meta': {'db_table': "'django_content_type'", 'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType'},
|
'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'", 'ordering': "('name',)"},
|
||||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||||
},
|
},
|
||||||
'milestones.milestone': {
|
'domains.domain': {
|
||||||
'Meta': {'ordering': "['project', '-created_date']", 'unique_together': "(('name', 'project'),)", 'object_name': 'Milestone'},
|
'Meta': {'object_name': 'Domain', 'ordering': "('domain',)"},
|
||||||
'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'domain': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
|
||||||
'disponibility': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': '0.0', 'blank': 'True'}),
|
|
||||||
'estimated_finish': ('django.db.models.fields.DateField', [], {'null': 'True', 'default': 'None', 'blank': 'True'}),
|
|
||||||
'estimated_start': ('django.db.models.fields.DateField', [], {'null': 'True', 'default': 'None', 'blank': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '200'}),
|
|
||||||
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'null': 'True', 'blank': 'True', 'related_name': "'owned_milestones'", 'to': "orm['users.User']"}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'milestones'", 'to': "orm['projects.Project']"}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'unique': 'True', 'blank': 'True'}),
|
|
||||||
'uuid': ('django.db.models.fields.CharField', [], {'max_length': '40', 'unique': 'True', 'blank': 'True'})
|
|
||||||
},
|
|
||||||
'projects.membership': {
|
|
||||||
'Meta': {'ordering': "['project', 'role', 'user']", 'unique_together': "(('user', 'project'),)", 'object_name': 'Membership'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['projects.Project']"}),
|
|
||||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.Role']"}),
|
|
||||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'to': "orm['users.User']"})
|
|
||||||
},
|
|
||||||
'projects.points': {
|
|
||||||
'Meta': {'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'Points'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
'public_register': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'points'", 'to': "orm['projects.Project']"}),
|
'scheme': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '60', 'null': 'True'})
|
||||||
'value': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': 'None', 'blank': 'True'})
|
|
||||||
},
|
},
|
||||||
'projects.project': {
|
'milestones.milestone': {
|
||||||
'Meta': {'ordering': "['name']", 'object_name': 'Project'},
|
'Meta': {'unique_together': "(('name', 'project'),)", 'object_name': 'Milestone', 'ordering': "['project', 'created_date']"},
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'description': ('django.db.models.fields.TextField', [], {}),
|
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
||||||
|
'disponibility': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'blank': 'True', 'null': 'True'}),
|
||||||
|
'estimated_finish': ('django.db.models.fields.DateField', [], {'default': 'None', 'blank': 'True', 'null': 'True'}),
|
||||||
|
'estimated_start': ('django.db.models.fields.DateField', [], {'default': 'None', 'blank': 'True', 'null': 'True'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'members': ('django.db.models.fields.related.ManyToManyField', [], {'through': "orm['projects.Membership']", 'symmetrical': 'False', 'related_name': "'projects'", 'to': "orm['users.User']"}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now': 'True'}),
|
'modified_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '250', 'unique': 'True'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'db_index': 'True'}),
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_projects'", 'to': "orm['users.User']"}),
|
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
|
||||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_milestones'", 'blank': 'True', 'null': 'True', 'to': "orm['users.User']"}),
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'unique': 'True', 'blank': 'True'}),
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'milestones'"}),
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'blank': 'True', 'max_length': '250'})
|
||||||
'total_milestones': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'default': '0', 'blank': 'True'}),
|
|
||||||
'total_story_points': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': 'None'}),
|
|
||||||
'uuid': ('django.db.models.fields.CharField', [], {'max_length': '40', 'unique': 'True', 'blank': 'True'})
|
|
||||||
},
|
},
|
||||||
'projects.userstorystatus': {
|
'projects.issuestatus': {
|
||||||
'Meta': {'ordering': "['project', 'name']", 'unique_together': "(('project', 'name'),)", 'object_name': 'UserStoryStatus'},
|
'Meta': {'unique_together': "(('project', 'name'),)", 'object_name': 'IssueStatus', 'ordering': "['project', 'order', 'name']"},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'default': "'#999999'", 'max_length': '20'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'us_statuses'", 'to': "orm['projects.Project']"})
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'issue_statuses'"})
|
||||||
|
},
|
||||||
|
'projects.issuetype': {
|
||||||
|
'Meta': {'unique_together': "(('project', 'name'),)", 'object_name': 'IssueType', 'ordering': "['project', 'order', 'name']"},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'default': "'#999999'", 'max_length': '20'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'issue_types'"})
|
||||||
|
},
|
||||||
|
'projects.membership': {
|
||||||
|
'Meta': {'object_name': 'Membership', 'ordering': "['project', 'role']"},
|
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True', 'auto_now_add': 'True'}),
|
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': 'None', 'max_length': '255', 'null': 'True'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'memberships'"}),
|
||||||
|
'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.Role']", 'related_name': "'memberships'"}),
|
||||||
|
'token': ('django.db.models.fields.CharField', [], {'unique': 'True', 'default': 'None', 'blank': 'True', 'max_length': '60', 'null': 'True'}),
|
||||||
|
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'memberships'", 'default': 'None', 'blank': 'True', 'null': 'True', 'to': "orm['users.User']"})
|
||||||
|
},
|
||||||
|
'projects.points': {
|
||||||
|
'Meta': {'unique_together': "(('project', 'name'),)", 'object_name': 'Points', 'ordering': "['project', 'order', 'name']"},
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'points'"}),
|
||||||
|
'value': ('django.db.models.fields.FloatField', [], {'default': 'None', 'blank': 'True', 'null': 'True'})
|
||||||
|
},
|
||||||
|
'projects.priority': {
|
||||||
|
'Meta': {'unique_together': "(('project', 'name'),)", 'object_name': 'Priority', 'ordering': "['project', 'order', 'name']"},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'default': "'#999999'", 'max_length': '20'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'priorities'"})
|
||||||
|
},
|
||||||
|
'projects.project': {
|
||||||
|
'Meta': {'object_name': 'Project', 'ordering': "['name']"},
|
||||||
|
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
||||||
|
'default_issue_status': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'related_name': "'+'", 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'to': "orm['projects.IssueStatus']"}),
|
||||||
|
'default_issue_type': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'related_name': "'+'", 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'to': "orm['projects.IssueType']"}),
|
||||||
|
'default_points': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'related_name': "'+'", 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'to': "orm['projects.Points']"}),
|
||||||
|
'default_priority': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'related_name': "'+'", 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'to': "orm['projects.Priority']"}),
|
||||||
|
'default_question_status': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'related_name': "'+'", 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'to': "orm['projects.QuestionStatus']"}),
|
||||||
|
'default_severity': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'related_name': "'+'", 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'to': "orm['projects.Severity']"}),
|
||||||
|
'default_task_status': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'related_name': "'+'", 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'to': "orm['projects.TaskStatus']"}),
|
||||||
|
'default_us_status': ('django.db.models.fields.related.OneToOneField', [], {'unique': 'True', 'related_name': "'+'", 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'to': "orm['projects.UserStoryStatus']"}),
|
||||||
|
'description': ('django.db.models.fields.TextField', [], {}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
||||||
|
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
||||||
|
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'default': '1', 'null': 'True'}),
|
||||||
|
'members': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'projects'", 'to': "orm['users.User']", 'through': "orm['projects.Membership']"}),
|
||||||
|
'modified_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'}),
|
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'related_name': "'owned_projects'"}),
|
||||||
|
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'site': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['domains.Domain']", 'null': 'True', 'related_name': "'projects'"}),
|
||||||
|
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'blank': 'True', 'max_length': '250'}),
|
||||||
|
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
||||||
|
'total_milestones': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True', 'null': 'True'}),
|
||||||
|
'total_story_points': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True'})
|
||||||
|
},
|
||||||
|
'projects.questionstatus': {
|
||||||
|
'Meta': {'unique_together': "(('project', 'name'),)", 'object_name': 'QuestionStatus', 'ordering': "['project', 'order', 'name']"},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'default': "'#999999'", 'max_length': '20'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'question_status'"})
|
||||||
|
},
|
||||||
|
'projects.severity': {
|
||||||
|
'Meta': {'unique_together': "(('project', 'name'),)", 'object_name': 'Severity', 'ordering': "['project', 'order', 'name']"},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'default': "'#999999'", 'max_length': '20'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'severities'"})
|
||||||
|
},
|
||||||
|
'projects.taskstatus': {
|
||||||
|
'Meta': {'unique_together': "(('project', 'name'),)", 'object_name': 'TaskStatus', 'ordering': "['project', 'order', 'name']"},
|
||||||
|
'color': ('django.db.models.fields.CharField', [], {'default': "'#999999'", 'max_length': '20'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'task_statuses'"})
|
||||||
|
},
|
||||||
|
'projects.userstorystatus': {
|
||||||
|
'Meta': {'unique_together': "(('project', 'name'),)", 'object_name': 'UserStoryStatus', 'ordering': "['project', 'order', 'name']"},
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'us_statuses'"})
|
||||||
},
|
},
|
||||||
'users.role': {
|
'users.role': {
|
||||||
'Meta': {'ordering': "['order', 'slug']", 'object_name': 'Role'},
|
'Meta': {'object_name': 'Role', 'ordering': "['order', 'slug']"},
|
||||||
'computable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
'computable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'roles'", 'to': "orm['auth.Permission']"}),
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Permission']", 'related_name': "'roles'"}),
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '250', 'unique': 'True', 'blank': 'True'})
|
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'blank': 'True', 'max_length': '250'})
|
||||||
},
|
},
|
||||||
'users.user': {
|
'users.user': {
|
||||||
'Meta': {'ordering': "['username']", 'object_name': 'User'},
|
'Meta': {'object_name': 'User', 'ordering': "['username']"},
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '9', 'default': "'#669933'", 'blank': 'True'}),
|
'color': ('django.db.models.fields.CharField', [], {'default': "'#669933'", 'blank': 'True', 'max_length': '9'}),
|
||||||
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
'default_language': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "''", 'blank': 'True'}),
|
'default_language': ('django.db.models.fields.CharField', [], {'default': "''", 'blank': 'True', 'max_length': '20'}),
|
||||||
'default_timezone': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "''", 'blank': 'True'}),
|
'default_timezone': ('django.db.models.fields.CharField', [], {'default': "''", 'blank': 'True', 'max_length': '20'}),
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
'email': ('django.db.models.fields.EmailField', [], {'blank': 'True', 'max_length': '75'}),
|
||||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
'first_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
||||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'symmetrical': 'False', 'related_name': "'user_set'", 'to': "orm['auth.Group']"}),
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'user_set'", 'blank': 'True', 'to': "orm['auth.Group']"}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
'last_name': ('django.db.models.fields.CharField', [], {'blank': 'True', 'max_length': '30'}),
|
||||||
|
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'notify_level': ('django.db.models.fields.CharField', [], {'default': "'all_owned_projects'", 'max_length': '32'}),
|
||||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
'photo': ('django.db.models.fields.files.FileField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
|
'photo': ('django.db.models.fields.files.FileField', [], {'null': 'True', 'blank': 'True', 'max_length': '500'}),
|
||||||
'token': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'default': 'None', 'blank': 'True'}),
|
'token': ('django.db.models.fields.CharField', [], {'default': 'None', 'blank': 'True', 'max_length': '200', 'null': 'True'}),
|
||||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'symmetrical': 'False', 'related_name': "'user_set'", 'to': "orm['auth.Permission']"}),
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'user_set'", 'blank': 'True', 'to': "orm['auth.Permission']"}),
|
||||||
'username': ('django.db.models.fields.CharField', [], {'max_length': '30', 'unique': 'True'})
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||||
},
|
},
|
||||||
'userstories.rolepoints': {
|
'userstories.rolepoints': {
|
||||||
'Meta': {'unique_together': "(('user_story', 'role'),)", 'object_name': 'RolePoints'},
|
'Meta': {'unique_together': "(('user_story', 'role'),)", 'object_name': 'RolePoints', 'ordering': "['user_story', 'role']"},
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'points': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'role_points'", 'to': "orm['projects.Points']"}),
|
'points': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Points']", 'related_name': "'role_points'"}),
|
||||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'role_points'", 'to': "orm['users.Role']"}),
|
'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.Role']", 'related_name': "'role_points'"}),
|
||||||
'user_story': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'role_points'", 'to': "orm['userstories.UserStory']"})
|
'user_story': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['userstories.UserStory']", 'related_name': "'role_points'"})
|
||||||
},
|
},
|
||||||
'userstories.userstory': {
|
'userstories.userstory': {
|
||||||
'Meta': {'ordering': "['project', 'order']", 'unique_together': "(('ref', 'project'),)", 'object_name': 'UserStory'},
|
'Meta': {'unique_together': "(('ref', 'project'),)", 'object_name': 'UserStory', 'ordering': "['project', 'order']"},
|
||||||
'client_requirement': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'client_requirement': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
'created_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now_add': 'True'}),
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
'finish_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
'finish_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'null': 'True'}),
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
'milestone': ('django.db.models.fields.related.ForeignKey', [], {'null': 'True', 'blank': 'True', 'to': "orm['milestones.Milestone']", 'default': 'None', 'related_name': "'user_stories'", 'on_delete': 'models.SET_NULL'}),
|
'milestone': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_stories'", 'default': 'None', 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'to': "orm['milestones.Milestone']"}),
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now': 'True'}),
|
'modified_date': ('django.db.models.fields.DateTimeField', [], {'blank': 'True', 'auto_now': 'True'}),
|
||||||
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '100'}),
|
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '100'}),
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'null': 'True', 'blank': 'True', 'related_name': "'owned_user_stories'", 'to': "orm['users.User']", 'on_delete': 'models.SET_NULL'}),
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_user_stories'", 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'to': "orm['users.User']"}),
|
||||||
'points': ('django.db.models.fields.related.ManyToManyField', [], {'through': "orm['userstories.RolePoints']", 'symmetrical': 'False', 'related_name': "'userstories'", 'to': "orm['projects.Points']"}),
|
'points': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'userstories'", 'to': "orm['projects.Points']", 'through': "orm['userstories.RolePoints']"}),
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_stories'", 'to': "orm['projects.Project']"}),
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'user_stories'"}),
|
||||||
'ref': ('django.db.models.fields.BigIntegerField', [], {'db_index': 'True', 'null': 'True', 'default': 'None', 'blank': 'True'}),
|
'ref': ('django.db.models.fields.BigIntegerField', [], {'default': 'None', 'blank': 'True', 'db_index': 'True', 'null': 'True'}),
|
||||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'null': 'True', 'blank': 'True', 'related_name': "'user_stories'", 'to': "orm['projects.UserStoryStatus']", 'on_delete': 'models.SET_NULL'}),
|
'status': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_stories'", 'blank': 'True', 'on_delete': 'models.SET_NULL', 'null': 'True', 'to': "orm['projects.UserStoryStatus']"}),
|
||||||
'subject': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
'subject': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
||||||
'team_requirement': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
'team_requirement': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
'uuid': ('django.db.models.fields.CharField', [], {'max_length': '40', 'unique': 'True', 'blank': 'True'}),
|
'watchers': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'watched_us'", 'blank': 'True', 'null': 'True', 'to': "orm['users.User']"})
|
||||||
'watchers': ('django.db.models.fields.related.ManyToManyField', [], {'null': 'True', 'blank': 'True', 'symmetrical': 'False', 'related_name': "'watched_us'", 'to': "orm['users.User']"})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,162 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import datetime
|
|
||||||
from south.db import db
|
|
||||||
from south.v2 import SchemaMigration
|
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(SchemaMigration):
|
|
||||||
|
|
||||||
def forwards(self, orm):
|
|
||||||
# Deleting field 'UserStory.uuid'
|
|
||||||
db.delete_column('userstories_userstory', 'uuid')
|
|
||||||
|
|
||||||
|
|
||||||
def backwards(self, orm):
|
|
||||||
# Adding field 'UserStory.uuid'
|
|
||||||
db.add_column('userstories_userstory', 'uuid',
|
|
||||||
self.gf('django.db.models.fields.CharField')(max_length=40, unique=True, default='', blank=True),
|
|
||||||
keep_default=False)
|
|
||||||
|
|
||||||
|
|
||||||
models = {
|
|
||||||
'auth.group': {
|
|
||||||
'Meta': {'object_name': 'Group'},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'blank': 'True', 'to': "orm['auth.Permission']"})
|
|
||||||
},
|
|
||||||
'auth.permission': {
|
|
||||||
'Meta': {'object_name': 'Permission', 'unique_together': "(('content_type', 'codename'),)", 'ordering': "('content_type__app_label', 'content_type__model', 'codename')"},
|
|
||||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
|
||||||
},
|
|
||||||
'contenttypes.contenttype': {
|
|
||||||
'Meta': {'db_table': "'django_content_type'", 'object_name': 'ContentType', 'unique_together': "(('app_label', 'model'),)", 'ordering': "('name',)"},
|
|
||||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
|
||||||
},
|
|
||||||
'milestones.milestone': {
|
|
||||||
'Meta': {'object_name': 'Milestone', 'unique_together': "(('name', 'project'),)", 'ordering': "['project', '-created_date']"},
|
|
||||||
'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
|
||||||
'disponibility': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': '0.0', 'blank': 'True'}),
|
|
||||||
'estimated_finish': ('django.db.models.fields.DateField', [], {'null': 'True', 'default': 'None', 'blank': 'True'}),
|
|
||||||
'estimated_start': ('django.db.models.fields.DateField', [], {'null': 'True', 'default': 'None', 'blank': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'db_index': 'True'}),
|
|
||||||
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'null': 'True', 'to': "orm['users.User']", 'blank': 'True', 'related_name': "'owned_milestones'"}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'milestones'"}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '250', 'blank': 'True'})
|
|
||||||
},
|
|
||||||
'projects.membership': {
|
|
||||||
'Meta': {'object_name': 'Membership', 'unique_together': "(('user', 'project'),)", 'ordering': "['project', 'role', 'user']"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'memberships'"}),
|
|
||||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.Role']", 'related_name': "'memberships'"}),
|
|
||||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'related_name': "'memberships'"})
|
|
||||||
},
|
|
||||||
'projects.points': {
|
|
||||||
'Meta': {'object_name': 'Points', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'name']"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'points'"}),
|
|
||||||
'value': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': 'None', 'blank': 'True'})
|
|
||||||
},
|
|
||||||
'projects.project': {
|
|
||||||
'Meta': {'object_name': 'Project', 'ordering': "['name']"},
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'last_issue_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'last_task_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'last_us_ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'default': '1'}),
|
|
||||||
'members': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'projects'", 'to': "orm['users.User']", 'through': "orm['projects.Membership']"}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.User']", 'related_name': "'owned_projects'"}),
|
|
||||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '250', 'blank': 'True'}),
|
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
|
||||||
'total_milestones': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'default': '0', 'blank': 'True'}),
|
|
||||||
'total_story_points': ('django.db.models.fields.FloatField', [], {'null': 'True', 'default': 'None'})
|
|
||||||
},
|
|
||||||
'projects.userstorystatus': {
|
|
||||||
'Meta': {'object_name': 'UserStoryStatus', 'unique_together': "(('project', 'name'),)", 'ordering': "['project', 'name']"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'us_statuses'"})
|
|
||||||
},
|
|
||||||
'users.role': {
|
|
||||||
'Meta': {'object_name': 'Role', 'ordering': "['order', 'slug']"},
|
|
||||||
'computable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
|
||||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
|
|
||||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'roles'", 'to': "orm['auth.Permission']"}),
|
|
||||||
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '250', 'blank': 'True'})
|
|
||||||
},
|
|
||||||
'users.user': {
|
|
||||||
'Meta': {'object_name': 'User', 'ordering': "['username']"},
|
|
||||||
'color': ('django.db.models.fields.CharField', [], {'max_length': '9', 'default': "'#669933'", 'blank': 'True'}),
|
|
||||||
'colorize_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'default_language': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "''", 'blank': 'True'}),
|
|
||||||
'default_timezone': ('django.db.models.fields.CharField', [], {'max_length': '20', 'default': "''", 'blank': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
|
||||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
|
||||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
|
||||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'user_set'", 'blank': 'True', 'to': "orm['auth.Group']"}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
|
||||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
|
||||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
|
||||||
'notify_changes_by_me': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'notify_level': ('django.db.models.fields.CharField', [], {'max_length': '32', 'default': "'all_owned_projects'"}),
|
|
||||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
|
||||||
'photo': ('django.db.models.fields.files.FileField', [], {'null': 'True', 'max_length': '500', 'blank': 'True'}),
|
|
||||||
'token': ('django.db.models.fields.CharField', [], {'null': 'True', 'max_length': '200', 'default': 'None', 'blank': 'True'}),
|
|
||||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'user_set'", 'blank': 'True', 'to': "orm['auth.Permission']"}),
|
|
||||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
|
||||||
},
|
|
||||||
'userstories.rolepoints': {
|
|
||||||
'Meta': {'object_name': 'RolePoints', 'unique_together': "(('user_story', 'role'),)"},
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'points': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Points']", 'related_name': "'role_points'"}),
|
|
||||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['users.Role']", 'related_name': "'role_points'"}),
|
|
||||||
'user_story': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['userstories.UserStory']", 'related_name': "'role_points'"})
|
|
||||||
},
|
|
||||||
'userstories.userstory': {
|
|
||||||
'Meta': {'object_name': 'UserStory', 'unique_together': "(('ref', 'project'),)", 'ordering': "['project', 'order']"},
|
|
||||||
'client_requirement': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
|
||||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
|
||||||
'finish_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
|
||||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
|
||||||
'milestone': ('django.db.models.fields.related.ForeignKey', [], {'null': 'True', 'related_name': "'user_stories'", 'default': 'None', 'to': "orm['milestones.Milestone']", 'blank': 'True', 'on_delete': 'models.SET_NULL'}),
|
|
||||||
'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
|
||||||
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '100'}),
|
|
||||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'null': 'True', 'to': "orm['users.User']", 'related_name': "'owned_user_stories'", 'blank': 'True', 'on_delete': 'models.SET_NULL'}),
|
|
||||||
'points': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'userstories'", 'to': "orm['projects.Points']", 'through': "orm['userstories.RolePoints']"}),
|
|
||||||
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['projects.Project']", 'related_name': "'user_stories'"}),
|
|
||||||
'ref': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True', 'default': 'None', 'db_index': 'True'}),
|
|
||||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'null': 'True', 'to': "orm['projects.UserStoryStatus']", 'related_name': "'user_stories'", 'blank': 'True', 'on_delete': 'models.SET_NULL'}),
|
|
||||||
'subject': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
|
||||||
'tags': ('picklefield.fields.PickledObjectField', [], {'blank': 'True'}),
|
|
||||||
'team_requirement': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
|
||||||
'watchers': ('django.db.models.fields.related.ManyToManyField', [], {'null': 'True', 'symmetrical': 'False', 'related_name': "'watched_us'", 'blank': 'True', 'to': "orm['users.User']"})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
complete_apps = ['userstories']
|
|
|
@ -15,7 +15,7 @@ from . import create_userstory
|
||||||
|
|
||||||
|
|
||||||
class UserStoriesTestCase(test.TestCase):
|
class UserStoriesTestCase(test.TestCase):
|
||||||
fixtures = ["initial_role.json", "initial_site.json"]
|
fixtures = ["initial_role.json", "initial_domains.json"]
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.user1 = create_user(1) # Project owner
|
self.user1 = create_user(1) # Project owner
|
||||||
|
|
|
@ -14,7 +14,7 @@ from . import create_wiki_page
|
||||||
|
|
||||||
|
|
||||||
class WikiPagesTestCase(test.TestCase):
|
class WikiPagesTestCase(test.TestCase):
|
||||||
fixtures = ["initial_role.json", "initial_site.json"]
|
fixtures = ["initial_role.json", "initial_domains.json"]
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.user1 = create_user(1)
|
self.user1 = create_user(1)
|
||||||
|
|
|
@ -70,7 +70,9 @@ SITES_FRONT = {
|
||||||
1: {"domain": "localhost:9001", "scheme": "http"},
|
1: {"domain": "localhost:9001", "scheme": "http"},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DOMAIN_ID = 1
|
||||||
|
|
||||||
|
# Only for django. Not used.
|
||||||
SITE_ID = 1
|
SITE_ID = 1
|
||||||
|
|
||||||
#SESSION BACKEND
|
#SESSION BACKEND
|
||||||
|
@ -154,7 +156,7 @@ TEMPLATE_LOADERS = [
|
||||||
|
|
||||||
MIDDLEWARE_CLASSES = [
|
MIDDLEWARE_CLASSES = [
|
||||||
'greenmine.base.middleware.CoorsMiddleware',
|
'greenmine.base.middleware.CoorsMiddleware',
|
||||||
'greenmine.base.middleware.SitesMiddleware',
|
'greenmine.base.domains.middleware.DomainsMiddleware',
|
||||||
|
|
||||||
# Common middlewares
|
# Common middlewares
|
||||||
'django.middleware.common.CommonMiddleware',
|
'django.middleware.common.CommonMiddleware',
|
||||||
|
@ -192,6 +194,7 @@ INSTALLED_APPS = [
|
||||||
'django.contrib.staticfiles',
|
'django.contrib.staticfiles',
|
||||||
|
|
||||||
'greenmine.base.users',
|
'greenmine.base.users',
|
||||||
|
'greenmine.base.domains',
|
||||||
'greenmine.base.notifications',
|
'greenmine.base.notifications',
|
||||||
'greenmine.base.searches',
|
'greenmine.base.searches',
|
||||||
'greenmine.base',
|
'greenmine.base',
|
||||||
|
|
|
@ -13,7 +13,7 @@ admin.autodiscover()
|
||||||
urlpatterns = patterns('',
|
urlpatterns = patterns('',
|
||||||
url(r'^api/v1/', include(router.urls)),
|
url(r'^api/v1/', include(router.urls)),
|
||||||
url(r'^api/v1/api-auth/', include('rest_framework.urls', namespace='rest_framework')),
|
url(r'^api/v1/api-auth/', include('rest_framework.urls', namespace='rest_framework')),
|
||||||
url(r'^api/v1/sites', "greenmine.base.apiviews.sitestatus"),
|
url(r'^api/v1/sites', "greenmine.base.domains.api.domainstatus"),
|
||||||
url(r'^admin/', include(admin.site.urls)),
|
url(r'^admin/', include(admin.site.urls)),
|
||||||
url(r'^grappelli/', include('grappelli.urls')),
|
url(r'^grappelli/', include('grappelli.urls')),
|
||||||
)
|
)
|
||||||
|
|
|
@ -10,6 +10,8 @@ echo "-> Run syncdb"
|
||||||
python manage.py syncdb --migrate --noinput --traceback
|
python manage.py syncdb --migrate --noinput --traceback
|
||||||
# echo "-> Load initial Site"
|
# echo "-> Load initial Site"
|
||||||
# python manage.py loaddata initial_site --traceback
|
# python manage.py loaddata initial_site --traceback
|
||||||
|
echo "-> Load initial domain"
|
||||||
|
python manage.py loaddata initial_domains --traceback
|
||||||
echo "-> Load initial user"
|
echo "-> Load initial user"
|
||||||
python manage.py loaddata initial_user --traceback
|
python manage.py loaddata initial_user --traceback
|
||||||
echo "-> Load initial roles"
|
echo "-> Load initial roles"
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
alter table base_site rename to domains_domain;
|
||||||
|
alter table base_sitemember rename to domains_domainmember;
|
||||||
|
delete from south_migrationhistory;
|
Loading…
Reference in New Issue