73 lines
2.2 KiB
Python
73 lines
2.2 KiB
Python
import jsonapi_requests
|
|
import neofarm.orm.log as Log
|
|
from . my_meta import MyMeta
|
|
|
|
|
|
class Asset(jsonapi_requests.orm.ApiModel):
|
|
class Meta(MyMeta):
|
|
type = 'asset'
|
|
|
|
name = jsonapi_requests.orm.AttributeField('name')
|
|
timestamp = jsonapi_requests.orm.AttributeField('timestamp')
|
|
location = jsonapi_requests.orm.RelationField('location')
|
|
|
|
def get_logs_of_type(self, type):
|
|
if not issubclass(type, Log.Log):
|
|
raise ValueError("type specified is not a type of log use for example: get_logs_of_type(Log.Harvest)")
|
|
logs = type.get_list()
|
|
related = []
|
|
for log in logs:
|
|
for asset in log.assets:
|
|
if asset.id == self.id:
|
|
related.append(log)
|
|
break;
|
|
return related
|
|
|
|
def get_inventory_logs_of_type(self, type):
|
|
if not issubclass(type, Log.Log):
|
|
raise ValueError("type specified is not a type of log use for example: get_logs_of_type(Log.Harvest)")
|
|
logs = type.get_list()
|
|
related = []
|
|
for log in logs:
|
|
for quantity in log.quantities:
|
|
if quantity.inventory_asset:
|
|
if quantity.inventory_asset.id == self.id:
|
|
related.append(log)
|
|
break;
|
|
return related
|
|
|
|
class Land(Asset):
|
|
class Meta(Asset.Meta):
|
|
name = 'land'
|
|
type, path = Asset.Meta.get_type_and_path(name)
|
|
json_geometry = jsonapi_requests.orm.AttributeField('intrinsic_geometry')
|
|
|
|
class Plant(Asset):
|
|
class Meta(Asset.Meta):
|
|
name = 'plant'
|
|
type, path = Asset.Meta.get_type_and_path(name)
|
|
crops = jsonapi_requests.orm.RelationField('plant_type')
|
|
seasons = jsonapi_requests.orm.RelationField('season')
|
|
class Equipment(Asset):
|
|
class Meta(Asset.Meta):
|
|
name = 'equipment'
|
|
type, path = Asset.Meta.get_type_and_path(name)
|
|
class Material(Asset):
|
|
class Meta(Asset.Meta):
|
|
name = 'material'
|
|
type, path = Asset.Meta.get_type_and_path(name)
|
|
crop = jsonapi_requests.orm.RelationField('material_type')
|
|
class Seed(Asset):
|
|
class Meta(Asset.Meta):
|
|
name = 'seed'
|
|
type, path = Asset.Meta.get_type_and_path(name)
|
|
crop = jsonapi_requests.orm.RelationField('plant_type')
|
|
season = jsonapi_requests.orm.RelationField('season')
|
|
class Product(Asset):
|
|
class Meta(Asset.Meta):
|
|
name = 'product'
|
|
type, path = Asset.Meta.get_type_and_path(name)
|
|
# do not rename to type as that will end in infinite recursion
|
|
product_type = jsonapi_requests.orm.RelationField('product_type')
|
|
|