]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/actions/user.py
Closes OSQA 175 and OSQA 318. Added a bunch of options to configure the email validat...
[osqa.git] / forum / actions / user.py
index f76a281368c13df8e9fee0ed99225307d8c3d610..8f225d2f9cea65436b54f9b2a13e9171340772cb 100644 (file)
@@ -1,5 +1,6 @@
 from django.utils.translation import ugettext as _
 from django.db.models import F
+from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned
 from forum.models.action import ActionProxy
 from forum.models import Award, Badge, ValidationHash
 from forum import settings
@@ -12,7 +13,7 @@ class UserJoinsAction(ActionProxy):
 
     def process_action(self):
         hash = ValidationHash.objects.create_new(self.user, 'email', [self.user.email])
-        send_template_email([self.user], "auth/email_validation.html", {'validation_code': hash})
+        send_template_email([self.user], "auth/welcome_email.html", {'validation_code': hash})
 
     def describe(self, viewer=None):
         return _("%(user)s %(have_has)s joined the %(app_name)s Q&A community") % {
@@ -94,7 +95,7 @@ class AwardAction(ActionProxy):
                 return Award.objects.get(user=user, badge=badge).action
             else:
                 return Award.objects.get(user=user, node=node, badge=badge).action
-        except:
+        except ObjectDoesNotExist:
             return None
 
     def describe(self, viewer=None):
@@ -102,4 +103,30 @@ class AwardAction(ActionProxy):
         'user': self.hyperlink(self.user.get_profile_url(), self.friendly_username(viewer, self.user)),
         'were_was': self.viewer_or_user_verb(viewer, self.user, _('were'), _('was')),
         'badge_name': self.award.badge.name,
+        }
+
+class SuspendAction(ActionProxy):
+    def process_data(self, **kwargs):
+        self.extra = kwargs
+
+    def process_action(self):
+        self.user.is_active = False
+        self.user.save()
+
+    def cancel_action(self):
+        self.user.is_active = True
+        self.user._pop_suspension_cache()
+        self.user.save()
+        self.user.message_set.create(message=_("Your suspension has been removed."))
+
+    def describe(self, viewer=None):
+        if self.extra.get('bantype', 'indefinitely') == 'forxdays' and self.extra.get('forxdays', None):
+            suspension = _("for %s days") % self.extra['forxdays']
+        else:
+            suspension = _("indefinetely")
+
+        return _("%(user)s %(were_was)s suspended %(suspension)s: %(msg)s") % {
+        'user': self.hyperlink(self.user.get_profile_url(), self.friendly_username(viewer, self.user)),
+        'were_was': self.viewer_or_user_verb(viewer, self.user, _('were'), _('was')),
+        'suspension': suspension, 'msg': self.extra.get('publicmsg', _('Bad behaviour'))
         }
\ No newline at end of file