2015-09-23 4 views
-1
from flask import * 
from redmine import Redmine 
import sys 

app = Flask(__name__) 


REDMINE_KEY='sdfsdfsdfsdfsd' 
REDMINE_URL='http://blabla/redmine' 


redmine = Redmine(REDMINE_URL) 
redmine = Redmine(REDMINE_URL, key=REDMINE_KEY) 

neu = [] 
bearbeitung = [] 
erledigt = [] 

id_thema = "" 
thema = "" 
project = "" 
zugewiesen = "" 

def ticket_zugewiesen(diesTicket): 
    alleticket = redmine.issue.get(diesTicket) 
    try: 
     alleticket.assigned_to 
    except: 
     return True 


def ticket_infos(diesTicket): 
    alleticket = redmine.issue.get(diesTicket) 
    try: 
     id_thema = alleticket.id 
     thema = alleticket.subject 
     project = alleticket.project.name 
     zugewiesen = alleticket.assigned_to 
    except: 
     id_thema = alleticket.id 
     thema = alleticket.subject 
     project = alleticket.project.name 

    return 

neueIssues = redmine.issue.filter(status_id='1') 
for i in neueIssues: 
    neu.append(i.id) 

neueIssues = redmine.issue.filter(status_id='2') 
for i in neueIssues: 
    bearbeitung.append(i.id) 

neueIssues = redmine.issue.filter(status_id='5') 
for i in neueIssues: 
    erledigt.append(i.id) 



@app.route('/_sendinfo') 
def info(): 
    return jsonify(result=id_thema,thema=thema, project=project, zugewiesen=zugewiesen) 

@app.route('/') 
def home(): 
    while True: 
     neu2 = [] 
     bearbeitung2 = [] 
     erledigt2 = [] 

     neueIssues = redmine.issue.filter(status_id='1') 
     for neues in neueIssues: 
      neu2.append(neues.id) 

     neueIssues = redmine.issue.filter(status_id='2') 
     for bearbeitetes in neueIssues: 
      bearbeitung2.append(bearbeitetes.id) 

     neueIssues = redmine.issue.filter(status_id='5') 
     for erledigtes in neueIssues: 
      erledigt2.append(erledigtes.id) 

     for i in neu2: 
      if i not in neu: 
       janein = ticket_zugewiesen(i) 
       if janein is True: 
        l = ticket_infos(i) 
       else: 
        pass 

     neu = neu2 

     for ii in bearbeitung2: 
      if ii not in bearbeitung: 
       if ii in erledigt: 
        l = ticket_infos(ii) 
        erledigt = erledigt2 
     bearbeitung = bearbeitung2 

     for iii in erledigt2: 
      if iii not in erledigt: 
       l = ticket_infos(iii) 
     erledigt = erledigt2 
    return render_template("index.html") 

if __name__ == '__main__': 
    app.run() 

Как я могу сделать эту бесконечную петлю в home() работе в колбе? Теперь это не сработает. Или есть лучший способ получить данные от redmine?Как сделать бесконечную петлю в колбе

Я проверю каждый раунд, что бесконечный цикл сделает, если три списка neu2, bearbeitung2, erledigt2 равны neu, bearbeitung, erledigt. И если в «list2» есть еще число, я буду динамически отображать некоторую информацию о интерфейсе (браузере).

ответ

0

Если я правильно вас понимаю, вы хотите продолжать нажимать обновления в браузере с одного маршрута Flask. К сожалению, это невозможно. Вам нужно будет изучить использование JavaScript-браузера и опроса с помощью AJAX или веб-узлов для обновления в реальном времени.

Выбор между AJAX и WS зависит от вашего конкретного варианта использования. Попробуйте изучить оба. AJAX, вероятно, проще настроить, но Flask имеет некоторую поддержку WS, насколько я могу судить: https://github.com/miguelgrinberg/Flask-SocketIO

EDIT: Вы также можете попробовать использовать Server-Sent Events, если вам не нужно поддерживать старые браузеры (хотя похоже, существуют полисы, которые также поддерживают в старых браузерах). Они хорошо объясняются здесь: How to implement server push in Flask framework? и кажутся очень простыми в использовании, хотя я никогда лично не пробовал.

+0

Да, это правильно! Я отправлю обновления на Веб-сайт. Итак, как я могу опросить AJAX? Я понятия не имею, как я могу это сделать. Можете ли вы дать мне простой пример? – Samhamsam

+0

Вам нужно будет сделать это с помощью JavaScript. Я не думаю, что объяснение AJAX в комментарии SO имеет смысл. Google вокруг. Я также отредактировал свой ответ для SSE. Вы можете попробовать их, вопрос, который я связал, имеет полный пример. – ralh

+0

Хорошо, спасибо. Я попробую События, отправленные сервером. Мне кажется легким. Посмотрим. – Samhamsam

Смежные вопросы