1+ from urlparse import urljoin
2+
13from django .utils import simplejson as json
24from dajaxice .core import dajaxice_functions
35from dajaxice .decorators import dajaxice_register
810
911from ietf .ietfauth .decorators import group_required , has_role
1012from ietf .name .models import TimeSlotTypeName
11- from django .http import HttpResponseRedirect , HttpResponse , Http404 , QueryDict , Http403
13+ from django .http import HttpResponseRedirect , HttpResponse , Http404 , QueryDict
1214
1315from ietf .meeting .helpers import get_meeting , get_schedule , get_schedule_by_id , agenda_permissions
1416from ietf .meeting .views import edit_timeslots , edit_agenda
@@ -56,7 +58,7 @@ def readonly(request, meeting_num, schedule_id):
5658 return json .dumps (
5759 {'secretariat' : secretariat ,
5860 'write_perm' : write_perm ,
59- 'owner_href' : schedule .owner .url ( request . get_host_protocol ()),
61+ 'owner_href' : request . build_absolute_uri ( schedule .owner .json_url ()),
6062 'read_only' : read_only })
6163
6264@group_required ('Area Director' ,'Secretariat' )
@@ -73,7 +75,7 @@ def update_timeslot(request, schedule_id, session_id, scheduledsession_id=None,
7375 cansee ,canedit = agenda_permissions (meeting , schedule , request .user )
7476
7577 if not canedit :
76- raise Http403
78+ # raise Exception("Not permitted")
7779 return json .dumps ({'error' :'no permission' })
7880
7981 session_id = int (session_id )
@@ -136,7 +138,7 @@ def update_timeslot_purpose(request, timeslot_id=None, purpose=None):
136138 timeslot .type = timeslottypename
137139 timeslot .save ()
138140
139- return json .dumps (timeslot .json_dict (request .get_host_protocol ))
141+ return json .dumps (timeslot .json_dict (request .build_absolute_uri ( '/' ) ))
140142
141143#############################################################################
142144## ROOM API
@@ -149,7 +151,7 @@ def timeslot_roomlist(request, mtg):
149151 rooms = mtg .room_set .all ()
150152 json_array = []
151153 for room in rooms :
152- json_array .append (room .json_dict (request .get_host_protocol ))
154+ json_array .append (room .json_dict (request .build_absolute_uri ( '/' ) ))
153155 return HttpResponse (json .dumps (json_array ),
154156 mimetype = "application/json" )
155157
@@ -199,7 +201,7 @@ def timeslot_roomurl(request, num=None, roomid=None):
199201
200202 if request .method == 'GET' :
201203 room = get_object_or_404 (meeting .room_set , pk = roomid )
202- return HttpResponse (json .dumps (room .json_dict (request .get_host_protocol ( ))),
204+ return HttpResponse (json .dumps (room .json_dict (request .build_absolute_uri ( '/' ))),
203205 mimetype = "application/json" )
204206 elif request .method == 'PUT' :
205207 return timeslot_updroom (request , meeting )
@@ -216,7 +218,7 @@ def timeslot_slotlist(request, mtg):
216218 slots = mtg .timeslot_set .all ()
217219 json_array = []
218220 for slot in slots :
219- json_array .append (slot .json_dict (request .get_host_protocol ( )))
221+ json_array .append (slot .json_dict (request .build_absolute_uri ( '/' )))
220222 return HttpResponse (json .dumps (json_array ),
221223 mimetype = "application/json" )
222224
@@ -267,7 +269,7 @@ def timeslot_sloturl(request, num=None, slotid=None):
267269
268270 if request .method == 'GET' :
269271 slot = get_object_or_404 (meeting .timeslot_set , pk = slotid )
270- return HttpResponse (json .dumps (slot .json_dict (request .get_host_protocol ( ))),
272+ return HttpResponse (json .dumps (slot .json_dict (request .build_absolute_uri ( '/' ))),
271273 mimetype = "application/json" )
272274 elif request .method == 'PUT' :
273275 # not yet implemented!
@@ -287,7 +289,7 @@ def agenda_list(request, mtg):
287289 agendas = mtg .schedule_set .all ()
288290 json_array = []
289291 for agenda in agendas :
290- json_array .append (agenda .json_dict (request .get_host_protocol ))
292+ json_array .append (agenda .json_dict (request .build_absolute_uri ( '/' ) ))
291293 return HttpResponse (json .dumps (json_array ),
292294 mimetype = "application/json" )
293295
@@ -355,7 +357,7 @@ def agenda_update(request, meeting, schedule):
355357 meeting .save ()
356358
357359 if "HTTP_ACCEPT" in request .META and "application/json" in request .META ['HTTP_ACCEPT' ]:
358- return HttpResponse (json .dumps (schedule .json_dict (request .get_host_protocol ( ))),
360+ return HttpResponse (json .dumps (schedule .json_dict (request .build_absolute_uri ( '/' ))),
359361 mimetype = "application/json" )
360362 else :
361363 return HttpResponseRedirect (
@@ -390,7 +392,7 @@ def agenda_infourl(request, num=None, schedule_name=None):
390392 #log.debug("results in agenda: %u / %s" % (schedule.id, request.method))
391393
392394 if request .method == 'GET' :
393- return HttpResponse (json .dumps (schedule .json_dict (request .get_host_protocol ( ))),
395+ return HttpResponse (json .dumps (schedule .json_dict (request .build_absolute_uri ( '/' ))),
394396 mimetype = "application/json" )
395397 elif request .method == 'PUT' :
396398 return agenda_update (request , meeting , schedule )
@@ -404,7 +406,7 @@ def agenda_infourl(request, num=None, schedule_name=None):
404406#############################################################################
405407
406408def meeting_get (request , meeting ):
407- return HttpResponse (json .dumps (meeting .json_dict (request .get_host_protocol ( )),
409+ return HttpResponse (json .dumps (meeting .json_dict (request .build_absolute_uri ( '/' )),
408410 sort_keys = True , indent = 2 ),
409411 mimetype = "application/json" )
410412
@@ -458,7 +460,7 @@ def session_json(request, num, sessionid):
458460 except Session .DoesNotExist :
459461 return json .dumps ({'error' :"no such session %s" % sessionid })
460462
461- sess1 = session .json_dict (request .get_host_protocol ( ))
463+ sess1 = session .json_dict (request .build_absolute_uri ( '/' ))
462464 return HttpResponse (json .dumps (sess1 , sort_keys = True , indent = 2 ),
463465 mimetype = "application/json" )
464466
@@ -473,7 +475,7 @@ def session_constraints(request, num, sessionid):
473475 except Session .DoesNotExist :
474476 return json .dumps ({"error" :"no such session" })
475477
476- constraint_list = session .constraints_dict (request .get_host_protocol ( ))
478+ constraint_list = session .constraints_dict (request .build_absolute_uri ( '/' ))
477479
478480 json_str = json .dumps (constraint_list ,
479481 sort_keys = True , indent = 2 ),
0 commit comments