Source code for pydent.models.code

"""Models related to protocol code, which is associated with operation
types."""
from pydent.base import ModelBase
from pydent.marshaller import add_schema
from pydent.relationships import HasManyGeneric
from pydent.relationships import HasOne
from pydent.relationships import HasOneFromMany
from pydent.relationships import One


[docs]@add_schema class Code(ModelBase): """A Code model.""" fields = dict( user=HasOne("User"), operation_type=One("OperationType", callback="get_parent", callback_args=None), library=One("Library", callback="get_parent", callback_args=None), ) def get_parent(self, parent_class, *args): if parent_class != self.parent_class: return None return self.session.model_interface(self.parent_class).find(self.parent_id) def update(self): # since they may not always be tied to specific parent # controllers self.session.utils.update_code(self)
[docs]@add_schema class Library(ModelBase): """A Library model.""" fields = dict( codes=HasManyGeneric("Code"), source=HasOneFromMany( "Code", ref="parent_id", additional_args={"parent_class": "Library", "name": "source"}, ), )
[docs] def code(self, accessor): """Reminant from previous API.""" # raise DeprecationWarning("This method is depreciated. Use '.source' directly") if accessor == "source": return self.source return None