def createRequest(request_type, request_obj=None, timestamp=None, as_mongo_obj=False, **kwargs): """ request_type: required, name (string) of request type, dbref to it's db entry, or a Type object request_obj: optional, stored as is, could be a dict of collection parameters, or whatever timestamp: datetime.datetime.now() if not provided priority: optional, integer priority level anything else (priority, sample_id) can either be embedded in the request_object or passed in as keyword args to get saved at the top level. """ if isinstance(request_type, unicode) or isinstance(request_type, str): request_type = type_from_name(request_type, as_mongo_obj=True) print('rt:[{0}]'.format(request_type)) # elif not isinstance(request_type, Request): # raise ValueError('wrong type {0}'.format(request_type.__class__)) kwargs['request_type'] = request_type kwargs['timestamp'] = timestamp kwargs['request_obj'] = request_obj r = Request(**kwargs) r.save() if as_mongo_obj: return r return r.to_mongo()