* More logic moved to ipr/views.py.

* Added InternationalPhoneNumberField to ipr/models.py
  Probably should be moved to a common model class file.
 - Legacy-Id: 106
This commit is contained in:
Henrik Levkowetz 2007-05-06 22:09:52 +00:00
parent e8980df65f
commit 26a97835a5
3 changed files with 40 additions and 5 deletions

View file

@ -1,7 +1,38 @@
import re
from django.db import models from django.db import models
from django.template.defaultfilters import capfirst
from django import oldforms
from django import newforms as forms
from ietf.idtracker.views import InternetDraft from ietf.idtracker.views import InternetDraft
from ietf.idtracker.models import Rfc from ietf.idtracker.models import Rfc
# ------------------------------------------------------------------------
# New field classes
phone_re = re.compile(r'^\+?[0-9 ]*(\([0-9]+\))?[0-9 -]+$')
class InternationalPhoneNumberField(models.PhoneNumberField):
error_message = 'Phone numbers may have a leading "+", and otherwise only contain numbers [0-9], dash, space, and parentheses. '
def validate(self, field_data, all_data):
if not phone_re.search(field_data):
raise ValidationError, self.error_message + ' "%s" is invalid.' % field_data
def clean(self, value):
if value in EMPTY_VALUES:
return u''
self.validate(value, {})
return smart_unicode(value)
def formfield(self, **kwargs):
defaults = {'required': not self.blank, 'label': capfirst(self.verbose_name),
'help_text': self.help_text,
'error_message': self.error_message + "Enter a valid phone number."}
defaults.update(kwargs)
return forms.RegexField(phone_re, **defaults)
# ------------------------------------------------------------------------
# Models
LICENSE_CHOICES = ( LICENSE_CHOICES = (
(1, 'No License Required for Implementers.'), (1, 'No License Required for Implementers.'),
(2, 'Royalty-Free, Reasonable and Non-Discriminatory License to All Implementers.'), (2, 'Royalty-Free, Reasonable and Non-Discriminatory License to All Implementers.'),
@ -126,8 +157,8 @@ class IprContact(models.Model):
department = models.CharField(blank=True, maxlength=255) department = models.CharField(blank=True, maxlength=255)
address1 = models.CharField(blank=True, maxlength=255) address1 = models.CharField(blank=True, maxlength=255)
address2 = models.CharField(blank=True, maxlength=255) address2 = models.CharField(blank=True, maxlength=255)
telephone = models.CharField(maxlength=25) telephone = InternationalPhoneNumberField(maxlength=25)
fax = models.CharField(blank=True, maxlength=25) fax = InternationalPhoneNumberField(blank=True, maxlength=25)
email = models.EmailField(maxlength=255) email = models.EmailField(maxlength=255)
def __str__(self): def __str__(self):
return self.name return self.name

View file

@ -83,7 +83,11 @@ def show(request, ipr_id=None):
ipr.discloser_identify = linebreaks(escape(ipr.discloser_identify)) ipr.discloser_identify = linebreaks(escape(ipr.discloser_identify))
ipr.comments = linebreaks(escape(ipr.comments)) ipr.comments = linebreaks(escape(ipr.comments))
ipr.other_notes = linebreaks(escape(ipr.other_notes)) ipr.other_notes = linebreaks(escape(ipr.other_notes))
opt = ipr.licensing_option
ipr.licensing_option = dict(models.LICENSE_CHOICES)[ipr.licensing_option]
ipr.selecttype = dict(models.SELECT_CHOICES)[ipr.selecttype]
if ipr.selectowned:
ipr.selectowned = dict(models.SELECT_CHOICES)[ipr.selectowned]
return render("ipr/details.html", {"ipr": ipr, "section_list": section_list}) return render("ipr/details.html", {"ipr": ipr, "section_list": section_list})
def update(request, ipr_id=None): def update(request, ipr_id=None):

View file

@ -253,7 +253,7 @@
<td colspan="2"><i> <td colspan="2"><i>
B. Does this disclosure relate to an unpublished pending patent B. Does this disclosure relate to an unpublished pending patent
application?: </i> application?: </i>
<b>{{ ipr.get_selecttype_display }}</b> <b>{{ ipr.selecttype }}</b>
</tr> </tr>
<tr> <tr>
<td colspan="2"><i> <td colspan="2"><i>
@ -299,7 +299,7 @@
</tr> </tr>
<tr> <tr>
<td> </td><td> <td> </td><td>
<b>{{ ipr.get_licensing_option_display }}<br/> <b>{{ ipr.licensing_option }}<br/>
{{ ipr.get_lic_opt_a_sub_display }} {{ ipr.get_lic_opt_a_sub_display }}
{{ ipr.get_lic_opt_b_sub_display }} {{ ipr.get_lic_opt_b_sub_display }}
{{ ipr.get_lic_opt_c_sub_display }}</b> {{ ipr.get_lic_opt_c_sub_display }}</b>