~ubuntu-branches/ubuntu/utopic/gozerbot/utopic

« back to all changes in this revision

Viewing changes to debian/gozerbot/usr/lib/python2.5/site-packages/gozerbot/persiststate.py

  • Committer: Bazaar Package Importer
  • Author(s): Jeremy Malcolm
  • Date: 2009-09-14 09:00:29 UTC
  • mfrom: (1.1.4 upstream) (3.1.5 sid)
  • Revision ID: james.westby@ubuntu.com-20090914090029-uval0ekt72kmklxw
Tags: 0.9.1.3-3
Changed dependency on python-setuptools to python-pkg-resources
(Closes: #546435) 

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# gozerbot/persiststate.py
2
 
#
3
 
#
4
 
 
5
 
""" persistent state classes """
6
 
 
7
 
__copyright__ = 'this file is in the public domain'
8
 
 
9
 
from gozerbot.generic import calledfrom
10
 
from gozerbot.persist import Persist
11
 
from gozerbot.datadir import datadir
12
 
import types, os, sys
13
 
 
14
 
class PersistState(Persist):
15
 
 
16
 
    """ base persitent state class """
17
 
 
18
 
    def __init__(self, filename):
19
 
        Persist.__init__(self, filename, {})
20
 
        self.types = dict((i, type(j)) for i, j in self.data.iteritems())
21
 
 
22
 
    def __getitem__(self, key):
23
 
        """ get state item """
24
 
        return self.data[key]
25
 
 
26
 
    def __setitem__(self, key, value):
27
 
        """ set state item """
28
 
        self.data[key] = value
29
 
 
30
 
    def define(self, key, value):
31
 
        """ define a state item """
32
 
        if not self.data.has_key(key) or type(value) != self.types[key]:
33
 
            if type(value) == types.StringType:
34
 
                value = unicode(value)
35
 
            if type(value) == types.IntType:
36
 
                value = long(value)
37
 
            self.data[key] = value
38
 
 
39
 
class PlugState(PersistState):
40
 
 
41
 
    """ state for plugins """
42
 
 
43
 
    def __init__(self):
44
 
        PersistState.__init__(self, datadir + os.sep + calledfrom(sys._getframe()))
45
 
 
46
 
class UserState(PersistState):
47
 
 
48
 
    """ state for users """
49
 
 
50
 
    def __init__(self, username):
51
 
        PersistState.__init__(self, datadir + os.sep + 'userstates' + os.sep + \
52
 
username)