tahamajs's picture
download
raw
4.11 kB
import uuid
from django.conf import settings
from django.db import models
class CodeGenerationSession(models.Model):
"""
A single code‑generation session (like a Copilot chat thread).
"""
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
user = models.ForeignKey(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="code_sessions"
)
title = models.CharField(max_length=300, blank=True)
context = models.JSONField(
default=dict,
blank=True,
help_text="Context for generation: {'model_name':..., 'task_name':..., 'file':...}",
)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
ordering = ["-updated_at"]
def __str__(self):
return self.title or f"Session {self.id.hex[:8]}"
class CodeMessage(models.Model):
"""
A single message / exchange in a code generation session.
"""
ROLE_CHOICES = [
("user", "User"),
("assistant", "Assistant"),
("system", "System"),
]
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
session = models.ForeignKey(
CodeGenerationSession, on_delete=models.CASCADE, related_name="messages"
)
role = models.CharField(max_length=20, choices=ROLE_CHOICES)
content = models.TextField()
language = models.CharField(max_length=30, default="python")
tokens_used = models.PositiveIntegerField(default=0)
model_used = models.CharField(max_length=100, blank=True)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ["created_at"]
def __str__(self):
return f"{self.role}: {self.content[:80]}"
class GeneratedCode(models.Model):
"""
A saved piece of generated code that can be reviewed, edited, and exported.
"""
STATUS_CHOICES = [
("draft", "Draft"),
("reviewing", "In Review"),
("approved", "Approved"),
("exported", "Exported"),
]
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
session = models.ForeignKey(
CodeGenerationSession, on_delete=models.CASCADE, related_name="generated_files"
)
filename = models.CharField(max_length=300)
content = models.TextField()
language = models.CharField(max_length=30, default="python")
description = models.TextField(blank=True)
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default="draft")
version = models.PositiveIntegerField(default=1)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
ordering = ["-created_at"]
def __str__(self):
return self.filename
class CodeReview(models.Model):
"""
An AI‑generated code review for a piece of generated code.
"""
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
generated_code = models.ForeignKey(
GeneratedCode, on_delete=models.CASCADE, related_name="reviews"
)
issues = models.JSONField(default=list, blank=True)
suggestions = models.JSONField(default=list, blank=True)
overall_assessment = models.TextField(blank=True)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"Review for {self.generated_code.filename}"
class TestGeneration(models.Model):
"""
Auto‑generated tests for a piece of code.
"""
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
generated_code = models.OneToOneField(
GeneratedCode, on_delete=models.CASCADE, related_name="generated_tests"
)
test_content = models.TextField()
test_framework = models.CharField(max_length=30, default="pytest")
coverage_estimate = models.FloatField(default=0.0, help_text="Estimated coverage %")
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"Tests for {self.generated_code.filename}"

Xet Storage Details

Size:
4.11 kB
·
Xet hash:
70a8a92bdf97c144c6fc57540833ae57e5a9ab5735eb98d9d4437da82d64def3

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.