Skip to content

Commit 9613186

Browse files
committed
Move name parsing to separate file
- Legacy-Id: 3424
1 parent 12b8024 commit 9613186

2 files changed

Lines changed: 24 additions & 21 deletions

File tree

redesign/person/models.py

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
from django.db import models
44
from django.contrib.auth.models import User
55

6+
from redesign.person.name import name_parts
7+
68
class PersonInfo(models.Model):
79
time = models.DateTimeField(auto_now_add=True) # When this Person record entered the system
810
name = models.CharField(max_length=255, db_index=True) # The normal unicode form of the name. This must be
@@ -14,29 +16,10 @@ class PersonInfo(models.Model):
1416

1517
def __unicode__(self):
1618
return self.name
17-
def _parts(self, name):
18-
prefix, first, middle, last, suffix = "", "", "", "", ""
19-
parts = name.split()
20-
if parts[0] in ["Mr", "Mr.", "Mrs", "Mrs.", "Ms", "Ms.", "Miss", "Dr.", "Doctor", "Prof", "Prof.", "Professor", "Sir", "Lady", "Dame", ]:
21-
prefix = parts[0];
22-
parts = parts[1:]
23-
if len(parts) > 2:
24-
if parts[-1] in ["Jr", "Jr.", "II", "2nd", "III", "3rd", ]:
25-
suffix = parts[-1]
26-
parts = parts[:-1]
27-
if len(parts) > 2:
28-
first = parts[0]
29-
last = parts[-1]
30-
middle = " ".join(parts[1:-1])
31-
elif len(parts) == 2:
32-
first, last = parts
33-
else:
34-
last = parts[0]
35-
return prefix, first, middle, last, suffix
3619
def name_parts(self):
37-
return self._parts(self.name)
20+
return name_parts(self.name)
3821
def ascii_parts(self):
39-
return self._parts(self.ascii)
22+
return name_parts(self.ascii)
4023
def short(self):
4124
if self.ascii_short:
4225
return self.ascii_short

redesign/person/name.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
def name_parts(name):
2+
prefix, first, middle, last, suffix = "", "", "", "", ""
3+
parts = name.split()
4+
if parts[0] in ["Mr", "Mr.", "Mrs", "Mrs.", "Ms", "Ms.", "Miss", "Dr.", "Doctor", "Prof", "Prof.", "Professor", "Sir", "Lady", "Dame"]:
5+
prefix = parts[0];
6+
parts = parts[1:]
7+
if len(parts) > 2:
8+
if parts[-1] in ["Jr", "Jr.", "II", "2nd", "III", "3rd", ]:
9+
suffix = parts[-1]
10+
parts = parts[:-1]
11+
if len(parts) > 2:
12+
first = parts[0]
13+
last = parts[-1]
14+
middle = " ".join(parts[1:-1])
15+
elif len(parts) == 2:
16+
first, last = parts
17+
else:
18+
last = parts[0]
19+
return prefix, first, middle, last, suffix
20+

0 commit comments

Comments
 (0)