[Python-checkins] r56568 - tracker/instances/python-dev-spambayes-integration/extensions/spambayes.py

erik.forsberg python-checkins at python.org
Fri Jul 27 15:20:24 CEST 2007


Author: erik.forsberg
Date: Fri Jul 27 15:20:23 2007
New Revision: 56568

Modified:
   tracker/instances/python-dev-spambayes-integration/extensions/spambayes.py
Log:

Make sure only users with some roles may classify spam.

Added utility functions used from templates to check if an instance is
classified as spam, and if it may be shown or reclassified.


Modified: tracker/instances/python-dev-spambayes-integration/extensions/spambayes.py
==============================================================================
--- tracker/instances/python-dev-spambayes-integration/extensions/spambayes.py	(original)
+++ tracker/instances/python-dev-spambayes-integration/extensions/spambayes.py	Fri Jul 27 15:20:23 2007
@@ -60,9 +60,17 @@
         klass = self.db.getclass(self.classname)
         klass.set(self.nodeid, **props)
         self.db.commit()
+
+    def permission(self):
+        roles = set(self.db.user.get(self.userid, 'roles').lower().split(","))
+        allowed = set(self.db.config.detectors['SPAMBAYES_MAY_CLASSIFY'].lower().split(","))
+
+        if not bool(roles.intersection(allowed)):
+            raise Unauthorised("You do not have permission to train spambayes")
+        Action.permission(self)
             
 
-def is_spam(obj):
+def sb_is_spam(obj):
     cutoff_score = float(obj._db.config.detectors['SPAMBAYES_SPAM_CUTOFF'])
     try:
         score = obj['spambayes_score']
@@ -70,8 +78,34 @@
         return False
     return score >= cutoff_score
 
+def sb_is_view_ok(obj):
+    if not sb_is_spam(obj):
+        return True
+    roles = set(obj._db.user.get(obj._client.userid,
+                                 'roles').lower().split(","))
+    allowed = set(obj._db.config.detectors['SPAMBAYES_MAY_VIEW_SPAM'].lower().split(","))
+
+    return bool(roles.intersection(allowed))
+
+def sb_may_report_misclassified(obj):
+    roles = set(obj._db.user.get(obj._client.userid,
+                                 'roles').lower().split(","))
+    allowed = set(obj._db.config.detectors['SPAMBAYES_MAY_REPORT_MISCLASSIFIED'].lower().split(","))
+
+    return bool(roles.intersection(allowed))
+
+def sb_may_classify(obj):
+    roles = set(obj._db.user.get(obj._client.userid,
+                                 'roles').lower().split(","))
+    allowed = set(obj._db.config.detectors['SPAMBAYES_MAY_CLASSIFY'].lower().split(","))
+
+    return bool(roles.intersection(allowed))
 
 def init(instance):
     instance.registerAction("spambayes_classify", SpambayesClassify)
-    instance.registerUtil('is_spam', is_spam)
+    instance.registerUtil('sb_is_spam', sb_is_spam)
+    instance.registerUtil('sb_is_view_ok', sb_is_view_ok)
+    instance.registerUtil('sb_may_report_misclassified',
+                          sb_may_report_misclassified)
+    instance.registerUtil('sb_may_classify', sb_may_classify)
     


More information about the Python-checkins mailing list