예제 #1
0
    def _turn(self, name, value):
        """
        Turns a feature off.

        :param name: name of the feature.
        :param value: Value to turn name to.
        :raises: UnknownFeatureError
        """
        if not self.exists(name):
            raise errors.UnknownFeatureError('Unknown feature: %s' % name)
        self.server.set(name, {'active': bool(value)})
예제 #2
0
파일: localmemory.py 프로젝트: jean/flagon
    def _turn(self, name, value):
        """
        Turns a feature off.

        :param name: name of the feature.
        :param value: Value to turn name to.
        :raises: UnknownFeatureError
        """
        # TODO: Copy paste --- :-(
        if not self.exists(name):
            raise errors.UnknownFeatureError('Unknown feature: %s' % name)
        self._store[name] = bool(value)
예제 #3
0
    def _turn(self, name, value):
        """
        Turns a feature on.

        :param name: name of the feature.
        :param value: 0 or 1
        :raises: UnknownFeatureError
        """
        if not self.exists(name):
            raise errors.UnknownFeatureError('Unknown feature: %s' % name)
        self._session.merge(Feature(name=name, active=value))
        self._session.commit()
예제 #4
0
    def _turn(self, name, value):
        """
        Turns a feature on or off

        :param name: name of the feature.
        :raises: UnknownFeatureError
        """
        if not self.exists(name):
            raise errors.UnknownFeatureError('Unknown feature: %s' % name)
        data = self._read_file()
        data[name]['active'] = bool(value)
        self._write_file(data)
예제 #5
0
    def is_active(self, name):
        """
        Checks if a feature is on.

        :param name: name of the feature.
        :rtype: bool
        :raises: UnknownFeatureError
        """
        if not self.exists(name):
            raise errors.UnknownFeatureError('Unknown feature: %s' % name)
        feature = self._session.query(Feature).filter_by(name=name).first()
        return bool(feature.active)
예제 #6
0
파일: localmemory.py 프로젝트: jean/flagon
    def is_active(self, name):
        """
        Checks if a feature is on.

        :param name: name of the feature.
        :rtype: bool
        :raises: UnknownFeatureError
        """
        if not self.exists(name):
            raise errors.UnknownFeatureError('Unknown feature: %s' % name)
        if self._store[name]['active']:
            return True
        return False
예제 #7
0
    def _turn(self, name, value):
        """
        Turns a feature to value.

        :param name: name of the feature.
        :param value: Value to turn name to ("true"/"false").
        :raises: UnknownFeatureError
        """
        name = name.upper()
        if not self.exists(name):
            raise errors.UnknownFeatureError('Unknown feature: %s' % name)
        self._store[name] = value
        self._write_file()
예제 #8
0
파일: __init__.py 프로젝트: themurph/flagon
    def is_active(self, name):
        """
        Checks if a feature is on.

        :param name: name of the feature.
        :rtype: bool
        :raises: UnknownFeatureError
        """
        try:
            feature = FlagonFeature.objects.get(name=name)
            return feature.active
        except FlagonFeature.DoesNotExist:
            raise errors.UnknownFeatureError('Unknown feature: %s' % name)
예제 #9
0
    def _turn(self, name, key, value):
        """
        Turns a feature off.

        :param name: name of the feature.
        :param value: Value to turn name to.
        :raises: UnknownFeatureError
        """
        # TODO: Copy paste --- :-(
        if not self._server.hexists(name, key):
            raise errors.UnknownFeatureError('Unknown feature: %s %s' %
                                             (name, key))
        self._server.hset(name, key, value)
예제 #10
0
    def is_active(self, name, key):
        """
        Checks if a feature is on.

        :param name: name of the feature.
        :rtype: bool
        :raises: UnknownFeatureError
        """
        if not self._server.hexists(name, key):
            raise errors.UnknownFeatureError('Unknown feature: %s' % name)
        if self._server.hget(name, key) == 'True':
            return True
        return False
예제 #11
0
파일: __init__.py 프로젝트: themurph/flagon
    def _turn(self, name, value):
        """
        Turns a feature on or off

        :param name: name of the feature.
        :param value: Value to turn name to.
        :raises: UnknownFeatureError
        """
        try:
            feature = FlagonFeature.objects.get(name=name)
            feature.active = bool(value)
            feature.save()
        except FlagonFeature.DoesNotExist:
            raise errors.UnknownFeatureError('Unknown feature: %s' % name)
예제 #12
0
    def _turn(self, name, value):
        """
        Turns a feature off.

        :param name: name of the feature.
        :param value: Value to turn name to.
        :raises: UnknownFeatureError
        """
        ft = FeatureToggle.get_by_id(name)
        if ft is None:
            raise errors.UnknownFeatureError('Unknown feature: %s' % name)

        ft.active = bool(value)
        ft.put()
예제 #13
0
    def is_active(self, name):
        """
        Checks if a feature is on.

        :param name: name of the feature.
        :rtype: bool
        :raises: UnknownFeatureError
        """

        ft = FeatureToggle.get_by_id(name)
        if ft is None:
            raise errors.UnknownFeatureError('Unknown feature: %s' % name)
        else:
            return ft.enabled
예제 #14
0
파일: db_mongo.py 프로젝트: jean/flagon
    def _turn(self, name, value):
        """
        Turns a feature off.

        :param name: name of the feature.
        :param value: Value to turn name to.
        :raises: UnknownFeatureError
        """
        if not self.exists(name):
            raise errors.UnknownFeatureError('Unknown feature: %s' % name)
        instance = self._collection.find_one({'name': name})
        self._collection.update({'_id': instance['_id']},
                                {'$set': {
                                    'active': bool(value)
                                }})
예제 #15
0
    def __call__(self, name, default=None):
        """
        What acts as a decorator.

        :param name: the name of the feature.
        :type name: str
        :param default: the default callable to fall back to.
        :type default: callable or None
        :rtype: callable
        """
        if not self.backend.exists(name):
            self.logger.error('An unknown feature was requested: %s' % name)
            raise errors.UnknownFeatureError('Unknown feature: %s' % name)

        def deco(func):
            @wraps(func)
            def wrapper(*args, **kwargs):
                if self.backend.is_active(name):
                    self.logger.debug('%s func=%s:%s(*%s, **%s)' %
                                      (name, inspect.getabsfile(func),
                                       func.__name__, args, kwargs))
                    return func(*args, **kwargs)
                if default:
                    self.logger.warn('Disabled featured %s was requested.'
                                     ' Using default.' % name)
                    if logging.getLevelName(self.logger.level) == 'DEBUG':
                        self.logger.debug('%s default=%s:%s(*%s, **%s)' %
                                          (name, inspect.getabsfile(default),
                                           default.__name__, args, kwargs))
                    return default(*args, **kwargs)
                else:
                    self.logger.warn('Disabled featured %s was requested' %
                                     (name))
                raise NameError("name '%s' is not enabled" % name)

            return wrapper

        return deco