Blame view

src/dashboard/views.py 6.13 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
e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
15

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

76dfa189   Unknown   Adding devices lo...
18
19


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

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

@login_required
def retrieve_env(request):
5f148e7d   Unknown   Update to django2...
30
31
32
33
34
35
36
37
38
39
    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...
40
41
42
43

@login_required
def retrieve_env_navbar(request):
    if request.is_ajax():
5f148e7d   Unknown   Update to django2...
44
45
46
47
48
49
        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...
50

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

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

77816f10   haribo   Workflow implemen...
61

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

@login_required
def weather_current(request):
    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})
62229d51   haribo   began dashboard (...
77

77816f10   haribo   Workflow implemen...
78

94082e77   haribo   Date: 03/06/2016
79
@login_required
62229d51   haribo   began dashboard (...
80
def site(request):
e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
    return render(request, 'dashboard/reload_site.html')                        # return the needed html file

@login_required
def site_current(request):
    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})

@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 (...
104

e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
105
106
107
108
109
110
111
112
113
114
115
    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...
116

94082e77   haribo   Date: 03/06/2016
117
@login_required
62229d51   haribo   began dashboard (...
118
def devices(request):
5f148e7d   Unknown   Update to django2...
119
    url_ = reverse('admin:common_device_changelist')
81847ba2   haribo   Dashboard buttons...
120
    return redirect(url_)
62229d51   haribo   began dashboard (...
121

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

94082e77   haribo   Date: 03/06/2016
126
@login_required
77816f10   haribo   Workflow implemen...
127
def system_retrieve_logs(request):
94082e77   haribo   Date: 03/06/2016
128
    '''
e39312f1   Jeremy   Fix bug on schedu...
129
        Called by the dashboard system page with ajax request every seconds, to get the logs and print them
94082e77   haribo   Date: 03/06/2016
130
    '''
77816f10   haribo   Workflow implemen...
131
    if request.is_ajax():
77816f10   haribo   Workflow implemen...
132
133
134
135
136
        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...
137
        monitoring_logs = Log.objects.filter(agent='Monitoring')
77816f10   haribo   Workflow implemen...
138
        return render(request, 'dashboard/system_logs.html', locals())
77816f10   haribo   Workflow implemen...
139
140


94082e77   haribo   Date: 03/06/2016
141
@login_required
62229d51   haribo   began dashboard (...
142
def schedule(request):
5f148e7d   Unknown   Update to django2...
143
    url_ = reverse('admin:common_schedule_changelist')
81847ba2   haribo   Dashboard buttons...
144
    return redirect(url_)
62229d51   haribo   began dashboard (...
145

77816f10   haribo   Workflow implemen...
146

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


def change_globalMode(request):
    config = get_object_or_404(Config, id=1)
    config.global_mode = not config.global_mode
    config.save()
    return redirect('index')