def validate(cls, user): param_errors = [] params = dict( title=request.json.get("title"), description=request.json.get("description"), scheduled_from=datetime_from_json(request.json.get("scheduled_from")), creator_id=user.id, location=request.json.get("location"), city_id=request.json.get("city_id"), ) missing_params = [k for k, v in params.iteritems() if v in ["", None]] param_errors = ['Field "%s" not specified.' % k for k in missing_params] optional_params = dict(scheduled_until=datetime_from_json(request.json.get("scheduled_until"))) params.update(optional_params) # city must exist if params.get("city_id") and not City.query.filter_by(id=params["city_id"]).first(): param_errors.append('Invalid "city_id" value.') # can't create activities less than one hour in advance datetime_max = datetime.now() + timedelta(hours=1) if params.get("scheduled_from") and params["scheduled_from"] < datetime_max: param_errors.append('Invalid "scheduled_from" value.') if params.get("scheduled_until") and params["scheduled_until"] < datetime_max: param_errors.append('Invalid "scheduled_until" value.') if param_errors: # in case of errors return (False, build_error_dict(param_errors)) return (True, params)
def _patch(cls, activity): params = dict( title=request.json.get("title"), description=request.json.get("description"), scheduled_from=datetime_from_json(request.json.get("scheduled_from")), location_id=request.json.get("location_id"), scheduled_until=datetime_from_json(request.json.get("scheduled_until")), ) for (key, val) in params.iteritems(): curval = getattr(activity, key, None) if curval != val: setattr(activity, key, val) activity.save(commit=True) return cls._get(activity)