from django.db import models from django.contrib.auth.models import User from django.utils import timezone def default_datetime(): now = timezone.now() return now class SourceDataBase(models.Model): host = models.CharField(max_length=32) port = models.IntegerField() username = models.CharField(max_length=32) password = models.CharField(max_length=256) database = models.CharField(max_length=32) base_alias = models.CharField(max_length=32) creator = models.ForeignKey(User, on_delete=models.CASCADE) source_id = models.CharField(max_length=64, primary_key=True) is_private = models.BooleanField(default=True) status = models.IntegerField(default=1) created_at = models.DateTimeField(db_index=True, default=default_datetime) updated_at = models.DateTimeField(db_index=True, null=False) class SourceDataTable(models.Model): database = models.ForeignKey(SourceDataBase, on_delete=models.CASCADE) table = models.CharField(max_length=32) table_alias = models.CharField(max_length=32) status = models.IntegerField(default=1) creator = models.ForeignKey(User, on_delete=models.CASCADE) id = models.CharField(max_length=64, primary_key=True) created_at = models.DateTimeField(db_index=True, default=default_datetime) updated_at = models.DateTimeField(db_index=True, null=False) # Create your models here. class Chart(models.Model): chart_id = models.CharField(max_length=64, primary_key=True) chart_name = models.CharField(max_length=128) source_id = models.ForeignKey(SourceDataBase, on_delete=models.CASCADE) desc = models.CharField(max_length=512, null=True) content = models.TextField() is_private = models.BooleanField() status = models.IntegerField() creator = models.ForeignKey(User, on_delete=models.CASCADE) created_at = models.DateTimeField(db_index=True, default=default_datetime) updated_at = models.DateTimeField(db_index=True, null=False) class Dashboard(models.Model): dashboard_id = models.CharField(max_length=64, primary_key=True) name = models.CharField(max_length=128) desc = models.CharField(max_length=512, null=True) content = models.TextField() is_private = models.BooleanField() status = models.IntegerField() creator = models.ForeignKey(User, on_delete=models.CASCADE) created_at = models.DateTimeField(db_index=True, default=default_datetime) updated_at = models.DateTimeField(db_index=True, null=False) class ChartBoardMap(models.Model): chart = models.ForeignKey(Chart, on_delete=models.CASCADE) dashboard = models.ForeignKey(Dashboard, on_delete=models.CASCADE) id = models.CharField(max_length=64, primary_key=True) created_at = models.DateTimeField(db_index=True, default=default_datetime) updated_at = models.DateTimeField(db_index=True, null=False) class BoardOrder(models.Model): creator = models.ForeignKey(User, on_delete=models.CASCADE) order = models.TextField() id = models.CharField(max_length=64, primary_key=True) created_at = models.DateTimeField(db_index=True, default=default_datetime) updated_at = models.DateTimeField(db_index=True, null=False)