1515
1616import debug # pyflakes:ignore
1717
18- from ietf .doc .models import Document , DocAlias , DocTagName , DocTypeName , DocEvent , State , save_document_in_history
19- from ietf .doc .utils import get_tags_for_stream_id
18+ from ietf .doc .models import Document , DocAlias , DocTagName , DocTypeName , DocEvent , State
19+ from ietf .doc .models import NewRevisionDocEvent , save_document_in_history
20+ from ietf .doc .utils import get_tags_for_stream_id , add_state_change_event
2021from ietf .group .models import ( Group , Role , GroupEvent , GroupHistory , GroupStateName ,
2122 GroupStateTransitions , GroupTypeName , GroupURL , ChangeStateGroupEvent )
2223from ietf .group .utils import (save_group_in_history , can_manage_group_type , can_manage_materials ,
@@ -471,6 +472,7 @@ def __init__(self, *args, **kwargs):
471472 if action == "new" :
472473 self .fields ["state" ].widget = forms .HiddenInput ()
473474 self .fields ["state" ].queryset = self .fields ["state" ].queryset .filter (slug = "active" )
475+ self .fields ["state" ].initial = self .fields ["state" ].queryset [0 ].pk
474476 else :
475477 self .fields ["title" ].initial = doc .title
476478 self .fields ["state" ].initial = doc .get_state ().pk if doc .get_state () else None
@@ -504,6 +506,10 @@ def edit_material(request, acronym, action="new", name=None, group_type=None):
504506 else :
505507 d = existing
506508
509+ prev_rev = d .rev
510+ prev_title = d .title
511+ prev_state = d .get_state ()
512+
507513 d .title = form .cleaned_data ["title" ]
508514 d .time = datetime .datetime .now ()
509515
@@ -529,16 +535,23 @@ def edit_material(request, acronym, action="new", name=None, group_type=None):
529535
530536 d .save ()
531537
532- # FIXME: missing edit title event
538+ if not existing or prev_rev != d .rev :
539+ e = NewRevisionDocEvent (type = "new_revision" , doc = d , rev = d .rev )
540+ e .time = d .time
541+ e .by = request .user .person
542+ e .desc = "New version available: <b>%s-%s</b>" % (d .name , d .rev )
543+ e .save ()
544+
545+ if prev_title != d .title :
546+ e = DocEvent (doc = d , by = request .user .person , type = 'changed_document' )
547+ e .desc = u"Changed title to <b>%s</b>" % d .title
548+ if prev_title :
549+ e .desc += u" from %s" % prev_title
550+ e .time = d .time
551+ e .save ()
533552
534- # FIXME: missing changed state event
535553 d .set_state (form .cleaned_data ["state" ])
536-
537- # FIXME: wrong, should be new revision event
538- DocEvent .objects .create (doc = d ,
539- by = request .user .person ,
540- type = 'uploaded' ,
541- desc = "Uploaded material" )
554+ add_state_change_event (d , request .user .person , prev_state , form .cleaned_data ["state" ])
542555
543556 return redirect ("group_materials" , acronym = group .acronym )
544557 else :
0 commit comments