diff --git a/taiga/timeline/__init__.py b/taiga/timeline/__init__.py index e69de29b..5e6960c6 100644 --- a/taiga/timeline/__init__.py +++ b/taiga/timeline/__init__.py @@ -0,0 +1,17 @@ +# Copyright (C) 2014 Andrey Antukh +# Copyright (C) 2014 Jesús Espino +# Copyright (C) 2014 David Barragán +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +default_app_config = "taiga.timeline.apps.TimelineAppConfig" diff --git a/taiga/timeline/apps.py b/taiga/timeline/apps.py new file mode 100644 index 00000000..3b0d7d90 --- /dev/null +++ b/taiga/timeline/apps.py @@ -0,0 +1,40 @@ +# Copyright (C) 2014 Andrey Antukh +# Copyright (C) 2014 Jesús Espino +# Copyright (C) 2014 David Barragán +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from django.apps import AppConfig +from django.apps import apps +from django.db.models import signals + +from . import signals as handlers + + +class TimelineAppConfig(AppConfig): + name = "taiga.timeline" + verbose_name = "Timeline" + + def ready(self): + signals.post_save.connect(handlers.create_project_push_to_timeline, + sender=apps.get_model("projects", "Project")) + signals.post_save.connect(handlers.create_user_story_push_to_timeline, + sender=apps.get_model("userstories", "UserStory")) + signals.post_save.connect(handlers.create_issue_push_to_timeline, + sender=apps.get_model("issues", "Issue")) + signals.pre_save.connect(handlers.create_membership_push_to_timeline, + sender=apps.get_model("projects", "Membership")) + signals.post_delete.connect(handlers.delete_membership_push_to_timeline, + sender=apps.get_model("projects", "Membership")) + + diff --git a/taiga/timeline/signals.py b/taiga/timeline/signals.py index ead869d0..5cdf3549 100644 --- a/taiga/timeline/signals.py +++ b/taiga/timeline/signals.py @@ -16,7 +16,6 @@ from django.db.models.loading import get_model from django.db.models import signals -from django.dispatch import receiver from taiga.timeline.service import push_to_timeline @@ -24,25 +23,21 @@ from taiga.timeline.service import push_to_timeline # TODO: Add events to project watchers timeline when project watchers are implemented. -@receiver(signals.post_save, sender=get_model("projects", "Project")) def create_project_push_to_timeline(sender, instance, created, **kwargs): if created: push_to_timeline(instance, instance, "create") -@receiver(signals.post_save, sender=get_model("userstories", "UserStory")) def create_user_story_push_to_timeline(sender, instance, created, **kwargs): if created: push_to_timeline(instance.project, instance, "create") -@receiver(signals.post_save, sender=get_model("issues", "Issue")) def create_issue_push_to_timeline(sender, instance, created, **kwargs): if created: push_to_timeline(instance.project, instance, "create") -@receiver(signals.pre_save, sender=get_model("projects", "Membership")) def create_membership_push_to_timeline(sender, instance, **kwargs): if not instance.pk and instance.user: push_to_timeline(instance.project, instance, "create") @@ -60,6 +55,5 @@ def create_membership_push_to_timeline(sender, instance, **kwargs): push_to_timeline(instance.project, instance, "role-changed", extra_data=extra_data) -@receiver(signals.post_delete, sender=get_model("projects", "Membership")) def delete_membership_push_to_timeline(sender, instance, **kwargs): push_to_timeline(instance.project, instance, "delete")