123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- from django.db import models
- import base64
- import cgi
- try:
- import cPickle as pickle
- except ImportError:
- import pickle
- class Alert(models.Model):
- user = models.ForeignKey('users.User')
- date = models.DateTimeField()
- message = models.TextField()
- variables = models.TextField(null=True,blank=True)
-
- def vars(self):
- try:
- return pickle.loads(base64.decodestring(self.variables))
- except Exception:
- return {}
-
- def text(self, var, value):
- value = cgi.escape(value, True)
- try:
- self.vars_raw[var] = value
- except AttributeError:
- self.vars_raw = {var: value}
- return self
-
- def url(self, var, value, href, attrs=None):
- url = '<a href="%s"' % cgi.escape(href, True)
- if attrs:
- for k, v in attrs.iterator():
- url += ' %s="%s"' % (k, cgi.escape(v, True))
- url += '>%s</a>' % value
- try:
- self.vars_raw[var] = url
- except AttributeError:
- self.vars_raw = {var: url}
- return self
-
- def save_all(self, *args, **kwargs):
- self.save(force_insert=True)
- self.user.save(force_update=True)
-
- def save(self, *args, **kwargs):
- try:
- self.variables = base64.encodestring(pickle.dumps(self.vars_raw, pickle.HIGHEST_PROTOCOL))
- except AttributeError:
- self.variables = base64.encodestring(pickle.dumps({}, pickle.HIGHEST_PROTOCOL))
- super(Alert, self).save(*args, **kwargs)
- return self.user
|