import os import yaml from turg.logger import getLogger logger = getLogger(__name__) def str2bool(val): if isinstance(val, str): return val.lower() in {'yes', 'true'} return val def get_from_env_or_config(config, param, default=None, param_type=None): if default and not param_type: param_type = type(default) elif not default and not param_type: param_type = str return param_type(os.environ.get(param.upper(), config.get(param, default))) class Config(object): conf_file = None mongodb_uri = None max_x = None max_y = None
import attr from collections import defaultdict from datetime import datetime from turg.config import Config from turg.logger import getLogger config = Config() logger = getLogger() @attr.s class Voxel(object): def __attrs_post_init__(self): if self.updated is None: self.updated = datetime.utcnow() x = attr.ib(convert=int) y = attr.ib(convert=int) z = attr.ib(convert=int) owner = attr.ib() name = attr.ib(default=None) updated = attr.ib(default=None) async def get_voxels(x, y, range, db): results = db.data.find({'x': {'$gt': x - range, '$lt': x + range}, 'y': {'$gt': y - range, '$lt': y + range}}, projection={'_id': False, 'updated': False}) data = [] async for result in results: