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
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
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')
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')
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')
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')
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)