Upload for T4U is fixed
parent
25d9923337
commit
4948a7961f
|
@ -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}
|
||||||
|
|
|
@ -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' %}
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue