diff --git a/apiserver/plane/bgtasks/api_logs_task.py b/apiserver/plane/bgtasks/api_logs_task.py new file mode 100644 index 0000000000..038b939d54 --- /dev/null +++ b/apiserver/plane/bgtasks/api_logs_task.py @@ -0,0 +1,15 @@ +from django.utils import timezone +from datetime import timedelta +from plane.db.models import APIActivityLog +from celery import shared_task + + +@shared_task +def delete_api_logs(): + # Get the logs older than 30 days to delete + logs_to_delete = APIActivityLog.objects.filter( + created_at__lte=timezone.now() - timedelta(days=30) + ) + + # Delete the logs + logs_to_delete._raw_delete(logs_to_delete.db) diff --git a/apiserver/plane/bgtasks/email_notification_task.py b/apiserver/plane/bgtasks/email_notification_task.py index 050f522c33..fa154828b8 100644 --- a/apiserver/plane/bgtasks/email_notification_task.py +++ b/apiserver/plane/bgtasks/email_notification_task.py @@ -152,7 +152,7 @@ def process_mention(mention_component): soup = BeautifulSoup(mention_component, "html.parser") mentions = soup.find_all("mention-component") for mention in mentions: - user_id = mention["id"] + user_id = mention["entity_identifier"] user = User.objects.get(pk=user_id) user_name = user.display_name highlighted_name = f"@{user_name}" diff --git a/apiserver/plane/bgtasks/notification_task.py b/apiserver/plane/bgtasks/notification_task.py index 5725abc624..9dfd0c16dc 100644 --- a/apiserver/plane/bgtasks/notification_task.py +++ b/apiserver/plane/bgtasks/notification_task.py @@ -128,7 +128,7 @@ def extract_mentions(issue_instance): "mention-component", attrs={"target": "users"} ) - mentions = [mention_tag["id"] for mention_tag in mention_tags] + mentions = [mention_tag["entity_identifier"] for mention_tag in mention_tags] return list(set(mentions)) except Exception: @@ -144,7 +144,7 @@ def extract_comment_mentions(comment_value): "mention-component", attrs={"target": "users"} ) for mention_tag in mentions_tags: - mentions.append(mention_tag["id"]) + mentions.append(mention_tag["entity_identifier"]) return list(set(mentions)) except Exception: return [] @@ -663,9 +663,7 @@ def notifications( "old_value": str( last_activity.old_value ), - "activity_time": issue_activity.get( - "created_at" - ), + "activity_time": str(last_activity.created_at), }, }, ) diff --git a/apiserver/plane/celery.py b/apiserver/plane/celery.py index 056dfb16bc..d3e742f14a 100644 --- a/apiserver/plane/celery.py +++ b/apiserver/plane/celery.py @@ -32,6 +32,10 @@ app.conf.beat_schedule = { "task": "plane.bgtasks.email_notification_task.stack_email_notification", "schedule": crontab(minute="*/5"), }, + "check-every-day-to-delete-api-logs": { + "task": "plane.bgtasks.api_logs_task.delete_api_logs", + "schedule": crontab(hour=0, minute=0), + }, } # Load task modules from all registered Django app configs. diff --git a/apiserver/plane/settings/common.py b/apiserver/plane/settings/common.py index 2adc11e31a..b34dd17d59 100644 --- a/apiserver/plane/settings/common.py +++ b/apiserver/plane/settings/common.py @@ -293,6 +293,7 @@ CELERY_IMPORTS = ( "plane.bgtasks.exporter_expired_task", "plane.bgtasks.file_asset_task", "plane.bgtasks.email_notification_task", + "plane.bgtasks.api_logs_task", # management tasks "plane.bgtasks.dummy_data_task", ) diff --git a/web/components/core/activity.tsx b/web/components/core/activity.tsx index a70cd07279..2726ccdc3e 100644 --- a/web/components/core/activity.tsx +++ b/web/components/core/activity.tsx @@ -724,6 +724,7 @@ const activityDetails: { )} + {activity.verb === "2" && ` from inbox by marking a duplicate issue.`} ), icon: