apps.py 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. # Copyright (C) 2014 Andrey Antukh <niwi@niwi.be>
  2. # Copyright (C) 2014 Jesús Espino <jespinog@gmail.com>
  3. # Copyright (C) 2014 David Barragán <bameda@dbarragan.com>
  4. # This program is free software: you can redistribute it and/or modify
  5. # it under the terms of the GNU Affero General Public License as
  6. # published by the Free Software Foundation, either version 3 of the
  7. # License, or (at your option) any later version.
  8. #
  9. # This program is distributed in the hope that it will be useful,
  10. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. # GNU Affero General Public License for more details.
  13. #
  14. # You should have received a copy of the GNU Affero General Public License
  15. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. from django.apps import AppConfig
  17. from django.apps import apps
  18. from django.db.models import signals
  19. from taiga.projects import signals as generic_handlers
  20. from taiga.projects.custom_attributes import signals as custom_attributes_handlers
  21. from . import signals as handlers
  22. def connect_issues_signals():
  23. # Finished date
  24. signals.pre_save.connect(handlers.set_finished_date_when_edit_issue,
  25. sender=apps.get_model("issues", "Issue"),
  26. dispatch_uid="set_finished_date_when_edit_issue")
  27. # Tags
  28. signals.pre_save.connect(generic_handlers.tags_normalization,
  29. sender=apps.get_model("issues", "Issue"),
  30. dispatch_uid="tags_normalization_issue")
  31. signals.post_save.connect(generic_handlers.update_project_tags_when_create_or_edit_taggable_item,
  32. sender=apps.get_model("issues", "Issue"),
  33. dispatch_uid="update_project_tags_when_create_or_edit_taggable_item_issue")
  34. signals.post_delete.connect(generic_handlers.update_project_tags_when_delete_taggable_item,
  35. sender=apps.get_model("issues", "Issue"),
  36. dispatch_uid="update_project_tags_when_delete_taggable_item_issue")
  37. def connect_issues_custom_attributes_signals():
  38. signals.post_save.connect(custom_attributes_handlers.create_custom_attribute_value_when_create_issue,
  39. sender=apps.get_model("issues", "Issue"),
  40. dispatch_uid="create_custom_attribute_value_when_create_issue")
  41. def connect_all_issues_signals():
  42. connect_issues_signals()
  43. connect_issues_custom_attributes_signals()
  44. def disconnect_issues_signals():
  45. signals.pre_save.disconnect(sender=apps.get_model("issues", "Issue"), dispatch_uid="set_finished_date_when_edit_issue")
  46. signals.pre_save.disconnect(sender=apps.get_model("issues", "Issue"), dispatch_uid="tags_normalization_issue")
  47. signals.post_save.disconnect(sender=apps.get_model("issues", "Issue"), dispatch_uid="update_project_tags_when_create_or_edit_taggable_item_issue")
  48. signals.post_delete.disconnect(sender=apps.get_model("issues", "Issue"), dispatch_uid="update_project_tags_when_delete_taggable_item_issue")
  49. def disconnect_issues_custom_attributes_signals():
  50. signals.post_save.disconnect(sender=apps.get_model("issues", "Issue"), dispatch_uid="create_custom_attribute_value_when_create_issue")
  51. def disconnect_all_issues_signals():
  52. disconnect_issues_signals()
  53. disconnect_issues_custom_attributes_signals()
  54. class IssuesAppConfig(AppConfig):
  55. name = "taiga.projects.issues"
  56. verbose_name = "Issues"
  57. def ready(self):
  58. connect_all_issues_signals()