def test_happy(self, mock_request):
        from flamenco import blender_cloud_addon as bca

        mock_request.headers = {'Blender-Cloud-Addon': '1.12.3'}
        self.assertEqual((1, 12, 3), bca.requested_by_version())

        mock_request.headers = {'Blender-Cloud-Addon': '1.12'}
        self.assertEqual((1, 12, 0), bca.requested_by_version())
Пример #2
0
    def test_happy(self, mock_request):
        from flamenco import blender_cloud_addon as bca

        mock_request.headers = {'Blender-Cloud-Addon': '1.12.3'}
        self.assertEqual((1, 12, 3), bca.requested_by_version())

        mock_request.headers = {'Blender-Cloud-Addon': '1.12'}
        self.assertEqual((1, 12, 0), bca.requested_by_version())
    def test_wrong_digit_count(self, mock_request):
        from flamenco import blender_cloud_addon as bca

        mock_request.headers = {'Blender-Cloud-Addon': '1.12.3.4'}
        with self.assertRaises(wz_exceptions.BadRequest):
            bca.requested_by_version()

        mock_request.headers = {'Blender-Cloud-Addon': '1'}
        with self.assertRaises(wz_exceptions.BadRequest):
            bca.requested_by_version()
Пример #4
0
    def test_wrong_digit_count(self, mock_request):
        from flamenco import blender_cloud_addon as bca

        mock_request.headers = {'Blender-Cloud-Addon': '1.12.3.4'}
        with self.assertRaises(wz_exceptions.BadRequest):
            bca.requested_by_version()

        mock_request.headers = {'Blender-Cloud-Addon': '1'}
        with self.assertRaises(wz_exceptions.BadRequest):
            bca.requested_by_version()
Пример #5
0
def rewrite_manager_settings(doc: dict):
    """Update the Manager's variables to be compatible with the Blender Cloud add-on.

    The Blender Cloud Add-on only implemented versioning of Manager settings in
    1.13, so if an older version requests the Manager just transform it to a version
    the add-on understands.
    """

    # Make sure the version is always explicit.
    settings_version = doc.setdefault('settings_version', 1)

    if settings_version < 2:
        # The settings are old enough to be handled by an older Blender Cloud add-on.
        return

    addon_version = blender_cloud_addon.requested_by_version()
    if not addon_version or addon_version >= (1, 12, 2):
        return

    # Downgrade settings for this old add-on version.
    # Since it's the Blender Cloud add-on, we're targeting the 'users' audience.
    audiences = {'', 'all', 'users'}

    # variable name -> platform -> value
    oneway = collections.defaultdict(lambda: collections.defaultdict(dict))
    twoway = collections.defaultdict(lambda: collections.defaultdict(dict))
    target_maps = {
        'oneway': oneway,
        'twoway': twoway,
    }

    for name, variable in doc.get('variables', {}).items():
        direction = variable.get('direction', 'oneway')
        target_map = target_maps.get(direction, oneway)

        for value in variable['values']:
            if value['audience'] not in audiences:
                continue

            if value.get('platform'):
                target_map[name][value['platform']] = value['value']

            for platform in value.get('platforms', []):
                target_map[name][platform] = value['value']

    doc['variables'] = oneway
    doc['path_replacement'] = twoway
    doc['settings_version'] = 1
    def test_not_addon(self, mock_request):
        from flamenco import blender_cloud_addon as bca

        mock_request.headers = {}
        self.assertIsNone(bca.requested_by_version())
    def test_no_dot(self, mock_request):
        from flamenco import blender_cloud_addon as bca

        mock_request.headers = {'Blender-Cloud-Addon': 'je moeder'}
        with self.assertRaises(wz_exceptions.BadRequest):
            bca.requested_by_version()
    def test_not_numerical(self, mock_request):
        from flamenco import blender_cloud_addon as bca

        mock_request.headers = {'Blender-Cloud-Addon': '1.12.beta2'}
        with self.assertRaises(wz_exceptions.BadRequest):
            bca.requested_by_version()
Пример #9
0
    def test_not_addon(self, mock_request):
        from flamenco import blender_cloud_addon as bca

        mock_request.headers = {}
        self.assertIsNone(bca.requested_by_version())
Пример #10
0
    def test_no_dot(self, mock_request):
        from flamenco import blender_cloud_addon as bca

        mock_request.headers = {'Blender-Cloud-Addon': 'je moeder'}
        with self.assertRaises(wz_exceptions.BadRequest):
            bca.requested_by_version()
Пример #11
0
    def test_not_numerical(self, mock_request):
        from flamenco import blender_cloud_addon as bca

        mock_request.headers = {'Blender-Cloud-Addon': '1.12.beta2'}
        with self.assertRaises(wz_exceptions.BadRequest):
            bca.requested_by_version()