Reputation:
User can register without a profile image. Now I get error that no file was associated with the login.
Why does it validate the form and then try to save the image?
It should not check for the image.
Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/exception.py" in inner
41. response = get_response(request)
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in view
68. return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapper
67. return bound_func(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/debug.py" in sensitive_post_parameters_wrapper
76. return view(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in bound_func
63. return func.__get__(self, type(self))(*args2, **kwargs2)
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapper
67. return bound_func(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view
149. response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in bound_func
63. return func.__get__(self, type(self))(*args2, **kwargs2)
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapper
67. return bound_func(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/cache.py" in _wrapped_view_func
57. response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in bound_func
63. return func.__get__(self, type(self))(*args2, **kwargs2)
File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/views.py" in dispatch
90. return super(LoginView, self).dispatch(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in dispatch
88. return handler(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/edit.py" in post
183. return self.form_valid(form)
File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/views.py" in form_valid
119. auth_login(self.request, form.get_user())
File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/__init__.py" in login
161. user_logged_in.send(sender=user.__class__, request=request, user=user)
File "/usr/local/lib/python2.7/dist-packages/django/dispatch/dispatcher.py" in send
193. for receiver in self._live_receivers(sender)
File "/home/django/django_project/accounts/views.py" in got_online
115. user.profile.save()
File "/home/django/django_project/accounts/models.py" in save
116. img = Image.open(self.image.path)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/files.py" in path
64. self._require_file()
File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/files.py" in _require_file
46. raise ValueError("The '%s' attribute has no file associated with it." % self.field.name)
Exception Type: ValueError at /login/
Exception Value: The 'image' attribute has no file associated with it.
accounts/models.py
class UserProfile(models.Model):
image = models.ImageField(upload_to=upload_image_path,null=True,blank=True)
def save(self, *args, **kwargs):
super(UserProfile,self).save(*args, **kwargs)
if self.image != None:
img = Image.open(self.image.path)
if img.height > 300 or img.width > 300:
output_size = (300, 300)
img.thumbnail(output_size)
img.save(self.image.path)
def post_save_user_receiver(sender, instance, created, *args, **kwargs):
if created:
new_profile = UserProfile.objects.get_or_create(user=instance)
The registration works without the user having a image, but the login does not.
Thank you for any help
Upvotes: 1
Views: 968
Reputation: 1904
According to traceback, there is a signal receiver in accounts/views.py#115
, that listens for user_logged_in
signal and tries to save user profile:
File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/__init__.py" in login
161. user_logged_in.send(sender=user.__class__, request=request, user=user)
...
File "/home/django/django_project/accounts/views.py" in got_online
115. user.profile.save()
And in user profile save and tries to open the profile image to thumbnail it.
Upvotes: 0
Reputation:
I solved it by adding a default image to the file field:
image = models.ImageField(upload_to=upload_image_path,default='default.jpeg')
and by changing the if statement in the save method
from:
if self.image != None:
to:
if not self.image:
Upvotes: 1