tested to work for most entities NEXT: add logs property to asset

This commit is contained in:
2024-11-01 16:52:40 +01:00
parent ae1156bd6c
commit 772acff4e8
7 changed files with 84 additions and 57 deletions

View File

@@ -1,21 +1,20 @@
import jsonapi_requests
from orm.my_meta import MyMeta
class Asset(jsonapi_requests.orm.ApiModel):
class Meta:
class Meta(MyMeta):
type = 'asset'
api = api
@classmethod
def get_type_and_path(cls, name):
return (f"{cls.type}{api_type_spatrator}{name}", f"{cls.path}{api_path_separator}{name}")
name = jsonapi_requests.orm.AttributeField('name')
timestamp = jsonapi_requests.orm.AttributeField('timestamp')
location = jsonapi_requests.orm.RelationField('location')
class Land(Asset):
class Meta(Asset.Meta):
name = 'land'
type, path = Asset.Meta.get_type_and_path(name)
geometry = jsonapi_requests.orm.AttributeField('intrinsic_geometry')
json_geometry = jsonapi_requests.orm.AttributeField('intrinsic_geometry')
class Plant(Asset):
class Meta(Asset.Meta):
name = 'plant'

View File

@@ -1,18 +1,13 @@
import jsonapi_requests
from orm.my_meta import MyMeta
class Log(jsonapi_requests.orm.ApiModel):
class Meta:
class Meta(MyMeta):
type = 'log'
@classmethod
def get_type_and_path(cls, name):
return (f"{cls.type}{api_type_spatrator}{name}", f"{cls.path}{api_path_separator}{name}")
@classmethod
def set_api(cls, api):
cls.api = api
name = jsonapi_requests.orm.AttributeField('name')
timestamp = jsonapi_requests.orm.AttributeField('timestamp')
isMovement = jsonapi_requests.orm.AttributeField('isMovement')
isMovement = jsonapi_requests.orm.AttributeField('is_movement')
assets = jsonapi_requests.orm.RelationField('asset')
location = jsonapi_requests.orm.RelationField('location')
equipment = jsonapi_requests.orm.RelationField('equipment')

10
neofarm/orm/my_meta.py Normal file
View File

@@ -0,0 +1,10 @@
api_path_separator = '/'
api_type_separator = '--'
class MyMeta:
@classmethod
def get_type_and_path(cls, name):
return (f"{cls.type}{api_type_separator}{name}", f"{cls.type}{api_path_separator}{name}")
@classmethod
def set_api(cls, api):
cls.api = api

View File

@@ -1,31 +1,39 @@
import jsonapi_requests
from orm.my_meta import MyMeta
class Quantity(jsonapi_requests.orm.ApiModel):
class Meta:
class Meta(MyMeta):
type = 'quantity'
api = api
@classmethod
def get_type_and_path(cls, name):
return (f"{cls.type}{api_type_spatrator}{name}", f"{cls.path}{api_path_separator}{name}")
measure = jsonapi_requests.orm.AttributeField('measure')
measure = jsonapi_requests.orm.AttributeField('value.decimal')
units = jsonapi_requests.orm.RelationFieldField('units')
json_value = jsonapi_requests.orm.AttributeField('value')
units = jsonapi_requests.orm.RelationField('units')
inventory_adjustment = jsonapi_requests.orm.AttributeField('inventory_adjustment')
inventory_asset = jsonapi_requests.orm.RelationFieldField('inventory_asset')
inventory_asset = jsonapi_requests.orm.RelationField('inventory_asset')
@property
def value(self):
return self.json_value['decimal']
class Standard(Quantity):
class Meta(Quantity.Meta):
name = 'standard'
type, path = Asset.Meta.get_type_and_path(name)
type, path = Quantity.Meta.get_type_and_path(name)
class Price(Quantity):
class Meta(Quantity.Meta):
name = 'price'
type, path = Asset.Meta.get_type_and_path(name)
unit_price = jsonapi_requests.orm.AttributeField('unit_price.decimal')
total_price = jsonapi_requests.orm.AttributeField('total_price.decimal')
type, path = Quantity.Meta.get_type_and_path(name)
json_unit_price = jsonapi_requests.orm.AttributeField('unit_price.decimal')
json_total_price = jsonapi_requests.orm.AttributeField('total_price.decimal')
@property
def unit_price(self):
return self.json_unit_price['decimal']
@property
def total_price(self):
return self.json_total_price['decimal']
class Material(Quantity):
class Meta(Quantity.Meta):
name = 'material'
type, path = Asset.Meta.get_type_and_path(name)
unit_price = jsonapi_requests.orm.RelationField('material_type')
type, path = Quantity.Meta.get_type_and_path(name)

View File

@@ -1,38 +1,37 @@
import jsonapi_requests
from orm.my_meta import MyMeta
class Taxonomy(jsonapi_requests.orm.ApiModel):
class Meta:
class Meta(MyMeta):
type = 'taxonomy_term'
@classmethod
def get_type_and_path(cls, name):
return (f"{cls.type}{api_type_spatrator}{name}", f"{cls.path}{api_path_separator}{name}")
@classmethod
def set_api(cls, api):
cls.api = api
name = jsonapi_requests.orm.AttributeField('name')
class Crop(Taxonomy):
class Meta(Taxonomy.Meta):
name = 'crop_family'
type, path = Log.Meta.get_type_and_path(name)
type, path = Taxonomy.Meta.get_type_and_path(name)
class LogCategory(Taxonomy):
class Meta(Taxonomy.Meta):
name = 'log_category'
type, path = Log.Meta.get_type_and_path(name)
type, path = Taxonomy.Meta.get_type_and_path(name)
class MaterialType(Taxonomy):
class Meta(Taxonomy.Meta):
name = 'material_type'
type, path = Log.Meta.get_type_and_path(name)
type, path = Taxonomy.Meta.get_type_and_path(name)
class PlantType(Taxonomy):
class Meta(Taxonomy.Meta):
name = 'plant_type'
type, path = Log.Meta.get_type_and_path(name)
type, path = Taxonomy.Meta.get_type_and_path(name)
class ProductType(Taxonomy):
class Meta(Taxonomy.Meta):
name = 'product_type'
type, path = Log.Meta.get_type_and_path(name)
type, path = Taxonomy.Meta.get_type_and_path(name)
class Season(Taxonomy):
class Meta(Taxonomy.Meta):
name = 'season'
type, path = Log.Meta.get_type_and_path(name)
type, path = Taxonomy.Meta.get_type_and_path(name)
class Unit(Taxonomy):
class Meta(Taxonomy.Meta):
name = 'unit'
type, path = Taxonomy.Meta.get_type_and_path(name)