wbcore 1.55.10rc0__py2.py3-none-any.whl → 1.56.0__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- wbcore/contrib/authentication/filters.py +0 -1
- wbcore/contrib/directory/models/contacts.py +1 -1
- wbcore/contrib/documents/filters.py +0 -2
- wbcore/contrib/io/imports.py +1 -1
- wbcore/filters/fields/datetime.py +33 -8
- wbcore/filters/filterset.py +18 -2
- wbcore/filters/mixins.py +5 -0
- wbcore/metadata/configs/filter_fields.py +12 -11
- wbcore/serializers/serializers.py +1 -1
- wbcore/test/mixins.py +1 -1
- wbcore/test/utils.py +1 -1
- {wbcore-1.55.10rc0.dist-info → wbcore-1.56.0.dist-info}/METADATA +1 -1
- {wbcore-1.55.10rc0.dist-info → wbcore-1.56.0.dist-info}/RECORD +14 -14
- {wbcore-1.55.10rc0.dist-info → wbcore-1.56.0.dist-info}/WHEEL +0 -0
|
@@ -227,7 +227,7 @@ class BankingContact(PrimaryMixin, WBModel):
|
|
|
227
227
|
|
|
228
228
|
notification_types = [
|
|
229
229
|
create_notification_type(
|
|
230
|
-
code="directory.
|
|
230
|
+
code="directory.banking_contact.approval",
|
|
231
231
|
title="Banking Contact Notification",
|
|
232
232
|
help_text="Sends out a notification when you want need to approve a change in bank details",
|
|
233
233
|
)
|
|
@@ -13,7 +13,6 @@ from wbcore.contrib.documents.models import (
|
|
|
13
13
|
class ShareableLinkFilter(wb_filters.FilterSet):
|
|
14
14
|
valid = wb_filters.BooleanFilter(label=_("Valid"), method="boolean_is_valid")
|
|
15
15
|
valid_until = wb_filters.DateTimeRangeFilter(
|
|
16
|
-
method=wb_filters.DateRangeFilter.base_date_range_filter_method,
|
|
17
16
|
label="Valid Until",
|
|
18
17
|
)
|
|
19
18
|
link = wb_filters.CharFilter(label=_("Link"), method="filter_uuid")
|
|
@@ -36,7 +35,6 @@ class ShareableLinkFilter(wb_filters.FilterSet):
|
|
|
36
35
|
class ShareableLinkAccessFilter(wb_filters.FilterSet):
|
|
37
36
|
clearable = (False,)
|
|
38
37
|
accessed = wb_filters.DateTimeRangeFilter(
|
|
39
|
-
method=wb_filters.DateRangeFilter.base_date_range_filter_method,
|
|
40
38
|
label="Accessed between date",
|
|
41
39
|
)
|
|
42
40
|
|
wbcore/contrib/io/imports.py
CHANGED
|
@@ -46,7 +46,7 @@ class ImportExportHandler:
|
|
|
46
46
|
else:
|
|
47
47
|
return provider_id, content_type
|
|
48
48
|
|
|
49
|
-
def _model_dict_diff(self, model: Any, data: Dict[str, Any]) -> Dict[str, Any]:
|
|
49
|
+
def _model_dict_diff(self, model: Any, data: Dict[str, Any]) -> Dict[str, Any]: # noqa: C901
|
|
50
50
|
"""
|
|
51
51
|
Given a model and its dictionary representation, compare them and find out the fields that are different
|
|
52
52
|
Args:
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
from contextlib import suppress
|
|
2
2
|
|
|
3
3
|
import django_filters
|
|
4
|
+
from django.contrib.postgres.fields import RangeField
|
|
5
|
+
from django_filters.constants import EMPTY_VALUES
|
|
6
|
+
from django_filters.utils import get_model_field
|
|
4
7
|
|
|
5
8
|
from wbcore.filters.mixins import WBCoreFilterMixin
|
|
6
9
|
from wbcore.forms import DateRangeField, DateTimeRangeField
|
|
@@ -45,6 +48,13 @@ class DateRangeFilter(ShortcutAndPerformanceMixin, django_filters.Filter):
|
|
|
45
48
|
kwargs.setdefault("lookup_expr", "overlap")
|
|
46
49
|
super().__init__(*args, **kwargs)
|
|
47
50
|
|
|
51
|
+
@property
|
|
52
|
+
def is_range(self) -> bool:
|
|
53
|
+
if hasattr(self, "model"):
|
|
54
|
+
field = get_model_field(self.model, self.field_name)
|
|
55
|
+
return issubclass(field.__class__, RangeField)
|
|
56
|
+
return False
|
|
57
|
+
|
|
48
58
|
def _get_initial(self, *args):
|
|
49
59
|
initial = super()._get_initial(*args)
|
|
50
60
|
if initial is not None:
|
|
@@ -70,16 +80,30 @@ class DateRangeFilter(ShortcutAndPerformanceMixin, django_filters.Filter):
|
|
|
70
80
|
|
|
71
81
|
return representation, lookup_expr
|
|
72
82
|
|
|
73
|
-
|
|
74
|
-
|
|
83
|
+
def filter(self, qs, value):
|
|
84
|
+
if value in EMPTY_VALUES:
|
|
85
|
+
return qs
|
|
75
86
|
if value:
|
|
87
|
+
lower, upper = value.lower, value.upper
|
|
76
88
|
filters = {}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
89
|
+
is_field_range = self.is_range
|
|
90
|
+
if lower:
|
|
91
|
+
if is_field_range:
|
|
92
|
+
filters[f"{self.field_name}__startswith__gte"] = lower
|
|
93
|
+
else:
|
|
94
|
+
filters[f"{self.field_name}__gte"] = lower
|
|
95
|
+
|
|
96
|
+
if upper:
|
|
97
|
+
if is_field_range:
|
|
98
|
+
filters[f"{self.field_name}__endswith__lte"] = upper
|
|
99
|
+
else:
|
|
100
|
+
filters[f"{self.field_name}__lte"] = upper
|
|
101
|
+
|
|
102
|
+
if self.exclude:
|
|
103
|
+
qs = qs.exclude(**filters)
|
|
104
|
+
else:
|
|
105
|
+
qs = qs.filter(**filters)
|
|
106
|
+
return qs
|
|
83
107
|
|
|
84
108
|
|
|
85
109
|
class FinancialPerformanceDateRangeFilter(DateRangeFilter):
|
|
@@ -90,3 +114,4 @@ class FinancialPerformanceDateRangeFilter(DateRangeFilter):
|
|
|
90
114
|
class DateTimeRangeFilter(DateRangeFilter):
|
|
91
115
|
field_class = DateTimeRangeField
|
|
92
116
|
initial_format = "%Y-%m-%dT%H:%M:%S%z"
|
|
117
|
+
filter_type = "datetimerange"
|
wbcore/filters/filterset.py
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import logging
|
|
2
|
+
from collections import OrderedDict
|
|
2
3
|
from contextlib import suppress
|
|
4
|
+
from copy import copy
|
|
3
5
|
|
|
4
6
|
from django.contrib.postgres.fields import DateRangeField, DateTimeRangeField
|
|
5
7
|
from django.core.exceptions import FieldError
|
|
@@ -65,6 +67,7 @@ class CustomFilterSetMetaClass(FilterSetMetaclass):
|
|
|
65
67
|
|
|
66
68
|
|
|
67
69
|
class FilterSet(DjangoFilterSet, metaclass=CustomFilterSetMetaClass):
|
|
70
|
+
DEFAULT_EXCLUDE_FILTER_LOOKUP: str = "exclude"
|
|
68
71
|
FILTER_DEFAULTS = {
|
|
69
72
|
models.BooleanField: {"filter_class": fields.BooleanFilter},
|
|
70
73
|
models.NullBooleanField: {"filter_class": fields.BooleanFilter},
|
|
@@ -196,7 +199,7 @@ class FilterSet(DjangoFilterSet, metaclass=CustomFilterSetMetaClass):
|
|
|
196
199
|
|
|
197
200
|
@classmethod
|
|
198
201
|
def get_filters(cls):
|
|
199
|
-
filters = super().get_filters()
|
|
202
|
+
filters = dict(super().get_filters())
|
|
200
203
|
remote_filters = add_filters.send(sender=cls.filter_class_for_remote_filter())
|
|
201
204
|
for _, res in remote_filters:
|
|
202
205
|
if res:
|
|
@@ -211,7 +214,20 @@ class FilterSet(DjangoFilterSet, metaclass=CustomFilterSetMetaClass):
|
|
|
211
214
|
for field, values in cls.get_dependency_map():
|
|
212
215
|
for value in values:
|
|
213
216
|
filters[field].depends_on.append({"field": value, "options": {}})
|
|
214
|
-
|
|
217
|
+
|
|
218
|
+
excluding_fields = {}
|
|
219
|
+
for name, field in filters.items():
|
|
220
|
+
# if allow_exclude is true, we add a copy of the field with the parameter exclude=True
|
|
221
|
+
# (to use `exclude` queryset method instead of `filter`) and add this with the suffix __{cls.DEFAULT_EXCLUDE_FILTER_LOOKUP}
|
|
222
|
+
if field.allow_exclude:
|
|
223
|
+
excluding_field = copy(field)
|
|
224
|
+
excluding_field.exclude = True
|
|
225
|
+
excluding_field.excluded_filter = True
|
|
226
|
+
excluding_field.hidden = True
|
|
227
|
+
excluding_field.required = False
|
|
228
|
+
excluding_fields[f"{name}__{cls.DEFAULT_EXCLUDE_FILTER_LOOKUP}"] = excluding_field
|
|
229
|
+
filters.update(excluding_fields)
|
|
230
|
+
return OrderedDict(filters)
|
|
215
231
|
|
|
216
232
|
def extract_required_field_labels(self):
|
|
217
233
|
return [label for label, filter in self.base_filters.items() if getattr(filter, "required", False)]
|
wbcore/filters/mixins.py
CHANGED
|
@@ -30,6 +30,10 @@ class WBCoreFilterMixin:
|
|
|
30
30
|
"label_format",
|
|
31
31
|
getattr(self, "default_label_format", "{{field_label}} {{operation_icon}} {{value_label}}"),
|
|
32
32
|
)
|
|
33
|
+
self.allow_exclude = kwargs.pop(
|
|
34
|
+
"allow_exclude", kwargs.get("method") is None
|
|
35
|
+
) # if False, we will not automatically add a similar filter "opposite" filter
|
|
36
|
+
self.excluded_filter = kwargs.pop("excluded_filter", False)
|
|
33
37
|
self.lookup_icon = kwargs.pop("lookup_icon", None)
|
|
34
38
|
self.lookup_label = kwargs.pop("lookup_label", None)
|
|
35
39
|
self.depends_on = kwargs.pop("depends_on", [])
|
|
@@ -90,6 +94,7 @@ class WBCoreFilterMixin:
|
|
|
90
94
|
"icon": get_lookup_icon(self.lookup_expr) if self.lookup_icon is None else self.lookup_icon,
|
|
91
95
|
"key": name,
|
|
92
96
|
"hidden": self.hidden,
|
|
97
|
+
"allow_exclude": self.allow_exclude,
|
|
93
98
|
"input_properties": {
|
|
94
99
|
"type": self.filter_type,
|
|
95
100
|
},
|
|
@@ -25,16 +25,17 @@ class FilterFieldsViewConfig(WBCoreViewConfig):
|
|
|
25
25
|
hidden_fields.extend(getattr(filterset_class_meta, "hidden_fields", []))
|
|
26
26
|
filters.update(getattr(filterset_class_meta, "df_fields", {}))
|
|
27
27
|
for name, field in filters.items():
|
|
28
|
-
field.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
28
|
+
if not field.excluded_filter:
|
|
29
|
+
field.parent = filterset
|
|
30
|
+
if res := field.get_representation(self.request, name, self.view):
|
|
31
|
+
representation, lookup_expr = res
|
|
32
|
+
if name in hidden_fields:
|
|
33
|
+
lookup_expr["hidden"] = True
|
|
34
|
+
if field.key in filter_fields:
|
|
35
|
+
filter_fields[field.key]["lookup_expr"].append(lookup_expr)
|
|
36
|
+
else:
|
|
37
|
+
filter_fields[field.key] = representation
|
|
38
|
+
filter_fields[field.key]["lookup_expr"] = [lookup_expr]
|
|
39
|
+
filter_fields[field.key]["label"] = field.label
|
|
39
40
|
|
|
40
41
|
return filter_fields
|
|
@@ -49,7 +49,7 @@ def validate_nested_representation(instance, value):
|
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
class WBCoreSerializerMetaClass(SerializerMetaclass):
|
|
52
|
-
def __new__(cls, *args, **kwargs):
|
|
52
|
+
def __new__(cls, *args, **kwargs): # noqa: C901
|
|
53
53
|
_class = super().__new__(cls, *args, **kwargs)
|
|
54
54
|
|
|
55
55
|
if _meta := getattr(_class, "Meta", None):
|
wbcore/test/mixins.py
CHANGED
|
@@ -173,7 +173,7 @@ class ParentViewset:
|
|
|
173
173
|
else get_model_factory(self.model)
|
|
174
174
|
)
|
|
175
175
|
|
|
176
|
-
def _get_mixins_data(self, type="GET", dump_data=False, data=None):
|
|
176
|
+
def _get_mixins_data(self, type="GET", dump_data=False, data=None): # noqa: C901
|
|
177
177
|
api_request = APIRequestFactory()
|
|
178
178
|
superuser = get_or_create_superuser()
|
|
179
179
|
kwargs = None
|
wbcore/test/utils.py
CHANGED
|
@@ -45,7 +45,7 @@ def get_model_factory(model):
|
|
|
45
45
|
return mfs[0]
|
|
46
46
|
|
|
47
47
|
|
|
48
|
-
def get_data_from_factory(instance, viewset, delete=False, update=False, superuser=None, factory=None):
|
|
48
|
+
def get_data_from_factory(instance, viewset, delete=False, update=False, superuser=None, factory=None): # noqa: C901
|
|
49
49
|
"""
|
|
50
50
|
Our goal here is to get the serializer dynamically based on the viewset, use this serializer to generate data for the post and update test.
|
|
51
51
|
"""
|
|
@@ -126,7 +126,7 @@ wbcore/contrib/authentication/authentication.py,sha256=DLWOsGlk88uegMnepEIRrc91B
|
|
|
126
126
|
wbcore/contrib/authentication/configs.py,sha256=Z3M2X6xzWhwJEEvHym6d9khriSdgyTmimbkxi7KAGuk,358
|
|
127
127
|
wbcore/contrib/authentication/configurations.py,sha256=N-631Y0kfJzacLcs926uom7SaoJC7RvhA7nsR5NV_hs,2362
|
|
128
128
|
wbcore/contrib/authentication/dynamic_preferences_registry.py,sha256=oWCqvR-lzduzOrwh5DlsTBfP-9NyjCERNpKLjfnkNzo,982
|
|
129
|
-
wbcore/contrib/authentication/filters.py,sha256=
|
|
129
|
+
wbcore/contrib/authentication/filters.py,sha256=UEIbxpFhjc2G8DFq0r0hWEoAASoNZDmBI3PZvPD8-Q8,424
|
|
130
130
|
wbcore/contrib/authentication/tasks.py,sha256=5h2dL3nbrfpkU6i6Qq51vk7PMh14_-YLlfvyskGOVO0,1201
|
|
131
131
|
wbcore/contrib/authentication/urls.py,sha256=OUeLXEwuF6yS-oXeBpkC5aCviEC-nPbM3CSOcNpEImE,3974
|
|
132
132
|
wbcore/contrib/authentication/utils.py,sha256=jmOZtY_z6oW_r6npGPH00IbPcUjWZ1NchodMgcHXEbs,341
|
|
@@ -317,7 +317,7 @@ wbcore/contrib/directory/migrations/0012_alter_person_managers.py,sha256=Y-GWOA5
|
|
|
317
317
|
wbcore/contrib/directory/migrations/0013_alter_clientmanagerrelationship_options.py,sha256=sj9-aCqnzwqKyfYAyLfc1TW2o9X_oVVtNkT30fRuVdQ,560
|
|
318
318
|
wbcore/contrib/directory/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
319
319
|
wbcore/contrib/directory/models/__init__.py,sha256=XtnmU5YUr3SGig6PsSfGsWUaiBaX6kaHShBv3sbxZ14,526
|
|
320
|
-
wbcore/contrib/directory/models/contacts.py,sha256=
|
|
320
|
+
wbcore/contrib/directory/models/contacts.py,sha256=8KVCmzNARTzeQgRtXe78QKhJr0SvEJ-aZcsRuYaMIbE,18322
|
|
321
321
|
wbcore/contrib/directory/models/entries.py,sha256=Zu4xt3q05tKk6t4Q2BwAMXPsqNdNbRB77in63yoVIUc,31664
|
|
322
322
|
wbcore/contrib/directory/models/relationships.py,sha256=7SZFo1tA7NRzS7_gv_fKwMsPPhawu90eWSrEvij_0rk,22108
|
|
323
323
|
wbcore/contrib/directory/release_notes/1_0_0.md,sha256=Twbl9RMLO6dbbm5dVoKorw8BecRqAYsKeobcNmDWHu8,165
|
|
@@ -399,7 +399,7 @@ wbcore/contrib/documents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
|
|
|
399
399
|
wbcore/contrib/documents/admin.py,sha256=vh7dhViQ63Ot_olFvJMcRLjxFnQOK8T8QNzB7gOCBro,2378
|
|
400
400
|
wbcore/contrib/documents/apps.py,sha256=z3pYGj-qPkkpe88MP_G7uO_sb2uEvD_KZriePPbtX2Y,161
|
|
401
401
|
wbcore/contrib/documents/factories.py,sha256=4VGupvQQGNk43c1pubCyJfHRqlWjFTKhiiq8y-5G3Q0,1053
|
|
402
|
-
wbcore/contrib/documents/filters.py,sha256=
|
|
402
|
+
wbcore/contrib/documents/filters.py,sha256=ZRw_uN_MdP28GMK_7hM1mgoW1ZViL3oGEe49CBJwZ5w,2477
|
|
403
403
|
wbcore/contrib/documents/urls.py,sha256=1i3xEygi5myhLWo6OSy7fCd_m_ze_stRf871WsCKiqI,1769
|
|
404
404
|
wbcore/contrib/documents/fixtures/docments.json,sha256=xGsdB7WZ-k_06yC_2OfcQCeBc3T8TlQwLp3ex9DcdIM,4025
|
|
405
405
|
wbcore/contrib/documents/locale/de/LC_MESSAGES/django.po,sha256=kmmIkwn_e-NZn5sJdZs2NMYmW8I7EBLCLHzCDQAbEcc,8104
|
|
@@ -668,7 +668,7 @@ wbcore/contrib/io/dynamic_preferences_registry.py,sha256=8dyFqiacvwUZOgQl9gvKfGv
|
|
|
668
668
|
wbcore/contrib/io/enums.py,sha256=9Ph2hUn-cjfvTIhPGxlC07qubPS6R3B9ilvC3tpMm8o,417
|
|
669
669
|
wbcore/contrib/io/exceptions.py,sha256=-9pTtBr4oj7qBpKwnsN7sabu5S6gpDkWTXkA4ZaW9EE,690
|
|
670
670
|
wbcore/contrib/io/factories.py,sha256=U5ppoOMM4yd6pla_bscWo9v7ug5W_bWV29ZL4PKLZsU,7053
|
|
671
|
-
wbcore/contrib/io/imports.py,sha256=
|
|
671
|
+
wbcore/contrib/io/imports.py,sha256=Hu8ppai06SQ_CDQ2oUbFcwduAhekCp1l1DB89kTn2nQ,13087
|
|
672
672
|
wbcore/contrib/io/mixins.py,sha256=Sy_1mfdJzrIODCRcbfiA6miU8EqKEaJhL7mEjsRhOvY,1297
|
|
673
673
|
wbcore/contrib/io/models.py,sha256=oYGMz0tbR5Eyul-J1tOSqjbMaNDjaOvB56YrZZhPYd8,40230
|
|
674
674
|
wbcore/contrib/io/resources.py,sha256=eGEpmyrtkB3DgFKV6m57OFzyu6jBZUIXkn5Jopeus9M,6953
|
|
@@ -964,15 +964,15 @@ wbcore/docs/reparent.md,sha256=_pWHAuRwSQZRcvRxa7tsNKVdRP4Nj6O0Zdbwk9AsB9Q,839
|
|
|
964
964
|
wbcore/filters/__init__.py,sha256=I4NntVOrIgMTPh49Ek5K6J6jEGR6Y8YR_TEVtNOJunw,491
|
|
965
965
|
wbcore/filters/backends.py,sha256=7XX5LcFrAFE5jvFj5qSjww4VMux8aKRlcQKmZxdIiKY,730
|
|
966
966
|
wbcore/filters/defaults.py,sha256=poSD8Ww2NumwYjZ01zS0iBsNCmv6Bee1z3bDSYdX17A,1988
|
|
967
|
-
wbcore/filters/filterset.py,sha256=
|
|
967
|
+
wbcore/filters/filterset.py,sha256=TTk4mQq9DFCXdyzMq3Ig6e5uIbmjsr4HT2kswOgiuPc,11775
|
|
968
968
|
wbcore/filters/lookups.py,sha256=IYuQqEcYutiXk9UpzY3qKSCaCR2vyllB0RXBj98o8Ao,1186
|
|
969
|
-
wbcore/filters/mixins.py,sha256=
|
|
969
|
+
wbcore/filters/mixins.py,sha256=_CT4Nrn8vwsANLrIRO4Ghal2aZD6XYTnFOubPPzGuSE,4508
|
|
970
970
|
wbcore/filters/utils.py,sha256=wSs0g7mKF6n_ziSEDItfFYcuHwZTXyu78D6LHxzY2Bk,786
|
|
971
971
|
wbcore/filters/fields/__init__.py,sha256=ZucwBossNTlvcUfRullicg0ovghQEGO0jxY5eQ3UaEs,546
|
|
972
972
|
wbcore/filters/fields/booleans.py,sha256=6BrK3p1Bv_KIlVCeMOgJ7V8_P8tWQKBnxTOBOBSsGvE,175
|
|
973
973
|
wbcore/filters/fields/choices.py,sha256=cXjPtWTEb-GF0oQaYszdDs2XRHEeviwipjbmlptX9mc,2529
|
|
974
974
|
wbcore/filters/fields/content_type.py,sha256=OtIzgNrr3-jtiS7m1YWrO5LEQd4hOhaukWTmDrmhJtg,1484
|
|
975
|
-
wbcore/filters/fields/datetime.py,sha256=
|
|
975
|
+
wbcore/filters/fields/datetime.py,sha256=17IP-ZGkmH0M4juc68kk0IPoiW7xKTUOy_y8DebV_Ts,4342
|
|
976
976
|
wbcore/filters/fields/models.py,sha256=43MwNyWqIkxAYTopYnGrsDRv-te34DIaHYmI4TtYTBs,5203
|
|
977
977
|
wbcore/filters/fields/multiple_lookups.py,sha256=gATxmkosBkDNbs_BQUw-rkON6xF5-C5evItvT0OkjQg,616
|
|
978
978
|
wbcore/filters/fields/numbers.py,sha256=DRKDndzZwBvnzlLrMiijwoZ41px8B0xcYv23eFI64hw,1908
|
|
@@ -1010,7 +1010,7 @@ wbcore/metadata/configs/base.py,sha256=jxOuuisAAEMjvdvQY_1WSruEaNR9onmXn7W6NN95o
|
|
|
1010
1010
|
wbcore/metadata/configs/documentations.py,sha256=Wv6vToaalOFkCY_KU8HOddpkfeMKsBoGlla_4LTbJ40,348
|
|
1011
1011
|
wbcore/metadata/configs/endpoints.py,sha256=peGTXR53IpOYcm0kBqDwMuIxxjjLYHRhDv0XWt6-OYQ,7143
|
|
1012
1012
|
wbcore/metadata/configs/fields.py,sha256=t_GFdQUUDiCUkk7i9TffFEBDBhRCuD_yaoyUIu9tCMQ,634
|
|
1013
|
-
wbcore/metadata/configs/filter_fields.py,sha256=
|
|
1013
|
+
wbcore/metadata/configs/filter_fields.py,sha256=1jZyZHU8rBse2P69xFFRAn8VitEdevz5bPeniMk0vKs,2000
|
|
1014
1014
|
wbcore/metadata/configs/identifiers.py,sha256=4cntC5IarkENLrBnFf26uyfrZY3b4QDXtugvNc_VRhI,1025
|
|
1015
1015
|
wbcore/metadata/configs/ordering_fields.py,sha256=9ww1zwCFfL6XKGxMI2RKCcMhRS-dkFi3pYbQVbuKN_A,878
|
|
1016
1016
|
wbcore/metadata/configs/paginations.py,sha256=QsQ2-D4Co6CZSrv6euBKZcYQVFRRfd5Jr-Sgw0Ij_Uo,373
|
|
@@ -1092,7 +1092,7 @@ wbcore/reversion/viewsets/viewsets.py,sha256=OlDYkqLBD8-eyb07eXVG69BzBanjhj_E_kI
|
|
|
1092
1092
|
wbcore/search/__init__.py,sha256=1V_2yxfShXBHdZLQZkFGqn5SrRpUBZCpaEyF1skLLO4,1496
|
|
1093
1093
|
wbcore/serializers/__init__.py,sha256=82xurxoF-BXAo7RN_iSQM0xHZRAh5ldHsY-V2chty3c,1480
|
|
1094
1094
|
wbcore/serializers/mixins.py,sha256=5oOTK82mP7d5fMqr8hMcq-pnh3MQ_HwmX6qpUrEQNYI,755
|
|
1095
|
-
wbcore/serializers/serializers.py,sha256=
|
|
1095
|
+
wbcore/serializers/serializers.py,sha256=pEcbOD6f8RCANG2cM1KBrYPxs15BSqJLrmlu2nvAgqI,18834
|
|
1096
1096
|
wbcore/serializers/utils.py,sha256=H_faApLg6bNiZvZNvApZhmVBJ07obw1u5QKZx7DLLa8,4251
|
|
1097
1097
|
wbcore/serializers/fields/__init__.py,sha256=xNNak0yl8FtC6m-__B5mfieSNGAygXND34E_HrJ2Fcw,1498
|
|
1098
1098
|
wbcore/serializers/fields/boolean.py,sha256=vwP7HQflArFEG0w9FfXkPYKreFJ5qMjs-L0qKMeKCVQ,1682
|
|
@@ -1139,10 +1139,10 @@ wbcore/templates/wbcore/frontend.html,sha256=ZNm9NgvXwxzs10px95I2GyBhORpw9-adF1A
|
|
|
1139
1139
|
wbcore/templates/wbcore/admin/change_list.html,sha256=R4D2DiiESjopzwvUTThpsGqX1ikYA92D1fPbER-M74Q,188
|
|
1140
1140
|
wbcore/templates/wbcore/admin/csv_form.html,sha256=g8w6oXAyvwOL7ckNmR_wch-vxnh-JLXFOa3cUkDnGSA,337
|
|
1141
1141
|
wbcore/test/__init__.py,sha256=gxYHDwZugGf-eRh7sG5z7247y5uvyDIHmsm4J0ajBis,713
|
|
1142
|
-
wbcore/test/mixins.py,sha256=
|
|
1142
|
+
wbcore/test/mixins.py,sha256=rtjhQCh-u4eGoEC-XTfjsmy1CwiQ1Q4dSs0EpZBz7Q0,32375
|
|
1143
1143
|
wbcore/test/signals.py,sha256=UX7n9zsak30feE1GLXkwAhLEbmRnllNPu17D1top6YI,174
|
|
1144
1144
|
wbcore/test/tests.py,sha256=NqD0cXhEabjPH52I7nBPijEu5cXTwn0duBckvG18rlI,4485
|
|
1145
|
-
wbcore/test/utils.py,sha256
|
|
1145
|
+
wbcore/test/utils.py,sha256=-PNuj4UjeoX2FdRCPObedTQAgUDsmiO672BCwIZtKwE,8406
|
|
1146
1146
|
wbcore/test/e2e_helpers_methods/e2e_checks.py,sha256=teyYS5OQGSy2r7VvhfxkaskPOrQ_jLBNPN64CRUKmzQ,4266
|
|
1147
1147
|
wbcore/test/e2e_helpers_methods/e2e_helper_methods.py,sha256=Uo61TfEwYOP_u9N84gz-asZ4VwK80cWhdlnhJpnw8U8,17654
|
|
1148
1148
|
wbcore/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -1229,6 +1229,6 @@ wbcore/viewsets/generics.py,sha256=lKDq9UY_Tyc56u1bqaIEvHGgoaXwXxpZ1c3fLVteptI,1
|
|
|
1229
1229
|
wbcore/viewsets/mixins.py,sha256=IdHd_uixOv3ExKoHxTgL5Bt8OELIwfYwhBZm0nsvZfc,12054
|
|
1230
1230
|
wbcore/viewsets/utils.py,sha256=4520Ij3ASM8lOa8QZkCqbBfOexVRiZu688eW-PGqMOA,882
|
|
1231
1231
|
wbcore/viewsets/viewsets.py,sha256=FPPESunEjlunDr5VFsjTfsquTS3iDSQkw0H6QjMKPqk,6574
|
|
1232
|
-
wbcore-1.
|
|
1233
|
-
wbcore-1.
|
|
1234
|
-
wbcore-1.
|
|
1232
|
+
wbcore-1.56.0.dist-info/METADATA,sha256=OgDUR-sEZZKX074Xapv0_sbWZJBGdqdBXtUMlSFjmr4,2303
|
|
1233
|
+
wbcore-1.56.0.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
|
|
1234
|
+
wbcore-1.56.0.dist-info/RECORD,,
|
|
File without changes
|