Пример #1
0
    def update_objects(cls, context, values, validate_filters=True, **kwargs):
        """
        Update objects that match filtering criteria from DB.

        :param context:
        :param values: multiple keys to update in matching objects
        :param validate_filters: Raises an error in case of passing an unknown
                                 filter
        :param kwargs: multiple keys defined by key=value pairs
        :return: Number of entries updated
        """
        if validate_filters:
            cls.validate_filters(**kwargs)

        # if we have standard attributes, we will need to fetch records to
        # update revision numbers
        if cls.has_standard_attributes():
            return super(NeutronDbObject,
                         cls).update_objects(context,
                                             values,
                                             validate_filters=False,
                                             **kwargs)

        with db_api.autonested_transaction(context.session):
            return obj_db_api.update_objects(context, cls.db_model,
                                             cls.modify_fields_to_db(values),
                                             **cls.modify_fields_to_db(kwargs))
Пример #2
0
    def update_objects(cls, context, values, validate_filters=True, **kwargs):
        """Update objects that match filtering criteria from DB.

        :param context:
        :param values: multiple keys to update in matching objects
        :param validate_filters: Raises an error in case of passing an unknown
                                 filter
        :param kwargs: multiple keys defined by key=value pairs
        :return: Number of entries updated
        """
        if validate_filters:
            cls.validate_filters(**kwargs)

        with cls.db_context_writer(context):
            # if we have standard attributes, we will need to fetch records to
            # update revision numbers
            if cls.has_standard_attributes():
                return super(NeutronDbObject, cls).update_objects(
                    context, values, validate_filters=False, **kwargs)
            return obj_db_api.update_objects(
                cls, context,
                cls.modify_fields_to_db(values),
                **cls.modify_fields_to_db(kwargs))