Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 0 additions & 96 deletions ietf/secr/meetings/blue_sheets.py

This file was deleted.

9 changes: 0 additions & 9 deletions ietf/secr/meetings/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -238,17 +238,8 @@ def clean_group(self):
raise forms.ValidationError("ERROR: can't change group after materials have been uploaded")
return group

class UploadBlueSheetForm(forms.Form):
file = forms.FileField(help_text='example: bluesheets-84-ancp-01.pdf')

def clean_file(self):
file = self.cleaned_data['file']
if not re.match(r'bluesheets-\d+',file.name):
raise forms.ValidationError('Incorrect filename format')
return file

class RegularSessionEditForm(forms.ModelForm):
class Meta:
model = Session
fields = ['agenda_note']

30 changes: 0 additions & 30 deletions ietf/secr/meetings/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@
import os
import shutil

from pathlib import Path
from pyquery import PyQuery
from io import StringIO

import debug # pyflakes:ignore

Expand Down Expand Up @@ -170,34 +168,6 @@ def test_edit_meeting(self):
[cn.slug for cn in meeting.group_conflict_types.all()],
post_data['group_conflict_types'],
)

def test_blue_sheets_upload(self):
"Test Bluesheets"
meeting = make_meeting_test_data()
(Path(settings.SECR_PROCEEDINGS_DIR) / str(meeting.number) / 'bluesheets').mkdir(parents=True)

url = reverse('ietf.secr.meetings.views.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('ietf.secr.meetings.views.blue_sheet_generate',kwargs={'meeting_id':meeting.number})
self.client.login(username="secretary", password="secretary+password")
response = self.client.post(url)
self.assertEqual(response.status_code, 302)
self.assertTrue(os.path.exists(self.bluesheet_path))

def test_notifications(self):
"Test Notifications"
Expand Down
3 changes: 0 additions & 3 deletions ietf/secr/meetings/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,7 @@
url(r'^$', views.main),
url(r'^add/$', views.add),
# url(r'^ajax/get-times/(?P<meeting_id>\d{1,6})/(?P<day>\d)/$', views.ajax_get_times), # Not in use
url(r'^blue_sheet/$', views.blue_sheet_redirect),
url(r'^(?P<meeting_id>\d{1,6})/$', views.view),
url(r'^(?P<meeting_id>\d{1,6})/blue_sheet/$', views.blue_sheet),
url(r'^(?P<meeting_id>\d{1,6})/blue_sheet/generate/$', views.blue_sheet_generate),
url(r'^(?P<meeting_id>\d{1,6})/edit/$', views.edit_meeting),
url(r'^(?P<meeting_id>\d{1,6})/notifications/$', views.notifications),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/$', views.rooms),
Expand Down
75 changes: 3 additions & 72 deletions ietf/secr/meetings/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
# -*- coding: utf-8 -*-

import datetime
import os
import time

from django.conf import settings
from django.contrib import messages
Expand All @@ -21,17 +19,16 @@
from ietf.meeting.forms import duration_string
from ietf.meeting.helpers import get_meeting, make_materials_directories, populate_important_dates
from ietf.meeting.models import Meeting, Session, Room, TimeSlot, SchedTimeSessAssignment, Schedule, SchedulingEvent
from ietf.meeting.utils import add_event_info_to_session_qs, handle_upload_file
from ietf.meeting.utils import add_event_info_to_session_qs
from ietf.name.models import SessionStatusName
from ietf.group.models import Group, GroupEvent
from ietf.secr.meetings.blue_sheets import create_blue_sheets
from ietf.secr.meetings.forms import ( BaseMeetingRoomFormSet, MeetingModelForm, MeetingSelectForm,
MeetingRoomForm, MiscSessionForm, TimeSlotForm, RegularSessionEditForm,
UploadBlueSheetForm, MeetingRoomOptionsForm )
MeetingRoomOptionsForm )
from ietf.secr.sreq.views import get_initial_session
from ietf.secr.utils.meeting import get_session, get_timeslot
from ietf.mailtrigger.utils import gather_address_lists
from ietf.utils.timezone import date_today, make_aware
from ietf.utils.timezone import make_aware


# prep for agenda changes
Expand Down Expand Up @@ -256,72 +253,6 @@ def add(request):
'form': form},
)

@role_required('Secretariat')
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():
file = request.FILES['file']
save_error = handle_upload_file(file,file.name,meeting,'bluesheets')
if save_error:
form.add_error(None, save_error)
else:
messages.success(request, 'File Uploaded')
return redirect('ietf.secr.meetings.views.blue_sheet', meeting_id=meeting.number)
else:
form = UploadBlueSheetForm()

return render(request, 'meetings/blue_sheet.html', {
'meeting': meeting,
'url': url,
'form': form,
'last_run': last_run,
'uploaded_files': uploaded_files},
)

@role_required('Secretariat')
def blue_sheet_generate(request, meeting_id):
'''
Generate bluesheets
'''
meeting = get_object_or_404(Meeting, number=meeting_id)

if request.method == "POST":
groups = Group.objects.filter(
type__in=['wg','rg','ag','rag','program'],
session__timeslotassignments__schedule__in=[meeting.schedule, meeting.schedule.base if meeting.schedule else None]).order_by('acronym')
create_blue_sheets(meeting, groups)

messages.success(request, 'Blue Sheets generated')
return redirect('ietf.secr.meetings.views.blue_sheet', meeting_id=meeting.number)

@role_required('Secretariat')
def blue_sheet_redirect(request):
'''
This is the generic blue sheet URL. It gets the next IETF meeting and redirects
to the meeting specific URL.
'''
today = date_today()
qs = Meeting.objects.filter(date__gt=today,type='ietf').order_by('date')
if qs:
meeting = qs[0]
else:
meeting = Meeting.objects.filter(type='ietf').order_by('-date')[0]
return redirect('ietf.secr.meetings.views.blue_sheet', meeting_id=meeting.number)

@role_required('Secretariat')
def edit_meeting(request, meeting_id):
'''
Expand Down
1 change: 0 additions & 1 deletion ietf/secr/templates/main.html
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ <h2>Meetings and Proceedings</h2>
<ul>
<li> <a href="{% url "ietf.secr.sreq.views.main" %}"><b>Session Requests</b></a></li>
<li> <a href="{% url "ietf.secr.meetings.views.main" %}"><b>Meeting Manager</b></a></li>
<li> <a href="{% url "ietf.secr.meetings.views.blue_sheet_redirect" %}"><b>Blue Sheets</b></a></li>
</ul>
</td>
<td>
Expand Down
48 changes: 0 additions & 48 deletions ietf/secr/templates/meetings/blue_sheet.html

This file was deleted.

1 change: 0 additions & 1 deletion ietf/secr/templates/meetings/view.html
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ <h2>IETF {{ meeting.number }} - View</h2>
<ul>
<li><button type="button" onclick="window.location='{% url "ietf.secr.meetings.views.edit_meeting" meeting_id=meeting.number %}'">Edit</button></li>
<li><button type="button" onclick="window.location='{% url "ietf.secr.meetings.views.notifications" meeting_id=meeting.number %}'">Notifications</button></li>
<li><button type="button" onclick="window.location='{% url "ietf.secr.meetings.views.blue_sheet" meeting_id=meeting.number %}'">Blue Sheets</button></li>
<li><button type="button" onclick="window.location='{% url "ietf.meeting.views.list_schedules" num=meeting.number %}'">Agenda List</button></li>
<li>
<!-- [html-validate-disable-block wcag/h32 -- FIXME: no submit button] -->
Expand Down