Delete all old WGAction stuff, it's superceded by the WG charter
support, clean up iesg/models.py a bit - Legacy-Id: 6411
This commit is contained in:
parent
77aa4723bf
commit
f6ff2a8082
|
@ -5,9 +5,5 @@ class TelechatAgendaItemAdmin(admin.ModelAdmin):
|
|||
pass
|
||||
admin.site.register(TelechatAgendaItem, TelechatAgendaItemAdmin)
|
||||
|
||||
class WGActionAdmin(admin.ModelAdmin):
|
||||
pass
|
||||
admin.site.register(WGAction, WGActionAdmin)
|
||||
|
||||
admin.site.register(TelechatDate)
|
||||
|
||||
|
|
|
@ -37,49 +37,6 @@ from django.conf import settings
|
|||
from ietf.idtracker.models import Acronym
|
||||
import datetime
|
||||
|
||||
# This table is not used by any code right now, and according to Glen,
|
||||
# probably not currently (Aug 2009) maintained by the secretariat.
|
||||
#class TelechatMinutes(models.Model):
|
||||
# telechat_date = models.DateField(null=True, blank=True)
|
||||
# telechat_minute = models.TextField(blank=True)
|
||||
# exported = models.IntegerField(null=True, blank=True)
|
||||
# def get_absolute_url(self):
|
||||
# return "/iesg/telechat/%d/" % self.id
|
||||
# def __str__(self):
|
||||
# return "IESG Telechat Minutes for %s" % self.telechat_date
|
||||
# class Meta:
|
||||
# db_table = 'telechat_minutes'
|
||||
# verbose_name = "Telechat Minute Text"
|
||||
# verbose_name_plural = "Telechat Minutes"
|
||||
|
||||
# this model is deprecated
|
||||
class TelechatDates(models.Model):
|
||||
date1 = models.DateField(primary_key=True, null=True, blank=True)
|
||||
date2 = models.DateField(null=True, blank=True)
|
||||
date3 = models.DateField(null=True, blank=True)
|
||||
date4 = models.DateField(null=True, blank=True)
|
||||
def dates(self):
|
||||
l = []
|
||||
if self.date1:
|
||||
l.append(self.date1)
|
||||
if self.date2:
|
||||
l.append(self.date2)
|
||||
if self.date3:
|
||||
l.append(self.date3)
|
||||
if self.date4:
|
||||
l.append(self.date4)
|
||||
return l
|
||||
|
||||
def save(self):
|
||||
# date1 isn't really a primary id, so save() doesn't work
|
||||
raise NotImplemented
|
||||
|
||||
def __str__(self):
|
||||
return " / ".join([str(d) for d in [self.date1,self.date2,self.date3,self.date4]])
|
||||
class Meta:
|
||||
db_table = "telechat_dates"
|
||||
verbose_name = "Next Telechat Date"
|
||||
|
||||
class TelechatAgendaItem(models.Model):
|
||||
TYPE_CHOICES = (
|
||||
(1, "Working Group News"),
|
||||
|
@ -98,34 +55,6 @@ class TelechatAgendaItem(models.Model):
|
|||
def __unicode__(self):
|
||||
type_name = self.TYPE_CHOICES_DICT.get(self.type, str(self.type))
|
||||
return u'%s: %s' % (type_name, self.title or "")
|
||||
class Meta:
|
||||
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
db_table = 'templates'
|
||||
|
||||
class WGAction(models.Model):
|
||||
CATEGORY_CHOICES = (
|
||||
(11, "WG Creation::In Internal Review"),
|
||||
(12, "WG Creation::Proposed for IETF Review"),
|
||||
(13, "WG Creation::Proposed for Approval"),
|
||||
(21, "WG Rechartering::In Internal Review"),
|
||||
(22, "WG Rechartering::Under evaluation for IETF Review"),
|
||||
(23, "WG Rechartering::Proposed for Approval")
|
||||
)
|
||||
# note that with the new schema, Acronym is monkey-patched and is really Group
|
||||
group_acronym = models.ForeignKey(Acronym, db_column='group_acronym_id', primary_key=True, unique=True)
|
||||
note = models.TextField(blank=True,null=True)
|
||||
status_date = models.DateField()
|
||||
agenda = models.BooleanField("On Agenda")
|
||||
token_name = models.CharField(max_length=25)
|
||||
category = models.IntegerField(db_column='pwg_cat_id', choices=CATEGORY_CHOICES, default=11)
|
||||
telechat_date = models.DateField() #choices = [(x.telechat_date,x.telechat_date) for x in Telechat.objects.all().order_by('-telechat_date')])
|
||||
def __str__(self):
|
||||
return str(self.telechat_date)+": "+str(self.group_acronym)
|
||||
class Meta:
|
||||
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
db_table = 'group_internal'
|
||||
ordering = ['-telechat_date']
|
||||
verbose_name = "WG Action"
|
||||
|
||||
class Telechat(models.Model):
|
||||
telechat_id = models.IntegerField(primary_key=True)
|
||||
|
@ -160,55 +89,3 @@ class TelechatDate(models.Model):
|
|||
|
||||
class Meta:
|
||||
ordering = ['-date']
|
||||
|
||||
class TelechatDatesProxyDummy(object):
|
||||
def all(self):
|
||||
class Dummy(object):
|
||||
def __getitem__(self, i):
|
||||
return self
|
||||
|
||||
def get_date(self, index):
|
||||
if not hasattr(self, "date_cache"):
|
||||
self.date_cache = TelechatDate.objects.active().order_by("date")
|
||||
|
||||
if index < len(self.date_cache):
|
||||
return self.date_cache[index].date
|
||||
return None
|
||||
|
||||
#date1 = models.DateField(primary_key=True, null=True, blank= True)
|
||||
@property
|
||||
def date1(self):
|
||||
return self.get_date(0)
|
||||
#date2 = models.DateField(null=True, blank=True)
|
||||
@property
|
||||
def date2(self):
|
||||
return self.get_date(1)
|
||||
#date3 = models.DateField(null=True, blank=True)
|
||||
@property
|
||||
def date3(self):
|
||||
return self.get_date(2)
|
||||
#date4 = models.DateField(null=True, blank=True)
|
||||
@property
|
||||
def date4(self):
|
||||
return self.get_date(3)
|
||||
|
||||
def dates(self):
|
||||
l = []
|
||||
if self.date1:
|
||||
l.append(self.date1)
|
||||
if self.date2:
|
||||
l.append(self.date2)
|
||||
if self.date3:
|
||||
l.append(self.date3)
|
||||
if self.date4:
|
||||
l.append(self.date4)
|
||||
return l
|
||||
|
||||
return Dummy()
|
||||
|
||||
class TelechatDatesProxy(object):
|
||||
objects = TelechatDatesProxyDummy()
|
||||
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
TelechatDatesOld = TelechatDates
|
||||
TelechatDates = TelechatDatesProxy
|
||||
|
|
|
@ -242,136 +242,6 @@ class RescheduleOnAgendaTests(django.test.TestCase):
|
|||
self.assertTrue(not draft.latest_event(TelechatDocEvent, "scheduled_for_telechat").returning_item)
|
||||
self.assertEquals(draft.docevent_set.count(), events_before + 1)
|
||||
|
||||
|
||||
class WorkingGroupActionsTestCaseREDESIGN(django.test.TestCase):
|
||||
def setUp(self):
|
||||
super(self.__class__, self).setUp()
|
||||
|
||||
curdir = os.path.dirname(os.path.abspath(__file__))
|
||||
self.evaldir = os.path.join(curdir, "tmp-testdir")
|
||||
os.mkdir(self.evaldir)
|
||||
|
||||
src = os.path.join(curdir, "fixtures", "sieve-charter.txt")
|
||||
shutil.copy(src, self.evaldir)
|
||||
|
||||
settings.IESG_WG_EVALUATION_DIR = self.evaldir
|
||||
|
||||
def tearDown(self):
|
||||
super(self.__class__, self).tearDown()
|
||||
shutil.rmtree(self.evaldir)
|
||||
|
||||
|
||||
def test_working_group_actions(self):
|
||||
make_test_data()
|
||||
|
||||
url = urlreverse('iesg_working_group_actions')
|
||||
login_testing_unauthorized(self, "secretary", url)
|
||||
|
||||
r = self.client.get(url)
|
||||
self.assertEquals(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
for wga in WGAction.objects.all():
|
||||
self.assertTrue(wga.group_acronym.name in r.content)
|
||||
|
||||
self.assertTrue('(sieve)' in r.content)
|
||||
|
||||
def test_delete_wgaction(self):
|
||||
make_test_data()
|
||||
|
||||
wga = WGAction.objects.all()[0]
|
||||
url = urlreverse('iesg_edit_working_group_action', kwargs=dict(wga_id=wga.pk))
|
||||
login_testing_unauthorized(self, "secretary", url)
|
||||
|
||||
r = self.client.post(url, dict(delete="1"))
|
||||
self.assertEquals(r.status_code, 302)
|
||||
self.assertTrue(not WGAction.objects.filter(pk=wga.pk))
|
||||
|
||||
def test_edit_wgaction(self):
|
||||
make_test_data()
|
||||
|
||||
wga = WGAction.objects.all()[0]
|
||||
url = urlreverse('iesg_edit_working_group_action', kwargs=dict(wga_id=wga.pk))
|
||||
login_testing_unauthorized(self, "secretary", url)
|
||||
|
||||
# normal get
|
||||
r = self.client.get(url)
|
||||
self.assertEquals(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertEquals(len(q('form select[name=token_name]')), 1)
|
||||
self.assertEquals(len(q('form select[name=telechat_date]')), 1)
|
||||
|
||||
# change
|
||||
dates = TelechatDate.objects.active()
|
||||
token_name = Person.objects.get(name="Ad No1").plain_name()
|
||||
old = wga.pk
|
||||
r = self.client.post(url, dict(status_date=dates[0].date.isoformat(),
|
||||
token_name=token_name,
|
||||
category="23",
|
||||
note="Testing.",
|
||||
telechat_date=dates[3].date.isoformat()))
|
||||
self.assertEquals(r.status_code, 302)
|
||||
|
||||
wga = WGAction.objects.get(pk=old)
|
||||
self.assertEquals(wga.status_date, dates[0].date)
|
||||
self.assertEquals(wga.token_name, token_name)
|
||||
self.assertEquals(wga.category, 23)
|
||||
self.assertEquals(wga.note, "Testing.")
|
||||
self.assertEquals(wga.telechat_date, dates[3].date)
|
||||
|
||||
def test_add_possible_wg(self):
|
||||
make_test_data()
|
||||
|
||||
url = urlreverse('iesg_working_group_actions')
|
||||
login_testing_unauthorized(self, "secretary", url)
|
||||
|
||||
r = self.client.post(url, dict(add="1",
|
||||
filename='sieve-charter.txt'))
|
||||
self.assertEquals(r.status_code, 302)
|
||||
|
||||
# now we got back a URL we can use for adding, but first make
|
||||
# sure we got a proposed group with the acronym
|
||||
group = Group.objects.create(
|
||||
name="Sieve test test",
|
||||
acronym="sieve",
|
||||
state_id="proposed",
|
||||
type_id="wg",
|
||||
parent=None
|
||||
)
|
||||
|
||||
add_url = r['Location']
|
||||
r = self.client.get(add_url)
|
||||
self.assertEquals(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertTrue('(sieve)' in r.content)
|
||||
self.assertEquals(len(q('form select[name=token_name]')), 1)
|
||||
self.assertEquals(q('form input[name=status_date]')[0].get("value"), "2010-05-07")
|
||||
self.assertEquals(len(q('form select[name=telechat_date]')), 1)
|
||||
|
||||
wgas_before = WGAction.objects.all().count()
|
||||
dates = TelechatDate.objects.active()
|
||||
token_name = Person.objects.get(name="Ad No1").plain_name()
|
||||
r = self.client.post(add_url,
|
||||
dict(status_date=dates[0].date.isoformat(),
|
||||
token_name=token_name,
|
||||
category="23",
|
||||
note="Testing.",
|
||||
telechat_date=dates[3].date.isoformat()))
|
||||
self.assertEquals(r.status_code, 302)
|
||||
self.assertEquals(wgas_before + 1, WGAction.objects.all().count())
|
||||
|
||||
def test_delete_possible_wg(self):
|
||||
make_test_data()
|
||||
|
||||
url = urlreverse('iesg_working_group_actions')
|
||||
login_testing_unauthorized(self, "secretary", url)
|
||||
|
||||
r = self.client.post(url, dict(delete="1",
|
||||
filename='sieve-charter.txt'))
|
||||
self.assertEquals(r.status_code, 200)
|
||||
|
||||
self.assertTrue('(sieve)' not in r.content)
|
||||
|
||||
|
||||
class IesgUrlTestCase(SimpleUrlTestCase):
|
||||
def testUrls(self):
|
||||
self.doTestUrls(__file__)
|
||||
|
|
|
@ -39,6 +39,7 @@ from ietf.iesg import views
|
|||
urlpatterns = patterns('',
|
||||
(r'^telechat/.*$', 'django.views.generic.simple.redirect_to', { 'url': 'http://www.ietf.org/iesg/minutes.html' }),
|
||||
(r'^ann/(?:ind|new|prev)/$', 'django.views.generic.simple.redirect_to', { 'url': "/iesg/decisions/", 'permanent': True }),
|
||||
(r'^telechatdates/$', 'django.views.generic.simple.redirect_to', { 'url': '/admin/iesg/telechatdate/' }),
|
||||
|
||||
(r'^decisions/(?:(?P<year>[0-9]{4})/)?$', views.review_decisions),
|
||||
(r'^agenda/(?:(?P<date>\d{4}-\d{2}-\d{2})/)?$', views.agenda),
|
||||
|
@ -47,13 +48,10 @@ urlpatterns = patterns('',
|
|||
(r'^agenda/(?:(?P<date>\d{4}-\d{2}-\d{2})/)?scribe_template.html$', views.agenda_scribe_template),
|
||||
(r'^agenda/(?:(?P<date>\d{4}-\d{2}-\d{2})/)?moderator_package.html$', views.agenda_moderator_package),
|
||||
(r'^agenda/(?:(?P<date>\d{4}-\d{2}-\d{2})/)?agenda_package.txt$', views.agenda_package),
|
||||
|
||||
(r'^agenda/documents.txt$', views.agenda_documents_txt),
|
||||
(r'^agenda/documents/$', views.agenda_documents),
|
||||
(r'^agenda/telechat-(?P<year>\d+)-(?P<month>\d+)-(?P<day>\d+)-docs.tgz', views.telechat_docs_tarfile),
|
||||
(r'^agenda/telechat-(?:(?P<date>\d{4}-\d{2}-\d{2})-)?docs.tgz', views.telechat_docs_tarfile),
|
||||
(r'^discusses/$', views.discusses),
|
||||
(r'^milestones/$', views.milestones_needing_review),
|
||||
(r'^telechatdates/$', 'django.views.generic.simple.redirect_to', { 'url': '/admin/iesg/telechatdate/' }),
|
||||
url(r'^wgactions/$', views.working_group_actions, name="iesg_working_group_actions"),
|
||||
url(r'^wgactions/add/$', views.edit_working_group_action, { 'wga_id': None }, name="iesg_add_working_group_action"),
|
||||
url(r'^wgactions/(?P<wga_id>\d+)/$', views.edit_working_group_action, name="iesg_edit_working_group_action"),
|
||||
)
|
||||
|
|
|
@ -46,8 +46,6 @@ from django.utils import simplejson as json
|
|||
from django import forms
|
||||
|
||||
from ietf.idtracker.models import IDInternal, InternetDraft, AreaGroup, Position, IESGLogin, Acronym
|
||||
|
||||
from ietf.iesg.models import TelechatDates, TelechatAgendaItem, WGAction
|
||||
from ietf.idrfc.idrfc_wrapper import IdWrapper, RfcWrapper
|
||||
|
||||
from ietf.iesg.models import TelechatDate, TelechatAgendaItem
|
||||
|
@ -436,162 +434,3 @@ def milestones_needing_review(request):
|
|||
),
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
def parse_wg_action_file(path):
|
||||
f = open(path, 'rU')
|
||||
|
||||
line = f.readline()
|
||||
while line and not line.strip():
|
||||
line = f.readline()
|
||||
|
||||
# name
|
||||
m = re.search(r'([^\(]*) \(', line)
|
||||
if not m:
|
||||
return None
|
||||
name = m.group(1)
|
||||
|
||||
# acronym
|
||||
m = re.search(r'\((\w+)\)', line)
|
||||
if not m:
|
||||
return None
|
||||
acronym = m.group(1)
|
||||
|
||||
# date
|
||||
line = f.readline()
|
||||
m = re.search(r'(\d{4})-(\d{2})-(\d{2})', line)
|
||||
while line and not m:
|
||||
line = f.readline()
|
||||
m = re.search(r'(\d{4})-(\d{2})-(\d{2})', line)
|
||||
|
||||
last_updated = None
|
||||
if m:
|
||||
try:
|
||||
last_updated = datetime.date(int(m.group(1)), int(m.group(2)), int(m.group(3)))
|
||||
except:
|
||||
pass
|
||||
|
||||
# token
|
||||
line = f.readline()
|
||||
while line and not 'area director' in line.lower():
|
||||
line = f.readline()
|
||||
|
||||
line = f.readline()
|
||||
line = f.readline()
|
||||
m = re.search(r'\s*(\w+)\s*', line)
|
||||
token = ""
|
||||
if m:
|
||||
token = m.group(1)
|
||||
|
||||
return dict(filename=os.path.basename(path), name=name, acronym=acronym,
|
||||
status_date=last_updated, token=token)
|
||||
|
||||
def get_possible_wg_actions():
|
||||
res = []
|
||||
charters = glob.glob(os.path.join(settings.IESG_WG_EVALUATION_DIR, '*-charter.txt'))
|
||||
for path in charters:
|
||||
d = parse_wg_action_file(path)
|
||||
if d:
|
||||
if not d['status_date']:
|
||||
d['status_date'] = datetime.date(1900,1,1)
|
||||
res.append(d)
|
||||
|
||||
res.sort(key=lambda x: x['status_date'])
|
||||
|
||||
return res
|
||||
|
||||
|
||||
@role_required('Area Director', 'Secretariat')
|
||||
def working_group_actions(request):
|
||||
current_items = WGAction.objects.order_by('status_date').select_related()
|
||||
|
||||
if request.method == 'POST' and has_role(request.user, 'Secretariat'):
|
||||
filename = request.POST.get('filename')
|
||||
if filename and filename in os.listdir(settings.IESG_WG_EVALUATION_DIR):
|
||||
if 'delete' in request.POST:
|
||||
os.unlink(os.path.join(settings.IESG_WG_EVALUATION_DIR, filename))
|
||||
if 'add' in request.POST:
|
||||
d = parse_wg_action_file(os.path.join(settings.IESG_WG_EVALUATION_DIR, filename))
|
||||
qstr = "?" + "&".join("%s=%s" % t for t in d.iteritems())
|
||||
return HttpResponseRedirect(urlreverse('iesg_add_working_group_action') + qstr)
|
||||
|
||||
|
||||
skip = [c.group_acronym.acronym for c in current_items]
|
||||
possible_items = filter(lambda x: x['acronym'] not in skip,
|
||||
get_possible_wg_actions())
|
||||
|
||||
return render_to_response("iesg/working_group_actions.html",
|
||||
dict(current_items=current_items,
|
||||
possible_items=possible_items),
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
class EditWGActionForm(forms.ModelForm):
|
||||
token_name = forms.ChoiceField(required=True)
|
||||
telechat_date = forms.TypedChoiceField(coerce=lambda x: datetime.datetime.strptime(x, '%Y-%m-%d').date(), empty_value=None, required=False)
|
||||
|
||||
class Meta:
|
||||
model = WGAction
|
||||
fields = ['status_date', 'token_name', 'category', 'note']
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(self.__class__, self).__init__(*args, **kwargs)
|
||||
|
||||
# token name choices
|
||||
self.fields['token_name'].choices = [("", "(None)")] + [(p.plain_name(), p.plain_name()) for p in IESGLogin.active_iesg().order_by('first_name')]
|
||||
|
||||
# telechat choices
|
||||
dates = TelechatDates.objects.all()[0].dates()
|
||||
init = kwargs['initial']['telechat_date']
|
||||
if init and init not in dates:
|
||||
dates.insert(0, init)
|
||||
|
||||
choices = [("", "(not on agenda)")]
|
||||
for d in dates:
|
||||
choices.append((d, d.strftime("%Y-%m-%d")))
|
||||
|
||||
self.fields['telechat_date'].choices = choices
|
||||
|
||||
|
||||
@role_required('Secretariat')
|
||||
def edit_working_group_action(request, wga_id):
|
||||
if wga_id != None:
|
||||
wga = get_object_or_404(WGAction, pk=wga_id)
|
||||
else:
|
||||
wga = WGAction()
|
||||
try:
|
||||
wga.group_acronym = Acronym.objects.get(acronym=request.GET.get('acronym'))
|
||||
except Acronym.DoesNotExist:
|
||||
pass
|
||||
|
||||
wga.token_name = request.GET.get('token')
|
||||
try:
|
||||
d = datetime.datetime.strptime(request.GET.get('status_date'), '%Y-%m-%d').date()
|
||||
except:
|
||||
d = datetime.date.today()
|
||||
wga.status_date = d
|
||||
wga.telechat_date = TelechatDates.objects.all()[0].date1
|
||||
wga.agenda = True
|
||||
|
||||
initial = dict(telechat_date=wga.telechat_date if wga.agenda else None)
|
||||
|
||||
if request.method == 'POST':
|
||||
if "delete" in request.POST:
|
||||
wga.delete()
|
||||
return HttpResponseRedirect(urlreverse('iesg_working_group_actions'))
|
||||
|
||||
form = EditWGActionForm(request.POST, instance=wga, initial=initial)
|
||||
if form.is_valid():
|
||||
form.save(commit=False)
|
||||
wga.agenda = bool(form.cleaned_data['telechat_date'])
|
||||
if wga.category in (11, 21):
|
||||
wga.agenda = False
|
||||
if wga.agenda:
|
||||
wga.telechat_date = form.cleaned_data['telechat_date']
|
||||
wga.save()
|
||||
return HttpResponseRedirect(urlreverse('iesg_working_group_actions'))
|
||||
else:
|
||||
form = EditWGActionForm(instance=wga, initial=initial)
|
||||
|
||||
|
||||
return render_to_response("iesg/edit_working_group_action.html",
|
||||
dict(wga=wga,
|
||||
form=form),
|
||||
context_instance=RequestContext(request))
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from django.core.urlresolvers import reverse
|
||||
from django.test import TestCase
|
||||
|
||||
from ietf.iesg.models import TelechatDate, TelechatAgendaItem, WGAction
|
||||
from ietf.iesg.models import TelechatDate, TelechatAgendaItem
|
||||
from ietf.person.models import Person
|
||||
from ietf.utils.test_data import make_test_data
|
||||
|
||||
|
|
|
@ -45,16 +45,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
<li><a href="{% url ietf.iesg.views.agenda_documents %}">Next Telechat</a></li>
|
||||
<li><a href="{% url ietf.iesg.views.discusses %}">Discusses</a></li>
|
||||
<li><a href="{% url ietf.iesg.views.milestones_needing_review %}">Milestones</a></li>
|
||||
{# FIXME: this link should be removed when the old WG Actions are completely dead #}
|
||||
<li><a href="{% url ietf.iesg.views.working_group_actions %}">Working Groups</a></li>
|
||||
{% endif %}
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
<li class="sect">Secretariat</li>
|
||||
<li><a href="/admin/iesg/telechatdate/">Telechat Dates</a></li>
|
||||
<li><a href="/admin/iesg/telechatagendaitem/">Management Items</a></li>
|
||||
<li><a href="{% url ietf.iesg.views.milestones_needing_review %}">Milestones</a></li>
|
||||
{# FIXME: this link should be removed when the old WG Actions are completely dead #}
|
||||
<li><a href="{% url ietf.iesg.views.working_group_actions %}">Working Groups</a></li>
|
||||
<li><a href="{% url ietf.sync.views.discrepancies %}">Sync discrepancies</a>
|
||||
{% endif %}
|
||||
{% streams_menu %}
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Edit Working Group Action {{ wga.group_acronym.name }}{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
form table th {
|
||||
vertical-align: top;
|
||||
text-align: left;
|
||||
font-weight: normal;
|
||||
padding-top: 3px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% load ietf_filters %}
|
||||
|
||||
<h1>{{ wga.group_acronym.name }} ({{ wga.group_acronym.acronym }})</h1>
|
||||
|
||||
<form action="" method="POST">
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
</table>
|
||||
|
||||
<div class="actions">
|
||||
<a href="{% url iesg_working_group_actions %}">Back</a>
|
||||
<input type="submit" value="Save"/>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
{% endblock %}
|
|
@ -1,68 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Working Group Actions{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
.working-group-action .name,
|
||||
.working-group-action .edit {
|
||||
padding-left: 10px;
|
||||
}
|
||||
.working-group-action form input {
|
||||
margin-left: 10px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% load ietf_filters %}
|
||||
<h1>Working Group Actions</h1>
|
||||
|
||||
<p>These are the submitted WG descriptions and milestones for all
|
||||
Proposed Working Groups and recharter submissions, along with
|
||||
whatever status information is available.</p>
|
||||
|
||||
<p>NOTE: Explicit direction by the AD is required to add the group to
|
||||
an IESG Telechat agenda.</p>
|
||||
|
||||
<h2>Current Items</h2>
|
||||
|
||||
<table>
|
||||
{% for wga in current_items %}
|
||||
<tr class="working-group-action">
|
||||
<td>{{ wga.status_date|date:"Y, M d" }}</td>
|
||||
<td class="name">{{ wga.group_acronym.name }} ({{ wga.group_acronym.acronym }})</td>
|
||||
{% if user|in_group:"Secretariat" %}
|
||||
<td class="edit">
|
||||
<form action="{% url iesg_edit_working_group_action wga_id=wga.pk %}" method="POST">
|
||||
<a href="{% url iesg_edit_working_group_action wga_id=wga.pk %}">Edit</a>
|
||||
<input type="submit" name="delete" value="Delete"/>
|
||||
</form>
|
||||
</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
<h2>Possible Items</h2>
|
||||
|
||||
<table>
|
||||
{% for wga in possible_items %}
|
||||
<tr class="working-group-action">
|
||||
<td>{{ wga.status_date|date:"Y, M d" }}</td>
|
||||
<td class="name">{{ wga.name }} ({{ wga.acronym }})</td>
|
||||
{% if user|in_group:"Secretariat" %}
|
||||
<td class="edit">
|
||||
<form action="{% url iesg_working_group_actions %}" method="POST">
|
||||
<input type="hidden" name="filename" value="{{ wga.filename }}">
|
||||
<input type="submit" name="add" value="Add"/>
|
||||
<input class="permanent-delete" type="submit" name="delete" value="Delete permanently"/>
|
||||
</form>
|
||||
</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
||||
{% block content_end %}
|
||||
<script type="text/javascript" src="/js/working-group-actions.js"></script>
|
||||
{% endblock %}
|
|
@ -1,7 +1,7 @@
|
|||
from django.conf import settings
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from ietf.iesg.models import TelechatDate, WGAction
|
||||
from ietf.iesg.models import TelechatDate
|
||||
from ietf.ipr.models import IprDetail, IprDocAlias
|
||||
from ietf.meeting.models import Meeting
|
||||
from ietf.doc.models import *
|
||||
|
@ -98,15 +98,6 @@ def make_test_data():
|
|||
)
|
||||
group.charter = charter
|
||||
group.save()
|
||||
WGAction.objects.create(
|
||||
pk=group.pk,
|
||||
note="",
|
||||
status_date=datetime.date.today(),
|
||||
agenda=1,
|
||||
token_name="Aread",
|
||||
category=13,
|
||||
telechat_date=date2
|
||||
)
|
||||
|
||||
# persons
|
||||
|
||||
|
|
Loading…
Reference in a new issue