Blame view

src/alert_manager/views.py 5.2 KB
3df2d31a   haribo   #3430 : dates are...
1
from django.shortcuts import render
ddf59dd4   haribo   Remaniement :
2
from common.models import *
bb45cd4a   haribo   Date: 25/05/2016
3
from alert_manager.StrategyBuilder import StrategyBuilder
5b5566ab   haribo   added celery
4
import socket
bb45cd4a   haribo   Date: 25/05/2016
5
import majordome
94082e77   haribo   Date: 03/06/2016
6
from django.contrib.auth.decorators import login_required
945b36d2   haribo   Généricité des ca...
7
import alert_manager.tasks
5b5566ab   haribo   added celery
8

945b36d2   haribo   Généricité des ca...
9
10
11
12
13
14
15
import os, time, shutil

TEST_FILE = "unittest_voevent.xml"

TEST_FILE_PATH = os.path.join(alert_manager.tasks.VOEVENTS_PATH, TEST_FILE)

VOEVENTS_TO_SEND_PATH = "alert_manager/events_to_send"
5b5566ab   haribo   added celery
16

77816f10   haribo   Workflow implemen...
17

94082e77   haribo   Date: 03/06/2016
18
@login_required
945b36d2   haribo   Généricité des ca...
19
def start_simulation(request):
94082e77   haribo   Date: 03/06/2016
20
21
    '''
        Called when the alert simulation button is pressed
945b36d2   haribo   Généricité des ca...
22
        Deletes then copies the test voevent file from the events_received folder
94082e77   haribo   Date: 03/06/2016
23
    '''
945b36d2   haribo   Généricité des ca...
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

    if os.path.isfile(TEST_FILE_PATH):
        os.remove(TEST_FILE_PATH)
        print("================== DELETE FILE ==================")
        time.sleep(3)

    print("================== COPY FILE ==================")
    shutil.copyfile(os.path.join(VOEVENTS_TO_SEND_PATH, TEST_FILE),
                        TEST_FILE_PATH)
    alerts = Alert.objects.order_by("-request__created")
    if StrategyObs.objects.filter(is_default=True).exists():
        current_default = StrategyObs.objects.filter(is_default=True)[0].name
        btn_type = "btn-primary"
    else:
        current_default = "Warning: please choose a default strategy"
        btn_type = "btn-danger"
    strat_list = StrategyObs.objects.all()

    success = True
    message = "Simulation started successfully"
    return render(request, "alert_manager/alerts.html", locals())
bb45cd4a   haribo   Date: 25/05/2016
45
46


94082e77   haribo   Date: 03/06/2016
47
@login_required
bb45cd4a   haribo   Date: 25/05/2016
48
def alerts_list(request):
94082e77   haribo   Date: 03/06/2016
49
50
51
    '''
        Display the list of all alerts
    '''
e6dd9964   haribo   Date: 19/07/2016
52

bb45cd4a   haribo   Date: 25/05/2016
53
    alerts = Alert.objects.order_by("-request__created")
e6dd9964   haribo   Date: 19/07/2016
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
    if StrategyObs.objects.filter(is_default=True).exists():
        current_default = StrategyObs.objects.filter(is_default=True)[0].name
        btn_type = "btn-primary"
    else:
        current_default = "Warning: please choose a default strategy"
        btn_type = "btn-danger"
    strat_list = StrategyObs.objects.all()
    return render(request, "alert_manager/alerts.html", locals())

@login_required
def change_default_strategy(request, strat_id):
    '''
        Changes the strategy to be used when an alert is received 
    '''

    strategies = StrategyObs.objects.all()
    if strategies.filter(id=strat_id).exists():
        for strat in strategies:
            strat.is_default = False
            strat.save()
        strat = strategies.get(id=strat_id)
        strat.is_default = True
        strat.save()

        success = True
        message = "Default strategy successfully changed"
    else:
        error = True
        message = "Could not find this strategy"

    alerts = Alert.objects.order_by("-request__created")
    if StrategyObs.objects.filter(is_default=True).exists():
        current_default = StrategyObs.objects.filter(is_default=True)[0].name
        btn_type = "btn-primary"
    else:
        current_default = "Warning: please choose a default strategy"
        btn_type = "btn-danger"
    strat_list = StrategyObs.objects.all()

bb45cd4a   haribo   Date: 25/05/2016
93
94
95
    return render(request, "alert_manager/alerts.html", locals())


94082e77   haribo   Date: 03/06/2016
96
@login_required
bb45cd4a   haribo   Date: 25/05/2016
97
def change_obs_strategy(request, alert_id):
94082e77   haribo   Date: 03/06/2016
98
99
100
101
    '''
        Open a page for a given alert, listing all the other strategies 
    '''

bb45cd4a   haribo   Date: 25/05/2016
102
    alert = Alert.objects.get(id=alert_id)
94082e77   haribo   Date: 03/06/2016
103
104
105
106
    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
107
108
109
    return render(request, "alert_manager/strategy_change.html", locals())


94082e77   haribo   Date: 03/06/2016
110
@login_required
bb45cd4a   haribo   Date: 25/05/2016
111
def change_obs_strategy_validate(request, alert_id):
94082e77   haribo   Date: 03/06/2016
112
113
114
    '''
        Creates a new request with the strategy given for the selected alert
    '''
fd99569d   haribo   Date: 22/06/2016
115
116
117
118
119
120
121
122
123

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

bb45cd4a   haribo   Date: 25/05/2016
124
125
    strategies = StrategyObs.objects.exclude(id=alert.strategyobs.id)
    if request.method == "POST":
fd99569d   haribo   Date: 22/06/2016
126

bb45cd4a   haribo   Date: 25/05/2016
127
128
129
130
131
132
133
134
        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())

fd99569d   haribo   Date: 22/06/2016
135
        if str(alert.strategyobs.id) == strategy_id:
bb45cd4a   haribo   Date: 25/05/2016
136
137
138
139
            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
140
141
142
143
144
        sb = StrategyBuilder()
        file = strategy.xml_file
        pyros_user = alert.request.pyros_user
        scientific_program = alert.request.scientific_program
        name = alert.request.name
d84050e6   haribo   Date: 20/07/2016
145
146
        sb.create_request_from_strategy(file, pyros_user, scientific_program, name)
        req = sb.validate()
bb45cd4a   haribo   Date: 25/05/2016
147
148
        alert.pk = None
        alert.strategyobs = strategy
53787d30   Jeremy   Alert now inherit...
149
150
        alert.request_id = req
        alert.__dict__.update(req.__dict__)
bb45cd4a   haribo   Date: 25/05/2016
151
152
153
154
155
        alert.save()
        strategies = StrategyObs.objects.exclude(id=alert.strategyobs.id)

        success = True
        message = "Strategy successfully changed. A new request was created."
fd99569d   haribo   Date: 22/06/2016
156

bb45cd4a   haribo   Date: 25/05/2016
157
    return render(request, "alert_manager/strategy_change.html", locals())