V0.1
This commit is contained in:
+26
-22
@@ -10,11 +10,13 @@ For the full list of settings and their values, see
|
||||
https://docs.djangoproject.com/en/5.1/ref/settings/
|
||||
"""
|
||||
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
from django.utils.module_loading import import_module
|
||||
|
||||
|
||||
from pathlib import Path
|
||||
import os
|
||||
|
||||
|
||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||
|
||||
|
||||
@@ -46,23 +48,6 @@ INSTALLED_APPS = [
|
||||
"items",
|
||||
]
|
||||
|
||||
BOWER_COMPONENT_ROOT = os.path.join(BASE_DIR, "components")
|
||||
BOWER_INSTALLED_APPS = [
|
||||
"https://code.jquery.com/jquery-3.7.1.min.js",
|
||||
"https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js",
|
||||
"https://cdn.jsdelivr.net/npm/sweetalert2@11",
|
||||
"https://cdn.jsdelivr.net/npm/vue-resource@1.5.3",
|
||||
"https://cdn.jsdelivr.net/npm/js-cookie@3.0.5/dist/js.cookie.min.js",
|
||||
"https://unpkg.com/vue-router@3/dist/vue-router.js",
|
||||
"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css",
|
||||
"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js",
|
||||
"https://cdn.jsdelivr.net/npm/bootswatch@5.3.3/dist/lux/bootstrap.min.css",
|
||||
"https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css",
|
||||
"https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js",
|
||||
"https://cdn.jsdelivr.net/npm/@mdi/font@7.4.47/css/materialdesignicons.min.css",
|
||||
"https://fonts.cdnfonts.com/css/jetbrains-mono",
|
||||
]
|
||||
|
||||
STATIC_URL = "/static/"
|
||||
|
||||
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static_source"),)
|
||||
@@ -78,11 +63,29 @@ STATIC_ROOT = os.path.join(BASE_DIR, "static")
|
||||
|
||||
STORAGES = {
|
||||
"staticfiles": {
|
||||
# "BACKEND": "django.contrib.staticfiles.storage.StaticFilesStorage",
|
||||
"BACKEND": "django.contrib.staticfiles.storage.ManifestStaticFilesStorage",
|
||||
"BACKEND": "django.contrib.staticfiles.storage.StaticFilesStorage",
|
||||
# "BACKEND": "django.contrib.staticfiles.storage.ManifestStaticFilesStorage",
|
||||
}
|
||||
}
|
||||
|
||||
BOWER_COMPONENT_ROOT = os.path.join(BASE_DIR, "components")
|
||||
BOWER_INSTALLED_APPS = [
|
||||
"https://code.jquery.com/jquery-3.7.1.min.js",
|
||||
"https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js",
|
||||
"https://cdn.jsdelivr.net/npm/sweetalert2",
|
||||
"https://cdn.jsdelivr.net/npm/vue-resource",
|
||||
"https://unpkg.com/vuex@3.6.2/dist/vuex.js",
|
||||
"https://cdn.jsdelivr.net/npm/js-cookie@3.0.5/dist/js.cookie.min.js",
|
||||
"https://unpkg.com/vue-router@3/dist/vue-router.js",
|
||||
"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css",
|
||||
"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js",
|
||||
"bootswatch.min.css=https://cdn.jsdelivr.net/npm/bootswatch@5.3.3/dist/lux/bootstrap.min.css",
|
||||
"https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css",
|
||||
"https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js",
|
||||
"https://cdn.jsdelivr.net/npm/@mdi/font@7.4.47/css/materialdesignicons.min.css",
|
||||
"https://fonts.cdnfonts.com/css/jetbrains-mono",
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
"django.middleware.security.SecurityMiddleware",
|
||||
"django.contrib.sessions.middleware.SessionMiddleware",
|
||||
@@ -161,6 +164,7 @@ DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
||||
|
||||
from app.settingsLocal import *
|
||||
|
||||
|
||||
for extra_app in EXTRA_APPS:
|
||||
INSTALLED_APPS.append(extra_app)
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
from functools import reduce
|
||||
|
||||
|
||||
def recursive_getattr(obj, attr, *args, delimiter="__"):
|
||||
"""Recursive getattr on a object, based on the attr name, delimited with the delimiter."""
|
||||
|
||||
def _getattr(obj, attr):
|
||||
rg = getattr(obj, attr, *args)
|
||||
|
||||
# Usefull for getting attribute like `datetime__date` => will result in datetime.date()
|
||||
if callable(rg):
|
||||
return rg()
|
||||
|
||||
return rg
|
||||
|
||||
return reduce(_getattr, [obj] + attr.split(delimiter))
|
||||
@@ -1,9 +1,14 @@
|
||||
from uuid import uuid4
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.db import models
|
||||
from django.db.models.fields.related import RelatedField
|
||||
|
||||
|
||||
from app.utils.helpers import recursive_getattr
|
||||
|
||||
|
||||
from uuid import uuid4
|
||||
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
@@ -17,9 +22,9 @@ class BaseQuerySet(models.QuerySet):
|
||||
"text": field.verbose_name.capitalize(),
|
||||
"align": "",
|
||||
"encrypted": field.name in self.model.Encryption.fields,
|
||||
"editable": field.name
|
||||
not in self.model.Serialization.excluded_fields_edit,
|
||||
"editable": field.name not in self.model.Serialization.excluded_fields_edit,
|
||||
"field_widget": "v-textarea",
|
||||
"choices": None,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +46,19 @@ class BaseQuerySet(models.QuerySet):
|
||||
field_widget="v-select",
|
||||
)
|
||||
|
||||
if field.choices:
|
||||
ret[field.name].update(
|
||||
text="",
|
||||
field_widget="v-select",
|
||||
choices=[
|
||||
{
|
||||
"value": c[0],
|
||||
"text": c[1],
|
||||
}
|
||||
for c in field.choices
|
||||
],
|
||||
)
|
||||
|
||||
return ret
|
||||
|
||||
fields = {}
|
||||
@@ -78,12 +96,25 @@ class BaseModel(models.Model):
|
||||
class Encryption:
|
||||
fields = ["name", "description", "custom_identifier"]
|
||||
|
||||
def serialize(self):
|
||||
ret = {}
|
||||
|
||||
for field_name in self._meta.model.objects.headers().keys():
|
||||
value = recursive_getattr(self, field_name)
|
||||
|
||||
if isinstance(value, BaseModel):
|
||||
value = value.id
|
||||
|
||||
ret[field_name] = value
|
||||
|
||||
return ret
|
||||
|
||||
id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
|
||||
|
||||
name = models.TextField(max_length=2048)
|
||||
description = models.TextField(max_length=2048)
|
||||
name = models.TextField(max_length=2048, blank=True, null=True)
|
||||
description = models.TextField(max_length=2048, blank=True, null=True)
|
||||
|
||||
custom_identifier = models.TextField(max_length=2048, null=True)
|
||||
custom_identifier = models.TextField(max_length=2048, null=True, blank=True)
|
||||
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
last_modified_at = models.DateTimeField(auto_now=True)
|
||||
|
||||
Reference in New Issue
Block a user