Accounted for .sender in a few places

This commit is contained in:
Daniel Quinn
2016-03-04 09:14:50 +00:00
parent ba7878b9aa
commit 5d4587ef8b
7 changed files with 95 additions and 41 deletions

View File

@@ -23,7 +23,7 @@ class UploadForm(forms.Form):
"image/tiff": Document.TYPE_TIF,
}
sender = forms.CharField(
correspondent = forms.CharField(
max_length=Correspondent._meta.get_field("name").max_length,
required=False
)
@@ -34,18 +34,19 @@ class UploadForm(forms.Form):
document = forms.FileField()
signature = forms.CharField(max_length=256)
def clean_sender(self):
def clean_correspondent(self):
"""
I suppose it might look cleaner to use .get_or_create() here, but that
would also allow someone to fill up the db with bogus senders before
all validation was met.
would also allow someone to fill up the db with bogus correspondents
before all validation was met.
"""
sender = self.cleaned_data.get("sender")
if not sender:
corresp = self.cleaned_data.get("correspondent")
if not corresp:
return None
if not Correspondent.SAFE_REGEX.match(sender) or " - " in sender:
raise forms.ValidationError("That sender name is suspicious.")
return sender
if not Correspondent.SAFE_REGEX.match(corresp) or " - " in corresp:
raise forms.ValidationError(
"That correspondent name is suspicious.")
return corresp
def clean_title(self):
title = self.cleaned_data.get("title")
@@ -63,10 +64,10 @@ class UploadForm(forms.Form):
return document, self.TYPE_LOOKUP[file_type]
def clean(self):
sender = self.clened_data("sender")
corresp = self.clened_data("correspondent")
title = self.cleaned_data("title")
signature = self.cleaned_data("signature")
if sha256(sender + title + self.SECRET).hexdigest() == signature:
if sha256(corresp + title + self.SECRET).hexdigest() == signature:
return True
return False
@@ -77,13 +78,15 @@ class UploadForm(forms.Form):
form do that as well. Think of it as a poor-man's queue server.
"""
sender = self.clened_data("sender")
correspondent = self.clened_data("correspondent")
title = self.cleaned_data("title")
document, file_type = self.cleaned_data.get("document")
t = int(mktime(datetime.now()))
file_name = os.path.join(
Consumer.CONSUME, "{} - {}.{}".format(sender, title, file_type))
Consumer.CONSUME,
"{} - {}.{}".format(correspondent, title, file_type)
)
with open(file_name, "wb") as f:
f.write(document)