diff --git a/ietf/liaisons/admin.py b/ietf/liaisons/admin.py index d0626aa54..23956e37d 100644 --- a/ietf/liaisons/admin.py +++ b/ietf/liaisons/admin.py @@ -1,10 +1,19 @@ from django.contrib import admin +from django.core.urlresolvers import reverse from ietf.liaisons.models import LiaisonStatement + class LiaisonStatementAdmin(admin.ModelAdmin): list_display = ['id', 'title', 'from_name', 'to_name', 'submitted', 'purpose', 'related_to'] list_display_links = ['id', 'title'] ordering = ('title', ) - raw_id_fields = ('from_contact', 'related_to', 'from_group', 'to_group', 'attachments') + raw_id_fields = ('from_contact', 'attachments') + filter_horizontal = ('from_groups', 'to_groups') + + def related_to(self, obj): + return '
'.join(['%s' % (reverse('admin:liaisons_liaisonstatement_change', None, (i.target.id, )), str(i.target)) for i in obj.source_of_set.select_related('target').all()]) + related_to.allow_tags = True + + admin.site.register(LiaisonStatement, LiaisonStatementAdmin) diff --git a/ietf/liaisons/forms.py b/ietf/liaisons/forms.py index fcb77862e..d17918d27 100644 --- a/ietf/liaisons/forms.py +++ b/ietf/liaisons/forms.py @@ -497,6 +497,7 @@ class SearchLiaisonForm(forms.Form): results = LiaisonStatement.objects.filter(state__slug='approved').extra( select={ '_submitted': 'SELECT time FROM liaisons_liaisonstatementevent WHERE liaisons_liaisonstatement.id = liaisons_liaisonstatementevent.statement_id AND liaisons_liaisonstatementevent.type_id = "submit"', + '_awaiting_action': 'SELECT count(*) FROM liaisons_liaisonstatement_tags WHERE liaisons_liaisonstatement.id = liaisons_liaisonstatement_tags.liaisonstatement_id AND liaisons_liaisonstatement_tags.liaisonstatementtagname_id = "required"', 'from_concat': 'SELECT GROUP_CONCAT(name SEPARATOR ", ") FROM group_group JOIN liaisons_liaisonstatement_from_groups WHERE liaisons_liaisonstatement.id = liaisons_liaisonstatement_from_groups.liaisonstatement_id AND liaisons_liaisonstatement_from_groups.group_id = group_group.id', 'to_concat': 'SELECT GROUP_CONCAT(name SEPARATOR ", ") FROM group_group JOIN liaisons_liaisonstatement_to_groups WHERE liaisons_liaisonstatement.id = liaisons_liaisonstatement_to_groups.liaisonstatement_id AND liaisons_liaisonstatement_to_groups.group_id = group_group.id', }) diff --git a/ietf/liaisons/models.py b/ietf/liaisons/models.py index 572d1488f..7eb94c940 100644 --- a/ietf/liaisons/models.py +++ b/ietf/liaisons/models.py @@ -69,6 +69,12 @@ class LiaisonStatement(models.Model): def action_taken(self): return bool(self.tags.filter(slug='taken').count()) + @property + def awaiting_action(self): + if getattr(self, '_awaiting_action', None) != None: + return bool(self._awaiting_action) + return bool(self.tags.filter(slug='awaiting').count()) + class LiaisonStatementAttachments(models.Model): statement = models.ForeignKey(LiaisonStatement) diff --git a/ietf/templates/liaisons/liaison_table.html b/ietf/templates/liaisons/liaison_table.html index ca03884f7..d2e5f303b 100644 --- a/ietf/templates/liaisons/liaison_table.html +++ b/ietf/templates/liaisons/liaison_table.html @@ -24,6 +24,7 @@ {% endif %} + {% if liaison.awaiting_action %}Action needed{% endif %} {{ liaison.deadline|default:"-"|date:"Y-m-d" }} diff --git a/ietf/templates/liaisons/overview.html b/ietf/templates/liaisons/overview.html index 7953e1888..164c90270 100644 --- a/ietf/templates/liaisons/overview.html +++ b/ietf/templates/liaisons/overview.html @@ -38,8 +38,25 @@