Python
27 Oct 2009
 
 
 
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import urllib, urllib2
class SmsModel(object):
"""models.Model extender"""
prefix = 'get_payable_'
def __getattr__(self, name):
if (name.startswith(self.prefix)):
field = name[len(self.prefix):]
return self._get_payable(field)
else:
return object.__getattr__(self, name)
def smskey_init(self, key_id, request):
self.key_id = key_id
self.request = request
def _get_payable(self, field):
if (field in self.SmsKey.payable_fields):
try:
params = {'s_key' : self.key_id,
's_language' : self.request.GET.get('s_language', self.request.POST.get('s_language', '')),
's_pair' : self.request.GET.get('s_pair', self.request.POST.get('s_pair', '')),
's_ip' : self.request.META['REMOTE_ADDR'],
's_pure' : 1,
's_enc' : 'utf-8',
}
except Exception, message:
params = {}
opener = urllib2.Request("http://service.smscoin.com/key/?%s&s_url=%s%s" % (urllib.urlencode(params), self.request.META['HTTP_HOST'], urllib.quote("%s?%s" % (self.request.path, self.request.META['QUERY_STRING']))),
headers = {'User-agent': 'smscoin_key_1.0.6'})
try:
response = urllib2.urlopen(opener).read()
error = None
except:
response = ""
error = u"Can't connect to smscoin.com to check key."
if (response[:4] == 'true'):
return self.__dict__[field]
elif (error):
return error
else:
return response.decode('utf-8')
else:
raise KeyError('Field %s is not marked as payable' % field)