Blame view

src/dashboard/views.py 6.57 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
    return render(request, 'dashboard/reload_weather.html')                                                                     # return the needed html file

@login_required
def weather_current(request):
661d7672   theopuhl   Unittest Fix
68
69
70
71
72
73
74
75
76
77
78
79
    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 (...
80

77816f10   haribo   Workflow implemen...
81

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

@login_required
def site_current(request):
661d7672   theopuhl   Unittest Fix
88
89
90
91
92
93
94
95
96
97
98
99
    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 ...
100
101
102
103
104
105
106
107
108
109

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

e31b2208   theophile.puhl@epitech.eu   Severals Changes ...
111
112
113
114
115
116
117
118
119
120
121
    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...
122

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

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

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


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

77816f10   haribo   Workflow implemen...
152

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


def change_globalMode(request):
661d7672   theopuhl   Unittest Fix
160
161
162
163
164
165
166
    try :
        config = get_object_or_404(Config, id=1)
        config.global_mode = not config.global_mode
        config.save()
        return redirect('index')
    except Config.DoesNotExist:
        return redirect('index')