Commit 46423b05801ec5356c49e46f95c294b004bf853e
1 parent
0dcacc3a
Exists in
dev
add view for quota
Showing
3 changed files
with
146 additions
and
4 deletions
Show diff stats
src/core/pyros_django/scp_mgmt/templates/scp_mgmt/quota_sp.html
0 → 100644
... | ... | @@ -0,0 +1,128 @@ |
1 | +{% extends "base.html" %} | |
2 | + | |
3 | +{% load tags %} | |
4 | +{% block content %} | |
5 | + | |
6 | +<style> | |
7 | + .institute{ | |
8 | + background-color: aqua; | |
9 | + } | |
10 | + .sp{ | |
11 | + background-color: aquamarine; | |
12 | + } | |
13 | +</style> | |
14 | +<table class="table table-sm table-bordered tablesorter"> | |
15 | + <thead> | |
16 | + <tr> | |
17 | + <td> name </td> | |
18 | + <td> quota_f </td> | |
19 | + <td> <b> d_total </b> </td> | |
20 | + <td> d_totalq </td> | |
21 | + <td> d_totalx </td> | |
22 | + <td> <b> d_previous </b> </td> | |
23 | + <td> d_previousq </td> | |
24 | + <td> d_previousx </td> | |
25 | + <td> <b> d_current </b> </td> | |
26 | + <td> d_currentq </td> | |
27 | + <td> d_currentx </td> | |
28 | + <td> <b> d_passed </b> </td> | |
29 | + <td> d_passedq </td> | |
30 | + <td> d_passedx </td> | |
31 | + <td> <b> d_schedule </b> </td> | |
32 | + <td> d_scheduleq </td> | |
33 | + <td> d_schedulex </td> | |
34 | + <td> <b> d_next </b> </td> | |
35 | + <td> d_nextq </td> | |
36 | + <td> d_nextx </td> | |
37 | + </tr> | |
38 | + </thead> | |
39 | + <tr class="current_night"> | |
40 | + <td> Current night : {{ current_night }} </td> | |
41 | + <td> </td> | |
42 | + <td> <b>{{quota_current_night.d_total}}</b> </td> | |
43 | + <td>{{quota_current_night.d_totalq}}</td> | |
44 | + <td>{{quota_current_night.d_totalx}}</td> | |
45 | + | |
46 | + <td> <b>{{quota_current_night.d_previous}}</b> </td> | |
47 | + <td>{{quota_current_night.d_previousq}}</td> | |
48 | + <td>{{quota_current_night.d_previousx}}</td> | |
49 | + | |
50 | + <td> <b>{{quota_current_night.d_current}}</b> </td> | |
51 | + <td>{{quota_current_night.d_currentq}}</td> | |
52 | + <td>{{quota_current_night.d_currentx}}</td> | |
53 | + | |
54 | + <td> <b>{{quota_current_night.d_passed}}</b> </td> | |
55 | + <td>{{quota_current_night.d_passedq}}</td> | |
56 | + <td>{{quota_current_night.d_passedx}}</td> | |
57 | + | |
58 | + <td> <b>{{quota_current_night.d_schedule}}</b> </td> | |
59 | + <td>{{quota_current_night.d_scheduleq}}</td> | |
60 | + <td>{{quota_current_night.d_schedulex}} </td> | |
61 | + | |
62 | + <td> <b>{{quota_current_night.d_next}}</b> </td> | |
63 | + <td>{{quota_current_night.d_nextq}}</td> | |
64 | + <td>{{quota_current_night.d_nextx}}</td> | |
65 | + </tr> | |
66 | + {% for institute in institutes %} | |
67 | + <tr class="institute"> | |
68 | + <td> Institute :{{institute}} </td> | |
69 | + <td>{{institute.quota_f}} </td> | |
70 | + <td> <b>{{institute.quota.d_total}}</b> </td> | |
71 | + <td>{{institute.quota.d_totalq}}</td> | |
72 | + <td>{{institute.quota.d_totalx}}</td> | |
73 | + | |
74 | + <td> <b>{{institute.quota.d_previous}}</b> </td> | |
75 | + <td>{{institute.quota.d_previousq}}</td> | |
76 | + <td>{{institute.quota.d_previousx}}</td> | |
77 | + | |
78 | + <td> <b>{{institute.quota.d_current}}</b> </td> | |
79 | + <td>{{institute.quota.d_currentq}}</td> | |
80 | + <td>{{institute.quota.d_currentx}}</td> | |
81 | + | |
82 | + <td> <b>{{institute.quota.d_passed}}</b> </td> | |
83 | + <td>{{institute.quota.d_passedq}}</td> | |
84 | + <td>{{institute.quota.d_passedx}}</td> | |
85 | + | |
86 | + <td> <b>{{institute.quota.d_schedule}}</b> </td> | |
87 | + <td>{{institute.quota.d_scheduleq}}</td> | |
88 | + <td>{{institute.quota.d_schedulex}} </td> | |
89 | + | |
90 | + <td> <b>{{institute.quota.d_next}}</b> </td> | |
91 | + <td>{{institute.quota.d_nextq}}</td> | |
92 | + <td>{{institute.quota.d_nextx}}</td> | |
93 | + </tr> | |
94 | + {% for sp in institute.scientific_programs.all %} | |
95 | + <tr class="sp"> | |
96 | + <td>Scientific program: {{sp.name}} </td> | |
97 | + <td>{{sp.quota_f}} </td> | |
98 | + <td> <b>{{sp.quota.d_total}}</b> </td> | |
99 | + <td>{{sp.quota.d_totalq}}</td> | |
100 | + <td>{{sp.quota.d_totalx}}</td> | |
101 | + | |
102 | + <td> <b>{{sp.quota.d_previous}}</b> </td> | |
103 | + <td>{{sp.quota.d_previousq}}</td> | |
104 | + <td>{{sp.quota.d_previousx}}</td> | |
105 | + | |
106 | + <td> <b>{{sp.quota.d_current}}</b> </td> | |
107 | + <td>{{sp.quota.d_currentq}}</td> | |
108 | + <td>{{sp.quota.d_currentx}}</td> | |
109 | + | |
110 | + <td> <b>{{sp.quota.d_passed}}</b> </td> | |
111 | + <td>{{sp.quota.d_passedq}}</td> | |
112 | + <td>{{sp.quota.d_passedx}}</td> | |
113 | + | |
114 | + <td> <b>{{sp.quota.d_schedule}}</b> </td> | |
115 | + <td>{{sp.quota.d_scheduleq}}</td> | |
116 | + <td>{{sp.quota.d_schedulex}} </td> | |
117 | + | |
118 | + <td> <b>{{sp.quota.d_next}}</b> </td> | |
119 | + <td>{{sp.quota.d_nextq}}</td> | |
120 | + <td>{{sp.quota.d_nextx}}</td> | |
121 | + </tr> | |
122 | + {% endfor %} | |
123 | + | |
124 | + {% endfor %} | |
125 | + | |
126 | + | |
127 | + | |
128 | +{% endblock %} | ... | ... |
src/core/pyros_django/scp_mgmt/urls.py
... | ... | @@ -43,5 +43,7 @@ urlpatterns = [ |
43 | 43 | path("detail_science_theme/<int:id>/",views.detail_science_theme,name="detail_science_theme"), |
44 | 44 | path("edit_science_theme/<int:id>/",views.edit_science_theme,name="edit_science_theme"), |
45 | 45 | path("delete_science_theme/<int:id>/",views.delete_science_theme,name="delete_science_theme"), |
46 | - path("test_tac_auto",views.test_tac_auto,name="test_tac_auto") | |
46 | + path("test_tac_auto",views.test_tac_auto,name="test_tac_auto"), | |
47 | + # quota | |
48 | + path("quota_sp",views.quota_sp,name="quota_sp") | |
47 | 49 | ] | ... | ... |
src/core/pyros_django/scp_mgmt/views.py
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | from datetime import date, datetime |
3 | 3 | from dateutil.relativedelta import relativedelta |
4 | 4 | import matplotlib.pyplot as plt |
5 | -import re,io,urllib,base64 | |
5 | +import re,io,urllib,base64, os | |
6 | 6 | |
7 | 7 | # Django imports |
8 | 8 | from django.http.response import HttpResponse |
... | ... | @@ -22,12 +22,12 @@ from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger |
22 | 22 | from dashboard.config_pyros import ConfigPyros |
23 | 23 | from .functions import get_global_svg_timeline, get_svg_timeline, get_proposal_svg_timeline |
24 | 24 | from user_mgmt.models import ScientificProgram, Institute, Period, SP_Period_User, SP_Period, PyrosUser, SP_Period_Guest, ScienceTheme #, UserLevel |
25 | -from seq_submit.models import Sequence | |
25 | +from seq_submit.models import Sequence, Quota | |
26 | 26 | #from src.core.pyros_django import scientific_program |
27 | 27 | from .forms import PeriodForm, ScienceThemeForm, ScientificProgramForm, InstituteForm, SP_PeriodForm,TACAssociationForm |
28 | 28 | from src.core.pyros_django.dashboard.decorator import level_required |
29 | 29 | |
30 | - | |
30 | +from src.core.pyros_django.obs_config.obsconfig_class import OBSConfig | |
31 | 31 | |
32 | 32 | |
33 | 33 | |
... | ... | @@ -807,6 +807,18 @@ def institute_list(request): |
807 | 807 | }) |
808 | 808 | |
809 | 809 | |
810 | +@login_required | |
811 | +@level_required("Admin", "Unit-PI", "Observer", "Operator", "TAC", "Management board member") | |
812 | +def quota_sp(request): | |
813 | + institutes = Institute.objects.all() | |
814 | + scientific_programs = ScientificProgram.objects.all() | |
815 | + config = OBSConfig(os.environ["PATH_TO_OBSCONF_FILE"],os.environ["unit_name"]) | |
816 | + current_night = config.fn.date2night("now") | |
817 | + current_period = Period.objects.exploitation_period() | |
818 | + quota_current_night = Quota.objects.get(id_period=current_period.id, night_id=current_night) | |
819 | + return render(request, 'scp_mgmt/quota_sp.html', locals()) | |
820 | + | |
821 | + | |
810 | 822 | # Exploitation Periods CRUD |
811 | 823 | |
812 | 824 | @login_required | ... | ... |