Exemple #1
0
    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],
     )
Exemple #4
0
 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],
     )
Exemple #5
0
    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.')
Exemple #6
0
 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.')