@@ -55,20 +55,27 @@ def change_state(request, name, option=None):
5555 form = ChangeStateForm (request .POST )
5656 if form .is_valid ():
5757 clean = form .cleaned_data
58- if option == "initcharter" or option == "recharter" :
58+ charter_rev = charter .rev
59+
60+ if option in ("initcharter" , "recharter" ):
5961 charter_state = State .objects .get (type = "charter" , slug = "infrev" )
60- charter_rev = ""
62+ # make sure we have the latest revision set, if we
63+ # abandoned a charter before, we could have reset the
64+ # revision to latest approved
65+ prev_revs = charter .history_set .order_by ('-rev' )[:1 ]
66+ if prev_revs and prev_revs [0 ].rev > charter_rev :
67+ charter_rev = prev_revs [0 ].rev
68+
69+ if "-" not in charter_rev :
70+ charter_rev = charter_rev + "-00"
6171 elif option == "abandon" :
6272 if wg .state_id == "proposed" :
6373 charter_state = State .objects .get (type = "charter" , slug = "notrev" )
6474 else :
6575 charter_state = State .objects .get (type = "charter" , slug = "approved" )
66- charter_rev = approved_revision (charter .rev )
67- if charter_rev == "00" :
68- charter_rev = ""
76+ charter_rev = approved_revision (charter .rev )
6977 else :
7078 charter_state = clean ['charter_state' ]
71- charter_rev = charter .rev
7279
7380 comment = clean ['comment' ].rstrip ()
7481 message = clean ['message' ]
@@ -117,6 +124,8 @@ def change_state(request, name, option=None):
117124 e .desc = "Initial review time expires %s" % e .expires .strftime ("%Y-%m-%d" )
118125 e .save ()
119126
127+ if option in ("initcharter" , "recharter" ):
128+ return redirect ('charter_submit' , name = charter .name )
120129 return redirect ('doc_view' , name = charter .name )
121130 else :
122131 if option == "recharter" :
@@ -233,16 +242,16 @@ def submit(request, name):
233242
234243 login = request .user .get_profile ()
235244
236- if charter .rev == "" :
237- prev_revs = charter .history_set .exclude (rev = "" ).order_by ('-rev' ).values_list ('rev' , flat = True )
238- if prev_revs :
239- charter .rev = prev_revs [0 ]
245+ not_uploaded_yet = charter .rev .endswith ("-00" ) and not os .path .exists (os .path .join (settings .CHARTER_PATH , '%s-%s.txt' % (charter .canonical_name (), charter .rev )))
240246
241- # Search history for possible collisions with abandoned efforts
242- prev_revs = set (charter .history_set .order_by ('-time' ).values_list ('rev' , flat = True ))
243- next_rev = next_revision (charter .rev )
244- while next_rev in prev_revs :
245- next_rev = next_revision (next_rev )
247+ if not_uploaded_yet :
248+ next_rev = charter .rev
249+ else :
250+ # Search history for possible collisions with abandoned efforts
251+ prev_revs = list (charter .history_set .order_by ('-time' ).values_list ('rev' , flat = True ))
252+ next_rev = next_revision (charter .rev )
253+ while next_rev in prev_revs :
254+ next_rev = next_revision (next_rev )
246255
247256 if request .method == 'POST' :
248257 form = UploadForm (request .POST , request .FILES )
0 commit comments