correct migrations + new version
authorymh <ymh.work@gmail.com>
Tue, 12 May 2015 14:40:27 +0200
changeset 1369 e7cd1595f512
parent 1368 1d9fc32ec8ab
child 1370 166d4c070210
correct migrations + new version
.settings/org.eclipse.core.resources.prefs
src/ldt/ldt/__init__.py
src/ldt/ldt/ldt_utils/migrations/0001_initial.py
src/ldt/ldt/ldt_utils/migrations/0002_auto_20150430_0951.py
src/ldt/ldt/ldt_utils/migrations/0003_adding_is_owner_group_permission.py
src/ldt/ldt/ldt_utils/models.py
src/ldt/ldt/user/migrations/0001_initial.py
src/ldt/ldt/user/models.py
--- a/.settings/org.eclipse.core.resources.prefs	Thu Apr 30 13:29:53 2015 +0200
+++ b/.settings/org.eclipse.core.resources.prefs	Tue May 12 14:40:27 2015 +0200
@@ -1,6 +1,4 @@
 eclipse.preferences.version=1
-encoding//src/ldt/ldt/core/migrations/0001_initial.py=utf-8
-encoding//src/ldt/ldt/core/migrations/0002_auto__del_owner.py=utf-8
 encoding//src/ldt/ldt/indexation/backends/elasticsearch_backend.py=utf-8
 encoding//src/ldt/ldt/indexation/highlighter.py=utf-8
 encoding//src/ldt/ldt/indexation/models.py=utf-8
@@ -9,51 +7,12 @@
 encoding//src/ldt/ldt/indexation/signals.py=utf-8
 encoding//src/ldt/ldt/indexation/tests.py=utf-8
 encoding//src/ldt/ldt/ldt_utils/events.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0001_initial.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0002_auto__add_field_media_mimetype_field__chg_field_media_external_src_url.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0003_auto__chg_field_project_owner.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0004_auto__add_field_project_description.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0005_add_permissions.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0006_auto__add_field_media_image.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0007_auto__add_field_content_image__del_field_media_image.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0008_auto__add_field_project_image.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0009_auto__chg_field_content_image__chg_field_project_image.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0010_auto__add_annotationstat.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0011_gen_stat_annotation.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0012_auto__add_field_content_last_annotated.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0013_auto__add_field_content_front_project__chg_field_content_last_annotate.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0014_auto__del_annotationstat__chg_field_content_last_annotated.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0015_auto__add_contentstat__del_field_content_last_annotated__del_field_con.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0016_one_to_one_stat_annotation.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0017_correct_image_path.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0018_auto__chg_field_content_iri_id__chg_field_project_ldt_id__chg_field_au.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0019_recalculate_media_hash_src.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0020_auto__add_field_segment_id_hash__chg_field_segment_iri_id__chg_field_s.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0021_recalculate_segment_id_hash_script.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0022_auto__add_unique_media_src_hash__chg_field_segment_cutting_id__chg_fie.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0023_auto__add_field_segment_audio_src__add_field_segment_audio_href.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0024_auto__chg_field_tag_name.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0025_chg_site_domain.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0026_set_relative_ldtproject.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0027_auto__chg_field_project_owner__chg_field_media_creator.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0028_all_users_in_everyone.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/migrations/0029_tagging_to_taggit.py=utf-8
-encoding//src/ldt/ldt/ldt_utils/views/json.py=utf-8
+encoding//src/ldt/ldt/ldt_utils/views/ldt_json.py=utf-8
 encoding//src/ldt/ldt/management/commands/createmediacontent.py=utf-8
 encoding//src/ldt/ldt/management/commands/synciri.py=utf-8
 encoding//src/ldt/ldt/management/commands/updateiriurlinprojects.py=utf-8
 encoding//src/ldt/ldt/management/utils.py=utf-8
 encoding//src/ldt/ldt/test/test_runner.py=utf-8
 encoding//src/ldt/ldt/text/migrations/0001_initial.py=utf-8
-encoding//src/ldt/ldt/text/migrations/0002_auto__chg_field_annotation_external_id.py=utf-8
-encoding//src/ldt/ldt/text/migrations/0003_auto__del_field_annotation_tags_field.py=utf-8
-encoding//src/ldt/ldt/user/migrations/0001_initial.py=utf-8
-encoding//src/ldt/ldt/user/migrations/0005_add_permission_owner_group.py=utf-8
-encoding//src/ldt/ldt/user/migrations/0008_auto__chg_field_groupprofile_image__chg_field_groupprofile_group__chg_.py=utf-8
-encoding//src/ldt/ldt/user/migrations/0009_rename_auth_user_to_user_ldt_user.py=utf-8
-encoding//src/ldt/ldt/user/migrations/0010_auto__add_field_ldtuser_language__add_field_ldtuser_image.py=utf-8
-encoding//src/ldt/ldt/user/migrations/0011_copy_image_language_ldt_user.py=utf-8
-encoding//src/ldt/ldt/user/migrations/0012_auto__del_userprofile.py=utf-8
-encoding//src/ldt/ldt/user/migrations/0013_auto__del_ldt.py=utf-8
 encoding//virtualenv/web/env/guardianenv/Lib/site-packages/guardian/migrations/0001_initial.py=utf-8
 encoding/<project>=UTF-8
--- a/src/ldt/ldt/__init__.py	Thu Apr 30 13:29:53 2015 +0200
+++ b/src/ldt/ldt/__init__.py	Tue May 12 14:40:27 2015 +0200
@@ -1,6 +1,6 @@
 __all__ = ["VERSION", "get_version", "__version__"]
 
-VERSION = (1, 55, 00, "final", 0)
+VERSION = (1, 56, 00, "final", 0)
 
 
 def get_version():
--- a/src/ldt/ldt/ldt_utils/migrations/0001_initial.py	Thu Apr 30 13:29:53 2015 +0200
+++ b/src/ldt/ldt/ldt_utils/migrations/0001_initial.py	Tue May 12 14:40:27 2015 +0200
@@ -5,6 +5,8 @@
 import sorl.thumbnail.fields
 import datetime
 import ldt.ldt_utils.utils
+from django.conf import settings
+import ldt.ldt_utils.models
 import taggit.managers
 
 
@@ -12,6 +14,7 @@
 
     dependencies = [
         ('taggit', '0001_initial'),
+        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
     ]
 
     operations = [
@@ -40,7 +43,8 @@
                 ('description', models.TextField(null=True, verbose_name='content.description', blank=True)),
                 ('duration', models.IntegerField(null=True, verbose_name='content.duration', blank=True)),
                 ('content_creation_date', models.DateTimeField(null=True, verbose_name='content.content_creation_date', blank=True)),
-                ('image', sorl.thumbnail.fields.ImageField(default=b'thumbnails/contents/content_default_icon.png', max_length=200, upload_to=b'thumbnails/contents/')),
+                ('image', sorl.thumbnail.fields.ImageField(default=ldt.ldt_utils.models.get_content_image_default, max_length=200, upload_to=b'thumbnails/contents/')),
+                ('authors', models.ManyToManyField(to='ldt_utils.Author', verbose_name='content.authors', blank=True)),
             ],
             options={
                 'ordering': ['title'],
@@ -55,6 +59,7 @@
                 ('polemics_volume_str', models.CommaSeparatedIntegerField(max_length=1024, null=True, verbose_name='content_stat.polemics_volume', blank=True)),
                 ('nb_annotations', models.IntegerField(default=0, verbose_name='content.nb_annotation', db_index=True)),
                 ('last_annotated', models.DateTimeField(default=datetime.datetime.now, null=True, verbose_name='content.last_annotated', blank=True)),
+                ('content', models.OneToOneField(related_name='stat_annotation', verbose_name='content_stat.content', to='ldt_utils.Content')),
             ],
         ),
         migrations.CreateModel(
@@ -75,6 +80,7 @@
                 ('src', models.CharField(max_length=1024, verbose_name='media.src')),
                 ('src_hash', models.CharField(unique=True, max_length=128, verbose_name='media.src_hash', blank=True)),
                 ('mimetype_field', models.CharField(max_length=512, null=True, verbose_name='media.mimetype', blank=True)),
+                ('creator', models.ForeignKey(verbose_name='media.creator', blank=True, to=settings.AUTH_USER_MODEL, null=True)),
             ],
             options={
                 'permissions': (('view_media', 'Can view media'),),
@@ -93,8 +99,9 @@
                 ('changed_by', models.CharField(max_length=70, verbose_name='changed by')),
                 ('state', models.IntegerField(default=1, choices=[(1, b'edition'), (2, b'published'), (3, b'moderated'), (4, b'rejected'), (5, b'deleted')])),
                 ('description', models.TextField(null=True, blank=True)),
-                ('image', sorl.thumbnail.fields.ImageField(default=b'thumbnails/projects/project_default_icon.png', max_length=200, upload_to=b'thumbnails/projects/')),
+                ('image', sorl.thumbnail.fields.ImageField(default=ldt.ldt_utils.models.get_project_image_default, max_length=200, upload_to=b'thumbnails/projects/')),
                 ('contents', models.ManyToManyField(to='ldt_utils.Content')),
+                ('owner', models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True)),
             ],
             options={
                 'ordering': ['title'],
@@ -128,4 +135,19 @@
                 'permissions': (('view_segment', 'Can view segment'),),
             },
         ),
+        migrations.AddField(
+            model_name='content',
+            name='front_project',
+            field=models.ForeignKey(blank=True, to='ldt_utils.Project', null=True),
+        ),
+        migrations.AddField(
+            model_name='content',
+            name='media_obj',
+            field=models.ForeignKey(blank=True, to='ldt_utils.Media', null=True),
+        ),
+        migrations.AddField(
+            model_name='content',
+            name='tags',
+            field=taggit.managers.TaggableManager(to='taggit.Tag', through='taggit.TaggedItem', help_text='A comma-separated list of tags.', verbose_name='Tags'),
+        ),
     ]
--- a/src/ldt/ldt/ldt_utils/migrations/0002_auto_20150430_0951.py	Thu Apr 30 13:29:53 2015 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-# -*- coding: utf-8 -*-
-from __future__ import unicode_literals
-
-from django.db import models, migrations
-from django.conf import settings
-import taggit.managers
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('taggit', '0001_initial'),
-        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
-        ('ldt_utils', '0001_initial'),
-    ]
-
-    operations = [
-        migrations.AddField(
-            model_name='project',
-            name='owner',
-            field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True),
-        ),
-        migrations.AddField(
-            model_name='media',
-            name='creator',
-            field=models.ForeignKey(verbose_name='media.creator', blank=True, to=settings.AUTH_USER_MODEL, null=True),
-        ),
-        migrations.AddField(
-            model_name='contentstat',
-            name='content',
-            field=models.OneToOneField(related_name='stat_annotation', verbose_name='content_stat.content', to='ldt_utils.Content'),
-        ),
-        migrations.AddField(
-            model_name='content',
-            name='authors',
-            field=models.ManyToManyField(to='ldt_utils.Author', verbose_name='content.authors', blank=True),
-        ),
-        migrations.AddField(
-            model_name='content',
-            name='front_project',
-            field=models.ForeignKey(blank=True, to='ldt_utils.Project', null=True),
-        ),
-        migrations.AddField(
-            model_name='content',
-            name='media_obj',
-            field=models.ForeignKey(blank=True, to='ldt_utils.Media', null=True),
-        ),
-        migrations.AddField(
-            model_name='content',
-            name='tags',
-            field=taggit.managers.TaggableManager(to='taggit.Tag', through='taggit.TaggedItem', help_text='A comma-separated list of tags.', verbose_name='Tags'),
-        ),
-    ]
--- a/src/ldt/ldt/ldt_utils/migrations/0003_adding_is_owner_group_permission.py	Thu Apr 30 13:29:53 2015 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-# -*- coding: utf-8 -*-
-from __future__ import unicode_literals
-
-from django.db import models, migrations
-
-class Migration(migrations.Migration):
-    
-    def add_permission_is_owner_group(apps, schema_editor):
-        from django.contrib.contenttypes.management import update_contenttypes
-        for app_config in apps.get_app_configs():
-            app_config.models_module=True
-            update_contenttypes(app_config)
-            app_config.models_module=None
-
-        Permission = apps.get_model("auth", "Permission")
-        ContentType = apps.get_model("contenttypes", "ContentType")
-        content_type = ContentType.objects.get(app_label='auth', model='group')
-        Permission.objects.create(
-                    codename='is_owner_group', 
-                    name='Can add/delete admins to the group',
-                    content_type=content_type
-                )
-        
-    
-    dependencies = [
-        ('contenttypes', '0001_initial'),
-        ('auth', '0006_require_contenttypes_0002'),
-        ('ldt_utils', '0002_auto_20150430_0951'),
-    ]
-
-    operations = [
-        migrations.RunPython(add_permission_is_owner_group)
-    ]
\ No newline at end of file
--- a/src/ldt/ldt/ldt_utils/models.py	Thu Apr 30 13:29:53 2015 +0200
+++ b/src/ldt/ldt/ldt_utils/models.py	Tue May 12 14:40:27 2015 +0200
@@ -165,6 +165,9 @@
     def get_by_natural_key(self, iri_id):
         return self.get(iri_id=iri_id)
 
+def get_content_image_default():
+    return settings.DEFAULT_CONTENT_ICON
+
 class Content(SafeModel):
     objects = ContentManager()
     
@@ -179,7 +182,7 @@
     content_creation_date = models.DateTimeField(null=True, blank=True, verbose_name=_('content.content_creation_date'))
     tags = TaggableManager()
     media_obj = models.ForeignKey("Media", blank=True, null=True)
-    image = ImageField(upload_to="thumbnails/contents/", default=settings.DEFAULT_CONTENT_ICON, max_length=200)
+    image = ImageField(upload_to="thumbnails/contents/", default=get_content_image_default, max_length=200)
     front_project = models.ForeignKey("Project", null=True, blank=True)
         
     class Meta:
@@ -589,8 +592,11 @@
     
     class Meta:
         app_label="ldt_utils"
-    
-    
+
+
+def get_project_image_default():
+    return settings.DEFAULT_PROJECT_ICON
+
 class Project(Document, SafeModel):
     
     EDITION = 1
@@ -616,7 +622,7 @@
     changed_by = models.CharField(_("changed by"), max_length=70)
     state = models.IntegerField(choices=STATE_CHOICES, default=1)
     description = models.TextField(null=True, blank=True)    
-    image = ImageField(upload_to="thumbnails/projects/", default=settings.DEFAULT_PROJECT_ICON, max_length=200)
+    image = ImageField(upload_to="thumbnails/projects/", default=get_project_image_default, max_length=200)
     
     class Meta:
         app_label="ldt_utils"
--- a/src/ldt/ldt/user/migrations/0001_initial.py	Thu Apr 30 13:29:53 2015 +0200
+++ b/src/ldt/ldt/user/migrations/0001_initial.py	Tue May 12 14:40:27 2015 +0200
@@ -3,6 +3,7 @@
 
 from django.db import models, migrations
 import sorl.thumbnail.fields
+import ldt.user.models
 import django.utils.timezone
 import django.core.validators
 
@@ -28,15 +29,13 @@
                 ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')),
                 ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),
                 ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),
-                ('language', models.CharField(default=b'fr', max_length=2)),
-                ('image', sorl.thumbnail.fields.ImageField(default=b'thumbnails/users/user_default_icon.png', max_length=200, upload_to=b'thumbnails/users/')),
+                ('language', models.CharField(default=ldt.user.models.get_ldtuser_language_default, max_length=2)),
+                ('image', sorl.thumbnail.fields.ImageField(default=ldt.user.models.get_ldtuser_image_default, max_length=200, upload_to=b'thumbnails/users/')),
                 ('groups', models.ManyToManyField(related_query_name='user', related_name='user_set', to='auth.Group', blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', verbose_name='groups')),
                 ('user_permissions', models.ManyToManyField(related_query_name='user', related_name='user_set', to='auth.Permission', blank=True, help_text='Specific permissions for this user.', verbose_name='user permissions')),
             ],
             options={
-                'abstract': False,
-                'verbose_name': 'user',
-                'verbose_name_plural': 'users',
+                'permissions': ((),),
             },
         ),
         migrations.CreateModel(
@@ -44,7 +43,7 @@
             fields=[
                 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                 ('description', models.TextField()),
-                ('image', sorl.thumbnail.fields.ImageField(default=b'thumbnails/groups/group_default_icon.png', max_length=200, upload_to=b'/Users/durandn/IRIProjects/platform_web/web/static/media/thumbnails/groups/')),
+                ('image', sorl.thumbnail.fields.ImageField(default=ldt.user.models.get_group_image_default, max_length=200, upload_to=ldt.user.models.get_group_image_upload_to)),
                 ('group', models.OneToOneField(related_name='profile', to='auth.Group')),
             ],
         ),
--- a/src/ldt/ldt/user/models.py	Thu Apr 30 13:29:53 2015 +0200
+++ b/src/ldt/ldt/user/models.py	Tue May 12 14:40:27 2015 +0200
@@ -1,10 +1,14 @@
 from django.conf import settings
-from django.contrib.auth.models import (AbstractUser, UserManager, Group, 
-    BaseUserManager)
+from django.contrib.auth import models as auth_models
+from django.contrib.auth.models import (AbstractUser, UserManager, Group,
+    BaseUserManager, Permission)
+from django.contrib.contenttypes.models import ContentType
 from django.db import models
 from django.db.models.signals import post_save
 from django.utils import timezone
 from sorl.thumbnail import ImageField
+from south.signals import post_migrate
+
 
 class LdtUserManager(BaseUserManager):    
 
@@ -34,10 +38,17 @@
         u.save(using=self._db)
         return u
 
+# This method was added to stabilize migrations
+def get_group_image_upload_to(instance, filename):
+    return settings.MEDIA_ROOT+"thumbnails/groups/"
+
+def get_group_image_default():
+    return settings.DEFAULT_GROUP_ICON
+
 class GroupProfile(models.Model):
     group = models.OneToOneField(Group, primary_key=False, related_name='profile')
     description = models.TextField()
-    image = ImageField(upload_to=settings.MEDIA_ROOT+"thumbnails/groups/", default=settings.DEFAULT_GROUP_ICON, max_length=200)
+    image = ImageField(upload_to=get_group_image_upload_to, default=get_group_image_default, max_length=200)
     
     @staticmethod
     def create_group_profile(sender, instance, created, **kwargs):
@@ -49,18 +60,34 @@
             if admins:
                 admin_user = admins[0] 
                 admin_user.groups.add(instance)
-                admin_user.save()            
+                admin_user.save()
+
+def get_ldtuser_image_default():
+    return settings.DEFAULT_USER_ICON
+
+def get_ldtuser_language_default():
+    if hasattr(settings, 'LANGUAGE_CODE'):
+        return settings.LANGUAGE_CODE[:2]
+    else :
+        return 'en'
 
 class LdtUser(AbstractUser):
-    language = models.CharField(max_length=2, default=settings.LANGUAGE_CODE[:2])    
-    image = ImageField(upload_to="thumbnails/users/", default=settings.DEFAULT_USER_ICON, max_length=200)
+    language = models.CharField(max_length=2, default=get_ldtuser_language_default)
+    image = ImageField(upload_to="thumbnails/users/", default=get_ldtuser_image_default, max_length=200)
     
     objects = LdtUserManager()
 
-            
+
 def get_profile(self):
     return self.profile
 
 Group.add_to_class("get_profile", get_profile)  # @UndefinedVariable
 post_save.connect(GroupProfile.create_group_profile, sender=Group)
 
+
+def add_group_permissions(sender, **kwargs):
+    ct = ContentType.objects.get(app_label='auth', model='group')
+    Permission.objects.get_or_create(codename='is_owner_group', name='Can add/delete admins to the group',content_type=ct)
+
+post_migrate.connect(add_group_permissions, sender=auth_models)
+