|
@@ -0,0 +1,51 @@
|
|
|
|
+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
|