|
30 | 30 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
31 | 31 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
32 | 32 |
|
33 | | -import os, datetime, urllib, json |
| 33 | +import os, datetime, urllib, json, glob |
34 | 34 |
|
35 | 35 | from django.http import HttpResponse, Http404 |
36 | 36 | from django.shortcuts import render_to_response, get_object_or_404, redirect |
|
53 | 53 | from ietf.doc.mails import email_ad |
54 | 54 | from ietf.doc.views_status_change import RELATION_SLUGS as status_change_relationships |
55 | 55 | from ietf.group.models import Role |
56 | | -from ietf.group.utils import can_manage_group_type |
| 56 | +from ietf.group.utils import can_manage_group_type, can_manage_materials |
57 | 57 | from ietf.ietfauth.utils import has_role, is_authorized_in_doc_stream, user_is_person, role_required |
58 | 58 | from ietf.name.models import StreamName, BallotPositionName |
59 | 59 | from ietf.person.models import Email |
@@ -481,6 +481,41 @@ def document_main(request, name, rev=None): |
481 | 481 | ), |
482 | 482 | context_instance=RequestContext(request)) |
483 | 483 |
|
| 484 | + if doc.type_id in ("slides", "agenda", "minutes"): |
| 485 | + can_manage_material = can_manage_materials(request.user, doc.group) |
| 486 | + if doc.meeting_related(): |
| 487 | + # disallow editing meeting-related stuff through this |
| 488 | + # interface for the time being |
| 489 | + can_manage_material = False |
| 490 | + |
| 491 | + basename = "%s-%s" % (doc.canonical_name(), doc.rev) |
| 492 | + pathname = os.path.join(doc.get_file_path(), basename) |
| 493 | + |
| 494 | + content = None |
| 495 | + other_types = [] |
| 496 | + globs = glob.glob(pathname + ".*") |
| 497 | + for g in globs: |
| 498 | + extension = os.path.splitext(g)[1] |
| 499 | + t = os.path.splitext(g)[1].lstrip(".") |
| 500 | + url = doc.href() + extension |
| 501 | + |
| 502 | + if extension == ".txt": |
| 503 | + content = get_document_content(basename, pathname, split=False) |
| 504 | + t = "plain text" |
| 505 | + |
| 506 | + other_types.append((t, url)) |
| 507 | + |
| 508 | + return render_to_response("doc/document_material.html", |
| 509 | + dict(doc=doc, |
| 510 | + top=top, |
| 511 | + content=content, |
| 512 | + revisions=revisions, |
| 513 | + snapshot=snapshot, |
| 514 | + can_manage_material=can_manage_material, |
| 515 | + other_types=other_types, |
| 516 | + ), |
| 517 | + context_instance=RequestContext(request)) |
| 518 | + |
484 | 519 | raise Http404 |
485 | 520 |
|
486 | 521 |
|
|
0 commit comments