60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
"""
|
|
Experimentation models
|
|
"""
|
|
|
|
|
|
from django.conf import settings
|
|
from django.db import models
|
|
from model_utils.models import TimeStampedModel
|
|
from simple_history.models import HistoricalRecords
|
|
|
|
|
|
class ExperimentData(TimeStampedModel):
|
|
"""
|
|
ExperimentData stores user-specific key-values associated with experiments
|
|
identified by experiment_id.
|
|
.. no_pii:
|
|
"""
|
|
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
|
|
experiment_id = models.PositiveSmallIntegerField(
|
|
null=False, blank=False, db_index=True, verbose_name='Experiment ID'
|
|
)
|
|
key = models.CharField(null=False, blank=False, max_length=255)
|
|
value = models.TextField()
|
|
|
|
class Meta:
|
|
indexes = [
|
|
models.Index(
|
|
fields=['user', 'experiment_id'],
|
|
name="user_experiment_id_idx",
|
|
),
|
|
]
|
|
verbose_name = 'Experiment Data'
|
|
verbose_name_plural = 'Experiment Data'
|
|
unique_together = (
|
|
('user', 'experiment_id', 'key'),
|
|
)
|
|
|
|
|
|
class ExperimentKeyValue(TimeStampedModel):
|
|
"""
|
|
ExperimentData stores any generic key-value associated with experiments
|
|
identified by experiment_id.
|
|
|
|
.. no_pii:
|
|
"""
|
|
experiment_id = models.PositiveSmallIntegerField(
|
|
null=False, blank=False, db_index=True, verbose_name='Experiment ID'
|
|
)
|
|
key = models.CharField(null=False, blank=False, max_length=255)
|
|
value = models.TextField()
|
|
|
|
history = HistoricalRecords()
|
|
|
|
class Meta:
|
|
verbose_name = 'Experiment Key-Value Pair'
|
|
verbose_name_plural = 'Experiment Key-Value Pairs'
|
|
unique_together = (
|
|
('experiment_id', 'key'),
|
|
)
|