Clean up bluesheets upload page. Add display of uploaded files. Commit ready for merge
- Legacy-Id: 10206
This commit is contained in:
parent
1145751a9b
commit
aec062b8b6
|
@ -1,21 +1,29 @@
|
|||
from django.conf import settings
|
||||
from django.core.urlresolvers import reverse
|
||||
from ietf.utils.test_utils import TestCase
|
||||
|
||||
from ietf.person.models import Person
|
||||
from ietf.group.models import Group, GroupEvent
|
||||
from ietf.meeting.models import Meeting, Room, TimeSlot, ScheduledSession
|
||||
from ietf.utils.mail import outbox
|
||||
from ietf.meeting.test_data import make_meeting_test_data
|
||||
|
||||
from pyquery import PyQuery
|
||||
|
||||
import datetime
|
||||
import os
|
||||
import shutil
|
||||
from pyquery import PyQuery
|
||||
from StringIO import StringIO
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.urlresolvers import reverse
|
||||
|
||||
from ietf.doc.models import Document
|
||||
from ietf.group.models import Group, GroupEvent
|
||||
from ietf.meeting.models import Meeting, Room, TimeSlot, ScheduledSession
|
||||
from ietf.meeting.test_data import make_meeting_test_data
|
||||
from ietf.person.models import Person
|
||||
from ietf.utils.mail import outbox
|
||||
from ietf.utils.test_utils import TestCase
|
||||
|
||||
|
||||
class MainTestCase(TestCase):
|
||||
def setUp(self):
|
||||
self.proceedings_dir = os.path.abspath("tmp-proceedings-dir")
|
||||
if not os.path.exists(self.proceedings_dir):
|
||||
os.mkdir(self.proceedings_dir)
|
||||
settings.SECR_PROCEEDINGS_DIR = self.proceedings_dir
|
||||
settings.AGENDA_PATH = self.proceedings_dir
|
||||
|
||||
self.bluesheet_dir = os.path.abspath(settings.TEST_BLUESHEET_DIR)
|
||||
self.bluesheet_path = os.path.join(self.bluesheet_dir,'blue_sheet.rtf')
|
||||
if not os.path.exists(self.bluesheet_dir):
|
||||
|
@ -27,6 +35,7 @@ class MainTestCase(TestCase):
|
|||
os.mkdir(self.materials_dir)
|
||||
|
||||
def tearDown(self):
|
||||
shutil.rmtree(self.proceedings_dir)
|
||||
shutil.rmtree(self.bluesheet_dir)
|
||||
shutil.rmtree(self.materials_dir)
|
||||
|
||||
|
@ -85,14 +94,28 @@ class MainTestCase(TestCase):
|
|||
meeting = Meeting.objects.get(number=1)
|
||||
self.assertEqual(meeting.city,'Toronto')
|
||||
|
||||
def test_blue_sheets(self):
|
||||
def test_blue_sheets_upload(self):
|
||||
"Test Bluesheets"
|
||||
meeting = make_meeting_test_data()
|
||||
os.makedirs(os.path.join(self.proceedings_dir,str(meeting.number),'bluesheets'))
|
||||
|
||||
url = reverse('meetings_blue_sheet',kwargs={'meeting_id':meeting.number})
|
||||
self.client.login(username="secretary", password="secretary+password")
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
# test upload
|
||||
group = Group.objects.filter(type='wg',state='active').first()
|
||||
file = StringIO('dummy bluesheet')
|
||||
file.name = "bluesheets-%s-%s.pdf" % (meeting.number,group.acronym)
|
||||
files = {'file':file}
|
||||
response = self.client.post(url, files)
|
||||
self.assertEqual(response.status_code, 302)
|
||||
path = os.path.join(settings.SECR_PROCEEDINGS_DIR,str(meeting.number),'bluesheets')
|
||||
self.assertEqual(len(os.listdir(path)),1)
|
||||
|
||||
def test_blue_sheets_generate(self):
|
||||
meeting = make_meeting_test_data()
|
||||
url = reverse('meetings_blue_sheet_generate',kwargs={'meeting_id':meeting.number})
|
||||
self.client.login(username="secretary", password="secretary+password")
|
||||
response = self.client.get(url)
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import datetime
|
||||
import json
|
||||
import os
|
||||
import time
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib import messages
|
||||
|
@ -334,9 +336,15 @@ def blue_sheet(request, meeting_id):
|
|||
Blue Sheet view. The user can generate blue sheets or upload scanned bluesheets
|
||||
'''
|
||||
meeting = get_object_or_404(Meeting, number=meeting_id)
|
||||
|
||||
url = settings.SECR_BLUE_SHEET_URL
|
||||
|
||||
blank_sheets_path = settings.SECR_BLUE_SHEET_PATH
|
||||
try:
|
||||
last_run = time.ctime(os.stat(blank_sheets_path).st_ctime)
|
||||
except OSError:
|
||||
last_run = None
|
||||
uploaded_sheets_path = os.path.join(settings.SECR_PROCEEDINGS_DIR,meeting.number,'bluesheets')
|
||||
uploaded_files = sorted(os.listdir(uploaded_sheets_path))
|
||||
|
||||
if request.method == 'POST':
|
||||
form = UploadBlueSheetForm(request.POST,request.FILES)
|
||||
if form.is_valid():
|
||||
|
@ -350,7 +358,9 @@ def blue_sheet(request, meeting_id):
|
|||
return render_to_response('meetings/blue_sheet.html', {
|
||||
'meeting': meeting,
|
||||
'url': url,
|
||||
'form': form},
|
||||
'form': form,
|
||||
'last_run': last_run,
|
||||
'uploaded_files': uploaded_files},
|
||||
RequestContext(request, {}),
|
||||
)
|
||||
|
||||
|
|
|
@ -16,13 +16,27 @@
|
|||
{% block content %}
|
||||
|
||||
<div class="module">
|
||||
<h2>Blue Sheet</h2>
|
||||
<h1> Meeting {{ meeting.number }}</h1>
|
||||
<h2>IETF {{ meeting.number }} - Blue Sheet</h2>
|
||||
|
||||
<p>
|
||||
<a href="{% url "meetings_blue_sheet_generate" meeting_id=meeting.number%}">Generate Blue Sheets</a><br />
|
||||
<a href="{{ url }}">Download</a> latest Blue Sheets.
|
||||
</p>
|
||||
<p>Use this to generate blue sheets for meeting sessions.</p>
|
||||
<ul class="none">
|
||||
<li>
|
||||
<button onclick="window.location='{% url "meetings_blue_sheet_generate" meeting_id=meeting.number%}'">Generate Blue Sheets</button>
|
||||
Last run:
|
||||
{% if last_run %}
|
||||
{{ last_run }}
|
||||
{% else %}
|
||||
Never
|
||||
{% endif %}
|
||||
</li>
|
||||
</ul>
|
||||
<p>Use this to download the blue sheets from the server.</p>
|
||||
<ul class="none">
|
||||
<li>
|
||||
<button onclick="window.location='{{ url }}'">Download Blue Sheets</button>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<hr />
|
||||
<p>
|
||||
Use the form below to upload individual scanned blue sheet documents.
|
||||
|
@ -32,16 +46,41 @@
|
|||
<col width="200">
|
||||
{{ form.as_table }}
|
||||
</table>
|
||||
<input type="submit" value="Submit" />
|
||||
</form>
|
||||
|
||||
<div class="button-group">
|
||||
<ul>
|
||||
<li><button onclick="window.location='../'">Back</button></li>
|
||||
<li><button type="submit" name="submit" value="Submit">Submit</button></li>
|
||||
<li><button type="button" onclick="window.location='../'">Back</button></li>
|
||||
</ul>
|
||||
</div> <!-- button-group -->
|
||||
|
||||
</form>
|
||||
</div> <!-- module -->
|
||||
|
||||
{% if uploaded_files %}
|
||||
<br>
|
||||
<div class="module interim-container">
|
||||
<h2>Uploaded Files</h2>
|
||||
<div class="inline-related last-related">
|
||||
<table class="full-width">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Filename</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for file in uploaded_files %}
|
||||
<tr class="{% cycle 'row1' 'row2' %}">
|
||||
<td>{{ file }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div> <!-- inline-related -->
|
||||
</div> <!-- module -->
|
||||
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
|
Loading…
Reference in a new issue