|
1 | 1 | # -*- coding: utf-8 -*- |
| 2 | +from django.contrib.auth.decorators import login_required |
| 3 | +from django.core.urlresolvers import reverse |
| 4 | +from django.http import HttpResponse, Http404, HttpResponseRedirect |
2 | 5 | from django.shortcuts import render_to_response |
3 | 6 | from django.template import RequestContext |
4 | | -from django.http import HttpResponse |
5 | | -from django.contrib.auth.decorators import login_required |
6 | 7 | from django.template.loader import render_to_string |
7 | 8 | from django.utils import simplejson |
8 | 9 |
|
9 | | -from ietf.nomcom.utils import get_nomcom_by_year, HOME_TEMPLATE |
| 10 | +from ietf.dbtemplate.models import DBTemplate |
| 11 | +from ietf.dbtemplate.views import template_edit |
10 | 12 | from ietf.nomcom.decorators import member_required |
11 | | -from ietf.nomcom.forms import EditPublicKeyForm, NominateForm, MergeForm |
| 13 | +from ietf.nomcom.forms import (EditPublicKeyForm, NominateForm, MergeForm, |
| 14 | + NomComTemplateForm, PositionForm) |
12 | 15 | from ietf.nomcom.models import Position |
| 16 | +from ietf.nomcom.utils import get_nomcom_by_year, HOME_TEMPLATE |
13 | 17 |
|
14 | 18 |
|
15 | 19 | def index(request, year): |
@@ -151,6 +155,88 @@ def edit_publickey(request, year): |
151 | 155 | 'selected': 'edit_publickey'}, RequestContext(request)) |
152 | 156 |
|
153 | 157 |
|
| 158 | +@member_required(role='chair') |
| 159 | +def list_templates(request, year): |
| 160 | + nomcom = get_nomcom_by_year(year) |
| 161 | + positions = nomcom.position_set.all() |
| 162 | + template_list = DBTemplate.objects.filter(group=nomcom.group).exclude(path__contains='/position/') |
| 163 | + |
| 164 | + return render_to_response('nomcom/list_templates.html', |
| 165 | + {'template_list': template_list, |
| 166 | + 'positions': positions, |
| 167 | + 'year': year, |
| 168 | + 'selected': 'edit_templates', |
| 169 | + 'nomcom': nomcom}, RequestContext(request)) |
| 170 | + |
| 171 | + |
| 172 | +@member_required(role='chair') |
| 173 | +def edit_template(request, year, template_id): |
| 174 | + nomcom = get_nomcom_by_year(year) |
| 175 | + return_url = request.META.get('HTTP_REFERER', None) |
| 176 | + |
| 177 | + return template_edit(request, nomcom.group.acronym, template_id, |
| 178 | + base_template='nomcom/edit_template.html', |
| 179 | + formclass=NomComTemplateForm, |
| 180 | + extra_context={'year': year, |
| 181 | + 'return_url': return_url, |
| 182 | + 'nomcom': nomcom}) |
| 183 | + |
| 184 | + |
| 185 | +@member_required(role='chair') |
| 186 | +def list_positions(request, year): |
| 187 | + nomcom = get_nomcom_by_year(year) |
| 188 | + positions = nomcom.position_set.all() |
| 189 | + |
| 190 | + return render_to_response('nomcom/list_positions.html', |
| 191 | + {'positions': positions, |
| 192 | + 'year': year, |
| 193 | + 'selected': 'edit_positions', |
| 194 | + 'nomcom': nomcom}, RequestContext(request)) |
| 195 | + |
| 196 | + |
| 197 | +@member_required(role='chair') |
| 198 | +def remove_position(request, year, position_id): |
| 199 | + nomcom = get_nomcom_by_year(year) |
| 200 | + try: |
| 201 | + position = nomcom.position_set.get(id=position_id) |
| 202 | + except Position.DoesNotExist: |
| 203 | + raise Http404 |
| 204 | + |
| 205 | + if request.POST.get('remove', None): |
| 206 | + position.delete() |
| 207 | + return HttpResponseRedirect(reverse('nomcom_list_positions', None, args=(year, ))) |
| 208 | + return render_to_response('nomcom/remove_position.html', |
| 209 | + {'year': year, |
| 210 | + 'position': position, |
| 211 | + 'nomcom': nomcom}, RequestContext(request)) |
| 212 | + |
| 213 | + |
| 214 | +@member_required(role='chair') |
| 215 | +def edit_position(request, year, position_id=None): |
| 216 | + nomcom = get_nomcom_by_year(year) |
| 217 | + if position_id: |
| 218 | + try: |
| 219 | + position = nomcom.position_set.get(id=position_id) |
| 220 | + except Position.DoesNotExist: |
| 221 | + raise Http404 |
| 222 | + else: |
| 223 | + position = None |
| 224 | + |
| 225 | + if request.method == 'POST': |
| 226 | + form = PositionForm(request.POST, instance=position, nomcom=nomcom) |
| 227 | + if form.is_valid(): |
| 228 | + form.save() |
| 229 | + return HttpResponseRedirect(reverse('nomcom_list_positions', None, args=(year, ))) |
| 230 | + else: |
| 231 | + form = PositionForm(instance=position, nomcom=nomcom) |
| 232 | + |
| 233 | + return render_to_response('nomcom/edit_position.html', |
| 234 | + {'form': form, |
| 235 | + 'position': position, |
| 236 | + 'year': year, |
| 237 | + 'nomcom': nomcom}, RequestContext(request)) |
| 238 | + |
| 239 | + |
154 | 240 | def ajax_position_text(request, position_id): |
155 | 241 | try: |
156 | 242 | position_text = Position.objects.get(id=position_id).initial_text |
|
0 commit comments