This commit is contained in:
2024-09-28 17:37:29 +02:00
parent 8dfafa9404
commit fb4d566007
64 changed files with 32325 additions and 573 deletions
+26 -22
View File
@@ -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)
+16
View File
@@ -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))
+38 -7
View File
@@ -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)