66from django .db .models import Q
77from django .views .generic .list_detail import object_detail , object_list
88from ietf .idtracker .models import InternetDraft , IDInternal , IDState , IDSubState , Rfc
9- from ietf .idtracker .forms import EmailFeedback
9+ from ietf .idtracker .forms import IDSearch , EmailFeedback
1010from ietf .utils .mail import send_mail_text
1111
1212# Override default form field mappings
@@ -22,51 +22,51 @@ def myfields(f):
2222 return f .formfield ()
2323
2424def search (request ):
25- # todo: check if these field names work for backwards
26- # compatability
27- InternetDraftForm = forms . models . form_for_model ( InternetDraft , formfield_callback = myfields )
28- idform = InternetDraftForm ( request . REQUEST )
29- InternalForm = forms . models . form_for_model ( IDInternal , formfield_callback = myfields )
30- form = InternalForm ( request . REQUEST )
25+ # for compatability with old tracker form, which has
26+ # "all substates" = 6.
27+ args = request . REQUEST
28+ if args . get ( 'sub_state_id' , '' ) == '6' :
29+ args [ 'sub_state_id' ] = '0'
30+ form = IDSearch ( args )
3131 # if there's a post, do the search and supply results to the template
3232 searching = False
3333 # filename, rfc_number, group searches are seperate because
3434 # they can't be represented as simple searches in the data model.
3535 qdict = {
36- 'job_owner' : 'job_owner' ,
37- 'cur_state' : 'cur_state' ,
38- 'cur_sub_state' : 'cur_sub_state' ,
39- 'area_acronym' : 'area_acronym' ,
40- 'note' : 'note__icontains' ,
36+ 'search_job_owner' : 'job_owner' ,
37+ 'search_cur_state' : 'cur_state' ,
38+ 'sub_state_id' : 'cur_sub_state' ,
39+ 'search_area_acronym' : 'area_acronym' ,
4140 }
4241 q_objs = []
43- for k in qdict .keys () + ['group ' , 'rfc_number ' , 'filename ' ]:
44- if request . REQUEST .has_key (k ):
42+ for k in qdict .keys () + ['search_group_acronym ' , 'search_rfcnumber ' , 'search_filename' , 'search_status_id ' ]:
43+ if args .has_key (k ):
4544 searching = True
46- if request . REQUEST [k ] != '' and qdict .has_key (k ):
47- q_objs .append (Q (** {qdict [k ]: request . REQUEST [k ]}))
45+ if args [k ] != '' and qdict .has_key (k ):
46+ q_objs .append (Q (** {qdict [k ]: args [k ]}))
4847 if searching :
49- group = request . REQUEST . get ('group ' , '' )
48+ group = args . get ('search_group_acronym ' , '' )
5049 if group != '' :
5150 rfclist = [rfc .rfc_number for rfc in Rfc .objects .all ().filter (group_acronym = group )]
5251 draftlist = [draft .id_document_tag for draft in InternetDraft .objects .all ().filter (group__acronym = group )]
5352 q_objs .append (Q (draft__in = draftlist )& Q (rfc_flag = 0 )| Q (draft__in = rfclist )& Q (rfc_flag = 1 ))
54- rfc_number = request . REQUEST . get ('rfc_number ' , '' )
53+ rfc_number = args . get ('search_rfcnumber ' , '' )
5554 if rfc_number != '' :
5655 draftlist = [draft .id_document_tag for draft in InternetDraft .objects .all ().filter (rfc_number = rfc_number )]
5756 q_objs .append (Q (draft__in = draftlist )& Q (rfc_flag = 0 )| Q (draft = rfc_number )& Q (rfc_flag = 1 ))
58- filename = request . REQUEST . get ('filename ' , '' )
57+ filename = args . get ('search_filename ' , '' )
5958 if filename != '' :
60- draftlist = [draft .id_document_tag for draft in InternetDraft .objects .all ().filter (filename__icontains = filename )]
61- q_objs .append (Q (draft__in = draftlist ,rfc_flag = 0 ))
59+ q_objs .append (Q (draft__filename__icontains = filename ,rfc_flag = 0 ))
60+ status = args .get ('search_status_id' , '' )
61+ if status != '' :
62+ q_objs .append (Q (draft__status = status ,rfc_flag = 0 ))
6263 matches = IDInternal .objects .all ().filter (* q_objs ).filter (primary_flag = 1 )
6364 matches = matches .order_by ('cur_state' , 'cur_sub_state_id' )
6465 else :
6566 matches = None
6667
6768 return render_to_response ('idtracker/idtracker_search.html' , {
6869 'form' : form ,
69- 'idform' : idform ,
7070 'matches' : matches ,
7171 'searching' : searching ,
7272 }, context_instance = RequestContext (request ))
0 commit comments