| from django.db import models |
| from django.contrib.postgres.fields import JSONField |
| import uuid |
|
|
|
|
| class UserData(models.Model): |
| user_id = models.CharField(max_length=100, unique=True) |
| expenses = models.JSONField(default=dict, blank=True) |
| salary = models.JSONField(default=dict, blank=True) |
| category = models.JSONField(default=dict, blank=True) |
| user_data = models.JSONField(default=dict, blank=True) |
| has_music_url_access = models.BooleanField(default=False) |
| has_ai_access = models.BooleanField(default=False) |
| data_backup_key = models.CharField(max_length=100, unique=True, blank=True) |
|
|
| def __str__(self): |
| return f"Data for User {self.user_id}" |
|
|
|
|
| class AIKey(models.Model): |
| aikey = models.CharField(max_length=100, unique=True) |
| isActive = models.BooleanField(default=False) |
| keySource = models.CharField(max_length=100, unique=True) |
|
|
| def __str__(self): |
| return f"Data for AIKey {self.keySource}" |
|
|
|
|
| class AppVersion(models.Model): |
| version = models.CharField(max_length=20) |
| release_notes = models.TextField(null=True, blank=True) |
| is_force_update = models.BooleanField(default=False) |
| created_at = models.DateTimeField(auto_now_add=True) |
| isActive = models.BooleanField(default=False) |
|
|
| class Meta: |
| db_table = "app_version" |
|
|
| def save(self, *args, **kwargs): |
| |
| if self.isActive: |
| AppVersion.objects.filter(isActive=True).exclude(id=self.id).update( |
| isActive=False |
| ) |
|
|
| super().save(*args, **kwargs) |
|
|
| def __str__(self): |
| return self.version |
|
|
|
|
| class Contact(models.Model): |
| name = models.CharField(max_length=20) |
| email = models.EmailField(max_length=50) |
| message = models.TextField(max_length=500) |
|
|
| def __str__(self): |
| return self.name |
|
|
|
|
| class ExpenseLog(models.Model): |
| text = models.CharField(max_length=500) |
| amount = models.FloatField(null=True, blank=True) |
| predicted_category = models.CharField(max_length=100) |
| confidence_score = models.FloatField() |
| created_at = models.DateTimeField(auto_now_add=True) |
|
|
| def __str__(self): |
| return f"{self.predicted_category} (${self.amount}): {self.text[:30]}" |
|
|