--- 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)
+