diff --git a/gracedb/alerts/fields.py b/gracedb/alerts/fields.py index 57cac85ed51bbaad084439fc9802b5dc1e1a8c83..434f68ff867c0f04da4a19d42b3aa25b7e741aba 100644 --- a/gracedb/alerts/fields.py +++ b/gracedb/alerts/fields.py @@ -1,6 +1,7 @@ import phonenumbers from django.db import models +from django import forms from .validators import validate_phone @@ -32,3 +33,8 @@ class PhoneNumberField(models.CharField): phone = phonenumbers.parse(value, 'US') return phonenumbers.format_number(phone, getattr(phonenumbers.PhoneNumberFormat, self.format)) + + +class ContactMultipleChoiceField(forms.ModelMultipleChoiceField): + def label_from_instance(self, obj): + return obj.display() diff --git a/gracedb/alerts/forms.py b/gracedb/alerts/forms.py index 7b501d2a53ecb61e0f17dfed899151e4763c097a..ef05d2d606240114f1a190b5e09f80aab7bcbe28 100644 --- a/gracedb/alerts/forms.py +++ b/gracedb/alerts/forms.py @@ -16,6 +16,7 @@ from django.utils.translation import ugettext_lazy as _ from core.forms import MultipleForm from events.models import Group, Search, Label +from .fields import ContactMultipleChoiceField from .models import Notification, Contact from .utils import parse_label_query @@ -31,6 +32,8 @@ class BaseNotificationForm(forms.ModelForm): Base model for Notification forms. Should not be used on its own (essentially an abstract model) """ + contacts = ContactMultipleChoiceField(queryset=Contact.objects.all(), + required=False, widget=forms.widgets.SelectMultiple(attrs={'size': 6})) class Meta: model = Notification fields = ['description'] # dummy placeholder @@ -63,7 +66,6 @@ class BaseNotificationForm(forms.ModelForm): '< 3.0 M<sub>sun</sub>.'), } widgets = { - 'contacts': forms.widgets.SelectMultiple(attrs={'size': 5}), 'far_threshold': forms.widgets.TextInput(), 'labels': forms.widgets.SelectMultiple(attrs={'size': 8}), } diff --git a/gracedb/alerts/models.py b/gracedb/alerts/models.py index 95f8b258663b33dad053adb0a568dd1a96b783b2..3d992fb5d1761bdb3ed3ddc570b04ac9ad44af72 100644 --- a/gracedb/alerts/models.py +++ b/gracedb/alerts/models.py @@ -52,8 +52,8 @@ class Contact(CleanSaveModel): verification_expiration = models.DateTimeField(null=True, editable=False) - def __unicode__(self): - return u"{0}: {1}".format(self.user.username, self.description) + def __str__(self): + return "{0}: {1}".format(self.user.username, self.description) def clean(self): # Mostly used for preventing creation of bad Contact @@ -251,6 +251,6 @@ class Notification(models.Model): # Add contacts output += ' -> {contacts}' kwargs['contacts'] = \ - ", ".join([c.description for c in self.contacts.all()]) + ", ".join([c.display() for c in self.contacts.all()]) return output.format(**kwargs)