tummy.com, ltd.

#!/usr/bin/python
#
#  Simple phone-number database module

import shelve
import string

UNKNOWN = 0
HOME = 1
WORK = 2
FAX = 3
CELL = 4

class phoneentry:
   def __init__(self, name = 'Unknown', number = 'Unknown',
         type = UNKNOWN):
      self.name = name
      self.number = number
      self.type = type

   #  create string representation
   def __repr__(self):
      return('%s:%d' % ( self.name, self.type ))

   #  fuzzy compare or two items
   def __cmp__(self, that):
      this = string.lower(str(self))
      that = string.lower(that)

      if string.find(this, that) >= 0:
         return(0)
      return(cmp(this, that))

   def showtype(self):
      if self.type == UNKNOWN: return('Unknown')
      if self.type == HOME: return('Home')
      if self.type == WORK: return('Work')
      if self.type == FAX: return('Fax')
      if self.type == CELL: return('Cellular')

class phonedb:
   def __init__(self, dbname = 'phonedata'):
      self.dbname = dbname
      self.shelve = shelve.open(self.dbname)

   def __del__(self):
      self.shelve.close()
      self.shelve = None

   def add(self, name, number, type = HOME):
      e = phoneentry(name, number, type)
      self.shelve[str(e)] = e

   def lookup(self, string):
      list = []
      for key in self.shelve.keys():
         e = self.shelve[key]
         if cmp(e, string) == 0:
            list.append(e)

      return(list)
      
#  if not being loaded as a module, run a small test
if __name__ == '__main__':
   foo = phonedb()
   foo.add('Sean Reifschneider', '970-555-1111', HOME)
   foo.add('Sean Reifschneider', '970-555-2222', CELL)
   foo.add('Evelyn Mitchell', '970-555-1111', HOME)

   print 'First lookup:'
   for entry in foo.lookup('reifsch'):
      print '%-40s %s (%s)' % ( entry.name, entry.number, entry.showtype() )
   print

   print 'Second lookup:'
   for entry in foo.lookup('e'):
      print '%-40s %s (%s)' % ( entry.name, entry.number, entry.showtype() )

Contact

Privacy Policy
Copyright © 1995-2003 tummy.com, ltd, All Rights Reserved
5400 Fossil Court North, Fort Collins, Colorado, USA, 80525
Last modified on 2004-06-07
Python programming makes us more efficient.