Add project_id to all history entries
parent
78e72c7488
commit
64d47aa61c
|
@ -0,0 +1,22 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.2 on 2016-06-24 12:19
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('projects', '0048_auto_20160615_1508'),
|
||||
('history', '0009_auto_20160512_1110'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='historyentry',
|
||||
name='project',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='projects.Project'),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,31 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.2 on 2016-06-29 10:36
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
from taiga.projects.history.services import get_instance_from_key
|
||||
|
||||
|
||||
def forward_func(apps, schema_editor):
|
||||
HistoryEntry = apps.get_model("history", "HistoryEntry")
|
||||
db_alias = schema_editor.connection.alias
|
||||
for entry in HistoryEntry.objects.using(db_alias).all().iterator():
|
||||
instance = get_instance_from_key(entry.key)
|
||||
if type(instance) == apps.get_model("projects", "Project"):
|
||||
entry.project_id = instance.id
|
||||
else:
|
||||
entry.project_id = getattr(instance, 'project_id', None)
|
||||
entry.save()
|
||||
|
||||
HistoryEntry.objects.using(db_alias).filter(project_id__isnull=True).delete()
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('history', '0010_historyentry_project'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(forward_func, atomic=False),
|
||||
]
|
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.2 on 2016-06-29 10:36
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('history', '0011_auto_20160629_1036'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='historyentry',
|
||||
name='project',
|
||||
field=models.ForeignKey(on_delete=models.deletion.CASCADE, to='projects.Project'),
|
||||
),
|
||||
]
|
|
@ -49,6 +49,7 @@ class HistoryEntry(models.Model):
|
|||
"""
|
||||
id = models.CharField(primary_key=True, max_length=255, unique=True,
|
||||
editable=False, default=_generate_uuid)
|
||||
project = models.ForeignKey("projects.Project")
|
||||
|
||||
user = JsonField(null=True, blank=True, default=None)
|
||||
created_at = models.DateTimeField(default=timezone.now)
|
||||
|
|
|
@ -314,6 +314,7 @@ def take_snapshot(obj:object, *, comment:str="", user=None, delete:bool=False):
|
|||
# Determine history type
|
||||
if delete:
|
||||
entry_type = HistoryType.delete
|
||||
need_real_snapshot = True
|
||||
elif new_fobj and not old_fobj:
|
||||
entry_type = HistoryType.create
|
||||
elif new_fobj and old_fobj:
|
||||
|
@ -340,6 +341,7 @@ def take_snapshot(obj:object, *, comment:str="", user=None, delete:bool=False):
|
|||
|
||||
kwargs = {
|
||||
"user": {"pk": user_id, "name": user_name},
|
||||
"project_id": getattr(obj, 'project_id', getattr(obj, 'id', None)),
|
||||
"key": key,
|
||||
"type": entry_type,
|
||||
"snapshot": fdiff.snapshot if need_real_snapshot else None,
|
||||
|
|
|
@ -110,6 +110,7 @@ def data_us(data):
|
|||
m = type("Models", (object,), {})
|
||||
m.public_user_story = f.UserStoryFactory(project=data.public_project, ref=1)
|
||||
m.public_history_entry = f.HistoryEntryFactory.create(type=HistoryType.change,
|
||||
project=data.public_project,
|
||||
comment="testing public",
|
||||
key=make_key_from_model_object(m.public_user_story),
|
||||
diff={},
|
||||
|
@ -117,12 +118,14 @@ def data_us(data):
|
|||
|
||||
m.private_user_story1 = f.UserStoryFactory(project=data.private_project1, ref=5)
|
||||
m.private_history_entry1 = f.HistoryEntryFactory.create(type=HistoryType.change,
|
||||
project=data.private_project1,
|
||||
comment="testing 1",
|
||||
key=make_key_from_model_object(m.private_user_story1),
|
||||
diff={},
|
||||
user={"pk": data.project_member_with_perms.pk})
|
||||
m.private_user_story2 = f.UserStoryFactory(project=data.private_project2, ref=9)
|
||||
m.private_history_entry2 = f.HistoryEntryFactory.create(type=HistoryType.change,
|
||||
project=data.private_project2,
|
||||
comment="testing 2",
|
||||
key=make_key_from_model_object(m.private_user_story2),
|
||||
diff={},
|
||||
|
@ -347,6 +350,7 @@ def data_task(data):
|
|||
m = type("Models", (object,), {})
|
||||
m.public_task = f.TaskFactory(project=data.public_project, ref=2)
|
||||
m.public_history_entry = f.HistoryEntryFactory.create(type=HistoryType.change,
|
||||
project=data.public_project,
|
||||
comment="testing public",
|
||||
key=make_key_from_model_object(m.public_task),
|
||||
diff={},
|
||||
|
@ -354,12 +358,14 @@ def data_task(data):
|
|||
|
||||
m.private_task1 = f.TaskFactory(project=data.private_project1, ref=6)
|
||||
m.private_history_entry1 = f.HistoryEntryFactory.create(type=HistoryType.change,
|
||||
project=data.private_project1,
|
||||
comment="testing 1",
|
||||
key=make_key_from_model_object(m.private_task1),
|
||||
diff={},
|
||||
user={"pk": data.project_member_with_perms.pk})
|
||||
m.private_task2 = f.TaskFactory(project=data.private_project2, ref=10)
|
||||
m.private_history_entry2 = f.HistoryEntryFactory.create(type=HistoryType.change,
|
||||
project=data.private_project2,
|
||||
comment="testing 2",
|
||||
key=make_key_from_model_object(m.private_task2),
|
||||
diff={},
|
||||
|
@ -584,6 +590,7 @@ def data_issue(data):
|
|||
m = type("Models", (object,), {})
|
||||
m.public_issue = f.IssueFactory(project=data.public_project, ref=3)
|
||||
m.public_history_entry = f.HistoryEntryFactory.create(type=HistoryType.change,
|
||||
project=data.public_project,
|
||||
comment="testing public",
|
||||
key=make_key_from_model_object(m.public_issue),
|
||||
diff={},
|
||||
|
@ -591,12 +598,14 @@ def data_issue(data):
|
|||
|
||||
m.private_issue1 = f.IssueFactory(project=data.private_project1, ref=7)
|
||||
m.private_history_entry1 = f.HistoryEntryFactory.create(type=HistoryType.change,
|
||||
project=data.private_project1,
|
||||
comment="testing 1",
|
||||
key=make_key_from_model_object(m.private_issue1),
|
||||
diff={},
|
||||
user={"pk": data.project_member_with_perms.pk})
|
||||
m.private_issue2 = f.IssueFactory(project=data.private_project2, ref=11)
|
||||
m.private_history_entry2 = f.HistoryEntryFactory.create(type=HistoryType.change,
|
||||
project=data.private_project2,
|
||||
comment="testing 2",
|
||||
key=make_key_from_model_object(m.private_issue2),
|
||||
diff={},
|
||||
|
@ -821,6 +830,7 @@ def data_wiki(data):
|
|||
m = type("Models", (object,), {})
|
||||
m.public_wiki = f.WikiPageFactory(project=data.public_project, slug=4)
|
||||
m.public_history_entry = f.HistoryEntryFactory.create(type=HistoryType.change,
|
||||
project=data.public_project,
|
||||
comment="testing public",
|
||||
key=make_key_from_model_object(m.public_wiki),
|
||||
diff={},
|
||||
|
@ -828,12 +838,14 @@ def data_wiki(data):
|
|||
|
||||
m.private_wiki1 = f.WikiPageFactory(project=data.private_project1, slug=8)
|
||||
m.private_history_entry1 = f.HistoryEntryFactory.create(type=HistoryType.change,
|
||||
project=data.private_project1,
|
||||
comment="testing 1",
|
||||
key=make_key_from_model_object(m.private_wiki1),
|
||||
diff={},
|
||||
user={"pk": data.project_member_with_perms.pk})
|
||||
m.private_wiki2 = f.WikiPageFactory(project=data.private_project2, slug=12)
|
||||
m.private_history_entry2 = f.HistoryEntryFactory.create(type=HistoryType.change,
|
||||
project=data.private_project2,
|
||||
comment="testing 2",
|
||||
key=make_key_from_model_object(m.private_wiki2),
|
||||
diff={},
|
||||
|
|
|
@ -228,6 +228,7 @@ def test_delete_comment_by_project_owner(client):
|
|||
f.MembershipFactory.create(project=project, user=project.owner, is_admin=True)
|
||||
key = make_key_from_model_object(us)
|
||||
history_entry = f.HistoryEntryFactory.create(type=HistoryType.change,
|
||||
project=project,
|
||||
comment="testing",
|
||||
key=key,
|
||||
diff={},
|
||||
|
@ -246,6 +247,7 @@ def test_edit_comment(client):
|
|||
f.MembershipFactory.create(project=project, user=project.owner, is_admin=True)
|
||||
key = make_key_from_model_object(us)
|
||||
history_entry = f.HistoryEntryFactory.create(type=HistoryType.change,
|
||||
project=project,
|
||||
comment="testing",
|
||||
key=key,
|
||||
diff={},
|
||||
|
@ -278,6 +280,7 @@ def test_get_comment_versions(client):
|
|||
f.MembershipFactory.create(project=project, user=project.owner, is_admin=True)
|
||||
key = make_key_from_model_object(us)
|
||||
history_entry = f.HistoryEntryFactory.create(
|
||||
project=project,
|
||||
type=HistoryType.change,
|
||||
comment="testing",
|
||||
key=key,
|
||||
|
@ -307,6 +310,7 @@ def test_get_comment_versions_from_history_entry_without_comment(client):
|
|||
f.MembershipFactory.create(project=project, user=project.owner, is_admin=True)
|
||||
key = make_key_from_model_object(us)
|
||||
history_entry = f.HistoryEntryFactory.create(
|
||||
project=project,
|
||||
type=HistoryType.change,
|
||||
key=key,
|
||||
diff={},
|
||||
|
|
|
@ -354,6 +354,7 @@ def test_send_notifications_using_services_method_for_user_stories(settings, mai
|
|||
|
||||
us = f.UserStoryFactory.create(project=project, owner=member2.user)
|
||||
history_change = f.HistoryEntryFactory.create(
|
||||
project=project,
|
||||
user={"pk": member1.user.id},
|
||||
comment="",
|
||||
type=HistoryType.change,
|
||||
|
@ -363,6 +364,7 @@ def test_send_notifications_using_services_method_for_user_stories(settings, mai
|
|||
)
|
||||
|
||||
history_create = f.HistoryEntryFactory.create(
|
||||
project=project,
|
||||
user={"pk": member1.user.id},
|
||||
comment="",
|
||||
type=HistoryType.create,
|
||||
|
@ -372,6 +374,7 @@ def test_send_notifications_using_services_method_for_user_stories(settings, mai
|
|||
)
|
||||
|
||||
history_delete = f.HistoryEntryFactory.create(
|
||||
project=project,
|
||||
user={"pk": member1.user.id},
|
||||
comment="test:delete",
|
||||
type=HistoryType.delete,
|
||||
|
@ -446,6 +449,7 @@ def test_send_notifications_using_services_method_for_tasks(settings, mail):
|
|||
|
||||
task = f.TaskFactory.create(project=project, owner=member2.user)
|
||||
history_change = f.HistoryEntryFactory.create(
|
||||
project=project,
|
||||
user={"pk": member1.user.id},
|
||||
comment="",
|
||||
type=HistoryType.change,
|
||||
|
@ -455,6 +459,7 @@ def test_send_notifications_using_services_method_for_tasks(settings, mail):
|
|||
)
|
||||
|
||||
history_create = f.HistoryEntryFactory.create(
|
||||
project=project,
|
||||
user={"pk": member1.user.id},
|
||||
comment="",
|
||||
type=HistoryType.create,
|
||||
|
@ -464,6 +469,7 @@ def test_send_notifications_using_services_method_for_tasks(settings, mail):
|
|||
)
|
||||
|
||||
history_delete = f.HistoryEntryFactory.create(
|
||||
project=project,
|
||||
user={"pk": member1.user.id},
|
||||
comment="test:delete",
|
||||
type=HistoryType.delete,
|
||||
|
@ -538,6 +544,7 @@ def test_send_notifications_using_services_method_for_issues(settings, mail):
|
|||
|
||||
issue = f.IssueFactory.create(project=project, owner=member2.user)
|
||||
history_change = f.HistoryEntryFactory.create(
|
||||
project=project,
|
||||
user={"pk": member1.user.id},
|
||||
comment="",
|
||||
type=HistoryType.change,
|
||||
|
@ -547,6 +554,7 @@ def test_send_notifications_using_services_method_for_issues(settings, mail):
|
|||
)
|
||||
|
||||
history_create = f.HistoryEntryFactory.create(
|
||||
project=project,
|
||||
user={"pk": member1.user.id},
|
||||
comment="",
|
||||
type=HistoryType.create,
|
||||
|
@ -556,6 +564,7 @@ def test_send_notifications_using_services_method_for_issues(settings, mail):
|
|||
)
|
||||
|
||||
history_delete = f.HistoryEntryFactory.create(
|
||||
project=project,
|
||||
user={"pk": member1.user.id},
|
||||
comment="test:delete",
|
||||
type=HistoryType.delete,
|
||||
|
@ -630,6 +639,7 @@ def test_send_notifications_using_services_method_for_wiki_pages(settings, mail)
|
|||
|
||||
wiki = f.WikiPageFactory.create(project=project, owner=member2.user)
|
||||
history_change = f.HistoryEntryFactory.create(
|
||||
project=project,
|
||||
user={"pk": member1.user.id},
|
||||
comment="",
|
||||
type=HistoryType.change,
|
||||
|
@ -639,6 +649,7 @@ def test_send_notifications_using_services_method_for_wiki_pages(settings, mail)
|
|||
)
|
||||
|
||||
history_create = f.HistoryEntryFactory.create(
|
||||
project=project,
|
||||
user={"pk": member1.user.id},
|
||||
comment="",
|
||||
type=HistoryType.create,
|
||||
|
@ -648,6 +659,7 @@ def test_send_notifications_using_services_method_for_wiki_pages(settings, mail)
|
|||
)
|
||||
|
||||
history_delete = f.HistoryEntryFactory.create(
|
||||
project=project,
|
||||
user={"pk": member1.user.id},
|
||||
comment="test:delete",
|
||||
type=HistoryType.delete,
|
||||
|
|
|
@ -39,6 +39,7 @@ def test_project_totals_updated_on_activity(client):
|
|||
totals_updated_datetime = project.totals_updated_datetime
|
||||
us = f.UserStoryFactory.create(project=project, owner=project.owner)
|
||||
f.HistoryEntryFactory.create(
|
||||
project=project,
|
||||
user={"pk": project.owner.id},
|
||||
comment="",
|
||||
type=HistoryType.change,
|
||||
|
@ -57,6 +58,7 @@ def test_project_totals_updated_on_activity(client):
|
|||
|
||||
totals_updated_datetime = project.totals_updated_datetime
|
||||
f.HistoryEntryFactory.create(
|
||||
project=project,
|
||||
user={"pk": project.owner.id},
|
||||
comment="",
|
||||
type=HistoryType.change,
|
||||
|
@ -75,6 +77,7 @@ def test_project_totals_updated_on_activity(client):
|
|||
|
||||
totals_updated_datetime = project.totals_updated_datetime
|
||||
f.HistoryEntryFactory.create(
|
||||
project=project,
|
||||
user={"pk": project.owner.id},
|
||||
comment="",
|
||||
type=HistoryType.change,
|
||||
|
@ -93,6 +96,7 @@ def test_project_totals_updated_on_activity(client):
|
|||
|
||||
totals_updated_datetime = project.totals_updated_datetime
|
||||
f.HistoryEntryFactory.create(
|
||||
project=project,
|
||||
user={"pk": project.owner.id},
|
||||
comment="",
|
||||
type=HistoryType.change,
|
||||
|
|
Loading…
Reference in New Issue