diff --git a/bi/models/dashboardlayout.py b/bi/models/dashboardlayout.py index 891086804b50a1b1c5cbf1e1e30f5bdf4036311a..84edea8a1ad66f014f5f753d016edda78c3b64e1 100644 --- a/bi/models/dashboardlayout.py +++ b/bi/models/dashboardlayout.py @@ -12,7 +12,7 @@ from mongoengine.document import Document, EmbeddedDocument from mongoengine.fields import StringField, UUIDField, IntField, ListField, EmbeddedDocumentField # NOC modules -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json @six.python_2_unicode_compatible diff --git a/cm/models/confdbquery.py b/cm/models/confdbquery.py index 4a37a45f5bef704eb66c6c6d00def53903149b16..61f3740304f3d2149e8b7deb271e8d4327183514 100644 --- a/cm/models/confdbquery.py +++ b/cm/models/confdbquery.py @@ -24,7 +24,7 @@ import six import cachetools # NOC modules -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.lib.text import quote_safe_path from noc.core.model.decorator import on_delete_check from noc.sa.interfaces.base import StringParameter, IntParameter, BooleanParameter diff --git a/cm/models/errortype.py b/cm/models/errortype.py index b0f98ed76766480b8b6a7b378f3b79bb9a8ffb81..bab6b2469e85554fec2d784938c8fe4eb394c5c2 100644 --- a/cm/models/errortype.py +++ b/cm/models/errortype.py @@ -15,7 +15,7 @@ from mongoengine.document import Document from mongoengine.fields import StringField, UUIDField # NOC modules -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.lib.text import quote_safe_path diff --git a/lib/prettyjson.py b/core/prettyjson.py similarity index 100% rename from lib/prettyjson.py rename to core/prettyjson.py diff --git a/dev/models/quiz.py b/dev/models/quiz.py index e3d0b27c221fac1e6af185ddc9a5089d1ec48b58..b5e382db86905b5394caea242c1d616476791641 100644 --- a/dev/models/quiz.py +++ b/dev/models/quiz.py @@ -24,7 +24,7 @@ from mongoengine.fields import ( import cachetools # NOC modules -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.lib.text import quote_safe_path from noc.core.model.decorator import on_delete_check diff --git a/dev/models/spec.py b/dev/models/spec.py index 3525d29ac7af911812dcde4627f0a398766e91ca..c191aa49c06f65dc513e3cfaf1535edc0d5766f6 100644 --- a/dev/models/spec.py +++ b/dev/models/spec.py @@ -26,7 +26,7 @@ from mongoengine.fields import ( import cachetools # NOC modules -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.lib.text import quote_safe_path from noc.core.mongo.fields import PlainReferenceField from noc.sa.models.profile import Profile diff --git a/fm/models/alarmseverity.py b/fm/models/alarmseverity.py index e5a989a81803b482f9d3a362e0665aecb6574130..d6bd20c838e6139f0f29cec3b9830cda3a7ffb44 100644 --- a/fm/models/alarmseverity.py +++ b/fm/models/alarmseverity.py @@ -21,7 +21,7 @@ import cachetools from noc.main.models.style import Style from noc.core.mongo.fields import ForeignKeyField from noc.lib.text import quote_safe_path -from noc.lib.prettyjson import to_json +from core.prettyjson import to_json from noc.core.model.decorator import on_delete_check id_lock = Lock() diff --git a/fm/models/cloneclassificationrule.py b/fm/models/cloneclassificationrule.py index 782329d93510476f873c2b8139b99ec4e11f4301..dc773e7ede9dc6ddb80236015b0ff5a68cf0d6f4 100644 --- a/fm/models/cloneclassificationrule.py +++ b/fm/models/cloneclassificationrule.py @@ -16,7 +16,7 @@ from mongoengine import fields # NOC modules from noc.lib.text import quote_safe_path -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json @six.python_2_unicode_compatible diff --git a/fm/models/enumeration.py b/fm/models/enumeration.py index 247e30c4e053607b86e814340e64cdf8d9ddd1f4..7fe93c2854440b3ceaf284c4472e3b59fdfa512a 100644 --- a/fm/models/enumeration.py +++ b/fm/models/enumeration.py @@ -13,7 +13,7 @@ from mongoengine.fields import StringField, DictField, UUIDField # Python modules from noc.lib.text import quote_safe_path -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json @six.python_2_unicode_compatible diff --git a/fm/models/mibalias.py b/fm/models/mibalias.py index 6d4496408f5a4e6c5b2f16138d146541a772e5c2..de335ace379d1415cd57b9a3b5fefa640ced5a5b 100644 --- a/fm/models/mibalias.py +++ b/fm/models/mibalias.py @@ -12,7 +12,7 @@ from mongoengine.document import Document from mongoengine.fields import StringField, UUIDField # NOC modules -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json @six.python_2_unicode_compatible diff --git a/fm/models/mibpreference.py b/fm/models/mibpreference.py index d636ece4db116b0f8087626360a670cc8514d3aa..2a83107f22e7215831c828046a87bec803a85706 100644 --- a/fm/models/mibpreference.py +++ b/fm/models/mibpreference.py @@ -12,7 +12,7 @@ from mongoengine.document import Document from mongoengine.fields import StringField, UUIDField, IntField # NOC modules -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json @six.python_2_unicode_compatible diff --git a/fm/models/oidalias.py b/fm/models/oidalias.py index 69d5f284df3fd7df7d3567024cf04aa6cc7dbc3e..43d2c0181b488041a60fe42502bbf9d87c1f62d0 100644 --- a/fm/models/oidalias.py +++ b/fm/models/oidalias.py @@ -12,7 +12,7 @@ from mongoengine.document import Document from mongoengine.fields import StringField, UUIDField # NOC modules -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json @six.python_2_unicode_compatible diff --git a/fm/models/syntaxalias.py b/fm/models/syntaxalias.py index c59c83760e7dcbee88bdd817753824727ef3b1dd..ef108d6623929e66f95d620386b5b1bd804c84ea 100644 --- a/fm/models/syntaxalias.py +++ b/fm/models/syntaxalias.py @@ -12,7 +12,7 @@ from mongoengine.document import Document from mongoengine.fields import StringField, UUIDField, DictField # NOC modules -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json @six.python_2_unicode_compatible diff --git a/gis/models/layer.py b/gis/models/layer.py index 23d32a421c7445eb4ac6623b19e19e322e570e44..9a9a3f91d21c4401fc46e1f73dbe21e26f12ba12 100644 --- a/gis/models/layer.py +++ b/gis/models/layer.py @@ -18,7 +18,7 @@ from mongoengine.fields import StringField, UUIDField, IntField, BooleanField import cachetools # NOC modules -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.lib.text import quote_safe_path from noc.core.model.decorator import on_delete_check diff --git a/inv/models/capability.py b/inv/models/capability.py index bfc9349b751eca762c69a48e55441d167e815cdf..71563e7188a0b222e0a178ced872d52d51276dd1 100644 --- a/inv/models/capability.py +++ b/inv/models/capability.py @@ -19,7 +19,7 @@ import cachetools # NOC modules from noc.main.models.doccategory import category -from noc.lib.prettyjson import to_json +from core.prettyjson import to_json from noc.lib.text import quote_safe_path from noc.core.model.decorator import on_delete_check diff --git a/inv/models/connectionrule.py b/inv/models/connectionrule.py index 64a0548a41294e643269cffdfbc097ac37a79d4b..98398b53181505e23beabbb6a3ef5fb1f063aff0 100644 --- a/inv/models/connectionrule.py +++ b/inv/models/connectionrule.py @@ -15,7 +15,7 @@ from mongoengine.document import Document, EmbeddedDocument from mongoengine.fields import StringField, UUIDField, ListField, EmbeddedDocumentField # NOC modules -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.lib.text import quote_safe_path from noc.core.model.decorator import on_delete_check diff --git a/inv/models/connectiontype.py b/inv/models/connectiontype.py index 19f9564afa37baf3080467685385dd53cedb9100..ef2202929563bd42682d5047efbac613aa58c2a6 100644 --- a/inv/models/connectiontype.py +++ b/inv/models/connectiontype.py @@ -23,7 +23,7 @@ from mongoengine.fields import ( # NOC modules from noc.core.mongo.fields import PlainReferenceField -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.lib.text import quote_safe_path from noc.main.models.doccategory import category from noc.core.model.decorator import on_delete_check diff --git a/inv/models/firmware.py b/inv/models/firmware.py index 02458c97fced062c3883fea8680e2ab3297a4ec0..d426f299e00342b043bec895cbba3e12d0bc9ae6 100644 --- a/inv/models/firmware.py +++ b/inv/models/firmware.py @@ -25,7 +25,7 @@ from .vendor import Vendor from noc.sa.models.profile import Profile from noc.core.mongo.fields import PlainReferenceField from noc.core.bi.decorator import bi_sync -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.core.model.decorator import on_delete_check id_lock = threading.Lock() diff --git a/inv/models/objectmodel.py b/inv/models/objectmodel.py index e49998d0c6d4b6e9fae8fe1c45bbd6ff2b74f310..951345c00043882982b6e41ea78757ed2976aaea 100644 --- a/inv/models/objectmodel.py +++ b/inv/models/objectmodel.py @@ -33,7 +33,7 @@ from .unknownmodel import UnknownModel from .vendor import Vendor from noc.main.models.doccategory import category from noc.core.mongo.fields import PlainReferenceField -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.lib.text import quote_safe_path from noc.core.model.decorator import on_delete_check, on_save diff --git a/inv/models/platform.py b/inv/models/platform.py index 36e9e34b8d0c34b8780399558301af9d1434338e..6cc45caaf18a70ae09aefed29aef4113a2c10c3b 100644 --- a/inv/models/platform.py +++ b/inv/models/platform.py @@ -27,7 +27,7 @@ from bson.int64 import Int64 from noc.core.mongo.fields import PlainReferenceField, DateField from noc.core.model.decorator import on_delete_check from noc.core.bi.decorator import bi_sync, new_bi_id -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.models import get_model from .vendor import Vendor diff --git a/inv/models/technology.py b/inv/models/technology.py index 9210dcf28bf921465f787e950c506154428ec6e6..5afedb1f461619c02c228743f4a6e72b0c77e42c 100644 --- a/inv/models/technology.py +++ b/inv/models/technology.py @@ -20,7 +20,7 @@ import cachetools # NOC modules from noc.core.model.decorator import on_delete_check from noc.core.bi.decorator import bi_sync -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.lib.text import quote_safe_path id_lock = threading.Lock() diff --git a/inv/models/vendor.py b/inv/models/vendor.py index ddb630c2fc187d75633905a8603a9b7d4aa9b71f..c7bfdee4faec5d827963811a00bce368e6deb8e9 100644 --- a/inv/models/vendor.py +++ b/inv/models/vendor.py @@ -20,7 +20,7 @@ import cachetools import six # NOC modules -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.core.model.decorator import on_delete_check, on_save from noc.core.bi.decorator import bi_sync diff --git a/pm/models/metricscope.py b/pm/models/metricscope.py index ffc9e509f167fba2f0bebe5a67142a54d020c2d2..da293ecc678b6fb978ef4dcd60be76e1475afe53 100644 --- a/pm/models/metricscope.py +++ b/pm/models/metricscope.py @@ -25,7 +25,7 @@ import cachetools # NOC Modules from noc.config import config -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.core.model.decorator import on_delete_check id_lock = Lock() diff --git a/pm/models/metrictype.py b/pm/models/metrictype.py index 59719caea04620a1ed22c5b03699fb7528c083e1..56519ed09d2c9e9cc67784c0137a4c03d3af58d1 100644 --- a/pm/models/metrictype.py +++ b/pm/models/metrictype.py @@ -24,7 +24,7 @@ from noc.inv.models.capability import Capability from noc.core.mongo.fields import PlainReferenceField from noc.main.models.doccategory import category from noc.lib.text import quote_safe_path -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.core.defer import call_later from noc.core.model.decorator import on_save from noc.core.bi.decorator import bi_sync diff --git a/sa/models/action.py b/sa/models/action.py index b576c78955a5ac1da38141c2704d98b3a621800d..5f2ddbf4ea9adbc254125085b73fb4e54286b266 100644 --- a/sa/models/action.py +++ b/sa/models/action.py @@ -28,7 +28,7 @@ import cachetools # NOC modules from noc.lib.text import quote_safe_path -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.core.ip import IP id_lock = threading.Lock() diff --git a/sa/models/actioncommands.py b/sa/models/actioncommands.py index d534ded86690b02a89a3eb1473279802581d6c5c..62a8310996d1c68657c06204a9c3fd3da39ff0ad 100644 --- a/sa/models/actioncommands.py +++ b/sa/models/actioncommands.py @@ -27,7 +27,7 @@ from mongoengine.fields import ( from noc.core.mongo.fields import PlainReferenceField from .profile import Profile from noc.lib.text import quote_safe_path -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from .action import Action diff --git a/sa/models/profile.py b/sa/models/profile.py index afe926a42589fd81f48c835748e175ed558dbb09..d9784015c53d1e94cf43dcafb2e2f61b5f45e856 100644 --- a/sa/models/profile.py +++ b/sa/models/profile.py @@ -20,7 +20,7 @@ import cachetools # NOC modules from noc.core.bi.decorator import bi_sync -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.core.model.decorator import on_delete_check from noc.core.profile.loader import loader, GENERIC_PROFILE diff --git a/sa/models/profilecheckrule.py b/sa/models/profilecheckrule.py index 6a89073efeda4a848cd3f91861d9639d004d342f..60c272929ab1fd19ec1383e235f33656b527d03b 100644 --- a/sa/models/profilecheckrule.py +++ b/sa/models/profilecheckrule.py @@ -19,7 +19,7 @@ from mongoengine.errors import ValidationError from noc.core.mongo.fields import PlainReferenceField from noc.sa.models.profile import Profile from noc.main.models.doccategory import category -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.lib.text import quote_safe_path diff --git a/services/web/apps/inv/connectionrule/views.py b/services/web/apps/inv/connectionrule/views.py index daf804b86002f4a7a23cc1de2bfd28a2b60d0a3b..90e110a4ff5688ee7546ed65959e355cf2260e1a 100644 --- a/services/web/apps/inv/connectionrule/views.py +++ b/services/web/apps/inv/connectionrule/views.py @@ -2,7 +2,7 @@ # --------------------------------------------------------------------- # inv.connectionrule application # --------------------------------------------------------------------- -# Copyright (C) 2007-2013 The NOC Project +# Copyright (C) 2007-2019 The NOC Project # See LICENSE for details # --------------------------------------------------------------------- @@ -10,7 +10,7 @@ from noc.lib.app.extdocapplication import ExtDocApplication, view from noc.inv.models.connectionrule import ConnectionRule from noc.sa.interfaces.base import ListOfParameter, DocumentParameter -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.core.translation import ugettext as _ diff --git a/services/web/apps/inv/objectmodel/views.py b/services/web/apps/inv/objectmodel/views.py index aebc77b4a597bd4a5d3ac7a7504184c16fb0ef4a..556c3d7605360f238289f15ba71163b60f79e60e 100644 --- a/services/web/apps/inv/objectmodel/views.py +++ b/services/web/apps/inv/objectmodel/views.py @@ -2,7 +2,7 @@ # --------------------------------------------------------------------- # inv.objectmodel application # --------------------------------------------------------------------- -# Copyright (C) 2007-2015 The NOC Project +# Copyright (C) 2007-2019 The NOC Project # See LICENSE for details # --------------------------------------------------------------------- @@ -12,7 +12,7 @@ from noc.main.models.doccategory import DocCategory from noc.inv.models.objectmodel import ObjectModel from noc.inv.models.modelinterface import ModelInterface from noc.sa.interfaces.base import ListOfParameter, DocumentParameter -from noc.lib.prettyjson import to_json +from noc.core.prettyjson import to_json from noc.core.translation import ugettext as _ diff --git a/tests/test_prettyjson.py b/tests/test_prettyjson.py new file mode 100644 index 0000000000000000000000000000000000000000..cf354c268c59423ab45eb627c3137b0387c8671c --- /dev/null +++ b/tests/test_prettyjson.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +# ---------------------------------------------------------------------- +# noc.core.prettyjson unittests +# ---------------------------------------------------------------------- +# Copyright (C) 2007-2019 The NOC Project +# See LICENSE for details +# ---------------------------------------------------------------------- + +# Third-party modules +import pytest + +# NOC modules +from noc.core.prettyjson import to_json + + +@pytest.mark.parametrize( + "config, expected", + [ + ({"key1": "value1", "key2": "value2", "key3": "value3"}, True), + (["key1" "value1" "key2" "value2" "key3" "value3"], False), + ], +) +def test_prettyjson(config, expected): + assert to_json(config).startswith("{\n") == expected + + +@pytest.mark.parametrize( + "config, expected", [(("key1", "value1", "key2", "value2", "key3", "value3"), True)] +) +def test_prettyjson_error(config, expected): + with pytest.raises(TypeError): + assert to_json(config).startswith("{\n") == expected