示例#1
0
    def test_should_find_inconsistent_derived_image_metadatas(self):

        for i in range(1, 15):
            original_image_metadata = domain.OriginalImageMetadata(
                'MYID%s' % i, domain.STATUS_INCONSISTENT, (800, 600),
                domain.IMAGE_FORMAT_JPEG)
            self._itemRepository.add(original_image_metadata)

            item = domain.DerivedImageMetadata(domain.STATUS_INCONSISTENT,
                                               (100, 100),
                                               domain.IMAGE_FORMAT_JPEG,
                                               original_image_metadata)
            self._itemRepository.add(item)

        for i in range(16, 20):
            original_image_metadata = domain.OriginalImageMetadata(
                'MYID%s' % i, domain.STATUS_OK, (900, 400),
                domain.IMAGE_FORMAT_JPEG)
            self._itemRepository.add(original_image_metadata)

            item = domain.DerivedImageMetadata(domain.STATUS_OK, (100, 100),
                                               domain.IMAGE_FORMAT_JPEG,
                                               original_image_metadata)
            self._itemRepository.add(item)

        items = self._itemRepository.find_inconsistent_derived_image_metadatas(
            10)
        assert len(items) == 10
        for i in items:
            assert i.id in ['MYID%s-100x100-JPEG' % n for n in range(1, 15)]
            assert i.status == domain.STATUS_INCONSISTENT
            assert i.width == 100
            assert i.height == 100
            assert i.format == domain.IMAGE_FORMAT_JPEG
示例#2
0
    def test_should_find_derived_image_metadata_by_original_image_metadata_id_size_and_format(
            self):
        original_image_metadata = domain.OriginalImageMetadata(
            'MYID12435', domain.STATUS_OK, (800, 600),
            domain.IMAGE_FORMAT_JPEG)
        self._itemRepository.add(original_image_metadata)

        item = domain.DerivedImageMetadata(domain.STATUS_OK, (100, 100),
                                           domain.IMAGE_FORMAT_JPEG,
                                           original_image_metadata)
        self._itemRepository.add(item)
        found_item = self._itemRepository.find_derived_image_metadata_by_original_image_metadata_id_size_and_format(
            'MYID12435', (100, 100), domain.IMAGE_FORMAT_JPEG)

        assert found_item is not None
        assert found_item.status == domain.STATUS_OK
        assert found_item.width == 100
        assert found_item.height == 100
        assert found_item.format == domain.IMAGE_FORMAT_JPEG
        assert found_item.original_image_metadata.id == 'MYID12435'
        assert found_item.original_image_metadata.status == domain.STATUS_OK
        assert found_item.original_image_metadata.width == 800
        assert found_item.original_image_metadata.height == 600
        assert found_item.original_image_metadata.format == domain.IMAGE_FORMAT_JPEG
        _datetimes_should_be_equal(item.last_status_change_date,
                                   found_item.last_status_change_date)
 def test_format_should_be_mandatoy_at_creation_time(self):
     try:
         domain.DerivedImageMetadata(domain.STATUS_OK, (800, 600), None,
                                     self.original_image_metadata)
     except Exception:
         pass
     else:
         self.fail()
 def test_original_image_metadata_should_be_mandatoy_at_creation_time(self):
     try:
         domain.DerivedImageMetadata(domain.STATUS_OK, (800, 600),
                                     domain.IMAGE_FORMAT_JPEG, None)
     except Exception:
         pass
     else:
         self.fail()
 def test_status_should_be_mandatory_at_creation_time(self):
     try:
         domain.DerivedImageMetadata(None, (800, 600),
                                     domain.IMAGE_FORMAT_JPEG,
                                     self.original_image_metadata)
     except Exception:
         pass
     else:
         self.fail()
 def test_setting_status_should_update_last_status_change_date(self):
     item = domain.DerivedImageMetadata(domain.STATUS_INCONSISTENT,
                                        (100, 100),
                                        domain.IMAGE_FORMAT_JPEG,
                                        self.original_image_metadata)
     # f**k date by breaking encapsulation
     item._last_status_change_date = datetime.utcnow() - timedelta(1)
     item.status = domain.STATUS_OK
     assertionutils.last_status_date_should_be_now(item)
示例#7
0
    def test_should_not_save_two_derived_image_metadatas_with_same_id(self):
        original_image_metadata = domain.OriginalImageMetadata(
            'MYID12435', domain.STATUS_OK, (800, 600),
            domain.IMAGE_FORMAT_JPEG)
        self._itemRepository.add(original_image_metadata)
        item = domain.DerivedImageMetadata(domain.STATUS_OK, (100, 100),
                                           domain.IMAGE_FORMAT_JPEG,
                                           original_image_metadata)
        self._itemRepository.add(item)

        try:
            item2 = domain.DerivedImageMetadata(domain.STATUS_OK, (100, 100),
                                                domain.IMAGE_FORMAT_JPEG,
                                                original_image_metadata)
            self._itemRepository.add(item2)
        except domain.DuplicateEntryException as ex:
            assert 'MYID12435-100x100-JPEG' == ex.duplicate_id
        except Exception as e:
            print e
        else:
            self.fail()
示例#8
0
    def test_should_not_find_derived_image_metadata_because_of_format(self):
        original_image_metadata = domain.OriginalImageMetadata(
            'MYID12435', domain.STATUS_OK, (800, 600),
            domain.IMAGE_FORMAT_JPEG)
        self._itemRepository.add(original_image_metadata)

        item = domain.DerivedImageMetadata(domain.STATUS_OK, (100, 100),
                                           domain.IMAGE_FORMAT_JPEG,
                                           original_image_metadata)
        self._itemRepository.add(item)
        found_item = self._itemRepository.find_derived_image_metadata_by_original_image_metadata_id_size_and_format(
            'MYID12435', (100, 100), 'JPEG2')
        assert found_item is None
    def prepare_transformation(self, transformationRequest):
        logging.debug("prepare transformation: %s" % (transformationRequest, ))
        original_image_metadata = self._image_metadata_repository.find_original_image_metadata_by_id(
            transformationRequest.image_id)
        self._required_original_image_metadata(transformationRequest.image_id,
                                               original_image_metadata)

        self._wait_for_original_image_metadata(transformationRequest.image_id)
        derived_image_metadata = domain.DerivedImageMetadata(
            domain.STATUS_INCONSISTENT, transformationRequest.size,
            transformationRequest.target_format, original_image_metadata)

        cached_filename = self._path_generator.derived_path(
            derived_image_metadata).absolute()
        relative_cached_filename = self._path_generator.derived_path(
            derived_image_metadata).relative()

        logger.debug("Checks cache for existing image")
        if os.path.exists(cached_filename):
            logger.debug("Already exists in cache: %s " %
                         (relative_cached_filename, ))

            def expunge_callback(session):
                session.expunge_all()

            self._session_template.do_with_session(expunge_callback)
            return relative_cached_filename

        logger.debug("Add repo metadata for derived image")
        try:
            self._image_metadata_repository.add(derived_image_metadata)
        except domain.DuplicateEntryException:

            def find():
                return self._image_metadata_repository.find_derived_image_metadata_by_original_image_metadata_id_size_and_format(
                    transformationRequest.image_id, transformationRequest.size,
                    transformationRequest.target_format)

            self._wait_for_item_status_ok(find)
            derived_image_metadata = find()

        logger.debug("Checks that image format is supported")
        try:
            img = Image.open(
                self._path_generator.original_path(
                    original_image_metadata).absolute())
        except IOError, ex:
            raise imgengine.ImageProcessingException(ex)
示例#10
0
    def test_should_navigate_to_derived_image_metadatas_from_original_image_metadata(
            self):
        original_image_metadata = domain.OriginalImageMetadata(
            'MYID12435', domain.STATUS_OK, (800, 600),
            domain.IMAGE_FORMAT_JPEG)
        self._itemRepository.add(original_image_metadata)

        item = domain.DerivedImageMetadata(domain.STATUS_OK, (100, 100),
                                           domain.IMAGE_FORMAT_JPEG,
                                           original_image_metadata)
        self._itemRepository.add(item)

        found_item = self._itemRepository.find_original_image_metadata_by_id(
            'MYID12435')
        assert found_item is not None
        assert found_item.derived_image_metadatas is not None
        assert len(found_item.derived_image_metadatas) == 1
        assert found_item.derived_image_metadatas[0].id == item.id
示例#11
0
    def test_deletion_of_original_image_metadata_should_delete_associated_derived_image_metadatas(
            self):
        original_image_metadata = domain.OriginalImageMetadata(
            'MYID12435', domain.STATUS_OK, (800, 600),
            domain.IMAGE_FORMAT_JPEG)
        self._itemRepository.add(original_image_metadata)

        item = domain.DerivedImageMetadata(domain.STATUS_OK, (100, 100),
                                           domain.IMAGE_FORMAT_JPEG,
                                           original_image_metadata)
        self._itemRepository.add(item)

        self._session.delete(
            self._itemRepository.find_original_image_metadata_by_id(
                'MYID12435'))

        found_derived_image_metadata = self._itemRepository.find_derived_image_metadata_by_original_image_metadata_id_size_and_format(
            'MYID12435', (100, 100), domain.IMAGE_FORMAT_JPEG)
        assert found_derived_image_metadata is None

        found_original_image_metadata = self._itemRepository.find_original_image_metadata_by_id(
            'MYID12435')
        assert found_original_image_metadata is None
示例#12
0
def derived_100x100_yemmagouraya_metadata():
    return domain.DerivedImageMetadata(domain.STATUS_OK, ('100', '100'),
                                       domain.IMAGE_FORMAT_JPEG,
                                       original_yemmagouraya_metadata())
 def test_should_create_item_using_width_and_height_expressed_as_int(self):
     item = domain.DerivedImageMetadata(domain.STATUS_OK, (100, 100),
                                        domain.IMAGE_FORMAT_JPEG,
                                        self.original_image_metadata)
     _item_should_match(item)
 def test_id_should_be_autogenerated_from_characteristics(self):
     item = domain.DerivedImageMetadata(domain.STATUS_OK, ('100', '100'),
                                        domain.IMAGE_FORMAT_JPEG,
                                        self.original_image_metadata)
     assert item.id == 'MYID12435-100x100-JPEG'