i have function allows create message , send . have usermodel called person , has attribute called inbox . attribute determines if user enable inbox or not.
i have form called newmessageform . trying raise error via form if authenticated user has inbox deactivated in order , must obtain request.user via form not allowing me in views.
can me .
global name 'request' not defined file "c:\mysite\pet\forms.py" in clean_recipient 329. user = user.objects.get(user=request.user) exception type: nameerror @ /create/ exception value: global name 'request' not defined models
class person(models.model): inbox = ( ('a', 'activate'), ('d', 'deactivate'), ('f', 'permit friends only'), ) user = models.foreignkey(user) inbox = models.charfield(max_length=1, choices=inbox ,default='a') def __unicode__(self): return self.user.username class thread(models.model): subject = models.charfield(max_length=100, blank=true) user = models.foreignkey(user) class message(models.model): user = models.foreignkey(user, related_name='sender') recipient = models.foreignkey(user, related_name='recipient') created = models.datetimefield(auto_now_add=true) body = models.charfield(max_length=1000) read = models.booleanfield(default=false) sentmessage = models.booleanfield(default=false) thread = models.foreignkey(thread) draft = models.booleanfield(default=false) def __unicode__(self): return self.body forms
class newmessageform(forms.modelform): recipient = forms.charfield(required=false,max_length=15) message = forms.charfield(widget=forms.textarea,required=true,max_length=15) def clean_recipient(self): recipient = self.cleaned_data['recipient'] user = user.objects.get(user=request.user) if person.inbox == d: raise forms.validationerror("you have deactivated inbox , please enable @ profile settings") if recipient: try: recipient = user.objects.get(username=recipient) except user.doesnotexist: raise forms.validationerror("this username not exist") return recipient else: return recipient views
@login_required def create(request): person = person.objects.get(user=request.user) form = newmessageform() if request.post.get('_send', false): form = newmessageform(request.post) if form.is_valid(): recipient = form.cleaned_data['recipient'] subject = form.cleaned_data['subject'] message = form.cleaned_data['message'] if recipient: thread = thread.objects.create(subject=subject,user=request.user) recipient = user.objects.get(username=recipient) message = message.objects.create(user=request.user,recipient=recipient,body=message,thread=thread,sentmessage=true,read=false) return httpresponseredirect(reverse('world:message')) return render(request,'create.html',{'messages':messages,'form':form,'person':person})
you overwrite __init__ of form require request parameter:
class newmessageform(forms.modelform): def __init__(self, request, *args, **kwargs): self.request = request super(newmessageform, self).__init__(*args, **kwargs) and instantiate form in view this:
form = newmessageform(request) and
form = newmessageform(request, request.post) now have self.request in newmessageform instance , can use self.request.user it.
Comments
Post a Comment