示例#1
0
    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)
示例#2
0
    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)