Esempio n. 1
0
 def fast_chg_warning(self, coin_pair):
     # 紧急剧烈变动通知,以15分钟为一个周期
     ori_alert_duration = self.__alert_duration
     self.__alert_duration = 0.25
     fast_chg_info = self.get_change_percent(coin_pair)
     # 复原默认的周期
     fast_chg_percent = round(fast_chg_info.get('percent'), 3)
     result = False
     # 15分钟内变动超过指定比例的需要警告
     if fast_chg_percent >= 0.05 or fast_chg_percent <= self.__fast_price_down_buy_std:
         if self.__last_send_time is None:
             warning_message = self.get_warning_message(fast_chg_info)
             self.__warning_message_file.write(warning_message)
             self.__warning_message_file.flush()
             self.__last_send_time = datetime.datetime.now()
             # 达到买入标志后返回买入标志为TRUE
             sms.sms_send(self.__mobile, warning_message)
             result = True
         else:
             # 超过发送的时间间隔则清空时间,捕获下次发送时间
             if datetime.datetime.now(
             ) - self.__last_send_time > datetime.timedelta(
                     seconds=self.__send_duration / 2 * 3600):
                 self.__last_send_time = None
         # print(warning_message)
     self.__alert_duration = ori_alert_duration
     return result
     pass
Esempio n. 2
0
    def match_alert_percent(self, coin_pair):
        # chg_percent = self.get_change_percent(coin_pair)
        chg_info = self.get_change_percent(coin_pair)
        chg_percent = round(chg_info.get('percent'), 3)
        # 检查快速异常的变动
        result = self.fast_chg_warning(coin_pair)
        # 预定时间内变化超过预期的处理
        if chg_percent > self.__alert_percent_up or chg_percent < self.__alert_percent_down:
            if self.__last_send_time is None:
                message = self.get_warning_message(chg_info)
                self.__last_send_time = datetime.datetime.now()
                self.__warning_message_file.write(message)
                self.__warning_message_file.flush()
                # 长时间波动o为剧烈波动行情的70%时下降时买入
                if chg_percent <= self.__fast_price_down_buy_std * .6:
                    sms.sms_send(self.__mobile, message)
                    result = True
                else:
                    result = False
            else:
                # 超过发送的时间间隔则清空时间,捕获下次发送时间
                if datetime.datetime.now(
                ) - self.__last_send_time > datetime.timedelta(
                        seconds=self.__send_duration * 3600):
                    self.__last_send_time = None

        return result
        pass
Esempio n. 3
0
 def send_quote(self, event):
     send_text = ws.quoteofday(self.log)
     send_phno = self.phno.GetLineText(0)
     try:
         sms.sms_send(send_phno, send_text)
     except:
         self.log.AppendText(
             'Error Occured. Check proper internet connectivity\n\nIf problem persists, we regret and please contact admin.\n'
         )
     else:
         self.log.AppendText('\nQuote succesfully sent to :' + send_phno)
     finally:
         self.log.AppendText('\n\n' + 'Buzzer v1.0'.center(50, '=') +
                             '\n\n')
Esempio n. 4
0
    def send_news(self, event):
        send_text = tn.get_news(self.log)
        send_phno = self.phno.GetLineText(0)

        try:
            sms.sms_send(send_phno, send_text)
        except:
            self.log.AppendText(
                'Error Occured. Ensure the following:\n1. The mobile should be registered and properly entered.\n2. Check proper internet connectivity\n3. The text may be too large\n\nIf problem persists, we regret and please contact admin.\n'
            )
        else:
            self.log.AppendText('News succesfully sent to :' + send_phno)
        finally:
            self.log.AppendText('\n\n' + 'Buzzer v1.0'.center(50, '=') +
                                '\n\n')
Esempio n. 5
0
 def send_weather(self, event):
     locat = self.locat.GetLineText(0)
     tw.loc(self.log, locat)
     send_text = tw.get_data(self.log, locat)
     send_phno = self.phno.GetLineText(0)
     try:
         sms.sms_send(send_phno, send_text)
     except:
         self.log.AppendText(
             'Error Occured. Check proper internet connectivity\n\nIf problem persists, we regret and please contact admin.\n'
         )
     else:
         self.log.AppendText('\nWeather succesfully sent to :' + send_phno)
     finally:
         self.log.AppendText('\n\n' + 'Buzzer v1.0'.center(50, '=') +
                             '\n\n')
Esempio n. 6
0
 def send_horo(self, event):
     zodiac = self.country.GetSelection()
     send_text = ws.horoscope(self.log, zodiac)
     send_phno = self.phno.GetLineText(0)
     try:
         sms.sms_send(send_phno, send_text)
     except:
         self.log.AppendText(
             'Error Occured. Check proper internet connectivity\n\nIf problem persists, we regret and please contact admin.\n'
         )
     else:
         self.log.AppendText('\nHoroscope succesfully sent to :' +
                             send_phno)
     finally:
         self.log.AppendText('\n\n' + 'Buzzer v1.0'.center(50, '=') +
                             '\n\n')
Esempio n. 7
0
def send(users,
         label,
         extra_context=None,
         display_subject_prefix=False,
         no_django_message=False):
    if extra_context is None:
        extra_context = {}

    current_language = get_language()

    formats = (
        'short.txt',
        'full.txt',
    )  # TODO make formats configurable

    for user in users:
        if isinstance(user, basestring):
            user = User(email=user)

        recipients = []
        # get user language for user from language store defined in
        # NOTIFICATION_LANGUAGE_MODULE setting
        try:
            language = get_notification_language(user)
        except LanguageStoreNotAvailable:
            language = "ru"

        # update context with user specific translations
        context = Context({
            "user":
            user,
            "current_site":
            CurrentSite(language=language, user=user),
        })
        context.update(extra_context)
        try:
            notification = Notification.objects.get_notification_for_user(
                label, user)
        except Notification.DoesNotExist:
            log.warn(
                'Notification named {1} did not find! current language {2}'.
                format(user, label, language))
            notification = None

        sms_text = None
        if notification:
            language = notification.language
            activate(language)
            message_subject = Template(
                notification.email_subject).render(context)
            message_html = Template(notification.html).render(context)

            # strip all tags exclude bleach.sanitizer.ALLOWED_TAGS
            # a tags allowed
            message_text = mark_safe(bleach.clean(message_html, strip=True))

            if notification.duplicate_by_sms and notification.text:
                sms_text = Template(notification.text).render(context)
        else:
            activate(language)
            # get prerendered format messages
            try:
                messages = get_formatted_messages(formats, label, context)
            except TemplateDoesNotExist:
                return
            message_subject = messages['short.txt']
            message_text = messages['full.txt']
            message_html = linebreaksbr(urlize(messages['full.txt']))

        # Strip newlines from subject
        subject = ''.join(
            render_to_string(
                'notification/email_subject.txt', {
                    'message': message_subject,
                    'display_prefix': display_subject_prefix,
                }, context).splitlines())

        profile = getattr(user, 'profile', None)
        site_version = profile.registered_from if profile else None

        settings_object = NotificationSettings.objects.get_for_lang(language)

        if settings_object and not site_version:
            context["main_content"] = message_html
            template_object = settings_object.default_notification_template
            html_body = template_object.render_html(context)
        else:
            html_body = None

        context['message'] = message_text
        text_body = render_to_string('notification/email_body.txt',
                                     context_instance=context)

        # GCPatch: create a new message using django-messages
        django_messages_recipients = []

        if user.pk:
            django_messages_recipients.append(user)

        if user.email:  # Email
            recipients.append(user.email)

        if not no_django_message and (not notification
                                      or notification.send_in_private):
            for recipient in django_messages_recipients:
                msg = django_messages.Message(subject=subject,
                                              body=text_body,
                                              recipient=recipient)
                msg.save()

        send_mail(subject,
                  text_body,
                  get_from_email(site_version),
                  recipients,
                  html_message=html_body)

        # sends sms if notification was found in db
        if notification:
            if sms_text and profile.phone_mobile:
                sms_send(to=profile.phone_mobile, text=sms_text)

    # reset environment to original language
    activate(current_language)