{"id":17069515,"url":"https://github.com/mgalgs/iktest","last_synced_at":"2026-04-18T02:31:41.059Z","repository":{"id":138480589,"uuid":"65521052","full_name":"mgalgs/iktest","owner":"mgalgs","description":"Repro for \"the file cannot be reopened\" using django-image-kit","archived":false,"fork":false,"pushed_at":"2016-11-14T19:02:58.000Z","size":57,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-03-29T21:47:51.161Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mgalgs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-08-12T03:42:56.000Z","updated_at":"2016-08-12T03:43:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"9c366d2c-2300-4025-87ef-5801337b631b","html_url":"https://github.com/mgalgs/iktest","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mgalgs/iktest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgalgs%2Fiktest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgalgs%2Fiktest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgalgs%2Fiktest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgalgs%2Fiktest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mgalgs","download_url":"https://codeload.github.com/mgalgs/iktest/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgalgs%2Fiktest/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31953765,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-14T11:27:04.446Z","updated_at":"2026-04-18T02:31:41.043Z","avatar_url":"https://github.com/mgalgs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"These are repro instructions for\n\n - https://github.com/matthewwithanm/django-imagekit/issues/369.\n - https://github.com/etianen/django-s3-storage/issues/33\n\n*UPDATE:* this is now fixed!  [The fix](https://github.com/etianen/django-s3-storage/issues/33) was in django-s3-storage.\n\n## S3 prep\n\nFirst, create a new s3 bucket (ours is named `iktest-media` in this\nexample).  We'll need your access keys and bucket name available in your\nenvironment later, so go ahead and just export them now:\n\n```shell\n$ export AWS_ACCESS_KEY_ID=...\n$ export AWS_SECRET_ACCESS_KEY=...\n$ export AWS_S3_BUCKET_NAME=iktest-media  # replace with your bucket name\n```\n\nNow clone the iktest repo:\n\n```shell\n$ git clone https://github.com/mgalgs/iktest.git\n$ cd iktest\n```\n\nand upload the `IMG_20160609_183718.jpg` file from this repo to your new\nbucket:\n\n```shell\n$ aws s3 cp IMG_20160609_183718.jpg s3://iktest-media/media/test_images/\n```\n\nYour bucket should now look like this:\n\n```shell\n$ aws s3 ls --recursive s3://iktest-media\n2016-08-11 20:03:26      49093 media/test_images/IMG_20160609_183718.jpg\n```\n\n\n## Django prep\n\nInstall everything in a fresh virtualenv and bootstrap some data:\n\n```shell\n$ virtualenv env\n$ . env/bin/activate\n$ pip install Django==1.9 django-s3-storage Pillow git+git://github.com/matthewwithanm/django-imagekit.git@develop\n$ python manage.py migrate\n$ python manage.py testdata\n```\n\n## Running the app\n\nYou're now ready to run the dev server:\n\n```shell\n$ python manage runserver\n```\n\nLoad [http://localhost:8000](http://localhost:8000) in your web browser.\nYou'll notice that the first time you load the page it will complain with:\n\n```\nInternal Server Error: /\nTraceback (most recent call last):\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/django/core/handlers/base.py\", line 149, in get_response\n    response = self.process_exception_by_middleware(e, request)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/django/core/handlers/base.py\", line 147, in get_response\n    response = wrapped_callback(request, *callback_args, **callback_kwargs)\n  File \"/home/mgalgs/sites/iktest2/iktest/testapp/views.py\", line 10, in index_view\n    'widgets': TestWidget.objects.all(),\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/django/shortcuts.py\", line 67, in render\n    template_name, context, request=request, using=using)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/django/template/loader.py\", line 97, in render_to_string\n    return template.render(context, request)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/django/template/backends/django.py\", line 95, in render\n    return self.template.render(context)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/django/template/base.py\", line 206, in render\n    return self._render(context)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/django/template/base.py\", line 197, in _render\n    return self.nodelist.render(context)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/django/template/base.py\", line 988, in render\n    bit = node.render_annotated(context)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/django/template/base.py\", line 955, in render_annotated\n    return self.render(context)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/django/template/defaulttags.py\", line 220, in render\n    nodelist.append(node.render_annotated(context))\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/django/template/base.py\", line 955, in render_annotated\n    return self.render(context)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/django/template/base.py\", line 1039, in render\n    output = self.filter_expression.resolve(context)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/django/template/base.py\", line 705, in resolve\n    obj = self.var.resolve(context)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/django/template/base.py\", line 846, in resolve\n    value = self._resolve_lookup(context)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/django/template/base.py\", line 887, in _resolve_lookup\n    current = getattr(current, bit)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/imagekit/cachefiles/__init__.py\", line 84, in url\n    return self._storage_attr('url')\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/imagekit/cachefiles/__init__.py\", line 74, in _storage_attr\n    existence_required.send(sender=self, file=self)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/django/dispatch/dispatcher.py\", line 192, in send\n    response = receiver(signal=self, sender=sender, **named)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/imagekit/registry.py\", line 53, in existence_required_receiver\n    self._receive(file, 'on_existence_required')\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/imagekit/registry.py\", line 61, in _receive\n    call_strategy_method(file, callback)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/imagekit/utils.py\", line 148, in call_strategy_method\n    fn(file)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/imagekit/cachefiles/strategies.py\", line 15, in on_existence_required\n    file.generate()\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/imagekit/cachefiles/__init__.py\", line 93, in generate\n    self.cachefile_backend.generate(self, force)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/imagekit/cachefiles/backends.py\", line 108, in generate\n    self.generate_now(file, force=force)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/imagekit/cachefiles/backends.py\", line 95, in generate_now\n    file._generate()\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/imagekit/cachefiles/__init__.py\", line 97, in _generate\n    content = generate(self.generator)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/imagekit/utils.py\", line 134, in generate\n    content = generator.generate()\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/imagekit/specs/__init__.py\", line 153, in generate\n    self.source.open()\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/django/db/models/fields/files.py\", line 81, in open\n    self.file.open(mode)\n  File \"/home/mgalgs/sites/iktest2/env/lib/python2.7/site-packages/django/core/files/base.py\", line 141, in open\n    raise ValueError(\"The file cannot be reopened.\")\nValueError: The file cannot be reopened.\n```\n\nIf you *reload* your page it will work(!).  However, the thumbnails that\ngot generated won't actually be valid.  Compare the urls from your web\nbrowser to:\n\n```shell\n$ aws s3 ls --recursive s3://iktest-media\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgalgs%2Fiktest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmgalgs%2Fiktest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgalgs%2Fiktest/lists"}