Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
        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]