11# Copyright The IETF Trust 2007, All Rights Reserved
2-
2+ import curses
33import datetime
44import os
55import re
1212from django import forms
1313from django .shortcuts import render_to_response , redirect
1414from django .http import HttpResponse , HttpResponseRedirect , HttpResponseForbidden , Http404
15+ from django .contrib import messages
1516from django .core .urlresolvers import reverse
1617from django .db .models import Q
1718from django .template import RequestContext
@@ -88,6 +89,9 @@ def get_user_agent(request):
8889 user_agent = ""
8990 return user_agent
9091
92+ def ascii_alphanumeric (string ):
93+ return re .match (r'^[a-zA-Z0-9]*$' , string )
94+
9195class SaveAsForm (forms .Form ):
9296 savename = forms .CharField (max_length = 16 )
9397
@@ -99,25 +103,30 @@ def agenda_create(request, num=None, owner=None, name=None):
99103
100104 if schedule is None :
101105 # here we have to return some ajax to display an error.
102- raise Http404 ("No meeting information for meeting %s owner %s schedule %s available" % (num , owner , name ))
106+ messages .error ("Error: No meeting information for meeting %s owner %s schedule %s available" % (num , owner , name ))
107+ return redirect (edit_agenda , num = num , owner = owner , name = name )
103108
104109 # authorization was enforced by the @group_require decorator above.
105110
106111 saveasform = SaveAsForm (request .POST )
107112 if not saveasform .is_valid ():
108- return HttpResponse (status = 404 )
113+ messages .info (request , "This name is not valid. Please choose another one." )
114+ return redirect (edit_agenda , num = num , owner = owner , name = name )
109115
110116 savedname = saveasform .cleaned_data ['savename' ]
111117
112- if not savedname .isalnum ():
113- return HttpResponse ("Asked to save with invalid name" , status = 404 )
118+ if not ascii_alphanumeric (savedname ):
119+ messages .info (request , "This name contains illegal characters. Please choose another one." )
120+ return redirect (edit_agenda , num = num , owner = owner , name = name )
114121
115122 # create the new schedule, and copy the scheduledsessions
116123 try :
117124 sched = meeting .schedule_set .get (name = savedname , owner = request .user .person )
118125 if sched :
119- # XXX needs to record a session error and redirect to where?
120126 return redirect (edit_agenda , meeting .number , sched .name )
127+ else :
128+ messages .info (request , "Agenda creation failed. Please try again." )
129+ return redirect (edit_agenda , num = num , owner = owner , name = name )
121130
122131 except Schedule .DoesNotExist :
123132 pass
0 commit comments