* 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.template.defaultfilters import capfirst
from django import oldforms
from django import newforms as forms
from ietf.idtracker.views import InternetDraft
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 = (
(1, 'No License Required for 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)
address1 = models.CharField(blank=True, maxlength=255)
address2 = models.CharField(blank=True, maxlength=255)
telephone = models.CharField(maxlength=25)
fax = models.CharField(blank=True, maxlength=25)
telephone = InternationalPhoneNumberField(maxlength=25)
fax = InternationalPhoneNumberField(blank=True, maxlength=25)
email = models.EmailField(maxlength=255)
def __str__(self):
return self.name

View file

@ -83,7 +83,11 @@ def show(request, ipr_id=None):
ipr.discloser_identify = linebreaks(escape(ipr.discloser_identify))
ipr.comments = linebreaks(escape(ipr.comments))
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})
def update(request, ipr_id=None):

View file

@ -253,7 +253,7 @@
<td colspan="2"><i>
B. Does this disclosure relate to an unpublished pending patent
application?: </i>
<b>{{ ipr.get_selecttype_display }}</b>
<b>{{ ipr.selecttype }}</b>
</tr>
<tr>
<td colspan="2"><i>
@ -299,7 +299,7 @@
</tr>
<tr>
<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_b_sub_display }}
{{ ipr.get_lic_opt_c_sub_display }}</b>