[Backport] Fixing memory leak on export related to timeline
parent
b68935fa1d
commit
709bee710e
|
@ -43,7 +43,6 @@ from taiga.projects.wiki import models as wiki_models
|
|||
from taiga.projects.history import models as history_models
|
||||
from taiga.projects.attachments import models as attachments_models
|
||||
from taiga.timeline import models as timeline_models
|
||||
from taiga.timeline import service as timeline_service
|
||||
from taiga.users import models as users_models
|
||||
from taiga.projects.notifications import services as notifications_services
|
||||
from taiga.projects.votes import services as votes_service
|
||||
|
@ -674,12 +673,7 @@ class ProjectExportSerializer(WatcheableObjectModelSerializer):
|
|||
issues = IssueExportSerializer(many=True, required=False)
|
||||
wiki_links = WikiLinkExportSerializer(many=True, required=False)
|
||||
wiki_pages = WikiPageExportSerializer(many=True, required=False)
|
||||
timeline = serializers.SerializerMethodField("get_timeline")
|
||||
|
||||
class Meta:
|
||||
model = projects_models.Project
|
||||
exclude = ('id', 'creation_template', 'members')
|
||||
|
||||
def get_timeline(self, obj):
|
||||
timeline_qs = timeline_service.get_project_timeline(obj)
|
||||
return TimelineExportSerializer(timeline_qs, many=True).data
|
||||
|
|
|
@ -31,7 +31,7 @@ from django.core.files.storage import default_storage
|
|||
|
||||
from taiga.base.utils import json
|
||||
from taiga.projects.history.services import make_key_from_model_object, take_snapshot
|
||||
from taiga.timeline.service import build_project_namespace
|
||||
from taiga.timeline.service import build_project_namespace, get_project_timeline
|
||||
from taiga.projects.references import sequences as seq
|
||||
from taiga.projects.references import models as refs
|
||||
from taiga.projects.userstories.models import RolePoints
|
||||
|
@ -132,7 +132,22 @@ def render_project(project, outfile, chunk_size = 8190):
|
|||
value = field.field_to_native(project, field_name)
|
||||
outfile.write('"{}": {}'.format(field_name, json.dumps(value)))
|
||||
|
||||
outfile.write('}\n')
|
||||
# Generate the timeline
|
||||
outfile.write(',\n"timeline": [\n')
|
||||
first_timeline = True
|
||||
for timeline_item in get_project_timeline(project).iterator():
|
||||
# Avoid writing "," in the last element
|
||||
if not first_timeline:
|
||||
outfile.write(",\n")
|
||||
else:
|
||||
first_timeline = False
|
||||
|
||||
dumped_value = json.dumps(serializers.TimelineExportSerializer(timeline_item).data)
|
||||
outfile.write(dumped_value)
|
||||
outfile.flush()
|
||||
gc.collect()
|
||||
|
||||
outfile.write(']}\n')
|
||||
|
||||
|
||||
def store_project(data):
|
||||
|
|
Loading…
Reference in New Issue