# analytics/models.py
from django.db import models
from django.contrib.auth.models import User
class DataUpload(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
file = models.FileField(upload_to='uploads/')
uploaded_at = models.DateTimeField(auto_now_add=True)
class ProcessedData(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
data = models.JSONField() # Use JSONField to store processed data
processed_at = models.DateTimeField(auto_now_add=True)
class DashboardConfig(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
config = models.JSONField() # Store dashboard configuration as JSON
created_at = models.DateTimeField(auto_now_add=True)
class ReportRequest(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
report_type = models.CharField(max_length=255)
request_date = models.DateTimeField(auto_now_add=True)
status = models.CharField(max_length=50, default='Pending')
class RealTimeMonitor(models.Model):
data_source = models.CharField(max_length=255)
current_value = models.FloatField()
last_updated = models.DateTimeField(auto_now=True)
class DataStory(models.Model):
title = models.CharField(max_length=255)
summary = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
class Report(models.Model):
title = models.CharField(max_length=255)
description = models.TextField()
file = models.FileField(upload_to='reports/')
uploaded_at = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
class Dashboard(models.Model):
title = models.CharField(max_length=255)
description = models.TextField()
config = models.JSONField() # Store dashboard configuration as JSON
created_at = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
class Hypothesis(models.Model):
title = models.CharField(max_length=255)
content = models.TextField()
related_report = models.ForeignKey(Report, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
class APIIntegration(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
name = models.CharField(max_length=255)
description = models.TextField()
endpoint = models.URLField()
api_key = models.CharField(max_length=255)
created_at = models.DateTimeField(auto_now_add=True)