Blame view

src/alert_manager/views.py 3.46 KB
3df2d31a   haribo   #3430 : dates are...
1
from django.shortcuts import render
bb45cd4a   haribo   Date: 25/05/2016
2
3
from pyrosapp.models import *
from alert_manager.StrategyBuilder import StrategyBuilder
5b5566ab   haribo   added celery
4
import socket
77816f10   haribo   Workflow implemen...
5
from alert_manager import tasks as am_tasks
bb45cd4a   haribo   Date: 25/05/2016
6
import majordome
94082e77   haribo   Date: 03/06/2016
7
from django.contrib.auth.decorators import login_required
5b5566ab   haribo   added celery
8

94082e77   haribo   Date: 03/06/2016
9
@login_required
5b5566ab   haribo   added celery
10
def alert_simulation(request):
94082e77   haribo   Date: 03/06/2016
11
12
13
    '''
        Opens a page with a button to simulate an alert
    '''
5b5566ab   haribo   added celery
14
15
    return render(request, "alert_manager/alert_simulation.html", {})

77816f10   haribo   Workflow implemen...
16

94082e77   haribo   Date: 03/06/2016
17
@login_required
5b5566ab   haribo   added celery
18
def alert_simulation_start(request):
94082e77   haribo   Date: 03/06/2016
19
20
21
22
    '''
        Called when the alert simulation button is pressed
        Opens a connection on the alert_listener simulation socket to unlock it (so that the workflow starts)
    '''
77816f10   haribo   Workflow implemen...
23
    Log.objects.all().delete()
5b5566ab   haribo   added celery
24
    clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
77816f10   haribo   Workflow implemen...
25
26
27
28
29
    try:
        clientsocket.connect((am_tasks.IP, am_tasks.PORT))
        Log.objects.create(agent='Alert manager', message='Start simulation')
    except Exception as e:
        print("exception : ", e)
5b5566ab   haribo   added celery
30
    return render(request, "alert_manager/alert_simulation.html", {})
bb45cd4a   haribo   Date: 25/05/2016
31
32


94082e77   haribo   Date: 03/06/2016
33
@login_required
bb45cd4a   haribo   Date: 25/05/2016
34
def alerts_list(request):
94082e77   haribo   Date: 03/06/2016
35
36
37
    '''
        Display the list of all alerts
    '''
bb45cd4a   haribo   Date: 25/05/2016
38
39
40
41
    alerts = Alert.objects.order_by("-request__created")
    return render(request, "alert_manager/alerts.html", locals())


94082e77   haribo   Date: 03/06/2016
42
@login_required
bb45cd4a   haribo   Date: 25/05/2016
43
def change_obs_strategy(request, alert_id):
94082e77   haribo   Date: 03/06/2016
44
45
46
47
    '''
        Open a page for a given alert, listing all the other strategies 
    '''

bb45cd4a   haribo   Date: 25/05/2016
48
    alert = Alert.objects.get(id=alert_id)
94082e77   haribo   Date: 03/06/2016
49
50
51
52
    if alert.strategyobs is not None:
        strategies = StrategyObs.objects.exclude(id=alert.strategyobs.id)
    else:
        strategies = StrategyObs.objects.all()
bb45cd4a   haribo   Date: 25/05/2016
53
54
55
    return render(request, "alert_manager/strategy_change.html", locals())


94082e77   haribo   Date: 03/06/2016
56
@login_required
bb45cd4a   haribo   Date: 25/05/2016
57
def change_obs_strategy_validate(request, alert_id):
94082e77   haribo   Date: 03/06/2016
58
59
60
    '''
        Creates a new request with the strategy given for the selected alert
    '''
bb45cd4a   haribo   Date: 25/05/2016
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
    alert = Alert.objects.get(id=alert_id)
    strategies = StrategyObs.objects.exclude(id=alert.strategyobs.id)
    if request.method == "POST":
        strategy_id = request.POST["strategy_choice"]
        try:
            strategy = StrategyObs.objects.get(id=strategy_id)
        except Exception:
            error = True
            message = "This strategy doesn't exist"
            return render(request, "alert_manager/strategy_change.html", locals())

        try:
            alert = Alert.objects.get(id=alert_id)
        except Exception:
            error = True
            message = "This alert doesn't exist"
            return render(request, "alert_manager/strategy_change.html", locals())

eecfb779   haribo   Date: 26/05/2016
79
80
        print(alert.strategyobs.id, strategy_id)

bb45cd4a   haribo   Date: 25/05/2016
81
82
83
84
85
        if alert.strategyobs.id == strategy_id:
            error = True
            message = "This is already the current strategy for this alert"
            return render(request, "alert_manager/strategy_change.html", locals())

bb45cd4a   haribo   Date: 25/05/2016
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
        sb = StrategyBuilder()
        file = strategy.xml_file
        pyros_user = alert.request.pyros_user
        scientific_program = alert.request.scientific_program
        name = alert.request.name
        req = sb.create_request_from_strategy(file, pyros_user, scientific_program, name)
        alert.pk = None
        alert.strategyobs = strategy
        alert.request = req
        alert.save()
        strategies = StrategyObs.objects.exclude(id=alert.strategyobs.id)

        success = True
        message = "Strategy successfully changed. A new request was created."
    return render(request, "alert_manager/strategy_change.html", locals())