18 lines
679 B
Python
18 lines
679 B
Python
from django.db import models
|
|
from django.core.files.storage import get_storage_class
|
|
import json
|
|
|
|
class UserStorage(models.Model):
|
|
""" A user defined storage
|
|
"""
|
|
owner = models.ForeignKey('auth.User', on_delete=models.CASCADE, null=True, blank=True)
|
|
name = models.SlugField(max_length=20, help_text="Storage tag")
|
|
storage = models.CharField(max_length=255, help_text="Storage class for this instance")
|
|
settings_data = models.TextField(help_text="JSON dict with key/value settings")
|
|
|
|
def instance(self):
|
|
return get_storage_class(self.storage)(**self.settings)
|
|
|
|
@property
|
|
def settings(self):
|
|
return json.loads(self.settings_data) |