*: update JSON fields to django 3.1
This commit is contained in:
parent
54f0728005
commit
7334599efd
|
@ -33,7 +33,7 @@ class YAMLString(str):
|
|||
"""YAML String type"""
|
||||
|
||||
|
||||
class YAMLField(forms.CharField):
|
||||
class YAMLField(forms.JSONField):
|
||||
"""Django's JSON Field converted to YAML"""
|
||||
|
||||
default_error_messages = {
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
{% extends "administration/base.html" %}
|
||||
|
||||
{% load i18n %}
|
||||
{% load passbook_utils %}
|
||||
|
||||
{% block content %}
|
||||
<section class="pf-c-page__main-section pf-m-light">
|
||||
<div class="pf-c-content">
|
||||
<h1>
|
||||
<i class="pf-icon pf-icon-applications"></i>
|
||||
{% trans 'Request' %}
|
||||
</h1>
|
||||
</div>
|
||||
</section>
|
||||
<section class="pf-c-page__main-section pf-m-no-padding-mobile">
|
||||
<div class="pf-c-card">
|
||||
<table class="pf-c-table pf-m-compact pf-m-grid-xl" role="grid">
|
||||
<thead>
|
||||
<tr role="row">
|
||||
<th role="columnheader" scope="col" style="min-width: 150px;">{% trans 'Key' %}</th>
|
||||
<th role="columnheader" scope="col">{% trans 'Value' %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody role="rowgroup">
|
||||
{% for key, value in request_dict.items %}
|
||||
<tr role="row">
|
||||
<td role="cell">{{ key }}</td>
|
||||
<td role="cell">{{ value }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -4,7 +4,6 @@ from django.urls import path
|
|||
from passbook.admin.views import (
|
||||
applications,
|
||||
certificate_key_pair,
|
||||
debug,
|
||||
flows,
|
||||
groups,
|
||||
overview,
|
||||
|
@ -235,13 +234,17 @@ urlpatterns = [
|
|||
name="user-password-reset",
|
||||
),
|
||||
# Groups
|
||||
path("group/", groups.GroupListView.as_view(), name="group"),
|
||||
path("group/create/", groups.GroupCreateView.as_view(), name="group-create"),
|
||||
path("groups/", groups.GroupListView.as_view(), name="group"),
|
||||
path("groups/create/", groups.GroupCreateView.as_view(), name="group-create"),
|
||||
path(
|
||||
"group/<uuid:pk>/update/", groups.GroupUpdateView.as_view(), name="group-update"
|
||||
"groups/<uuid:pk>/update/",
|
||||
groups.GroupUpdateView.as_view(),
|
||||
name="group-update",
|
||||
),
|
||||
path(
|
||||
"group/<uuid:pk>/delete/", groups.GroupDeleteView.as_view(), name="group-delete"
|
||||
"groups/<uuid:pk>/delete/",
|
||||
groups.GroupDeleteView.as_view(),
|
||||
name="group-delete",
|
||||
),
|
||||
# Certificate-Key Pairs
|
||||
path(
|
||||
|
@ -264,8 +267,4 @@ urlpatterns = [
|
|||
certificate_key_pair.CertificateKeyPairDeleteView.as_view(),
|
||||
name="certificatekeypair-delete",
|
||||
),
|
||||
# Groups
|
||||
path("groups/", groups.GroupListView.as_view(), name="groups"),
|
||||
# Debug
|
||||
path("debug/request/", debug.DebugRequestView.as_view(), name="debug-request"),
|
||||
]
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
"""passbook administration debug views"""
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.views.generic import TemplateView
|
||||
|
||||
|
||||
class DebugRequestView(LoginRequiredMixin, TemplateView):
|
||||
"""Show debug info about request"""
|
||||
|
||||
template_name = "administration/debug/request.html"
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
kwargs["request_dict"] = {}
|
||||
for key in dir(self.request):
|
||||
kwargs["request_dict"][key] = getattr(self.request, key)
|
||||
return super().get_context_data(**kwargs)
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
import uuid
|
||||
|
||||
import django.contrib.postgres.fields.jsonb
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
@ -48,12 +47,7 @@ class Migration(migrations.Migration):
|
|||
),
|
||||
("date", models.DateTimeField(auto_now_add=True)),
|
||||
("app", models.TextField()),
|
||||
(
|
||||
"context",
|
||||
django.contrib.postgres.fields.jsonb.JSONField(
|
||||
blank=True, default=dict
|
||||
),
|
||||
),
|
||||
("context", models.JSONField(blank=True, default=dict),),
|
||||
("client_ip", models.GenericIPAddressField(null=True)),
|
||||
("created", models.DateTimeField(auto_now_add=True)),
|
||||
(
|
||||
|
|
|
@ -7,12 +7,11 @@ from uuid import UUID, uuid4
|
|||
from django.conf import settings
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.contrib.postgres.fields import JSONField
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.db import models
|
||||
from django.http import HttpRequest
|
||||
from django.utils.translation import gettext as _
|
||||
from django.views.debug import CLEANSED_SUBSTITUTE, HIDDEN_SETTINGS
|
||||
from django.views.debug import SafeExceptionReporterFilter
|
||||
from guardian.shortcuts import get_anonymous_user
|
||||
from structlog import get_logger
|
||||
|
||||
|
@ -26,8 +25,8 @@ def cleanse_dict(source: Dict[Any, Any]) -> Dict[Any, Any]:
|
|||
final_dict = {}
|
||||
for key, value in source.items():
|
||||
try:
|
||||
if HIDDEN_SETTINGS.search(key):
|
||||
final_dict[key] = CLEANSED_SUBSTITUTE
|
||||
if SafeExceptionReporterFilter.hidden_settings.search(key):
|
||||
final_dict[key] = SafeExceptionReporterFilter.cleansed_substitute
|
||||
else:
|
||||
final_dict[key] = value
|
||||
except TypeError:
|
||||
|
@ -100,7 +99,7 @@ class Event(models.Model):
|
|||
action = models.TextField(choices=EventAction.as_choices())
|
||||
date = models.DateTimeField(auto_now_add=True)
|
||||
app = models.TextField()
|
||||
context = JSONField(default=dict, blank=True)
|
||||
context = models.JSONField(default=dict, blank=True)
|
||||
client_ip = models.GenericIPAddressField(null=True)
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
|
|
|
@ -4,7 +4,6 @@ import uuid
|
|||
|
||||
import django.contrib.auth.models
|
||||
import django.contrib.auth.validators
|
||||
import django.contrib.postgres.fields.jsonb
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
import guardian.mixins
|
||||
|
@ -109,12 +108,7 @@ class Migration(migrations.Migration):
|
|||
("uuid", models.UUIDField(default=uuid.uuid4, editable=False)),
|
||||
("name", models.TextField(help_text="User's display name.")),
|
||||
("password_change_date", models.DateTimeField(auto_now_add=True)),
|
||||
(
|
||||
"attributes",
|
||||
django.contrib.postgres.fields.jsonb.JSONField(
|
||||
blank=True, default=dict
|
||||
),
|
||||
),
|
||||
("attributes", models.JSONField(blank=True, default=dict),),
|
||||
],
|
||||
options={"permissions": (("reset_user_password", "Reset Password"),),},
|
||||
bases=(guardian.mixins.GuardianUserMixin, models.Model),
|
||||
|
@ -264,12 +258,7 @@ class Migration(migrations.Migration):
|
|||
),
|
||||
),
|
||||
("name", models.CharField(max_length=80, verbose_name="name")),
|
||||
(
|
||||
"attributes",
|
||||
django.contrib.postgres.fields.jsonb.JSONField(
|
||||
blank=True, default=dict
|
||||
),
|
||||
),
|
||||
("attributes", models.JSONField(blank=True, default=dict),),
|
||||
(
|
||||
"parent",
|
||||
models.ForeignKey(
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
# Generated by Django 3.1 on 2020-08-15 18:41
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("passbook_core", "0006_auto_20200709_1608"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="first_name",
|
||||
field=models.CharField(
|
||||
blank=True, max_length=150, verbose_name="first name"
|
||||
),
|
||||
),
|
||||
]
|
|
@ -4,7 +4,6 @@ from typing import Any, Optional, Type
|
|||
from uuid import uuid4
|
||||
|
||||
from django.contrib.auth.models import AbstractUser
|
||||
from django.contrib.postgres.fields import JSONField
|
||||
from django.db import models
|
||||
from django.db.models import Q, QuerySet
|
||||
from django.forms import ModelForm
|
||||
|
@ -42,7 +41,7 @@ class Group(models.Model):
|
|||
on_delete=models.SET_NULL,
|
||||
related_name="children",
|
||||
)
|
||||
attributes = JSONField(default=dict, blank=True)
|
||||
attributes = models.JSONField(default=dict, blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return f"Group {self.name}"
|
||||
|
@ -62,7 +61,7 @@ class User(GuardianUserMixin, AbstractUser):
|
|||
groups = models.ManyToManyField("Group")
|
||||
password_change_date = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
attributes = JSONField(default=dict, blank=True)
|
||||
attributes = models.JSONField(default=dict, blank=True)
|
||||
|
||||
def set_password(self, password):
|
||||
if self.pk:
|
||||
|
|
|
@ -67,7 +67,6 @@ INSTALLED_APPS = [
|
|||
"django.contrib.sessions",
|
||||
"django.contrib.messages",
|
||||
"django.contrib.staticfiles",
|
||||
"django.contrib.postgres",
|
||||
"django.contrib.humanize",
|
||||
"rest_framework",
|
||||
"django_filters",
|
||||
|
|
|
@ -28,5 +28,5 @@ class InvitationForm(forms.ModelForm):
|
|||
labels = {
|
||||
"fixed_data": _("Optional fixed data to enforce on user enrollment."),
|
||||
}
|
||||
widgets = {"fixed_data": CodeMirrorWidget}
|
||||
widgets = {"fixed_data": CodeMirrorWidget()}
|
||||
field_classes = {"fixed_data": YAMLField}
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
import uuid
|
||||
|
||||
import django.contrib.postgres.fields.jsonb
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
@ -59,10 +58,7 @@ class Migration(migrations.Migration):
|
|||
),
|
||||
),
|
||||
("expires", models.DateTimeField(blank=True, default=None, null=True)),
|
||||
(
|
||||
"fixed_data",
|
||||
django.contrib.postgres.fields.jsonb.JSONField(default=dict),
|
||||
),
|
||||
("fixed_data", models.JSONField(default=dict),),
|
||||
(
|
||||
"created_by",
|
||||
models.ForeignKey(
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
from typing import Type
|
||||
from uuid import uuid4
|
||||
|
||||
from django.contrib.postgres.fields import JSONField
|
||||
from django.db import models
|
||||
from django.forms import ModelForm
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
@ -53,7 +52,7 @@ class Invitation(models.Model):
|
|||
|
||||
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
expires = models.DateTimeField(default=None, blank=True, null=True)
|
||||
fixed_data = JSONField(default=dict)
|
||||
fixed_data = models.JSONField(default=dict)
|
||||
|
||||
def __str__(self):
|
||||
return f"Invitation {self.invite_uuid.hex} created by {self.created_by}"
|
||||
|
|
|
@ -5477,7 +5477,7 @@ definitions:
|
|||
minLength: 1
|
||||
context:
|
||||
title: Context
|
||||
type: object
|
||||
type: string
|
||||
client_ip:
|
||||
title: Client ip
|
||||
type: string
|
||||
|
@ -5565,7 +5565,7 @@ definitions:
|
|||
uniqueItems: true
|
||||
attributes:
|
||||
title: Attributes
|
||||
type: object
|
||||
type: string
|
||||
Message:
|
||||
type: object
|
||||
properties:
|
||||
|
@ -6777,7 +6777,7 @@ definitions:
|
|||
x-nullable: true
|
||||
fixed_data:
|
||||
title: Fixed data
|
||||
type: object
|
||||
type: string
|
||||
OTPStaticStage:
|
||||
required:
|
||||
- name
|
||||
|
|
Reference in New Issue