From 7fbee21584aea2e901b736b0958adb8151a36acc Mon Sep 17 00:00:00 2001 From: Luke Faraone Date: Thu, 6 Dec 2012 17:43:15 -0500 Subject: [PATCH] Factor out Message() creation for internal use into separate function. (imported from commit 0352010da4255fc74cd67835e04dbdb1f8bbf4e9) --- zephyr/handlers.py | 15 +++++---------- zephyr/models.py | 13 +++++++++++++ zephyr/views.py | 23 ++++++++--------------- 3 files changed, 26 insertions(+), 25 deletions(-) diff --git a/zephyr/handlers.py b/zephyr/handlers.py index 0258be6e41..b5d31cb7fb 100644 --- a/zephyr/handlers.py +++ b/zephyr/handlers.py @@ -21,14 +21,8 @@ class AdminHumbugHandler(logging.Handler): def emit(self, record): # We have to defer imports to avoid circular imports in settings.py. from zephyr.models import Message, UserProfile, Recipient, \ - create_stream_if_needed, get_client, do_send_message + create_stream_if_needed, get_client, internal_send_message from django.conf import settings - message = Message() - message.sender = UserProfile.objects.get(user__email="humbug+errors@humbughq.com") - message.recipient = Recipient.objects.get(type_id=create_stream_if_needed( - message.sender.realm, "devel").id, type=Recipient.STREAM) - message.pub_date = now() - message.sending_client = get_client("Internal") try: request = record.request @@ -47,15 +41,16 @@ class AdminHumbugHandler(logging.Handler): ) request = None request_repr = "Request repr() unavailable." - message.subject = self.format_subject(subject) + subject = self.format_subject(subject) if record.exc_info: stack_trace = '\n'.join(traceback.format_exception(*record.exc_info)) else: stack_trace = 'No stack trace available' - message.content = "~~~~ pytb\n%s\n\n%s\n~~~~" % (stack_trace, request_repr) - do_send_message(message) + internal_send_message("humbug+errors@humbughq.com", + Recipient.STREAM, "devel", subject, + "~~~~ pytb\n%s\n\n%s\n~~~~" % (stack_trace, request_repr)) def format_subject(self, subject): """ diff --git a/zephyr/models.py b/zephyr/models.py index ad39d26851..abb4ec0912 100644 --- a/zephyr/models.py +++ b/zephyr/models.py @@ -548,6 +548,19 @@ def do_send_message(message, no_log=False): rendered = simplejson.dumps(rendered), users = simplejson.dumps([str(user.id) for user in recipients]))) +def internal_send_message(sender_email, recipient_type, recipient_name, + subject, content): + message = Message() + message.sender = UserProfile.objects.get(user__email=sender_email) + message.recipient = Recipient.objects.get(type_id=create_stream_if_needed( + message.sender.realm, recipient_name).id, type=recipient_type) + message.subject = subject + message.content = content + message.pub_date = timezone.now() + message.sending_client = get_client("Internal") + + do_send_message(message) + class Subscription(models.Model): user_profile = models.ForeignKey(UserProfile) recipient = models.ForeignKey(Recipient) diff --git a/zephyr/views.py b/zephyr/views.py index 1716c3e080..21e28b2b5a 100644 --- a/zephyr/views.py +++ b/zephyr/views.py @@ -16,7 +16,7 @@ from zephyr.models import Message, UserProfile, Stream, Subscription, \ do_activate_user, add_default_subs, do_create_user, do_send_message, \ create_mit_user_if_needed, create_stream_if_needed, StreamColor, \ PreregistrationUser, get_client, MitUser, User, UserActivity, \ - log_subscription_property_change + log_subscription_property_change, internal_send_message from zephyr.forms import RegistrationForm, HomepageForm, is_unique, \ is_active from django.views.decorators.csrf import csrf_exempt @@ -96,21 +96,14 @@ def accounts_register(request): user = do_create_user(email, password, realm, full_name, short_name) add_default_subs(user) - message = Message() - message.sender = UserProfile.objects.get(user__email="humbug+signups@humbughq.com") - message.recipient = Recipient.objects.get(type_id=create_stream_if_needed( - message.sender.realm, "signups").id, type=Recipient.STREAM) - message.subject = realm.domain - message.content = "%s <`%s`> just signed up for Humbug! (total: **%i**)" % ( - full_name, - email, - UserProfile.objects.filter(realm=realm, user__is_active=True).count(), + internal_send_message("humbug+signups@humbughq.com", + Recipient.STREAM, "signups", realm.domain, + "%s <`%s`> just signed up for Humbug! (total: **%i**)" % ( + full_name, + email, + UserProfile.objects.filter(realm=realm, user__is_active=True).count(), + ) ) - message.pub_date = now() - message.sending_client = get_client("Internal") - - do_send_message(message) - login(request, authenticate(username=email, password=password)) return HttpResponseRedirect(reverse('zephyr.views.home'))