all: remove dead code
This commit is contained in:
parent
03905b74ff
commit
b99d23c119
|
@ -1,40 +0,0 @@
|
||||||
"""passbook form helpers"""
|
|
||||||
from django import forms
|
|
||||||
|
|
||||||
from passbook.admin.fields import YAMLField
|
|
||||||
|
|
||||||
|
|
||||||
class TagModelForm(forms.ModelForm):
|
|
||||||
"""Base form for models that have attributes"""
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
# Check if we have an instance, load tags otherwise use an empty dict
|
|
||||||
instance = kwargs.get("instance", None)
|
|
||||||
tags = instance.tags if instance else {}
|
|
||||||
# Make sure all predefined tags exist in tags, and set default if they don't
|
|
||||||
predefined_tags = (
|
|
||||||
self._meta.model().get_predefined_tags() # pylint: disable=no-member
|
|
||||||
)
|
|
||||||
for key, value in predefined_tags.items():
|
|
||||||
if key not in tags:
|
|
||||||
tags[key] = value
|
|
||||||
# Format JSON
|
|
||||||
kwargs["initial"]["tags"] = tags
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
|
|
||||||
def clean_tags(self):
|
|
||||||
"""Make sure all required tags are set"""
|
|
||||||
if hasattr(self.instance, "get_required_keys") and hasattr(
|
|
||||||
self.instance, "tags"
|
|
||||||
):
|
|
||||||
for key in self.instance.get_required_keys():
|
|
||||||
if key not in self.cleaned_data.get("tags"):
|
|
||||||
raise forms.ValidationError("Tag %s missing." % key)
|
|
||||||
return self.cleaned_data.get("tags")
|
|
||||||
|
|
||||||
|
|
||||||
# pylint: disable=too-few-public-methods
|
|
||||||
class TagModelFormMeta:
|
|
||||||
"""Base Meta class that uses the YAMLField"""
|
|
||||||
|
|
||||||
field_classes = {"tags": YAMLField}
|
|
|
@ -17,7 +17,7 @@ class PropertyMappingSerializer(ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
||||||
model = PropertyMapping
|
model = PropertyMapping
|
||||||
fields = ["pk", "name", "__type__"]
|
fields = ["pk", "name", "expression", "__type__"]
|
||||||
|
|
||||||
|
|
||||||
class PropertyMappingViewSet(ReadOnlyModelViewSet):
|
class PropertyMappingViewSet(ReadOnlyModelViewSet):
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
"""passbook lib fields"""
|
|
||||||
from itertools import chain
|
|
||||||
|
|
||||||
from django import forms
|
|
||||||
from django.contrib.postgres.utils import prefix_validation_error
|
|
||||||
|
|
||||||
from passbook.lib.widgets import DynamicArrayWidget
|
|
||||||
|
|
||||||
|
|
||||||
class DynamicArrayField(forms.Field):
|
|
||||||
"""Show array field as a dynamic amount of textboxes"""
|
|
||||||
|
|
||||||
default_error_messages = {
|
|
||||||
"item_invalid": "Item %(nth)s in the array did not validate: "
|
|
||||||
}
|
|
||||||
|
|
||||||
def __init__(self, base_field, **kwargs):
|
|
||||||
self.base_field = base_field
|
|
||||||
self.max_length = kwargs.pop("max_length", None)
|
|
||||||
kwargs.setdefault("widget", DynamicArrayWidget)
|
|
||||||
super().__init__(**kwargs)
|
|
||||||
|
|
||||||
def clean(self, value):
|
|
||||||
cleaned_data = []
|
|
||||||
errors = []
|
|
||||||
value = [x for x in value if x]
|
|
||||||
for index, item in enumerate(value):
|
|
||||||
try:
|
|
||||||
cleaned_data.append(self.base_field.clean(item))
|
|
||||||
except forms.ValidationError as error:
|
|
||||||
errors.append(
|
|
||||||
prefix_validation_error(
|
|
||||||
error,
|
|
||||||
self.error_messages["item_invalid"],
|
|
||||||
code="item_invalid",
|
|
||||||
params={"nth": index},
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if errors:
|
|
||||||
raise forms.ValidationError(list(chain.from_iterable(errors)))
|
|
||||||
if not cleaned_data and self.required:
|
|
||||||
raise forms.ValidationError(self.error_messages["required"])
|
|
||||||
return cleaned_data
|
|
||||||
|
|
||||||
def has_changed(self, initial, data):
|
|
||||||
if not data and not initial:
|
|
||||||
return False
|
|
||||||
return super().has_changed(initial, data)
|
|
|
@ -16,31 +16,6 @@
|
||||||
max-height: var(--pf-c-login__main-footer-links-item-link-svg--Height);
|
max-height: var(--pf-c-login__main-footer-links-item-link-svg--Height);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Dynamic array widget */
|
|
||||||
.dynamic-array-widget .array-item {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
margin-bottom: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dynamic-array-widget .remove_sign {
|
|
||||||
width: 10px;
|
|
||||||
height: 2px;
|
|
||||||
background: #a41515;
|
|
||||||
border-radius: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dynamic-array-widget .remove {
|
|
||||||
height: 15px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
margin-left: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dynamic-array-widget .remove:hover {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Selector */
|
/* Selector */
|
||||||
.selector {
|
.selector {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
|
@ -52,34 +52,3 @@ document.querySelectorAll("input[name=name]").forEach((input) => {
|
||||||
slugField.value = convertToSlug(slugField.value);
|
slugField.value = convertToSlug(slugField.value);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// Dynamic Array field logic
|
|
||||||
window.addEventListener('load', function () {
|
|
||||||
|
|
||||||
function addRemoveEventListener(widgetElement) {
|
|
||||||
widgetElement.querySelectorAll('.array-remove').forEach(function (element) {
|
|
||||||
element.addEventListener('click', function () {
|
|
||||||
this.parentNode.parentNode.remove();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
document.querySelectorAll('.dynamic-array-widget').forEach(function (widgetElement) {
|
|
||||||
|
|
||||||
addRemoveEventListener(widgetElement);
|
|
||||||
|
|
||||||
widgetElement.querySelector('.add-array-item').addEventListener('click', function () {
|
|
||||||
var first = widgetElement.querySelector('.array-item');
|
|
||||||
var newElement = first.cloneNode(true);
|
|
||||||
var id_parts = newElement.querySelector('input').getAttribute('id').split('_');
|
|
||||||
var id = id_parts.slice(0, -1).join('_') + '_' + String(parseInt(id_parts.slice(-1)[0]) + 1);
|
|
||||||
newElement.querySelector('input').setAttribute('id', id);
|
|
||||||
newElement.querySelector('input').value = '';
|
|
||||||
|
|
||||||
addRemoveEventListener(newElement);
|
|
||||||
first.parentElement.insertBefore(newElement, first.parentNode.lastChild);
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
Reference in New Issue