Add project_id to all history entries

remotes/origin/issue/4795/notification_even_they_are_disabled
Jesús Espino 2016-06-24 14:23:26 +02:00 committed by David Barragán Merino
parent 78e72c7488
commit 64d47aa61c
9 changed files with 108 additions and 0 deletions

View File

@ -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'),
),
]

View File

@ -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),
]

View File

@ -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'),
),
]

View File

@ -49,6 +49,7 @@ class HistoryEntry(models.Model):
""" """
id = models.CharField(primary_key=True, max_length=255, unique=True, id = models.CharField(primary_key=True, max_length=255, unique=True,
editable=False, default=_generate_uuid) editable=False, default=_generate_uuid)
project = models.ForeignKey("projects.Project")
user = JsonField(null=True, blank=True, default=None) user = JsonField(null=True, blank=True, default=None)
created_at = models.DateTimeField(default=timezone.now) created_at = models.DateTimeField(default=timezone.now)

View File

@ -314,6 +314,7 @@ def take_snapshot(obj:object, *, comment:str="", user=None, delete:bool=False):
# Determine history type # Determine history type
if delete: if delete:
entry_type = HistoryType.delete entry_type = HistoryType.delete
need_real_snapshot = True
elif new_fobj and not old_fobj: elif new_fobj and not old_fobj:
entry_type = HistoryType.create entry_type = HistoryType.create
elif new_fobj and old_fobj: elif new_fobj and old_fobj:
@ -340,6 +341,7 @@ def take_snapshot(obj:object, *, comment:str="", user=None, delete:bool=False):
kwargs = { kwargs = {
"user": {"pk": user_id, "name": user_name}, "user": {"pk": user_id, "name": user_name},
"project_id": getattr(obj, 'project_id', getattr(obj, 'id', None)),
"key": key, "key": key,
"type": entry_type, "type": entry_type,
"snapshot": fdiff.snapshot if need_real_snapshot else None, "snapshot": fdiff.snapshot if need_real_snapshot else None,

View File

@ -110,6 +110,7 @@ def data_us(data):
m = type("Models", (object,), {}) m = type("Models", (object,), {})
m.public_user_story = f.UserStoryFactory(project=data.public_project, ref=1) m.public_user_story = f.UserStoryFactory(project=data.public_project, ref=1)
m.public_history_entry = f.HistoryEntryFactory.create(type=HistoryType.change, m.public_history_entry = f.HistoryEntryFactory.create(type=HistoryType.change,
project=data.public_project,
comment="testing public", comment="testing public",
key=make_key_from_model_object(m.public_user_story), key=make_key_from_model_object(m.public_user_story),
diff={}, diff={},
@ -117,12 +118,14 @@ def data_us(data):
m.private_user_story1 = f.UserStoryFactory(project=data.private_project1, ref=5) m.private_user_story1 = f.UserStoryFactory(project=data.private_project1, ref=5)
m.private_history_entry1 = f.HistoryEntryFactory.create(type=HistoryType.change, m.private_history_entry1 = f.HistoryEntryFactory.create(type=HistoryType.change,
project=data.private_project1,
comment="testing 1", comment="testing 1",
key=make_key_from_model_object(m.private_user_story1), key=make_key_from_model_object(m.private_user_story1),
diff={}, diff={},
user={"pk": data.project_member_with_perms.pk}) user={"pk": data.project_member_with_perms.pk})
m.private_user_story2 = f.UserStoryFactory(project=data.private_project2, ref=9) m.private_user_story2 = f.UserStoryFactory(project=data.private_project2, ref=9)
m.private_history_entry2 = f.HistoryEntryFactory.create(type=HistoryType.change, m.private_history_entry2 = f.HistoryEntryFactory.create(type=HistoryType.change,
project=data.private_project2,
comment="testing 2", comment="testing 2",
key=make_key_from_model_object(m.private_user_story2), key=make_key_from_model_object(m.private_user_story2),
diff={}, diff={},
@ -347,6 +350,7 @@ def data_task(data):
m = type("Models", (object,), {}) m = type("Models", (object,), {})
m.public_task = f.TaskFactory(project=data.public_project, ref=2) m.public_task = f.TaskFactory(project=data.public_project, ref=2)
m.public_history_entry = f.HistoryEntryFactory.create(type=HistoryType.change, m.public_history_entry = f.HistoryEntryFactory.create(type=HistoryType.change,
project=data.public_project,
comment="testing public", comment="testing public",
key=make_key_from_model_object(m.public_task), key=make_key_from_model_object(m.public_task),
diff={}, diff={},
@ -354,12 +358,14 @@ def data_task(data):
m.private_task1 = f.TaskFactory(project=data.private_project1, ref=6) m.private_task1 = f.TaskFactory(project=data.private_project1, ref=6)
m.private_history_entry1 = f.HistoryEntryFactory.create(type=HistoryType.change, m.private_history_entry1 = f.HistoryEntryFactory.create(type=HistoryType.change,
project=data.private_project1,
comment="testing 1", comment="testing 1",
key=make_key_from_model_object(m.private_task1), key=make_key_from_model_object(m.private_task1),
diff={}, diff={},
user={"pk": data.project_member_with_perms.pk}) user={"pk": data.project_member_with_perms.pk})
m.private_task2 = f.TaskFactory(project=data.private_project2, ref=10) m.private_task2 = f.TaskFactory(project=data.private_project2, ref=10)
m.private_history_entry2 = f.HistoryEntryFactory.create(type=HistoryType.change, m.private_history_entry2 = f.HistoryEntryFactory.create(type=HistoryType.change,
project=data.private_project2,
comment="testing 2", comment="testing 2",
key=make_key_from_model_object(m.private_task2), key=make_key_from_model_object(m.private_task2),
diff={}, diff={},
@ -584,6 +590,7 @@ def data_issue(data):
m = type("Models", (object,), {}) m = type("Models", (object,), {})
m.public_issue = f.IssueFactory(project=data.public_project, ref=3) m.public_issue = f.IssueFactory(project=data.public_project, ref=3)
m.public_history_entry = f.HistoryEntryFactory.create(type=HistoryType.change, m.public_history_entry = f.HistoryEntryFactory.create(type=HistoryType.change,
project=data.public_project,
comment="testing public", comment="testing public",
key=make_key_from_model_object(m.public_issue), key=make_key_from_model_object(m.public_issue),
diff={}, diff={},
@ -591,12 +598,14 @@ def data_issue(data):
m.private_issue1 = f.IssueFactory(project=data.private_project1, ref=7) m.private_issue1 = f.IssueFactory(project=data.private_project1, ref=7)
m.private_history_entry1 = f.HistoryEntryFactory.create(type=HistoryType.change, m.private_history_entry1 = f.HistoryEntryFactory.create(type=HistoryType.change,
project=data.private_project1,
comment="testing 1", comment="testing 1",
key=make_key_from_model_object(m.private_issue1), key=make_key_from_model_object(m.private_issue1),
diff={}, diff={},
user={"pk": data.project_member_with_perms.pk}) user={"pk": data.project_member_with_perms.pk})
m.private_issue2 = f.IssueFactory(project=data.private_project2, ref=11) m.private_issue2 = f.IssueFactory(project=data.private_project2, ref=11)
m.private_history_entry2 = f.HistoryEntryFactory.create(type=HistoryType.change, m.private_history_entry2 = f.HistoryEntryFactory.create(type=HistoryType.change,
project=data.private_project2,
comment="testing 2", comment="testing 2",
key=make_key_from_model_object(m.private_issue2), key=make_key_from_model_object(m.private_issue2),
diff={}, diff={},
@ -821,6 +830,7 @@ def data_wiki(data):
m = type("Models", (object,), {}) m = type("Models", (object,), {})
m.public_wiki = f.WikiPageFactory(project=data.public_project, slug=4) m.public_wiki = f.WikiPageFactory(project=data.public_project, slug=4)
m.public_history_entry = f.HistoryEntryFactory.create(type=HistoryType.change, m.public_history_entry = f.HistoryEntryFactory.create(type=HistoryType.change,
project=data.public_project,
comment="testing public", comment="testing public",
key=make_key_from_model_object(m.public_wiki), key=make_key_from_model_object(m.public_wiki),
diff={}, diff={},
@ -828,12 +838,14 @@ def data_wiki(data):
m.private_wiki1 = f.WikiPageFactory(project=data.private_project1, slug=8) m.private_wiki1 = f.WikiPageFactory(project=data.private_project1, slug=8)
m.private_history_entry1 = f.HistoryEntryFactory.create(type=HistoryType.change, m.private_history_entry1 = f.HistoryEntryFactory.create(type=HistoryType.change,
project=data.private_project1,
comment="testing 1", comment="testing 1",
key=make_key_from_model_object(m.private_wiki1), key=make_key_from_model_object(m.private_wiki1),
diff={}, diff={},
user={"pk": data.project_member_with_perms.pk}) user={"pk": data.project_member_with_perms.pk})
m.private_wiki2 = f.WikiPageFactory(project=data.private_project2, slug=12) m.private_wiki2 = f.WikiPageFactory(project=data.private_project2, slug=12)
m.private_history_entry2 = f.HistoryEntryFactory.create(type=HistoryType.change, m.private_history_entry2 = f.HistoryEntryFactory.create(type=HistoryType.change,
project=data.private_project2,
comment="testing 2", comment="testing 2",
key=make_key_from_model_object(m.private_wiki2), key=make_key_from_model_object(m.private_wiki2),
diff={}, diff={},

View File

@ -228,6 +228,7 @@ def test_delete_comment_by_project_owner(client):
f.MembershipFactory.create(project=project, user=project.owner, is_admin=True) f.MembershipFactory.create(project=project, user=project.owner, is_admin=True)
key = make_key_from_model_object(us) key = make_key_from_model_object(us)
history_entry = f.HistoryEntryFactory.create(type=HistoryType.change, history_entry = f.HistoryEntryFactory.create(type=HistoryType.change,
project=project,
comment="testing", comment="testing",
key=key, key=key,
diff={}, diff={},
@ -246,6 +247,7 @@ def test_edit_comment(client):
f.MembershipFactory.create(project=project, user=project.owner, is_admin=True) f.MembershipFactory.create(project=project, user=project.owner, is_admin=True)
key = make_key_from_model_object(us) key = make_key_from_model_object(us)
history_entry = f.HistoryEntryFactory.create(type=HistoryType.change, history_entry = f.HistoryEntryFactory.create(type=HistoryType.change,
project=project,
comment="testing", comment="testing",
key=key, key=key,
diff={}, diff={},
@ -278,6 +280,7 @@ def test_get_comment_versions(client):
f.MembershipFactory.create(project=project, user=project.owner, is_admin=True) f.MembershipFactory.create(project=project, user=project.owner, is_admin=True)
key = make_key_from_model_object(us) key = make_key_from_model_object(us)
history_entry = f.HistoryEntryFactory.create( history_entry = f.HistoryEntryFactory.create(
project=project,
type=HistoryType.change, type=HistoryType.change,
comment="testing", comment="testing",
key=key, 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) f.MembershipFactory.create(project=project, user=project.owner, is_admin=True)
key = make_key_from_model_object(us) key = make_key_from_model_object(us)
history_entry = f.HistoryEntryFactory.create( history_entry = f.HistoryEntryFactory.create(
project=project,
type=HistoryType.change, type=HistoryType.change,
key=key, key=key,
diff={}, diff={},

View File

@ -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) us = f.UserStoryFactory.create(project=project, owner=member2.user)
history_change = f.HistoryEntryFactory.create( history_change = f.HistoryEntryFactory.create(
project=project,
user={"pk": member1.user.id}, user={"pk": member1.user.id},
comment="", comment="",
type=HistoryType.change, type=HistoryType.change,
@ -363,6 +364,7 @@ def test_send_notifications_using_services_method_for_user_stories(settings, mai
) )
history_create = f.HistoryEntryFactory.create( history_create = f.HistoryEntryFactory.create(
project=project,
user={"pk": member1.user.id}, user={"pk": member1.user.id},
comment="", comment="",
type=HistoryType.create, type=HistoryType.create,
@ -372,6 +374,7 @@ def test_send_notifications_using_services_method_for_user_stories(settings, mai
) )
history_delete = f.HistoryEntryFactory.create( history_delete = f.HistoryEntryFactory.create(
project=project,
user={"pk": member1.user.id}, user={"pk": member1.user.id},
comment="test:delete", comment="test:delete",
type=HistoryType.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) task = f.TaskFactory.create(project=project, owner=member2.user)
history_change = f.HistoryEntryFactory.create( history_change = f.HistoryEntryFactory.create(
project=project,
user={"pk": member1.user.id}, user={"pk": member1.user.id},
comment="", comment="",
type=HistoryType.change, type=HistoryType.change,
@ -455,6 +459,7 @@ def test_send_notifications_using_services_method_for_tasks(settings, mail):
) )
history_create = f.HistoryEntryFactory.create( history_create = f.HistoryEntryFactory.create(
project=project,
user={"pk": member1.user.id}, user={"pk": member1.user.id},
comment="", comment="",
type=HistoryType.create, type=HistoryType.create,
@ -464,6 +469,7 @@ def test_send_notifications_using_services_method_for_tasks(settings, mail):
) )
history_delete = f.HistoryEntryFactory.create( history_delete = f.HistoryEntryFactory.create(
project=project,
user={"pk": member1.user.id}, user={"pk": member1.user.id},
comment="test:delete", comment="test:delete",
type=HistoryType.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) issue = f.IssueFactory.create(project=project, owner=member2.user)
history_change = f.HistoryEntryFactory.create( history_change = f.HistoryEntryFactory.create(
project=project,
user={"pk": member1.user.id}, user={"pk": member1.user.id},
comment="", comment="",
type=HistoryType.change, type=HistoryType.change,
@ -547,6 +554,7 @@ def test_send_notifications_using_services_method_for_issues(settings, mail):
) )
history_create = f.HistoryEntryFactory.create( history_create = f.HistoryEntryFactory.create(
project=project,
user={"pk": member1.user.id}, user={"pk": member1.user.id},
comment="", comment="",
type=HistoryType.create, type=HistoryType.create,
@ -556,6 +564,7 @@ def test_send_notifications_using_services_method_for_issues(settings, mail):
) )
history_delete = f.HistoryEntryFactory.create( history_delete = f.HistoryEntryFactory.create(
project=project,
user={"pk": member1.user.id}, user={"pk": member1.user.id},
comment="test:delete", comment="test:delete",
type=HistoryType.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) wiki = f.WikiPageFactory.create(project=project, owner=member2.user)
history_change = f.HistoryEntryFactory.create( history_change = f.HistoryEntryFactory.create(
project=project,
user={"pk": member1.user.id}, user={"pk": member1.user.id},
comment="", comment="",
type=HistoryType.change, type=HistoryType.change,
@ -639,6 +649,7 @@ def test_send_notifications_using_services_method_for_wiki_pages(settings, mail)
) )
history_create = f.HistoryEntryFactory.create( history_create = f.HistoryEntryFactory.create(
project=project,
user={"pk": member1.user.id}, user={"pk": member1.user.id},
comment="", comment="",
type=HistoryType.create, type=HistoryType.create,
@ -648,6 +659,7 @@ def test_send_notifications_using_services_method_for_wiki_pages(settings, mail)
) )
history_delete = f.HistoryEntryFactory.create( history_delete = f.HistoryEntryFactory.create(
project=project,
user={"pk": member1.user.id}, user={"pk": member1.user.id},
comment="test:delete", comment="test:delete",
type=HistoryType.delete, type=HistoryType.delete,

View File

@ -39,6 +39,7 @@ def test_project_totals_updated_on_activity(client):
totals_updated_datetime = project.totals_updated_datetime totals_updated_datetime = project.totals_updated_datetime
us = f.UserStoryFactory.create(project=project, owner=project.owner) us = f.UserStoryFactory.create(project=project, owner=project.owner)
f.HistoryEntryFactory.create( f.HistoryEntryFactory.create(
project=project,
user={"pk": project.owner.id}, user={"pk": project.owner.id},
comment="", comment="",
type=HistoryType.change, type=HistoryType.change,
@ -57,6 +58,7 @@ def test_project_totals_updated_on_activity(client):
totals_updated_datetime = project.totals_updated_datetime totals_updated_datetime = project.totals_updated_datetime
f.HistoryEntryFactory.create( f.HistoryEntryFactory.create(
project=project,
user={"pk": project.owner.id}, user={"pk": project.owner.id},
comment="", comment="",
type=HistoryType.change, type=HistoryType.change,
@ -75,6 +77,7 @@ def test_project_totals_updated_on_activity(client):
totals_updated_datetime = project.totals_updated_datetime totals_updated_datetime = project.totals_updated_datetime
f.HistoryEntryFactory.create( f.HistoryEntryFactory.create(
project=project,
user={"pk": project.owner.id}, user={"pk": project.owner.id},
comment="", comment="",
type=HistoryType.change, type=HistoryType.change,
@ -93,6 +96,7 @@ def test_project_totals_updated_on_activity(client):
totals_updated_datetime = project.totals_updated_datetime totals_updated_datetime = project.totals_updated_datetime
f.HistoryEntryFactory.create( f.HistoryEntryFactory.create(
project=project,
user={"pk": project.owner.id}, user={"pk": project.owner.id},
comment="", comment="",
type=HistoryType.change, type=HistoryType.change,