Skip to content
Snippets Groups Projects
Commit a0208664 authored by Tanner Prestegard's avatar Tanner Prestegard Committed by GraceDB
Browse files

Improve display for contacts and notifications in web views

parent 7d3138f8
No related branches found
No related tags found
No related merge requests found
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()
......@@ -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}),
}
......
......@@ -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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment