Skip to content

Commit

Permalink
WIP injeccao de funções
Browse files Browse the repository at this point in the history
  • Loading branch information
silvae86 committed Mar 4, 2020
1 parent f7bc90b commit e112b25
Show file tree
Hide file tree
Showing 27 changed files with 65 additions and 22 deletions.
36 changes: 27 additions & 9 deletions src/GCF/decorators/OntologyClass.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,40 @@
import importlib
from functools import \
wraps # This convenience func preserves name and docstring
import json

from marshmallow import Schema, fields
from marshmallow_jsonschema import JSONSchema


def json_serializable(cls):
def toJSON(self):
return json.dumps(self, default=lambda o: o.__dict__)

setattr(cls, "print_schema", toJSON)


def has_json_schema(cls):
if not hasattr(cls, "get_schema"):
raise Exception(
"JSON-serializable Ontology classes must declare a static get_schema method"
)

def getSchema(self):
string_schema = StringSchema()
def print_schema(self):
json_schema = JSONSchema()
return json_schema.dump(string_schema)
class_schema = cls.__module__
return json_schema.dump(class_schema)

# package_name = ".".join([cls.__module__, cls.__name__])
package_name = ".".join(str.split(cls.__module__, ".")[:-2])
module = importlib.import_module(cls.__module__ + "Schema")
# # este código injeta métodos de instância numa classe
# defaultInit = getattr(cls, '__init__')
#
# def newInit(self, *args, **kwargs):
# defaultInit(self, *args, **kwargs)
# setattr(self, "get_schema", get_schema)
# setattr(self, "print_schema", print_schema)
#
# setattr(cls, "__init__", newInit)

setattr(cls, "print_schema", print_schema)

return cls


def ontology_class(cls):
Expand Down
3 changes: 2 additions & 1 deletion src/Models/CRM/v5_0_2/NodeEntities/E18_Physical_Thing.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
from neomodel import RelationshipFrom, RelationshipTo, StructuredRel

from src.GCF.decorators.OntologyClass import ontology_class
from src.Models.CRM.v5_0_2.NodeEntities.E6_Destruction import E6_Destruction
from src.Models.CRM.v5_0_2.NodeEntities.E72_Legal_Object import \
E72_Legal_Object
from src.Models.CRM.v5_0_2.NodeProperties.P156_occupies import P156_occupies
from src.Models.CRM.v5_0_2.NodeProperties.P7_took_place_at import \
P7_took_place_at
from src.Models.CRM.v5_0_2.NodeProperties.P156_occupies import P156_occupies


class P46_is_composed_of(StructuredRel):
Expand Down
2 changes: 1 addition & 1 deletion src/Models/CRM/v5_0_2/NodeEntities/E1_CRM_Entity.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from neomodel import RelationshipFrom, StringProperty, StructuredNode
from src.GCF.decorators.OntologyClass import ontology_class

from src.GCF.decorators.OntologyClass import ontology_class
from ..NodeProperties.P2_has_type import P2_has_type


Expand Down
1 change: 1 addition & 0 deletions src/Models/CRM/v5_0_2/NodeEntities/E2_Temporal_Entity.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from neomodel import One, RelationshipFrom, StructuredRel

from src.Models.CRM.v5_0_2.NodeEntities.E1_CRM_Entity import E1_CRM_Entity


Expand Down
1 change: 1 addition & 0 deletions src/Models/CRM/v5_0_2/NodeEntities/E35_Title.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from neomodel import RelationshipTo

from src.Models.CRM.v5_0_2.NodeEntities.E33_Linguistic_Object import \
E33_Linguistic_Object
from src.Models.CRM.v5_0_2.NodeEntities.E71_Man_Made_Thing import \
Expand Down
1 change: 1 addition & 0 deletions src/Models/CRM/v5_0_2/NodeEntities/E36_Visual_Item.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from neomodel import RelationshipTo, StructuredRel

from src.Models.CRM.v5_0_2.NodeEntities.E73_Information_Object import \
E73_Information_Object

Expand Down
1 change: 1 addition & 0 deletions src/Models/CRM/v5_0_2/NodeEntities/E39_Actor.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from neomodel import RelationshipFrom, StructuredRel

from src.Models.CRM.v5_0_2.NodeEntities.E77_Persistent_Item import \
E77_Persistent_Item

Expand Down
1 change: 1 addition & 0 deletions src/Models/CRM/v5_0_2/NodeEntities/E3_Condition_State.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from neomodel import One, RelationshipFrom

from src.Models.CRM.v5_0_2.NodeEntities.E2_Temporal_Entity import \
E2_Temporal_Entity

Expand Down
1 change: 1 addition & 0 deletions src/Models/CRM/v5_0_2/NodeEntities/E41_Appellation.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from neomodel import One, RelationshipFrom, StructuredRel

from src.Models.CRM.v5_0_2.NodeEntities.E90_Symbolic_Object import \
E90_Symbolic_Object

Expand Down
1 change: 1 addition & 0 deletions src/Models/CRM/v5_0_2/NodeEntities/E42_Identifier.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from neomodel import One, RelationshipFrom, StructuredRel

from src.Models.CRM.v5_0_2.NodeEntities.E41_Appellation import E41_Appellation


Expand Down
1 change: 1 addition & 0 deletions src/Models/CRM/v5_0_2/NodeEntities/E4_Period.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from neomodel import RelationshipFrom, StructuredRel

from src.Models.CRM.v5_0_2.NodeEntities.E2_Temporal_Entity import \
E2_Temporal_Entity

Expand Down
1 change: 1 addition & 0 deletions src/Models/CRM/v5_0_2/NodeEntities/E52_Time_Span.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from neomodel import DateTimeProperty, One, RelationshipFrom, StructuredRel

from src.Models.CRM.v5_0_2.NodeEntities.E1_CRM_Entity import E1_CRM_Entity


Expand Down
5 changes: 3 additions & 2 deletions src/Models/CRM/v5_0_2/NodeEntities/E53_Place.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
from neomodel import RelationshipTo
from src.Models.CRM.v5_0_2.NodeEntities.E1_CRM_Entity import E1_CRM_Entity

from src.Models.CRM.v5_0_2.NodeEntities.E18_Physical_Thing import \
E18_Physical_Thing
from src.Models.CRM.v5_0_2.NodeEntities.E1_CRM_Entity import E1_CRM_Entity
from src.Models.CRM.v5_0_2.NodeProperties.P156_occupies import P156_occupies
from src.Models.CRM.v5_0_2.NodeProperties.P7_took_place_at import \
P7_took_place_at
from src.Models.CRM.v5_0_2.NodeProperties.P156_occupies import P156_occupies


class E53_Place(E1_CRM_Entity):
Expand Down
1 change: 1 addition & 0 deletions src/Models/CRM/v5_0_2/NodeEntities/E55_Type.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from neomodel import RelationshipFrom, StructuredRel

from src.Models.CRM.v5_0_2.NodeEntities.E1_CRM_Entity import E1_CRM_Entity
from src.Models.CRM.v5_0_2.NodeEntities.E28_Conceptual_Object import \
E28_Conceptual_Object
Expand Down
1 change: 1 addition & 0 deletions src/Models/CRM/v5_0_2/NodeEntities/E70_Thing.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from neomodel import RelationshipFrom

from src.Models.CRM.v5_0_2.NodeEntities.E77_Persistent_Item import \
E77_Persistent_Item
from src.Models.CRM.v5_0_2.NodeProperties.P130_shows_features_of import \
Expand Down
1 change: 1 addition & 0 deletions src/Models/CRM/v5_0_2/NodeEntities/E71_Man_Made_Thing.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from neomodel import RelationshipTo

from src.Models.CRM.v5_0_2.NodeEntities.E70_Thing import E70_Thing
from src.Models.CRM.v5_0_2.NodeProperties.P102_has_title import P102_has_title

Expand Down
2 changes: 1 addition & 1 deletion src/Models/CRM/v5_0_2/NodeEntities/E77_Persistent_Item.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from neomodel import RelationshipFrom, StructuredRel
from src.Models.CRM.v5_0_2.NodeEntities.E1_CRM_Entity import E1_CRM_Entity

from src.Models.CRM.v5_0_2.NodeEntities.E1_CRM_Entity import E1_CRM_Entity
from ..NodeEntities.E5_Event import E5_Event


Expand Down
1 change: 1 addition & 0 deletions src/Models/CRM/v5_0_2/NodeEntities/E92_Spacetime_Volume.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from neomodel import One, RelationshipFrom, StructuredRel

from src.Models.CRM.v5_0_2.NodeEntities.E1_CRM_Entity import E1_CRM_Entity


Expand Down
1 change: 1 addition & 0 deletions src/Models/CRM/v5_0_2/NodeProperties/P2_has_type.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from neomodel import StructuredRel

from src.GCF.decorators.OntologyProperty import ontology_property


Expand Down
1 change: 1 addition & 0 deletions src/Models/DataObject/v0_0_2/Approximate.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from marshmallow import Schema, fields
from marshmallow_jsonschema import JSONSchema
from neomodel import DateTimeProperty

from src.Models.DataObject.v0_0_2.Date import Date


Expand Down
1 change: 1 addition & 0 deletions src/Models/DataObject/v0_0_2/Instant.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from marshmallow import Schema, fields
from marshmallow_jsonschema import JSONSchema
from neomodel import DateTimeProperty

from src.Models.DataObject.v0_0_2.Date import Date


Expand Down
1 change: 1 addition & 0 deletions src/Models/DataObject/v0_0_2/Interval.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from marshmallow import Schema, fields
from marshmallow_jsonschema import JSONSchema
from neomodel import DateTimeProperty

from src.Models.DataObject.v0_0_2.Date import Date


Expand Down
1 change: 1 addition & 0 deletions src/Models/DataObject/v0_0_2/PersonName.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from marshmallow import Schema, fields
from marshmallow_jsonschema import JSONSchema
from neomodel import StringProperty

from src.Models.DataObject.v0_0_2.AuthorityString import AuthorityString


Expand Down
1 change: 1 addition & 0 deletions src/Models/DataObject/v0_0_2/RegexString.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from marshmallow import Schema, fields
from marshmallow_jsonschema import JSONSchema
from neomodel import RegexProperty

from src.Models.DataObject.v0_0_2.String import String


Expand Down
10 changes: 8 additions & 2 deletions src/Models/DataObject/v0_0_2/String.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

from marshmallow import Schema, fields
from neomodel import StringProperty

from src.GCF.decorators.OntologyClass import has_json_schema
from src.Models.DataObject.v0_0_2.DataObject import DataObject


Expand All @@ -12,5 +14,9 @@ class String(DataObject):
def toJSON(self):
return json.dumps(self, default=lambda o: o.__dict__)

class StringSchema(Schema):
stringValue = fields.String(required=True)
@staticmethod
def get_schema():
class StringSchema(Schema):
stringValue = fields.String(required=True)

return StringSchema
2 changes: 1 addition & 1 deletion src/Routes/routes.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from flask import Flask, jsonify

from neomodel import config

from src.Models.DataObject.v0_0_2.String import String

config.DATABASE_URL = "bolt://neo4j:password@localhost:7687"
Expand Down
8 changes: 3 additions & 5 deletions test/Unit/test_data_object.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
import datetime
import unittest

from src.Models.DataObject.v0_0_2.String import String
from neomodel import (config)

from neomodel import (config, OUTGOING, Traversal, DeflateError,
AttemptedCardinalityViolation)
import json
from src.Models.DataObject.v0_0_2.String import String

config.DATABASE_URL = 'bolt://neo4j:password@localhost:7687'



class TestString(unittest.TestCase):
def test_create_update_string_Node(self):
date = datetime.datetime.now().strftime("%H:%M:%S")
Expand All @@ -23,3 +20,4 @@ def test_create_update_string_Node(self):
self.assertAlmostEqual(string.id, returned_string.id)
self.assertEqual(change_returned_string.stringValue, new_name)
self.assertAlmostEqual(string.id, change_returned_string.id)
print(string.print_schema())

0 comments on commit e112b25

Please sign in to comment.