Blame view

src/dashboard/views.py 5.91 KB
76dfa189   Unknown   Adding devices lo...
1
from django.http import HttpResponse
81847ba2   haribo   Dashboard buttons...
2
3
from django.shortcuts import render, redirect
from django.core import urlresolvers
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
13
14
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
from django.urls import reverse_lazy

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

76dfa189   Unknown   Adding devices lo...
17
18


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

76dfa189   Unknown   Adding devices lo...
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#@login_required
#def observation_status(request):
 #   return render(request, 'dashboard/observation_status.html')

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

@login_required
def retrieve_env_navbar(request):
    if request.is_ajax():
        weather_status = WeatherWatch.objects.latest('updated')
        weather = serializers.serialize('json', [weather_status])
        return HttpResponse(weather, content_type="application/json")

6dc0b213   theophile.puhl@epitech.eu   Création du dashb...
43
@login_required
62229d51   haribo   began dashboard (...
44
def users(request):
81847ba2   haribo   Dashboard buttons...
45
    url_ = urlresolvers.reverse('admin:auth_user_changelist')
e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
46
    return redirect(url_) 
62229d51   haribo   began dashboard (...
47

94082e77   haribo   Date: 03/06/2016
48
@login_required
62229d51   haribo   began dashboard (...
49
def routines(request):
ddf59dd4   haribo   Remaniement :
50
    url_ = urlresolvers.reverse('admin:common_request_changelist')
81847ba2   haribo   Dashboard buttons...
51
    return redirect(url_)
62229d51   haribo   began dashboard (...
52

77816f10   haribo   Workflow implemen...
53

94082e77   haribo   Date: 03/06/2016
54
@login_required
62229d51   haribo   began dashboard (...
55
def weather(request):
e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
56
57
58
59
60
61
62
63
64
65
66
67
68
    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 (...
69

77816f10   haribo   Workflow implemen...
70

94082e77   haribo   Date: 03/06/2016
71
@login_required
62229d51   haribo   began dashboard (...
72
def site(request):
e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
    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 (...
96

e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
97
98
99
100
101
102
103
104
105
106
107
    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...
108

94082e77   haribo   Date: 03/06/2016
109
@login_required
62229d51   haribo   began dashboard (...
110
def devices(request):
ddf59dd4   haribo   Remaniement :
111
    url_ = urlresolvers.reverse('admin:common_device_changelist')
81847ba2   haribo   Dashboard buttons...
112
    return redirect(url_)
62229d51   haribo   began dashboard (...
113

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

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


94082e77   haribo   Date: 03/06/2016
133
@login_required
62229d51   haribo   began dashboard (...
134
def schedule(request):
ddf59dd4   haribo   Remaniement :
135
    url_ = urlresolvers.reverse('admin:common_schedule_changelist')
81847ba2   haribo   Dashboard buttons...
136
    return redirect(url_)
62229d51   haribo   began dashboard (...
137

77816f10   haribo   Workflow implemen...
138

94082e77   haribo   Date: 03/06/2016
139
@login_required
62229d51   haribo   began dashboard (...
140
def quotas(request):
ddf59dd4   haribo   Remaniement :
141
    url_ = urlresolvers.reverse('admin:common_pyrosuser_changelist')
81847ba2   haribo   Dashboard buttons...
142
    return redirect(url_)
e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
143
144
145
146
147
148
149


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