def handle_put(self, request, user, *args, **kwargs):
        """Treat PUT requests to edit Filters.

        URL: filter/<id_filter>/
        """

        try:

            self.log.info('Alter Filter')
            # Commons Validations

            # User permission
            if not has_perm(user, AdminPermission.ENVIRONMENT_MANAGEMENT,
                            AdminPermission.WRITE_OPERATION):
                self.log.error(
                    u'User does not have permission to perform the operation.')
                return self.not_authorized()

            # Load XML data
            xml_map, attrs_map = loads(request.raw_post_data)

            # XML data format
            networkapi_map = xml_map.get('networkapi')
            if networkapi_map is None:
                return self.response_error(
                    3,
                    u'There is no value to the networkapi tag  of XML request.'
                )

            filter_map = networkapi_map.get('filter')
            if filter_map is None:
                return self.response_error(
                    3, u'There is no value to the filter tag  of XML request.')

            if not is_valid_int_greater_zero_param(kwargs['id_filter']):
                self.log.error(u'Parameter id_filter is invalid. Value: %s.',
                               kwargs['id_filter'])
                raise InvalidValueError(None, 'id_filter', kwargs['id_filter'])
            else:
                # Check existence
                fil = Filter().get_by_pk(kwargs['id_filter'])

            fil.validate_filter(filter_map)

            try:
                # Save filter
                fil.save()
            except Exception, e:
                self.log.error(u'Failed to edit the filter.')
                raise e

            return self.response(dumps_networkapi({}))
    def handle_post(self, request, user, *args, **kwargs):
        """Treat POST requests to add new Filter.

        URL: filter/
        """

        try:

            self.log.info('Add Filter')
            # Commons Validations

            # User permission
            if not has_perm(user, AdminPermission.ENVIRONMENT_MANAGEMENT,
                            AdminPermission.WRITE_OPERATION):
                self.log.error(
                    u'User does not have permission to perform the operation.')
                return self.not_authorized()

            # Load XML data
            xml_map, attrs_map = loads(request.raw_post_data)

            # XML data format
            networkapi_map = xml_map.get('networkapi')
            if networkapi_map is None:
                return self.response_error(
                    3,
                    u'There is no value to the networkapi tag  of XML request.'
                )

            filter_map = networkapi_map.get('filter')
            if filter_map is None:
                return self.response_error(
                    3, u'There is no value to the filter tag  of XML request.')

            # New Filter
            filter_ = Filter()

            # Validates
            filter_.validate_filter(filter_map)

            try:
                # Save filter
                filter_.save()
            except Exception, e:
                self.log.error(u'Failed to save the filter.')
                raise FilterError(e, u'Failed to save the filter')

            filter_map = dict()
            filter_map['id'] = filter_.id

            return self.response(dumps_networkapi({'filter': filter_map}))
    def handle_put(self, request, user, *args, **kwargs):
        """Treat PUT requests to edit Filters.

        URL: filter/<id_filter>/
        """

        try:

            self.log.info('Alter Filter')
            # Commons Validations

            # User permission
            if not has_perm(user, AdminPermission.ENVIRONMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION):
                self.log.error(
                    u'User does not have permission to perform the operation.')
                return self.not_authorized()

            # Load XML data
            xml_map, attrs_map = loads(request.raw_post_data)

            # XML data format
            networkapi_map = xml_map.get('networkapi')
            if networkapi_map is None:
                return self.response_error(3, u'There is no value to the networkapi tag  of XML request.')

            filter_map = networkapi_map.get('filter')
            if filter_map is None:
                return self.response_error(3, u'There is no value to the filter tag  of XML request.')

            if not is_valid_int_greater_zero_param(kwargs['id_filter']):
                self.log.error(
                    u'Parameter id_filter is invalid. Value: %s.', kwargs['id_filter'])
                raise InvalidValueError(None, 'id_filter', kwargs['id_filter'])
            else:
                # Check existence
                fil = Filter().get_by_pk(kwargs['id_filter'])

            fil.validate_filter(filter_map)

            try:
                # Save filter
                fil.save()
            except Exception, e:
                self.log.error(u'Failed to edit the filter.')
                raise e

            return self.response(dumps_networkapi({}))
    def handle_post(self, request, user, *args, **kwargs):
        """Treat POST requests to add new Filter.

        URL: filter/
        """

        try:

            self.log.info("Add Filter")
            # Commons Validations

            # User permission
            if not has_perm(user, AdminPermission.ENVIRONMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION):
                self.log.error(
                    u'User does not have permission to perform the operation.')
                return self.not_authorized()

            # Load XML data
            xml_map, attrs_map = loads(request.raw_post_data)

            # XML data format
            networkapi_map = xml_map.get('networkapi')
            if networkapi_map is None:
                return self.response_error(3, u'There is no value to the networkapi tag  of XML request.')

            filter_map = networkapi_map.get('filter')
            if filter_map is None:
                return self.response_error(3, u'There is no value to the filter tag  of XML request.')

            # New Filter
            filter_ = Filter()

            # Validates
            filter_.validate_filter(filter_map)

            try:
                # Save filter
                filter_.save()
            except Exception, e:
                self.log.error(u'Failed to save the filter.')
                raise FilterError(e, u'Failed to save the filter')

            filter_map = dict()
            filter_map['id'] = filter_.id

            return self.response(dumps_networkapi({'filter': filter_map}))