Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
21 changes: 18 additions & 3 deletions backend/backend/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,12 @@
"authentication",
"chat",
"gpt",
"django_crontab",
]


CRONJOBS = [
('0 0 * * *', 'django.core.management.call_command', ['cleanup_old_conversations']),
]

MIDDLEWARE = [
Expand Down Expand Up @@ -85,10 +91,19 @@
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases

DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": BASE_DIR / "db.sqlite3",
# "default": {
# "ENGINE": "django.db.backends.sqlite3",
# "NAME": BASE_DIR / "db.sqlite3",
# }
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydb', # my db name
'USER': 'myuser', # database user
'PASSWORD': 'mypassword', # database password
'HOST': 'localhost',
'PORT': '5432',
}

}

# Password validation
Expand Down
4 changes: 2 additions & 2 deletions backend/chat/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,10 @@ def queryset(self, request, queryset):
class ConversationAdmin(NestedModelAdmin):
actions = ["undelete_selected", "soft_delete_selected"]
inlines = [VersionInline]
list_display = ("title", "id", "created_at", "modified_at", "deleted_at", "version_count", "is_deleted", "user")
list_display = ("title", "id", "summary","created_at", "modified_at", "deleted_at", "version_count", "is_deleted", "user") # added "summary"
list_filter = (DeletedListFilter,)
ordering = ("-modified_at",)

def undelete_selected(self, request, queryset):
queryset.update(deleted_at=None)

Expand Down
3 changes: 3 additions & 0 deletions backend/chat/apps.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@
class ChatConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "chat"

def ready(self):
import chat.signals
14 changes: 14 additions & 0 deletions backend/chat/management/commands/cleanup_old_conversations.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from django.core.management.base import BaseCommand
from django.utils import timezone
from chat.models import Conversation
from datetime import timedelta

class Command(BaseCommand):
help = "Deletes conversations older than 30 days"

def handle(self, *args, **kwargs):
cutoff_date = timezone.now() - timedelta(days=30)
old_conversations = Conversation.objects.filter(created_at__lt=cutoff_date)
count = old_conversations.count()
old_conversations.delete()
self.stdout.write(self.style.SUCCESS(f"Deleted {count} old conversations."))
17 changes: 17 additions & 0 deletions backend/chat/migrations/0002_conversation_summary.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Generated by Django 5.0.2 on 2025-10-07 15:24

from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("chat", "0001_initial"),
]

operations = [
migrations.AddField(
model_name="conversation",
name="summary",
field=models.TextField(blank=True, null=True),
),
]
1 change: 1 addition & 0 deletions backend/chat/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ def __str__(self):
class Conversation(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
title = models.CharField(max_length=100, blank=False, null=False, default="Mock title")
summary = models.TextField(blank=True, null=True) # Added field
created_at = models.DateTimeField(auto_now_add=True)
modified_at = models.DateTimeField(auto_now=True)
active_version = models.ForeignKey(
Expand Down
23 changes: 23 additions & 0 deletions backend/chat/signals.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from django.db.models.signals import post_save
from django.dispatch import receiver
from .models import Conversation



@receiver(post_save, sender=Conversation)
def generate_summary(sender, instance, created, **kwargs):
if created and not instance.summary:
# Generate a simple summary using the title or other fields
summary_text = f"This conversation '{instance.title}' was created by user {instance.user.id}."
instance.summary = summary_text
instance.save()



# @receiver(pre_save, sender=Conversation)
# def generate_summary(sender, instance, **kwargs):
# if not instance.summary:
# print("instance summary 1111")
# instance.summary = f"This conversation '{instance.title}' was created by user {instance.user.id}."
# else:
# print("instance summary 1111")
1 change: 1 addition & 0 deletions backend/db.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[{"model": "auth.permission", "pk": 1, "fields": {"name": "Can add log entry", "content_type": 1, "codename": "add_logentry"}}, {"model": "auth.permission", "pk": 2, "fields": {"name": "Can change log entry", "content_type": 1, "codename": "change_logentry"}}, {"model": "auth.permission", "pk": 3, "fields": {"name": "Can delete log entry", "content_type": 1, "codename": "delete_logentry"}}, {"model": "auth.permission", "pk": 4, "fields": {"name": "Can view log entry", "content_type": 1, "codename": "view_logentry"}}, {"model": "auth.permission", "pk": 5, "fields": {"name": "Can add permission", "content_type": 2, "codename": "add_permission"}}, {"model": "auth.permission", "pk": 6, "fields": {"name": "Can change permission", "content_type": 2, "codename": "change_permission"}}, {"model": "auth.permission", "pk": 7, "fields": {"name": "Can delete permission", "content_type": 2, "codename": "delete_permission"}}, {"model": "auth.permission", "pk": 8, "fields": {"name": "Can view permission", "content_type": 2, "codename": "view_permission"}}, {"model": "auth.permission", "pk": 9, "fields": {"name": "Can add group", "content_type": 3, "codename": "add_group"}}, {"model": "auth.permission", "pk": 10, "fields": {"name": "Can change group", "content_type": 3, "codename": "change_group"}}, {"model": "auth.permission", "pk": 11, "fields": {"name": "Can delete group", "content_type": 3, "codename": "delete_group"}}, {"model": "auth.permission", "pk": 12, "fields": {"name": "Can view group", "content_type": 3, "codename": "view_group"}}, {"model": "auth.permission", "pk": 13, "fields": {"name": "Can add content type", "content_type": 4, "codename": "add_contenttype"}}, {"model": "auth.permission", "pk": 14, "fields": {"name": "Can change content type", "content_type": 4, "codename": "change_contenttype"}}, {"model": "auth.permission", "pk": 15, "fields": {"name": "Can delete content type", "content_type": 4, "codename": "delete_contenttype"}}, {"model": "auth.permission", "pk": 16, "fields": {"name": "Can view content type", "content_type": 4, "codename": "view_contenttype"}}, {"model": "auth.permission", "pk": 17, "fields": {"name": "Can add session", "content_type": 5, "codename": "add_session"}}, {"model": "auth.permission", "pk": 18, "fields": {"name": "Can change session", "content_type": 5, "codename": "change_session"}}, {"model": "auth.permission", "pk": 19, "fields": {"name": "Can delete session", "content_type": 5, "codename": "delete_session"}}, {"model": "auth.permission", "pk": 20, "fields": {"name": "Can view session", "content_type": 5, "codename": "view_session"}}, {"model": "auth.permission", "pk": 21, "fields": {"name": "Can add custom user", "content_type": 6, "codename": "add_customuser"}}, {"model": "auth.permission", "pk": 22, "fields": {"name": "Can change custom user", "content_type": 6, "codename": "change_customuser"}}, {"model": "auth.permission", "pk": 23, "fields": {"name": "Can delete custom user", "content_type": 6, "codename": "delete_customuser"}}, {"model": "auth.permission", "pk": 24, "fields": {"name": "Can view custom user", "content_type": 6, "codename": "view_customuser"}}, {"model": "auth.permission", "pk": 25, "fields": {"name": "Can add conversation", "content_type": 7, "codename": "add_conversation"}}, {"model": "auth.permission", "pk": 26, "fields": {"name": "Can change conversation", "content_type": 7, "codename": "change_conversation"}}, {"model": "auth.permission", "pk": 27, "fields": {"name": "Can delete conversation", "content_type": 7, "codename": "delete_conversation"}}, {"model": "auth.permission", "pk": 28, "fields": {"name": "Can view conversation", "content_type": 7, "codename": "view_conversation"}}, {"model": "auth.permission", "pk": 29, "fields": {"name": "Can add message", "content_type": 8, "codename": "add_message"}}, {"model": "auth.permission", "pk": 30, "fields": {"name": "Can change message", "content_type": 8, "codename": "change_message"}}, {"model": "auth.permission", "pk": 31, "fields": {"name": "Can delete message", "content_type": 8, "codename": "delete_message"}}, {"model": "auth.permission", "pk": 32, "fields": {"name": "Can view message", "content_type": 8, "codename": "view_message"}}, {"model": "auth.permission", "pk": 33, "fields": {"name": "Can add role", "content_type": 9, "codename": "add_role"}}, {"model": "auth.permission", "pk": 34, "fields": {"name": "Can change role", "content_type": 9, "codename": "change_role"}}, {"model": "auth.permission", "pk": 35, "fields": {"name": "Can delete role", "content_type": 9, "codename": "delete_role"}}, {"model": "auth.permission", "pk": 36, "fields": {"name": "Can view role", "content_type": 9, "codename": "view_role"}}, {"model": "auth.permission", "pk": 37, "fields": {"name": "Can add version", "content_type": 10, "codename": "add_version"}}, {"model": "auth.permission", "pk": 38, "fields": {"name": "Can change version", "content_type": 10, "codename": "change_version"}}, {"model": "auth.permission", "pk": 39, "fields": {"name": "Can delete version", "content_type": 10, "codename": "delete_version"}}, {"model": "auth.permission", "pk": 40, "fields": {"name": "Can view version", "content_type": 10, "codename": "view_version"}}, {"model": "contenttypes.contenttype", "pk": 1, "fields": {"app_label": "admin", "model": "logentry"}}, {"model": "contenttypes.contenttype", "pk": 2, "fields": {"app_label": "auth", "model": "permission"}}, {"model": "contenttypes.contenttype", "pk": 3, "fields": {"app_label": "auth", "model": "group"}}, {"model": "contenttypes.contenttype", "pk": 4, "fields": {"app_label": "contenttypes", "model": "contenttype"}}, {"model": "contenttypes.contenttype", "pk": 5, "fields": {"app_label": "sessions", "model": "session"}}, {"model": "contenttypes.contenttype", "pk": 6, "fields": {"app_label": "authentication", "model": "customuser"}}, {"model": "contenttypes.contenttype", "pk": 7, "fields": {"app_label": "chat", "model": "conversation"}}, {"model": "contenttypes.contenttype", "pk": 8, "fields": {"app_label": "chat", "model": "message"}}, {"model": "contenttypes.contenttype", "pk": 9, "fields": {"app_label": "chat", "model": "role"}}, {"model": "contenttypes.contenttype", "pk": 10, "fields": {"app_label": "chat", "model": "version"}}]
Binary file not shown.
Loading