codescraftman / analytics / models.py
models.py
Raw
# 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)