def get_success_url(self): # Send instant notifications print("Get success url") if (not hasattr(settings, 'CONVERSATION_ENABLE_NOTIFICATIONS') or settings.CONVERSATION_ENABLE_NOTIFICATIONS): for user in self.object.users.exclude(pk=self.user.pk): if (hasattr(user, 'disable_conversation_notifications') and user.disable_conversation_notifications): continue send_email( None, { 'user': user, 'conversations': [self.object], }, 'conversation/email/message_digest_subject.html', 'conversation/email/message_digest_body.html', # settings.FROM_EMAIL, self.user.email, recipients=[ user.email, ], priority='medium', ) self.object.notified.add(user) print("before redirecting") print(self.request) self.request.session['_old_post'] = self.request.POST return reverse('conversation_update', kwargs={'pk': 999})
def save(self, *args, **kwargs): self.instance.source = self.source self.instance.referer = self.referer self.instance.current_referer = self.current_referer self.instance.verification_token = uuid.uuid4() self.instance = super(NewsletterSignupForm, self).save(*args, **kwargs) if settings.VERIFICATION_REQUIRED: # ATM this email only serves verification purposes and is not for # mere confirmation if callable(settings.SUBSCRIBE_SUBJECT): subject = settings.SUBSCRIBE_SUBJECT(self.instance) else: # pragma: no cover subject = settings.SUBSCRIBE_SUBJECT extra_context = { 'subscription': self.instance, 'subject': subject, } send_email( self.request, extra_context, 'newsletter_signup/email/subscribe_subject.html', 'newsletter_signup/email/subscribe_body.html', settings.FROM_EMAIL, [self.instance.email], ) return self.instance
def send_error_email(self, serverlog): context = { "server": serverlog.server, "subject": u"{0} {1} - {2}".format(serverlog.status, serverlog.status_code, serverlog.server.name), "status": serverlog, } send_email( {}, context, "server_guardian/email/email_subject.html", "server_guardian/email/warning_email_body.html", settings.FROM_EMAIL, [admin[1] for admin in settings.ADMINS], )
def send_error_email(self, serverlog): context = { 'server': serverlog.server, 'subject': u'{0} {1} - {2}'.format( serverlog.status, serverlog.status_code, serverlog.server.name ), 'status': serverlog, } send_email( {}, context, 'server_guardian/email/email_subject.html', 'server_guardian/email/warning_email_body.html', settings.FROM_EMAIL, [admin[1] for admin in settings.ADMINS], )
def handle_noargs(self, **options): if (not hasattr(settings, 'CONVERSATION_ENABLE_DIGEST') or settings.CONVERSATION_ENABLE_DIGEST): # Get unread conversations, which hasn't been read for one day unread_conversations = Conversation.objects.filter( unread_by__isnull=False, read_by_all__lt=now() - timedelta(days=1)) users = get_user_model().objects.filter( pk__in=unread_conversations.values_list( 'unread_by')).distinct() count = 0 for user in users: if (hasattr(user, 'disable_conversation_notifications') and user.disable_conversation_notifications): continue unread = unread_conversations.filter( unread_by__in=[user]).exclude(notified__in=[user]) if unread: count += 1 send_email( None, { 'user': user, 'conversations': unread, 'digest': True, }, 'conversation/email/message_digest_subject.html', 'conversation/email/message_digest_body.html', settings.FROM_EMAIL, recipients=[ user.email, ], priority='medium', ) for conversation in unread: conversation.notified.add(user) print('Sent {0} digest(s).'.format(count)) else: print('Digest disabled.')
def get_success_url(self): # Send instant notifications if (not hasattr(settings, 'CONVERSATION_ENABLE_NOTIFICATIONS') or settings.CONVERSATION_ENABLE_NOTIFICATIONS): for user in self.object.users.exclude(pk=self.user.pk): if (hasattr(user, 'disable_conversation_notifications') and user.disable_conversation_notifications): continue send_email( None, { 'user': user, 'conversations': [self.object], }, 'conversation/email/message_digest_subject.html', 'conversation/email/message_digest_body.html', settings.FROM_EMAIL, recipients=[user.email, ], priority='medium', ) self.object.notified.add(user) return reverse('conversation_update', kwargs={'pk': self.object.pk})
def handle_noargs(self, **options): if (not hasattr(settings, 'CONVERSATION_ENABLE_DIGEST') or settings.CONVERSATION_ENABLE_DIGEST): # Get unread conversations, which hasn't been read for one day unread_conversations = Conversation.objects.filter( unread_by__isnull=False, read_by_all__lt=now() - timedelta(days=1)) users = get_user_model().objects.filter( pk__in=unread_conversations.values_list( 'unread_by')).distinct() count = 0 for user in users: if (hasattr(user, 'disable_conversation_notifications') and user.disable_conversation_notifications): continue unread = unread_conversations.filter( unread_by__in=[user]).exclude(notified__in=[user]) if unread: count += 1 send_email( None, { 'user': user, 'conversations': unread, 'digest': True, }, 'conversation/email/message_digest_subject.html', 'conversation/email/message_digest_body.html', settings.FROM_EMAIL, recipients=[user.email, ], priority='medium', ) for conversation in unread: conversation.notified.add(user) print('Sent {0} digest(s).'.format(count)) else: print('Digest disabled.')
def form_valid(self, form): self.object = form.instance if settings.VERIFICATION_REQUIRED: # if no verification was required to signup, then no verification # is required to unsubscribe if callable(settings.UNSUBSCRIBE_SUBJECT): subject = settings.UNSUBSCRIBE_SUBJECT(self.object) else: # pragma: no cover subject = settings.UNSUBSCRIBE_SUBJECT extra_context = { 'subscription': self.object, 'subject': subject, } send_email( self.request, extra_context, 'newsletter_signup/email/unsubscribe_subject.html', 'newsletter_signup/email/unsubscribe_body.html', settings.FROM_EMAIL, [self.object.email], ) form.delete() return self.render_to_response(self.get_context_data( form=form, subscription_deleted=True))
def form_valid(self, form): self.object = form.instance if settings.VERIFICATION_REQUIRED: # if no verification was required to signup, then no verification # is required to unsubscribe if callable(settings.UNSUBSCRIBE_SUBJECT): subject = settings.UNSUBSCRIBE_SUBJECT(self.object) else: # pragma: no cover subject = settings.UNSUBSCRIBE_SUBJECT extra_context = { 'subscription': self.object, 'subject': subject, } send_email( self.request, extra_context, 'newsletter_signup/email/unsubscribe_subject.html', 'newsletter_signup/email/unsubscribe_body.html', settings.FROM_EMAIL, [self.object.email], ) form.delete() return self.render_to_response( self.get_context_data(form=form, subscription_deleted=True))
def handle(self, **options): rates = models.CurrencyRate.objects.all() if not rates: print('No rates to track.') return if not getattr(settings, 'CURRENCY_SERVICE', None): raise ImproperlyConfigured('No currency service defined.') if settings.CURRENCY_SERVICE == 'openexchangerates': app_id = getattr(settings, 'OPENEXCHANGERATES_APP_ID', False) if not app_id: raise ImproperlyConfigured( 'Setting OPENEXCHANGERATES_APP_ID not set.') url = 'http://openexchangerates.org/latest.json?app_id={}'.format( settings.OPENEXCHANGERATES_APP_ID) response = requests.get(url) result = loads(response.content) for rate in rates: # Base rate is always USD output_currency_to_usd = 1 / result['rates'][ rate.from_currency.iso_code] usd_to_input_currency = result['rates'][ rate.to_currency.iso_code] models.CurrencyRateHistory.objects.create( rate=rate, value=output_currency_to_usd * usd_to_input_currency, tracked_by='openexchangerates.org', ) print('{} rate(s) tracked using "openexchangerates.org".'.format( rates.count())) elif settings.CURRENCY_SERVICE == 'yahoo': # pragma: nocover for rate in rates: url = ('https://query.yahooapis.com/v1/public/yql?q=select' '%20*%20from%20yahoo.finance.xchange%20where%20pair' '%20in%20(%22{}{}%22)&format=json&env=store%3A%2F%2F' 'datatables.org%2Falltableswithkeys&callback='.format( rate.from_currency.iso_code, rate.to_currency.iso_code)) response = requests.get(url) result = loads(response.content) models.CurrencyRateHistory.objects.create( rate=rate, value=result['query']['results']['rate']['Rate'], tracked_by='query.yahooapis.com', ) elif settings.CURRENCY_SERVICE == 'fixer': for rate in rates: url = 'http://api.fixer.io/latest?base={}&symbols={}'.format( rate.from_currency.iso_code, rate.to_currency.iso_code) response = requests.get(url) result = loads(response.content) models.CurrencyRateHistory.objects.create( rate=rate, value=result['rates'][rate.to_currency.iso_code], tracked_by='fixer.io', ) print('{} rate(s) tracked using "fixer.io".'.format(rates.count())) elif settings.CURRENCY_SERVICE == 'currencylayer': url = 'http://apilayer.net/api/live?access_key={}&'.format( settings.CURRENCYLAYER_API_KEY) for rate in rates: response = requests.get(url + 'currencies={},{}'.format( rate.from_currency.iso_code, rate.to_currency.iso_code, )) result = loads(response.content) if len(result['quotes'].keys()) == 1: value = result['quotes'].get('{}{}'.format( rate.from_currency.iso_code, rate.to_currency.iso_code)) if not value: value = 1 / result['quotes'].get('{}{}'.format( rate.to_currency.iso_code, rate.from_currency.iso_code)) else: from_value = result['quotes'].get('USD{}'.format( rate.from_currency.iso_code)) to_value = result['quotes'].get('USD{}'.format( rate.to_currency.iso_code)) value = to_value / from_value models.CurrencyRateHistory.objects.create( rate=rate, value=value, tracked_by='currencylayer', ) print('{} rate(s) tracked using "currencylayer".'.format( rates.count())) if getattr(settings, 'CURRENCY_EMAIL_REPORT', False): send_email( None, { 'rates': rates, }, 'currency_history/email/currency_email_report_subject.txt', 'currency_history/email/currency_email_report_body.html', settings.FROM_EMAIL, [x[1] for x in settings.MANAGERS], ) print('Email report sent.')