Upload for T4U is fixed

pull/1/head
eric 2014-01-31 15:45:02 -05:00
parent 25d9923337
commit 4948a7961f
3 changed files with 46 additions and 14 deletions

View File

@ -2,6 +2,7 @@
external library imports external library imports
""" """
import logging import logging
import zipfile
from datetime import timedelta, datetime, date from datetime import timedelta, datetime, date
from decimal import Decimal as D from decimal import Decimal as D
@ -26,6 +27,9 @@ from selectable.forms import (
AutoCompleteSelectField AutoCompleteSelectField
) )
from PyPDF2 import PdfFileReader
""" """
regluit imports regluit imports
""" """
@ -139,13 +143,15 @@ class EditionForm(forms.ModelForm):
} }
class EbookFileForm(forms.ModelForm): class EbookFileForm(forms.ModelForm):
file = EpubFileField(max_length=16777216) file = forms.FileField(max_length=16777216)
def __init__(self, campaign_type=BUY2UNGLUE, *args, **kwargs): def __init__(self, campaign_type=BUY2UNGLUE, *args, **kwargs):
super(EbookFileForm, self).__init__(*args, **kwargs) super(EbookFileForm, self).__init__(*args, **kwargs)
self.campaign_type = campaign_type self.campaign_type = campaign_type
if campaign_type == BUY2UNGLUE: if campaign_type == BUY2UNGLUE:
self.fields['format'].widget=forms.HiddenInput self.fields['format'].widget=forms.HiddenInput()
if campaign_type == THANKS:
self.fields['format'].widget=forms.Select(choices=(('pdf','PDF'),( 'epub','EPUB'), ('mobi','MOBI')))
def clean_format(self): def clean_format(self):
if self.campaign_type is BUY2UNGLUE: if self.campaign_type is BUY2UNGLUE:
@ -154,6 +160,23 @@ class EbookFileForm(forms.ModelForm):
logger.info("EbookFileForm "+self.cleaned_data.get('format','')) logger.info("EbookFileForm "+self.cleaned_data.get('format',''))
return self.cleaned_data.get('format','') return self.cleaned_data.get('format','')
def clean(self):
format = self.cleaned_data['format']
the_file = self.cleaned_data.get('file',None)
if the_file and the_file.name:
if format == 'epub':
if not zipfile.is_zipfile(the_file.file):
raise forms.ValidationError(_('%s is not a valid EPUB file' % the_file.name) )
elif format == 'mobi':
if not zipfile.is_zipfile(the_file.file):
raise forms.ValidationError(_('%s is not a valid MOBI file' % the_file.name) )
elif format == 'pdf':
try:
doc = PdfFileReader(the_file.file)
except Exception, e:
raise forms.ValidationError(_('%s is not a valid PDF file' % the_file.name) )
return self.cleaned_data
class Meta: class Meta:
model = EbookFile model = EbookFile
widgets = { 'edition': forms.HiddenInput} widgets = { 'edition': forms.HiddenInput}

View File

@ -58,13 +58,21 @@ Any questions not covered here? Please email us at <a href="mailto:rights@gluej
<b>Buy-to-Unglue Campaign</b><br /> <b>Buy-to-Unglue Campaign</b><br />
Campaign status: {{ campaign.status }} <br /> Campaign status: {{ campaign.status }} <br />
Created: {{ campaign.created }}<br /> Created: {{ campaign.created }}<br />
${{ campaign.current_total }} sold. ${{ campaign.target }} to go. Ungluing Date: {{ campaign.cc_date }} ${{ campaign.current_total }} sold. ${{ campaign.target }} to go. Ungluing Date: {{ campaign.cc_date }}<br />
{% with campaign.work.preferred_edition as edition %}
<a href="{% url new_edition edition.work.id edition.id %}"> Edit </a> the preferred edition<br />
You can also <a href="{% url edition_uploads edition.id %}"> Load a file</a> for this edition.<br />
{% endwith %}
{% endifequal %} {% endifequal %}
{% ifequal campaign.type 3 %} {% ifequal campaign.type 3 %}
<b>Thanks-for-Ungluing Campaign</b><br /> <b>Thanks-for-Ungluing Campaign</b><br />
Campaign status: {{ campaign.status }} <br /> Campaign status: {{ campaign.status }} <br />
Created: {{ campaign.created }}<br /> Created: {{ campaign.created }}<br />
${{ campaign.current_total }} raised from {{ campaign.supporters_count }} supporters. ${{ campaign.current_total }} raised from {{ campaign.supporters_count }} supporters.
{% with campaign.work.preferred_edition as edition %}
<a href="{% url new_edition edition.work.id edition.id %}"> Edit </a> the preferred edition<br />
You can also <a href="{% url edition_uploads edition.id %}"> Load a file</a> for this edition.<br />
{% endwith %}
{% endifequal %} {% endifequal %}
</div> </div>
{% if campaign.status = 'ACTIVE' or campaign.status = 'INITIALIZED' %} {% if campaign.status = 'ACTIVE' or campaign.status = 'INITIALIZED' %}

View File

@ -2,6 +2,7 @@ Django==1.4.5
Fabric==1.4.3 Fabric==1.4.3
MySQL-python==1.2.3 MySQL-python==1.2.3
Pillow==1.7.7 Pillow==1.7.7
PyPDF2==1.20
Pyzotero==0.9.51 Pyzotero==0.9.51
South==0.7.6 South==0.7.6
WebOb==1.2.3 WebOb==1.2.3