|
38 | 38 | from ietf.group.models import Group |
39 | 39 | from ietf.group.utils import can_manage_materials |
40 | 40 | from ietf.ietfauth.utils import role_required, has_role |
41 | | -from ietf.meeting.models import Meeting, Session, Schedule, Room, FloorPlan |
| 41 | +from ietf.meeting.models import Meeting, Session, Schedule, Room, FloorPlan, SessionPresentation |
42 | 42 | from ietf.meeting.helpers import get_areas, get_person_by_email, get_schedule_by_name |
43 | 43 | from ietf.meeting.helpers import build_all_agenda_slices, get_wg_name_list |
44 | 44 | from ietf.meeting.helpers import get_all_assignments_from_schedule |
@@ -1414,16 +1414,21 @@ def upload_session_slides(request, session_id, num, name): |
1414 | 1414 | else: |
1415 | 1415 | name = 'slides-%s-%s' % (session.meeting.number, sess_time.strftime("%Y%m%d%H%M")) |
1416 | 1416 | name = name + '-' + slugify(title) |
1417 | | - doc = Document.objects.create( |
1418 | | - name = name, |
1419 | | - type_id = 'slides', |
1420 | | - title = title, |
1421 | | - group = session.group, |
1422 | | - rev = '00', |
1423 | | - ) |
| 1417 | + if Document.objects.filter(name=name).exists(): |
| 1418 | + doc = Document.objects.get(name=name) |
| 1419 | + doc.rev = '%02d' % (int(doc.rev)+1) |
| 1420 | + doc.title = form.cleaned_data['title'] |
| 1421 | + else: |
| 1422 | + doc = Document.objects.create( |
| 1423 | + name = name, |
| 1424 | + type_id = 'slides', |
| 1425 | + title = title, |
| 1426 | + group = session.group, |
| 1427 | + rev = '00', |
| 1428 | + ) |
| 1429 | + doc.docalias_set.create(name=doc.name) |
1424 | 1430 | doc.states.add(State.objects.get(type_id='slides',slug='active')) |
1425 | 1431 | doc.states.add(State.objects.get(type_id='reuse_policy',slug='single')) |
1426 | | - doc.docalias_set.create(name=doc.name) |
1427 | 1432 | max_order = session.sessionpresentation_set.filter(document__type='slides').aggregate(Max('order'))['order__max'] or 0 |
1428 | 1433 | session.sessionpresentation_set.create(document=doc,rev=doc.rev,order=max_order+1) |
1429 | 1434 | if apply_to_all: |
@@ -1451,6 +1456,22 @@ def upload_session_slides(request, session_id, num, name): |
1451 | 1456 | 'form': form, |
1452 | 1457 | }) |
1453 | 1458 |
|
| 1459 | +def remove_sessionpresentation(request, session_id, num, name): |
| 1460 | + sp = get_object_or_404(SessionPresentation,session_id=session_id,document__name=name) |
| 1461 | + session = sp.session |
| 1462 | + if not session.can_manage_materials(request.user): |
| 1463 | + return HttpResponseForbidden("You don't have permission to manage materials for this session.") |
| 1464 | + if session.is_material_submission_cutoff() and not has_role(request.user, "Secretariat"): |
| 1465 | + return HttpResponseForbidden("The materials cutoff for this session has passed. Contact the secretariat for further action.") |
| 1466 | + if request.method == 'POST': |
| 1467 | + session.sessionpresentation_set.filter(pk=sp.pk).delete() |
| 1468 | + c = DocEvent(type="added_comment", doc=sp.document, by=request.user.person) |
| 1469 | + c.desc = "Removed from session: %s" % (session) |
| 1470 | + c.save() |
| 1471 | + return redirect('ietf.meeting.views.session_details', num=session.meeting.number, acronym=session.group.acronym) |
| 1472 | + |
| 1473 | + return render(request,'meeting/remove_sessionpresentation.html', {'sp': sp }) |
| 1474 | + |
1454 | 1475 | def set_slide_order(request, session_id, num, name): |
1455 | 1476 | # num is redundant, but we're dragging it along an artifact of where we are in the current URL structure |
1456 | 1477 | session = get_object_or_404(Session,pk=session_id) |
|
0 commit comments