Blame view

src/dashboard/views.py 7.43 KB
76dfa189   Unknown   Adding devices lo...
1
from django.http import HttpResponse
81847ba2   haribo   Dashboard buttons...
2
from django.shortcuts import render, redirect
5f148e7d   Unknown   Update to django2...
3

94082e77   haribo   Date: 03/06/2016
4
from django.contrib.auth.decorators import login_required
76dfa189   Unknown   Adding devices lo...
5
import datetime
e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
6
from common.models import Log, WeatherWatch, SiteWatch, ScientificProgram, Config
76dfa189   Unknown   Adding devices lo...
7
from django.core import serializers
bca9a283   Jeremy   Reworked the sche...
8
import utils.Logger as l
e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
9
10
11
12
from dashboard.forms import ConfigForm
from django.views.generic.edit import UpdateView
from django.shortcuts import get_object_or_404
from django.utils.decorators import method_decorator
5f148e7d   Unknown   Update to django2...
13
14
from django.urls import reverse_lazy, reverse
from django.http import Http404
ba1d1f2b   Quentin Durand   implémentation Fr...
15
16
17
import json
from django.views.decorators.csrf import requires_csrf_token

e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
18

6c2793c2   jeremy   Update
19
log = l.setupLogger("dashboard", "dashboard")
6bba7ccd   Jeremy   Fix Django 1.10.2...
20

76dfa189   Unknown   Adding devices lo...
21
22


94082e77   haribo   Date: 03/06/2016
23
@login_required
6dc0b213   theophile.puhl@epitech.eu   Création du dashb...
24
def index(request):
e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
25
    return render(request, 'dashboard/index.html')                              # return the initial view (the dashboard's one)
6dc0b213   theophile.puhl@epitech.eu   Création du dashb...
26

76dfa189   Unknown   Adding devices lo...
27
28
29
30
31
32
#@login_required
#def observation_status(request):
 #   return render(request, 'dashboard/observation_status.html')

@login_required
def retrieve_env(request):
5f148e7d   Unknown   Update to django2...
33
34
35
36
37
38
39
40
41
42
    try:
        weather_status = WeatherWatch.objects.latest('updated')
        t = datetime.datetime.now() + datetime.timedelta(hours=-7) #temporary method to demonstrate the day/night display
        isDay = False
        if t.hour > 5 and t.hour < 20:
            isDay = True
        return render(request, 'dashboard/observation_status_env.html', locals())
    except WeatherWatch.DoesNotExist:
            raise Http404("No WeatherWatch matches the given query.")
    
76dfa189   Unknown   Adding devices lo...
43
44
45
46

@login_required
def retrieve_env_navbar(request):
    if request.is_ajax():
5f148e7d   Unknown   Update to django2...
47
48
49
50
51
52
        try:
            weather_status = WeatherWatch.objects.latest('updated')
            weather = serializers.serialize('json', [weather_status])
            return HttpResponse(weather, content_type="application/json")
        except WeatherWatch.DoesNotExist:
            raise Http404("No WeatherWatch matches the given query.")
76dfa189   Unknown   Adding devices lo...
53

6dc0b213   theophile.puhl@epitech.eu   Création du dashb...
54
@login_required
62229d51   haribo   began dashboard (...
55
def users(request):
5f148e7d   Unknown   Update to django2...
56
    url_ = reverse('admin:auth_user_changelist')
e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
57
    return redirect(url_) 
62229d51   haribo   began dashboard (...
58

94082e77   haribo   Date: 03/06/2016
59
@login_required
62229d51   haribo   began dashboard (...
60
def routines(request):
5f148e7d   Unknown   Update to django2...
61
    url_ = reverse('admin:common_request_changelist')
81847ba2   haribo   Dashboard buttons...
62
    return redirect(url_)
62229d51   haribo   began dashboard (...
63

77816f10   haribo   Workflow implemen...
64

94082e77   haribo   Date: 03/06/2016
65
@login_required
62229d51   haribo   began dashboard (...
66
def weather(request):
e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
67
68
69
70
    return render(request, 'dashboard/reload_weather.html')                                                                     # return the needed html file

@login_required
def weather_current(request):
661d7672   theopuhl   Unittest Fix
71
72
73
74
75
76
77
78
79
80
81
82
    try:
        if (len(Config.objects.all()) == 1):
            monitoring = int(int(Config.objects.get(id=1).row_data_save_frequency) / 5)
        else:
            monitoring = 60
        if (len(WeatherWatch.objects.all()) > 0):
            weather_info = WeatherWatch.objects.order_by("-id")[:monitoring]                                                            # Use 300 seconds by default with an iteration every 5 seconds                                                                                     # Get the number of data available
        else:                                                                                                                           
            weather_info = None
        return render(request, 'dashboard/current_weather.html', {'weather_info' : weather_info, 'iteration' : monitoring})
    except Config.DoesNotExist:
        return render(request, 'dashboard/current_weather.html', {'weather_info' : None, 'iteration' : 60})
62229d51   haribo   began dashboard (...
83

77816f10   haribo   Workflow implemen...
84

94082e77   haribo   Date: 03/06/2016
85
@login_required
62229d51   haribo   began dashboard (...
86
def site(request):
e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
87
88
89
90
    return render(request, 'dashboard/reload_site.html')                        # return the needed html file

@login_required
def site_current(request):
661d7672   theopuhl   Unittest Fix
91
92
93
94
95
96
97
98
99
100
101
102
    try:
        if (len(Config.objects.all()) == 1):
            monitoring = int(int(Config.objects.get(id=1).row_data_save_frequency) / 5)
        else:
            monitoring = 60
        if (len(SiteWatch.objects.all()) > 0):
            site_info = SiteWatch.objects.order_by("-id")[:monitoring]                                                               
        else:                                                                                                                           
            site_info = None
        return render(request, 'dashboard/current_site.html', {'site_info' : site_info, 'iteration' : monitoring})
    except Config.DoesNotExist:
        return render(request, 'dashboard/current_site.html', {'site_info' : None, 'iteration' : 60})
e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
103
104
105
106
107
108
109
110
111
112

@login_required
def proposal(request):
    if (len(ScientificProgram.objects.all()) > 0):                              # checking if the observatory table is empty
        proposal_info = ScientificProgram.objects.order_by("-id")[:100]         # Sorting Weather table
        nb_info_proposal = len(proposal_info)                                   # Get the number of data available

    else:                                                                       # if empty set everything to 0 / None (variables are checked in src/templates/scheduler/current_weather.html)
        proposal_info = None
        nb_info_proposal = 0
62229d51   haribo   began dashboard (...
113

e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
114
115
116
117
118
119
120
121
122
123
124
    return render(request, 'dashboard/proposal.html', {'proposal_info' : proposal_info, 'nb_info_proposal' : nb_info_proposal})

@login_required
def configUpdate(request):
    instance = get_object_or_404(Config, id=1)
    form = ConfigForm(request.POST or None, instance=instance)
    if form.is_valid():
        form.save()
        return redirect('../user_manager/profile')
    return render(request, 'dashboard/configuration.html', {'form': form}) 
    
77816f10   haribo   Workflow implemen...
125

94082e77   haribo   Date: 03/06/2016
126
@login_required
62229d51   haribo   began dashboard (...
127
def devices(request):
5f148e7d   Unknown   Update to django2...
128
    url_ = reverse('admin:common_device_changelist')
81847ba2   haribo   Dashboard buttons...
129
    return redirect(url_)
62229d51   haribo   began dashboard (...
130

94082e77   haribo   Date: 03/06/2016
131
@login_required
62229d51   haribo   began dashboard (...
132
133
def system(request):
    return render(request, 'dashboard/system.html')
61e60444   Jeremy   Pushing on dev
134

94082e77   haribo   Date: 03/06/2016
135
@login_required
77816f10   haribo   Workflow implemen...
136
def system_retrieve_logs(request):
94082e77   haribo   Date: 03/06/2016
137
    '''
e39312f1   Jeremy   Fix bug on schedu...
138
        Called by the dashboard system page with ajax request every seconds, to get the logs and print them
94082e77   haribo   Date: 03/06/2016
139
    '''
77816f10   haribo   Workflow implemen...
140
    if request.is_ajax():
77816f10   haribo   Workflow implemen...
141
142
143
144
145
        alert_logs = Log.objects.filter(agent='Alert manager')
        scheduler_logs = Log.objects.filter(agent='Scheduler')
        majordome_logs = Log.objects.filter(agent='Majordome')
        obs_logs = Log.objects.filter(agent='Observation manager')
        analyzer_logs = Log.objects.filter(agent='Analyzer')
bca9a283   Jeremy   Reworked the sche...
146
        monitoring_logs = Log.objects.filter(agent='Monitoring')
77816f10   haribo   Workflow implemen...
147
        return render(request, 'dashboard/system_logs.html', locals())
77816f10   haribo   Workflow implemen...
148
149


94082e77   haribo   Date: 03/06/2016
150
@login_required
62229d51   haribo   began dashboard (...
151
def schedule(request):
5f148e7d   Unknown   Update to django2...
152
    url_ = reverse('admin:common_schedule_changelist')
81847ba2   haribo   Dashboard buttons...
153
    return redirect(url_)
62229d51   haribo   began dashboard (...
154

77816f10   haribo   Workflow implemen...
155

94082e77   haribo   Date: 03/06/2016
156
@login_required
62229d51   haribo   began dashboard (...
157
def quotas(request):
5f148e7d   Unknown   Update to django2...
158
    url_ = reverse('admin:common_pyrosuser_changelist')
81847ba2   haribo   Dashboard buttons...
159
    return redirect(url_)
e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
160

ba1d1f2b   Quentin Durand   implémentation Fr...
161
@login_required
e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
162
def change_globalMode(request):
661d7672   theopuhl   Unittest Fix
163
164
165
166
167
168
    try :
        config = get_object_or_404(Config, id=1)
        config.global_mode = not config.global_mode
        config.save()
        return redirect('index')
    except Config.DoesNotExist:
ba1d1f2b   Quentin Durand   implémentation Fr...
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
        return redirect('index')

@login_required
def send_command_to_telescope(request):
    return render(request, "dashboard/send_command_telescope.html")

@login_required
def submit_command_to_telescope(request):
    import json
    if request.method == 'POST':
        param = request.POST.get("comande")
        return HttpResponse(json.dumps({'message': "Command send OK"}))

@login_required
def submit_command_to_telescope_expert(request):
    import os
    if request.method == 'POST':
        param = request.POST.get("commande_expert")
        if param:
            os.system("echo " + param + " >> contenu")
            return HttpResponse(json.dumps({'message': "Command send OK"}))
        return HttpResponse(json.dumps({'message': "Missing command data"}))
    return redirect('submit_command_to_telescope')