1 '''
2 Created on Oct 6, 2010
3
4 @author: jnaous
5 '''
6
7 from expedient.clearinghouse.slice.models import Slice
8 from django.shortcuts import get_object_or_404
9 from expedient.ui.rspec.forms import UploadRSpecForm
10 from openflow.plugin.gapi.rspec import create_resv_rspec
11 from openflow.plugin.gapi import gapi, rspec
12 from expedient_geni.models import GENISliceInfo
13 from expedient.common.messaging.models import DatedMessage
14 from django.http import HttpResponseRedirect, HttpResponse
15 from django.views.generic import simple
16 from expedient.common.permissions.shortcuts import must_have_permission
17
18 TEMPLATE_PATH="rspec"
19
20 -def home(request, slice_id):
21 """Show buttons to download and upload rspecs."""
22
23 slice = get_object_or_404(Slice, pk=slice_id)
24 info = GENISliceInfo.objects.get(slice=slice)
25 slice_urn = info.slice_urn
26
27 must_have_permission(
28 request.user, slice.project, "can_edit_slices")
29
30 if request.method == "POST":
31 form = UploadRSpecForm(request.POST, request.FILES)
32 if form.is_valid():
33
34 rspec = form.files["rspec"].read()
35 gapi.CreateSliver(slice_urn, rspec, request.user)
36 DatedMessage.objects.post_message_to_user(
37 "Successfully uploaded RSpec.",
38 request.user, msg_type=DatedMessage.TYPE_SUCCESS)
39 return HttpResponseRedirect(request.path)
40 else:
41 form = UploadRSpecForm()
42
43 return simple.direct_to_template(
44 request,
45 template=TEMPLATE_PATH+"/home.html",
46 extra_context={
47 "form": form, "slice_urn": slice_urn, "slice": slice,
48 },
49 )
50
52 slice = get_object_or_404(Slice, pk=slice_id)
53 rspec = create_resv_rspec(request.user, slice)
54 response = HttpResponse(rspec, mimetype='application/force-download')
55 response['Content-Disposition'] = 'attachment; filename=resv_rspec.xml'
56 return response
57
59 adv_rspec = rspec.get_resources(None, True)
60 response = HttpResponse(adv_rspec, mimetype='application/force-download')
61 response['Content-Disposition'] = 'attachment; filename=adv_rspec.xml'
62 return response
63