Fixing timeline exportation
parent
1fa5a12d06
commit
44d46ad47b
|
@ -25,6 +25,7 @@ from django.core.files.base import ContentFile
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
|
from django.contrib.contenttypes.models import ContentType
|
||||||
|
|
||||||
from taiga.base.api import serializers
|
from taiga.base.api import serializers
|
||||||
from taiga.base.fields import JsonField
|
from taiga.base.fields import JsonField
|
||||||
|
@ -68,6 +69,21 @@ class FileField(serializers.WritableField):
|
||||||
return ContentFile(decoded_data, name=data['name'])
|
return ContentFile(decoded_data, name=data['name'])
|
||||||
|
|
||||||
|
|
||||||
|
class ContentTypeField(serializers.RelatedField):
|
||||||
|
read_only = False
|
||||||
|
|
||||||
|
def to_native(self, obj):
|
||||||
|
if obj:
|
||||||
|
return [obj.app_label, obj.model]
|
||||||
|
return None
|
||||||
|
|
||||||
|
def from_native(self, data):
|
||||||
|
try:
|
||||||
|
return ContentType.objects.get_by_natural_key(*data)
|
||||||
|
except Exception:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
class RelatedNoneSafeField(serializers.RelatedField):
|
class RelatedNoneSafeField(serializers.RelatedField):
|
||||||
def field_from_native(self, data, files, field_name, into):
|
def field_from_native(self, data, files, field_name, into):
|
||||||
if self.read_only:
|
if self.read_only:
|
||||||
|
|
|
@ -40,7 +40,7 @@ from taiga.projects.votes import services as votes_service
|
||||||
from .fields import (FileField, RelatedNoneSafeField, UserRelatedField,
|
from .fields import (FileField, RelatedNoneSafeField, UserRelatedField,
|
||||||
UserPkField, CommentField, ProjectRelatedField,
|
UserPkField, CommentField, ProjectRelatedField,
|
||||||
HistoryUserField, HistoryValuesField, HistoryDiffField,
|
HistoryUserField, HistoryValuesField, HistoryDiffField,
|
||||||
TimelineDataField)
|
TimelineDataField, ContentTypeField)
|
||||||
from .mixins import (HistoryExportSerializerMixin,
|
from .mixins import (HistoryExportSerializerMixin,
|
||||||
AttachmentExportSerializerMixin,
|
AttachmentExportSerializerMixin,
|
||||||
CustomAttributesValuesExportSerializerMixin,
|
CustomAttributesValuesExportSerializerMixin,
|
||||||
|
@ -317,9 +317,10 @@ class WikiLinkExportSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
class TimelineExportSerializer(serializers.ModelSerializer):
|
class TimelineExportSerializer(serializers.ModelSerializer):
|
||||||
data = TimelineDataField()
|
data = TimelineDataField()
|
||||||
|
data_content_type = ContentTypeField()
|
||||||
class Meta:
|
class Meta:
|
||||||
model = timeline_models.Timeline
|
model = timeline_models.Timeline
|
||||||
exclude = ('id', 'project', 'namespace', 'object_id')
|
exclude = ('id', 'project', 'namespace', 'object_id', 'content_type')
|
||||||
|
|
||||||
|
|
||||||
class ProjectExportSerializer(WatcheableObjectModelSerializerMixin):
|
class ProjectExportSerializer(WatcheableObjectModelSerializerMixin):
|
||||||
|
|
|
@ -577,6 +577,7 @@ def _store_timeline_entry(project, timeline):
|
||||||
serialized.object.project = project
|
serialized.object.project = project
|
||||||
serialized.object.namespace = build_project_namespace(project)
|
serialized.object.namespace = build_project_namespace(project)
|
||||||
serialized.object.object_id = project.id
|
serialized.object.object_id = project.id
|
||||||
|
serialized.object.content_type = ContentType.objects.get_for_model(project.__class__)
|
||||||
serialized.object._importing = True
|
serialized.object._importing = True
|
||||||
serialized.save()
|
serialized.save()
|
||||||
return serialized
|
return serialized
|
||||||
|
@ -725,7 +726,7 @@ def store_project_from_dict(data, owner=None):
|
||||||
except err.TaigaImportError:
|
except err.TaigaImportError:
|
||||||
# reraise known inport errors
|
# reraise known inport errors
|
||||||
raise
|
raise
|
||||||
except:
|
except Exception:
|
||||||
# reise unknown errors as import error
|
# reise unknown errors as import error
|
||||||
raise err.TaigaImportError(_("unexpected error importing project"), project)
|
raise err.TaigaImportError(_("unexpected error importing project"), project)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue