Files
farmos.py-wagner/neofarm/orm/asset.py

60 lines
1.8 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
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')