Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

88orm

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

88orm - npm Package Compare versions

Comparing version
0.1.1
to
0.1.5
+17
orm88/related_descriptors.py
def create_reverse_many_to_one(model, payload):
from .connector import ORM88
class RelatedManyToOneDescriptors(ORM88):
def __init__(self, *args, **kwargs):
kwargs.update({
'model': model
})
super(RelatedManyToOneDescriptors, self).__init__(*args, **kwargs)
self._payload = payload
def all(self):
if self._result_cache:
return self
return super(RelatedManyToOneDescriptors, self).all()
return RelatedManyToOneDescriptors
+1
-1
Metadata-Version: 2.1
Name: 88orm
Version: 0.1.1
Version: 0.1.5
Summary: ORM Service Connector

@@ -5,0 +5,0 @@ Home-page: http://pypi.python.org/pypi/88orm/

@@ -10,2 +10,3 @@ README.md

orm88/connector.py
orm88/models.py
orm88/models.py
orm88/related_descriptors.py

@@ -88,3 +88,3 @@ # -*- coding: utf-8 -*-

if data is None:
self.__bind()
self._bind()
data = self._result_cache.get('result')

@@ -96,3 +96,3 @@ return iter(data)

if not count and self.__last_query:
self.__bind()
self._bind()
count = self._result_cache.get("count", 0)

@@ -118,3 +118,3 @@ return count

return clone
_self = self.__bind()
_self = self._bind()
if _self == self:

@@ -242,3 +242,3 @@ result_cache = self._result_cache.get('result')

if clone.__is_return_instance:
return clone.__bind()
return clone._bind()
return clone.fetch()

@@ -258,4 +258,4 @@ return clone

clone = self.__class__(
model_name,
self._fields.copy(),
model=model_name,
fields=self._fields.copy(),
exclude_fields=exclude_fields

@@ -275,3 +275,3 @@ )

def __bind(self, model=None, data=None, with_relation=False):
def _bind(self, model=None, data=None):
if data is None:

@@ -316,6 +316,2 @@ data = self.fetch()

def __bind_with_relation(self, relation_data):
data = self.fetch_with_relation(relation_data)
return self.__bind(data=data, with_relation=True)
# for custom method

@@ -493,3 +489,3 @@ def call_manager_method(self, name, *args, **kwargs):

for index, orm_service in enumerate(payloads):
result.append(orm_service._ORM88__bind(data=response[index]))
result.append(orm_service._bind(data=response[index]))
return result

@@ -496,0 +492,0 @@

@@ -8,2 +8,4 @@ import json

from .related_descriptors import create_reverse_many_to_one
# NOTE: All models info will be stored here.

@@ -49,3 +51,9 @@ # contains fields and related_names,

def __repr__(self):
key = self._attrs.get('id') or self._attrs.get(next(iter(self._attrs)))
key = self._attrs.get(
'__str__',
(self._attrs.get('id') or
self._attrs.get(
next(iter(self._attrs))
))
)
model_name = self.__model

@@ -59,6 +67,13 @@ if model_name.islower():

super(VirtualModel, self).__setattr__(key, value)
if key in self._fields:
if key in self._fields or key in self._related_names:
if isinstance(value, dict):
info = self._fields.get(key, self._related_names.get(key))
related_model = info.get('related_model')
model = f"{related_model.get('app_label')}.{related_model.get('name')}"
value = self.__class__(model, self._payload, value=value)
super(VirtualModel, self).__setattr__(key, value)
self._attrs.update({
key: value
})
except Exception:

@@ -81,11 +96,26 @@ pass

for key, value in self._fields.items():
if not hasattr(self, key):
type_field = value.get('type')
if type_field in ['ForeignKey', 'OneToOneField']:
self._set_attr_single_instance(key, value)
elif type_field == 'ManyToManyField':
related_model = value.get('related_model')
model = f"{related_model.get('app_label')}.{related_model.get('name')}"
type_field = value.get('type')
if type_field in ['ForeignKey', 'OneToOneField']:
self._set_attr_single_instance(key, value)
elif type_field == 'ManyToManyField':
related_model = value.get('related_model')
model = f"{related_model.get('app_label')}.{related_model.get('name')}"
if hasattr(self, key):
_value = getattr(self, key)
if isinstance(_value, list):
attr_value = create_reverse_many_to_one(model, {})()
attr_value._bind(data=_value)
else:
attr_value = ORM88(model)
else:
attr_value = ORM88(model)
setattr(self, key, attr_value)
attr_value._payload.update({
'filter': {
'args': [],
'kwargs': {
related_model.get('related_query_name'): self.id
}
}
})
setattr(self, key, attr_value)

@@ -105,3 +135,3 @@ for key, value in self._related_names.items():

def get_related(self, name):
def _get_related(self, name):
from .connector import ORM88

@@ -114,9 +144,10 @@

if field.get('type') in ['ForeignKey', 'OneToOneField']:
return attr.get(id=self._attrs.get(f"{name}_id"))
attr = attr.get(id=self._attrs.get(f"{name}_id"))
setattr(self, name, attr)
return attr
elif field.get('type') == 'ManyToManyField':
key = field.get('related_model').get('related_query_name')
return attr.filter(**{key: self.id})
return attr
return attr
def reverse_related(self, related_name):
def _reverse_related(self, related_name):
try:

@@ -135,2 +166,7 @@ orm = getattr(self, related_name) # type: ORM88

def rel(self, name):
if name in self._fields:
return self._get_related(name)
return self._reverse_related(name)
def refresh_from_db(self):

@@ -160,4 +196,9 @@ from .connector import ORM88

payload = self._payload.copy()
model_fields = {}
for field in self._fields:
model_fields.update({
field: self._attrs.get(field)
})
payload.get("payload").update({
"save": self._attrs
"save": model_fields
})

@@ -164,0 +205,0 @@ return instance._save(payload)

Metadata-Version: 2.1
Name: 88orm
Version: 0.1.1
Version: 0.1.5
Summary: ORM Service Connector

@@ -5,0 +5,0 @@ Home-page: http://pypi.python.org/pypi/88orm/

@@ -8,3 +8,3 @@ import setuptools

name="88orm",
version="0.1.1",
version="0.1.5",
author="Rimba Prayoga",

@@ -11,0 +11,0 @@ author_email="rimba47prayoga@gmail.com",