def test_repeat_announcement(c): c.get('/set_repeat_announcement/0') assert Display_store.get().r_announcement is False assert c.get('/repeat_announcement').json.get('status') is False c.get('/set_repeat_announcement/1') assert Display_store.get().r_announcement is True assert c.get('/repeat_announcement').json.get('status') is True
def test_display_screen_customization(c): properties = { 'title': 'testing', 'hsize': '500%', 'hcolor': 'testing', 'hbg': 'testing', 'tsize': '200%', 'tcolor': 'testing', 'h2size': '150%', 'h2color': 'testing', 'ssize': '500%', 'scolor': 'testing', 'mduration': '2000', 'hfont': 'testing', 'tfont': 'testing', 'h2font': 'testing', 'sfont': 'testing', 'rrate': '2000', 'anr': 3, 'anrt': 'each', 'effect': 'bounce', 'repeats': '2', 'prefix': True, 'always_show_ticket_number': True, 'bgcolor': 'testing' } data = {f'check{s}': True for s in get_tts_safely().keys()} data.update({'display': 1, 'background': 0, 'naudio': 0, **properties}) response = c.post('/displayscreen_c/1', data=data, follow_redirects=True) assert response.status == '200 OK' for key, value in properties.items(): assert getattr(Display_store.get(), key, None) == value
def main(): display_settings = Display_store.get() if display_settings.announce != 'false': aliases = Aliases.get() languages = display_settings.announce.split(',') tickets_to_remove = Serial.query.filter(Serial.p == True, Serial.number.in_(self.cached)) tickets_to_cache = Serial.query.filter(Serial.p == False, Serial.number != 100, not_(Serial.number.in_(self.cached)))\ .order_by(Serial.timestamp)\ .limit(self.limit) @self.none_blocking_loop(tickets_to_cache) def cache_tickets(ticket): successes = [] @self.none_blocking_loop(languages) def loop_languages(language): try: gTTs.say(language, self.format_announcement_text(ticket, aliases, language, display_settings.prefix)) successes.append(language) except Exception as exception: log_error(exception, quiet=self.quiet) self.log(exception, error=True) if successes: self.cached.append(ticket.number) self.log(f'Cached TTS {ticket.number}') @self.none_blocking_loop(tickets_to_remove) def remove_processed_tickets_from_cache(ticket): self.cached.remove(ticket.number) # NOTE: cache stack is adhereing to the limit to avoid overflow self.cached = self.cached[:self.limit]