|
51 | 51 | from ietf.meeting.helpers import send_interim_approval_request |
52 | 52 | from ietf.meeting.helpers import send_interim_announcement_request |
53 | 53 | from ietf.meeting.utils import finalize |
| 54 | +from ietf.person.models import Person |
| 55 | +from ietf.secr.proceedings.utils import handle_upload_file |
54 | 56 | from ietf.utils.mail import send_mail_message |
55 | 57 | from ietf.utils.pipe import pipe |
56 | 58 | from ietf.utils.pdf import pdf_pages |
@@ -1085,6 +1087,67 @@ def add_session_drafts(request, session_id, num): |
1085 | 1087 | 'form': form, |
1086 | 1088 | }) |
1087 | 1089 |
|
| 1090 | +class UploadBlueSheetForm(forms.Form): |
| 1091 | + file = forms.FileField(label='Bluesheet scan to upload') |
| 1092 | + |
| 1093 | +@role_required('Secretariat') |
| 1094 | +def upload_session_bluesheets(request, session_id, num): |
| 1095 | + # num is redundant, but we're dragging it along an artifact of where we are in the current URL structure |
| 1096 | + session = get_object_or_404(Session,pk=session_id) |
| 1097 | + |
| 1098 | + session_number = None |
| 1099 | + sessions = get_sessions(session.meeting.number,session.group.acronym) |
| 1100 | + if len(sessions) > 1: |
| 1101 | + session_number = 1 + sessions.index(session) |
| 1102 | + |
| 1103 | + bluesheet_sp = session.sessionpresentation_set.filter(document__type='bluesheets').first() |
| 1104 | + |
| 1105 | + if request.method == 'POST': |
| 1106 | + form = UploadBlueSheetForm(request.POST,request.FILES) |
| 1107 | + if form.is_valid(): |
| 1108 | + file = request.FILES['file'] |
| 1109 | + _, ext = os.path.splitext(file.name) |
| 1110 | + if bluesheet_sp: |
| 1111 | + doc = bluesheet_sp.document |
| 1112 | + doc.rev = '%02d' % (int(doc.rev)+1) |
| 1113 | + else: |
| 1114 | + sess_time = session.official_timeslotassignment().timeslot.time |
| 1115 | + if session.meeting.type_id=='ietf': |
| 1116 | + name = 'bluesheets-%s-%s-%s' % (session.meeting.number, |
| 1117 | + session.group.acronym, |
| 1118 | + sess_time.strftime("%Y%m%d%H%M")) |
| 1119 | + title = 'Bluesheets IETF%s: %s : %s' % (session.meeting.number, |
| 1120 | + session.group.acronym, |
| 1121 | + sess_time.strftime("%a %H:%M")) |
| 1122 | + else: |
| 1123 | + name = 'bluesheets-%s-%s' % (session.meeting.number, sess_time.strftime("%Y%m%d%H%M")) |
| 1124 | + title = 'Bluesheets %s: %s' % (session.meeting.number, sess_time.strftime("%a %H:%M")) |
| 1125 | + doc = Document.objects.create( |
| 1126 | + name = name, |
| 1127 | + type_id = 'bluesheets', |
| 1128 | + title = title, |
| 1129 | + group = session.group, |
| 1130 | + rev = '00', |
| 1131 | + ) |
| 1132 | + doc.states.add(State.objects.get(type_id='bluesheets',slug='active')) |
| 1133 | + doc.docalias_set.create(name=doc.name) |
| 1134 | + session.sessionpresentation_set.create(document=doc,rev='00') |
| 1135 | + filename = '%s-%s%s'% ( doc.name, doc.rev, ext) |
| 1136 | + doc.external_url = filename |
| 1137 | + doc.save() |
| 1138 | + NewRevisionDocEvent.objects.create(doc=doc,time=doc.time,by=Person.objects.get(name='(System)'),type='new_revision',desc='New revision available: %s'%doc.rev,rev=doc.rev) |
| 1139 | + handle_upload_file(file, filename, session.meeting, 'bluesheets') |
| 1140 | + return redirect('ietf.meeting.views.session_details',num=num,acronym=session.group.acronym) |
| 1141 | + else: |
| 1142 | + form = UploadBlueSheetForm() |
| 1143 | + |
| 1144 | + return render(request, "meeting/upload_session_bluesheets.html", |
| 1145 | + {'session': session, |
| 1146 | + 'session_number': session_number, |
| 1147 | + 'bluesheet_sp' : bluesheet_sp, |
| 1148 | + 'form': form, |
| 1149 | + }) |
| 1150 | + |
1088 | 1151 | @role_required('Secretariat') |
1089 | 1152 | def make_schedule_official(request, num, owner, name): |
1090 | 1153 |
|
|
0 commit comments