121 lines
4.4 KiB
Python
121 lines
4.4 KiB
Python
# Create your views here.
|
|
from django.http import HttpResponse,HttpResponseRedirect
|
|
from django import newforms as forms
|
|
from django.template import RequestContext, Context, loader
|
|
from django.shortcuts import get_object_or_404, render_to_response
|
|
from django.db.models import Q
|
|
from django.views.generic.list_detail import object_detail
|
|
from ietf.idtracker.models import InternetDraft, IDInternal, IDState, IDSubState
|
|
|
|
# Override default form field mappings
|
|
# group_acronym: CharField(max_length=10)
|
|
# note: CharField(max_length=100)
|
|
def myfields(f):
|
|
if f.name == "group":
|
|
return forms.CharField(max_length=10,
|
|
widget=forms.TextInput(attrs={'size': 5}))
|
|
if f.name == "note":
|
|
return forms.CharField(max_length=100,
|
|
widget=forms.TextInput(attrs={'size': 100}))
|
|
return f.formfield()
|
|
|
|
def search(request):
|
|
InternetDraftForm = forms.models.form_for_model(InternetDraft, formfield_callback=myfields)
|
|
idform = InternetDraftForm(request.POST)
|
|
InternalForm = forms.models.form_for_model(IDInternal, formfield_callback=myfields)
|
|
form = InternalForm(request.POST)
|
|
t = loader.get_template('idtracker/idtracker_search.html')
|
|
# if there's a post, do the search and supply results to the template
|
|
if request.method == 'POST':
|
|
qdict = { 'filename': 'draft__filename__contains',
|
|
'job_owner': 'job_owner',
|
|
'group': 'draft__group__acronym',
|
|
'cur_state': 'cur_state',
|
|
'cur_sub_state': 'cur_sub_state',
|
|
'rfc_number': 'draft__rfc_number',
|
|
'area_acronym': 'area_acronym',
|
|
'note': 'note__contains',
|
|
}
|
|
q_objs = [Q(**{qdict[k]: request.POST[k]})
|
|
for k in qdict.keys()
|
|
if request.POST[k] != '']
|
|
matches = IDInternal.objects.all().filter(*q_objs)
|
|
# matches = IDInternal.objects.all()
|
|
# if request.POST['filename']:
|
|
# matches = matches.filter(draft__filename__contains=request.POST["filename"])
|
|
# if request.POST['job_owner']:
|
|
# matches = matches.filter(job_owner=request.POST['job_owner'])
|
|
# if request.POST['group']:
|
|
# matches = matches.filter(draft__group__acronym=request.POST['group_acronym'])
|
|
# if request.POST['cur_state']:
|
|
# matches = matches.filter(cur_state=request.POST['cur_state'])
|
|
# if request.POST['cur_sub_state']:
|
|
# matches = matches.filter(cur_sub_state=request.POST['cur_sub_state'])
|
|
# if request.POST['rfc_number']:
|
|
# matches = matches.filter(draft__rfc_number=request.POST['rfc_number'])
|
|
# if request.POST['area_acronym']:
|
|
# matches = matches.filter(area_acronym=request.POST['area_acronym'])
|
|
# if request.POST['note']:
|
|
# matches = matches.filter(note__contains=request.POST['note'])
|
|
matches = matches.order_by('cur_state', 'cur_sub_state_id')
|
|
else:
|
|
matches = None
|
|
|
|
c = RequestContext(request, {
|
|
'form': form,
|
|
'idform': idform,
|
|
'matches': matches,
|
|
})
|
|
return HttpResponse(t.render(c))
|
|
|
|
def edit_idinternal(request, id=None):
|
|
#draft = InternetDraft.objects.get(pk=id)
|
|
draft = get_object_or_404(InternetDraft.objects, pk=id)
|
|
IDEntryForm = forms.models.form_for_instance(draft)
|
|
# todo: POST handling for idform
|
|
idform = IDEntryForm()
|
|
idinternal = draft.idinternal()
|
|
if idinternal:
|
|
EntryForm = forms.models.form_for_instance(idinternal)
|
|
if request.method == 'POST':
|
|
form = EntryForm(request.POST)
|
|
if form.is_valid():
|
|
form.save()
|
|
return HttpResponseRedirect("/") # really want here
|
|
else:
|
|
form = EntryForm()
|
|
else:
|
|
form = None
|
|
|
|
t = loader.get_template('idtracker/idtracker_edit.html')
|
|
|
|
c = RequestContext(request, {
|
|
'form': form,
|
|
'idform': idform,
|
|
'draft': draft,
|
|
})
|
|
return HttpResponse(t.render(c))
|
|
|
|
def state_desc(request, state, is_substate=0):
|
|
if int(state) == 100:
|
|
object = {
|
|
'state': 'I-D Exists',
|
|
'description': """
|
|
Initial (default) state for all internet drafts. Such documents are
|
|
not being tracked by the IESG as no request has been made of the
|
|
IESG to do anything with the document.
|
|
"""
|
|
}
|
|
elif is_substate:
|
|
sub = get_object_or_404(IDSubState, pk=state)
|
|
object = { 'state': sub.sub_state, 'description': sub.description }
|
|
else:
|
|
object = get_object_or_404(IDState, pk=state)
|
|
return render_to_response('idtracker/state_desc.html', {'state': object},
|
|
context_instance=RequestContext(request))
|
|
|
|
def comment(request, slug, object_id, queryset):
|
|
draft = get_object_or_404(InternetDraft, filename=slug)
|
|
queryset = queryset.filter(document=draft.id_document_tag)
|
|
return object_detail(request, queryset=queryset, object_id=object_id)
|