52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
from django.apps import AppConfig
|
|
from fieldsignals import post_save_changed
|
|
|
|
|
|
class DbConfig(AppConfig):
|
|
name = "plane.db"
|
|
|
|
def ready(self):
|
|
|
|
post_save_changed.connect(
|
|
self.model_activity,
|
|
sender=self.get_model("Issue"),
|
|
)
|
|
|
|
def model_activity(self, sender, instance, changed_fields, **kwargs):
|
|
|
|
verb = "created" if instance._state.adding else "changed"
|
|
|
|
import inspect
|
|
|
|
for frame_record in inspect.stack():
|
|
if frame_record[3] == "get_response":
|
|
request = frame_record[0].f_locals["request"]
|
|
REQUEST_METHOD = request.method
|
|
|
|
if REQUEST_METHOD == "POST":
|
|
|
|
self.get_model("IssueActivity").objects.create(
|
|
issue=instance, project=instance.project, actor=instance.created_by
|
|
)
|
|
|
|
elif REQUEST_METHOD == "PATCH":
|
|
|
|
try:
|
|
del changed_fields["updated_at"]
|
|
del changed_fields["updated_by"]
|
|
except KeyError as e:
|
|
pass
|
|
|
|
for field_name, (old, new) in changed_fields.items():
|
|
field = field_name
|
|
old_value = old
|
|
new_value = new
|
|
self.get_model("IssueActivity").objects.create(
|
|
issue=instance,
|
|
verb=verb,
|
|
field=field,
|
|
old_value=old_value,
|
|
new_value=new_value,
|
|
project=instance.project,
|
|
actor=instance.updated_by,
|
|
)
|