##// END OF EJS Templates
- Modificada la presentacion de la aplicacion web, y agregando la funcionalidad para guardar los perfiles temporales.
jsalyrosas -
r181:182
parent child
Show More
@@ -1,24 +1,24
1 from django.conf.urls import patterns, url
1 from django.conf.urls import patterns, url
2
2
3 urlpatterns = patterns('abscontrol.views',
3 urlpatterns = patterns('abscontrol.views',
4 url(r'^$', 'index'),
4 url(r'^$', 'index'),
5 url(r'^new/$', 'new'),
5 url(r'^new/$', 'new'),
6 url(r'^save/$', 'save'),
6 url(r'^save/$', 'save'),
7 url(r'^view/(?P<profile_id>\d+)/$', 'view'),
7 url(r'^view/(?P<profile_id>\d+)/$', 'view'),
8 url(r'^edit/(?P<profile_id>\d+)/$', 'edit'),
8 url(r'^edit/(?P<profile_id>\d+)/$', 'edit'),
9 #url(r'^(?P<profile_id>\d+)/edit/$', 'edit'),
9 url(r'^update/(?P<profile_id>\d+)/$', 'update'),
10 #url(r'^(?P<profile_id>\d+)/$', 'detail'),
10 #url(r'^(?P<profile_id>\d+)/$', 'detail'),
11 url(r'^(?P<profile_id>\d+)/add/$', 'addPattern'),
11 url(r'^(?P<profile_id>\d+)/add/$', 'addPattern'),
12 url(r'^(?P<profile_id>\d+)/save/$', 'savePattern'),
12 url(r'^(?P<profile_id>\d+)/save/$', 'savePattern'),
13 url(r'^(?P<profile_id>\d+)/edit/(?P<pattern_id>\d+)/$', 'editPattern'),
13 url(r'^(?P<profile_id>\d+)/edit/(?P<pattern_id>\d+)/$', 'editPattern'),
14 url(r'^(?P<profile_id>\d+)/view/(?P<pattern_id>\d+)/$', 'viewPattern'),
14 url(r'^(?P<profile_id>\d+)/view/(?P<pattern_id>\d+)/$', 'viewPattern'),
15 url(r'^(?P<profile_id>\d+)/delete/(?P<pattern_id>\d+)/$', 'deletePattern'),
15 url(r'^(?P<profile_id>\d+)/delete/(?P<pattern_id>\d+)/$', 'deletePattern'),
16 #url(r'^(?P<poll_id>\d+)/results/$', 'results'),
16 #url(r'^(?P<poll_id>\d+)/results/$', 'results'),
17 #url(r'^(?P<poll_id>\d+)/vote/$', 'vote'),
17 #url(r'^(?P<poll_id>\d+)/vote/$', 'vote'),
18 url(r'^import/$', 'importProfile'),
18 url(r'^import/$', 'importProfile'),
19 url(r'^showImport/$', 'showImport'),
19 url(r'^showImport/$', 'showImport'),
20 url(r'^saveImport/$', 'saveImport'),
20 url(r'^saveImport/$', 'saveImport'),
21 url(r'^(?P<profile_id>\d+)/(?P<pattern_id>\d+)/overjro/(?P<antenna_id>\d+)/$', 'overJRO'),
21 url(r'^(?P<profile_id>\d+)/(?P<pattern_id>\d+)/overjro/(?P<antenna_id>\d+)/$', 'overJRO'),
22 url(r'^export/(?P<profile_id>\d+)/$', 'export'),
22 url(r'^export/(?P<profile_id>\d+)/$', 'export'),
23 url(r'^send/(?P<profile_id>\d+)/$', 'send'),
23 url(r'^send/(?P<profile_id>\d+)/$', 'send'),
24 ) No newline at end of file
24 )
@@ -1,401 +1,404
1 from django.shortcuts import render_to_response, redirect
1 from django.shortcuts import render_to_response, redirect
2 from django.http import HttpResponse
2 from django.http import HttpResponse
3 from django.conf import settings
3 from django.conf import settings
4 from django.utils.encoding import smart_str
4 from django.utils.encoding import smart_str
5 from django.core.servers.basehttp import FileWrapper
5 from django.core.servers.basehttp import FileWrapper
6 import mimetypes
6 import mimetypes
7
7
8 from datetime import datetime
8 from datetime import datetime
9
9
10 from abscontrol.models import Profile, Pattern, AntennaDown, AntennaUp
10 from abscontrol.models import Profile, Pattern, AntennaDown, AntennaUp
11
11
12 from util.readABSFile import readABSFile
12 from util.readABSFile import readABSFile
13 from util.saveABSFile import saveABSFile
13 from util.saveABSFile import saveABSFile
14 from scripts.sendFile import sendFile
14 from scripts.sendFile import sendFile
15
15
16 txtAntenna = "[[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
16 txtAntenna = "[[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
17 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
17 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
18 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
18 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
19 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
19 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
20 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
20 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
21 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
21 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
22 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
22 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
23 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]]"
23 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]]"
24
24
25 txtTxUp = "[[1,1,1,1,1,1,1,1]," \
25 txtTxUp = "[[1,1,1,1,1,1,1,1]," \
26 "[1,1,1,1,1,1,1,1]," \
26 "[1,1,1,1,1,1,1,1]," \
27 "[1,1,1,1,1,1,1,1]," \
27 "[1,1,1,1,1,1,1,1]," \
28 "[1,1,1,1,1,1,1,1]," \
28 "[1,1,1,1,1,1,1,1]," \
29 "[1,1,1,1,1,1,1,1]," \
29 "[1,1,1,1,1,1,1,1]," \
30 "[1,1,1,1,1,1,1,1]," \
30 "[1,1,1,1,1,1,1,1]," \
31 "[1,1,1,1,1,1,1,1]," \
31 "[1,1,1,1,1,1,1,1]," \
32 "[1,1,1,1,1,1,1,1]]"
32 "[1,1,1,1,1,1,1,1]]"
33
33
34 txtTxDown = "[[1,1,1,1,0,0,0,0]," \
34 txtTxDown = "[[1,1,1,1,0,0,0,0]," \
35 "[1,1,1,1,0,0,0,0]," \
35 "[1,1,1,1,0,0,0,0]," \
36 "[1,1,1,1,0,0,0,0]," \
36 "[1,1,1,1,0,0,0,0]," \
37 "[1,1,1,1,0,0,0,0]," \
37 "[1,1,1,1,0,0,0,0]," \
38 "[0,0,0,0,1,1,1,1]," \
38 "[0,0,0,0,1,1,1,1]," \
39 "[0,0,0,0,1,1,1,1]," \
39 "[0,0,0,0,1,1,1,1]," \
40 "[0,0,0,0,1,1,1,1]," \
40 "[0,0,0,0,1,1,1,1]," \
41 "[0,0,0,0,1,1,1,1]]"
41 "[0,0,0,0,1,1,1,1]]"
42
42
43 txtRxUp = "[[0,0,0,0,1,1,1,1]," \
43 txtRxUp = "[[0,0,0,0,1,1,1,1]," \
44 "[0,0,0,0,1,1,1,1]," \
44 "[0,0,0,0,1,1,1,1]," \
45 "[0,0,0,0,1,1,1,1]," \
45 "[0,0,0,0,1,1,1,1]," \
46 "[0,0,0,0,1,1,1,1]," \
46 "[0,0,0,0,1,1,1,1]," \
47 "[1,1,1,1,1,1,1,1]," \
47 "[1,1,1,1,1,1,1,1]," \
48 "[1,1,1,1,1,1,1,1]," \
48 "[1,1,1,1,1,1,1,1]," \
49 "[1,1,1,1,1,1,1,1]," \
49 "[1,1,1,1,1,1,1,1]," \
50 "[1,1,1,1,1,1,1,1]]"
50 "[1,1,1,1,1,1,1,1]]"
51
51
52 txtRxDown = "[[1,1,1,1,1,1,1,1]," \
52 txtRxDown = "[[1,1,1,1,1,1,1,1]," \
53 "[1,1,1,1,1,1,1,1]," \
53 "[1,1,1,1,1,1,1,1]," \
54 "[1,1,1,1,1,1,1,1]," \
54 "[1,1,1,1,1,1,1,1]," \
55 "[1,1,1,1,1,1,1,1]," \
55 "[1,1,1,1,1,1,1,1]," \
56 "[1,1,1,1,1,1,1,1]," \
56 "[1,1,1,1,1,1,1,1]," \
57 "[1,1,1,1,1,1,1,1]," \
57 "[1,1,1,1,1,1,1,1]," \
58 "[1,1,1,1,1,1,1,1]," \
58 "[1,1,1,1,1,1,1,1]," \
59 "[1,1,1,1,1,1,1,1]]"
59 "[1,1,1,1,1,1,1,1]]"
60
60
61 txtUes = "[0.533333,0.00000,1.06667,0.00000]"
61 txtUes = "[0.533333,0.00000,1.06667,0.00000]"
62
62
63 def index(request):
63 def index(request):
64 #latest_poll_list = profileAntenna.objects.all().order_by('-pub_date')[:5]
64 #latest_poll_list = profileAntenna.objects.all().order_by('-pub_date')[:5]
65 profile_list = Profile.objects.filter(state=1)
65 profile_list = Profile.objects.filter(state=1)
66 return render_to_response('abscontrol/index.html', {'profile_list': profile_list})
66 return render_to_response('abscontrol/index.html', {'profile_list': profile_list})
67
67
68 def new(request):
68 def new(request):
69 profile_list = Profile.objects.filter(state=1)
69 profile_list = Profile.objects.filter(state=1)
70 txtProfile = datetime.now().strftime("%Y%m%d%H%M%S%f")
70 txtProfile = datetime.now().strftime("%Y%m%d%H%M%S%f")
71 newprofile = Profile(name=txtProfile)
71 newprofile = Profile(name=txtProfile)
72 newprofile.save()
72 newprofile.save()
73
73
74 lsPatterns = None
74 lsPatterns = None
75
75
76 return render_to_response('abscontrol/new.html', {'profile_list': profile_list,
76 return render_to_response('abscontrol/new.html', {'profile_list': profile_list,
77 'txtAntenna' : txtAntenna,
77 'txtAntenna' : txtAntenna,
78 'profile_name' : newprofile.name,
78 'profile_name' : newprofile.name,
79 'profile_id' : newprofile.id,
79 'profile_id' : newprofile.id,
80 'lsPatterns' : lsPatterns,
80 'lsPatterns' : lsPatterns,
81 'txtUes' : txtUes, 'txtTxUp' : txtTxUp,
81 'txtUes' : txtUes, 'txtTxUp' : txtTxUp,
82 'txtTxDown' : txtTxDown, 'txtRxUp' : txtRxUp,
82 'txtTxDown' : txtTxDown, 'txtRxUp' : txtRxUp,
83 'txtRxDown' : txtRxDown,
83 'txtRxDown' : txtRxDown,
84 })
84 })
85
85
86 def save(request):
86 def save(request):
87
87
88 txtProfile = request.POST["txtProfile"]
88 txtProfile = request.POST["txtProfile"]
89
89
90 txtAntennaUp = request.POST["txtAntennaUp"]
90 txtAntennaUp = request.POST["txtAntennaUp"]
91 txtTxUp = request.POST["txtTxUp"]
91 txtTxUp = request.POST["txtTxUp"]
92 txtRxUp = request.POST["txtRxUp"]
92 txtRxUp = request.POST["txtRxUp"]
93 txtUesUp = request.POST["txtUesUp"]
93 txtUesUp = request.POST["txtUesUp"]
94
94
95 txtAntennaDown = request.POST["txtAntennaDown"]
95 txtAntennaDown = request.POST["txtAntennaDown"]
96 txtTxDown = request.POST["txtTxDown"]
96 txtTxDown = request.POST["txtTxDown"]
97 txtRxDown = request.POST["txtRxDown"]
97 txtRxDown = request.POST["txtRxDown"]
98 txtUesDown = request.POST["txtUesDown"]
98 txtUesDown = request.POST["txtUesDown"]
99
99
100 newprofile = Profile(name=txtProfile)
100 newprofile = Profile(name=txtProfile)
101 newprofile.save()
101 newprofile.save()
102
102
103 newpattern = newprofile.pattern_set.create(value=1)
103 newpattern = newprofile.pattern_set.create(value=1)
104 newpattern.antennaup_set.create(value=txtAntennaUp,tx=txtTxUp,rx=txtRxUp,ues=txtUesUp)
104 newpattern.antennaup_set.create(value=txtAntennaUp,tx=txtTxUp,rx=txtRxUp,ues=txtUesUp)
105 newpattern.antennadown_set.create(value=txtAntennaDown,tx=txtTxDown,rx=txtRxDown,ues=txtUesDown)
105 newpattern.antennadown_set.create(value=txtAntennaDown,tx=txtTxDown,rx=txtRxDown,ues=txtUesDown)
106
106
107 newurl = '/abscontrol/view/%d' % newprofile.id
107 newurl = '/abscontrol/view/%d' % newprofile.id
108
108
109 return redirect(newurl)
109 return redirect(newurl)
110
111 def update(request, profile_id):
112 pass
110
113
111 def view(request, profile_id):
114 def view(request, profile_id):
112 nextPattern = 0
115 nextPattern = 0
113
116
114 if request.method == 'GET' and 'pattern' in request.GET:
117 if request.method == 'GET' and 'pattern' in request.GET:
115 pattern_value = request.GET["pattern"]
118 pattern_value = request.GET["pattern"]
116 else:
119 else:
117 pattern_value = 1
120 pattern_value = 1
118
121
119 profile_list = Profile.objects.filter(state=1)
122 profile_list = Profile.objects.filter(state=1)
120 objProfile = Profile.objects.get(pk=profile_id)
123 objProfile = Profile.objects.get(pk=profile_id)
121
124
122 lsPatterns = objProfile.pattern_set.all()
125 lsPatterns = objProfile.pattern_set.all()
123 patternChoosen = objProfile.pattern_set.get(value=pattern_value)
126 patternChoosen = objProfile.pattern_set.get(value=pattern_value)
124 objAntennaUp = patternChoosen.antennaup_set.get()
127 objAntennaUp = patternChoosen.antennaup_set.get()
125 objAntennaDown = patternChoosen.antennadown_set.get()
128 objAntennaDown = patternChoosen.antennadown_set.get()
126
129
127 if len(lsPatterns) > 1:
130 if len(lsPatterns) > 1:
128 if pattern_value == 1:
131 if pattern_value == 1:
129 nextValuePattern = pattern_value + 1
132 nextValuePattern = pattern_value + 1
130 nextPattern = objProfile.pattern_set.get(value=nextValuePattern)
133 nextPattern = objProfile.pattern_set.get(value=nextValuePattern)
131
134
132
135
133 return render_to_response('abscontrol/view.html', {'objProfile': objProfile, 'profile_list': profile_list,
136 return render_to_response('abscontrol/view.html', {'objProfile': objProfile, 'profile_list': profile_list,
134 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
137 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
135 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
138 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
136 'nextPattern' : nextPattern,
139 'nextPattern' : nextPattern,
137 })
140 })
138
141
139 def edit(request, profile_id):
142 def edit(request, profile_id):
140 if request.method == 'GET' and 'pattern' in request.GET:
143 if request.method == 'GET' and 'pattern' in request.GET:
141 pattern_value = request.GET["pattern"]
144 pattern_value = request.GET["pattern"]
142 else:
145 else:
143 pattern_value = 1
146 pattern_value = 1
144
147
145 profile_list = Profile.objects.filter(state=1)
148 profile_list = Profile.objects.filter(state=1)
146 objProfile = Profile.objects.get(pk=profile_id)
149 objProfile = Profile.objects.get(pk=profile_id)
147
150
148 lsPatterns = objProfile.pattern_set.all()
151 lsPatterns = objProfile.pattern_set.all()
149 patternChoosen = objProfile.pattern_set.get(value=pattern_value)
152 patternChoosen = objProfile.pattern_set.get(value=pattern_value)
150 objAntennaUp = patternChoosen.antennaup_set.get()
153 objAntennaUp = patternChoosen.antennaup_set.get()
151 objAntennaDown = patternChoosen.antennadown_set.get()
154 objAntennaDown = patternChoosen.antennadown_set.get()
152
155
153 return render_to_response('abscontrol/edit.html', {'objProfile': objProfile, 'profile_list': profile_list,
156 return render_to_response('abscontrol/edit.html', {'objProfile': objProfile, 'profile_list': profile_list,
154 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
157 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
155 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
158 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
156 })
159 })
157
160
158 def addPattern(request, profile_id):
161 def addPattern(request, profile_id):
159 profile_list = Profile.objects.filter(state=1)
162 profile_list = Profile.objects.filter(state=1)
160 objProfile = Profile.objects.get(pk=profile_id)
163 objProfile = Profile.objects.get(pk=profile_id)
161
164
162 return render_to_response('abscontrol/addPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
165 return render_to_response('abscontrol/addPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
163 'txtAntenna' : txtAntenna, 'txtUes' : txtUes,
166 'txtAntenna' : txtAntenna, 'txtUes' : txtUes,
164 'txtTxUp' : txtTxUp, 'txtTxDown' : txtTxDown,
167 'txtTxUp' : txtTxUp, 'txtTxDown' : txtTxDown,
165 'txtRxUp' : txtRxUp, 'txtRxDown' : txtRxDown,
168 'txtRxUp' : txtRxUp, 'txtRxDown' : txtRxDown,
166 })
169 })
167
170
168 def editPattern(request, profile_id, pattern_id):
171 def editPattern(request, profile_id, pattern_id):
169 profile_list = Profile.objects.filter(state=1)
172 profile_list = Profile.objects.filter(state=1)
170 objProfile = Profile.objects.get(pk=profile_id)
173 objProfile = Profile.objects.get(pk=profile_id)
171 lsPatterns = objProfile.pattern_set.all()
174 lsPatterns = objProfile.pattern_set.all()
172 patternChoosen = Pattern.objects.get(pk=pattern_id)
175 patternChoosen = Pattern.objects.get(pk=pattern_id)
173 objAntennaUp = patternChoosen.antennaup_set.get()
176 objAntennaUp = patternChoosen.antennaup_set.get()
174 objAntennaDown = patternChoosen.antennadown_set.get()
177 objAntennaDown = patternChoosen.antennadown_set.get()
175
178
176 return render_to_response('abscontrol/editPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
179 return render_to_response('abscontrol/editPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
177 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
180 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
178 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
181 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
179 })
182 })
180
183
181 def savePattern(request, profile_id):
184 def savePattern(request, profile_id):
182 pattern_id = 0
185 pattern_id = 0
183 method = "save"
186 method = "save"
184
187
185 if 'pattern_id' in request.POST:
188 if 'pattern_id' in request.POST:
186 pattern_id = request.POST["pattern_id"]
189 pattern_id = request.POST["pattern_id"]
187 method = "update"
190 method = "update"
188
191
189 maxValuePattern = 0
192 maxValuePattern = 0
190 txtAntennaUp = request.POST["txtAntennaUp"]
193 txtAntennaUp = request.POST["txtAntennaUp"]
191 txtTxUp = request.POST["txtTxUp"]
194 txtTxUp = request.POST["txtTxUp"]
192 txtRxUp = request.POST["txtRxUp"]
195 txtRxUp = request.POST["txtRxUp"]
193 txtUesUp = request.POST["txtUesUp"]
196 txtUesUp = request.POST["txtUesUp"]
194
197
195 txtAntennaDown = request.POST["txtAntennaDown"]
198 txtAntennaDown = request.POST["txtAntennaDown"]
196 txtTxDown = request.POST["txtTxDown"]
199 txtTxDown = request.POST["txtTxDown"]
197 txtRxDown = request.POST["txtRxDown"]
200 txtRxDown = request.POST["txtRxDown"]
198 txtUesDown = request.POST["txtUesDown"]
201 txtUesDown = request.POST["txtUesDown"]
199
202
200 mode = request.POST["mode"]
203 mode = request.POST["mode"]
201
204
202 if method == "save":
205 if method == "save":
203 objProfile = Profile.objects.get(pk=profile_id)
206 objProfile = Profile.objects.get(pk=profile_id)
204 lsPatterns = objProfile.pattern_set.all()
207 lsPatterns = objProfile.pattern_set.all()
205 if len(lsPatterns) > 0:
208 if len(lsPatterns) > 0:
206 for element in lsPatterns:
209 for element in lsPatterns:
207 if element.value > maxValuePattern:
210 if element.value > maxValuePattern:
208 maxPattern = element.value
211 maxPattern = element.value
209 else:
212 else:
210 maxPattern = 0
213 maxPattern = 0
211
214
212 if maxPattern < 10 :
215 if maxPattern < 10 :
213 newValuePattern = maxPattern + 1
216 newValuePattern = maxPattern + 1
214 newpattern = objProfile.pattern_set.create(value=newValuePattern)
217 newpattern = objProfile.pattern_set.create(value=newValuePattern)
215 newpattern.antennaup_set.create(value=txtAntennaUp,tx=txtTxUp,rx=txtRxUp,ues=txtUesUp)
218 newpattern.antennaup_set.create(value=txtAntennaUp,tx=txtTxUp,rx=txtRxUp,ues=txtUesUp)
216 newpattern.antennadown_set.create(value=txtAntennaDown,tx=txtTxDown,rx=txtRxDown,ues=txtUesDown)
219 newpattern.antennadown_set.create(value=txtAntennaDown,tx=txtTxDown,rx=txtRxDown,ues=txtUesDown)
217 error = 0
220 error = 0
218 else:
221 else:
219 error = 1 # Can not add more patterns
222 error = 1 # Can not add more patterns
220
223
221 if mode == "e":
224 if mode == "e":
222 newurl = '/abscontrol/%d/edit/%d' % (int(profile_id), newpattern.id)
225 newurl = '/abscontrol/%d/edit/%d' % (int(profile_id), newpattern.id)
223 else:
226 else:
224 newurl = '/abscontrol/%d/view/%d' % (int(profile_id), newpattern.id)
227 newurl = '/abscontrol/%d/view/%d' % (int(profile_id), newpattern.id)
225 else:
228 else:
226 txtAntennaUpId = request.POST["txtAntennaUpId"]
229 txtAntennaUpId = request.POST["txtAntennaUpId"]
227 objAntennaUp = AntennaUp.objects.get(pk=txtAntennaUpId)
230 objAntennaUp = AntennaUp.objects.get(pk=txtAntennaUpId)
228 objAntennaUp.value = txtAntennaUp
231 objAntennaUp.value = txtAntennaUp
229 objAntennaUp.tx = txtTxUp
232 objAntennaUp.tx = txtTxUp
230 objAntennaUp.rx = txtRxUp
233 objAntennaUp.rx = txtRxUp
231 objAntennaUp.ues = txtUesUp
234 objAntennaUp.ues = txtUesUp
232 objAntennaUp.save()
235 objAntennaUp.save()
233
236
234 txtAntennaDownId = request.POST["txtAntennaDownId"]
237 txtAntennaDownId = request.POST["txtAntennaDownId"]
235 objAntennaDown = AntennaDown.objects.get(pk=txtAntennaDownId)
238 objAntennaDown = AntennaDown.objects.get(pk=txtAntennaDownId)
236 objAntennaDown.value = txtAntennaDown
239 objAntennaDown.value = txtAntennaDown
237 objAntennaDown.tx = txtTxDown
240 objAntennaDown.tx = txtTxDown
238 objAntennaDown.rx = txtRxDown
241 objAntennaDown.rx = txtRxDown
239 objAntennaDown.ues = txtUesDown
242 objAntennaDown.ues = txtUesDown
240 objAntennaDown.save()
243 objAntennaDown.save()
241
244
242 if mode == "e":
245 if mode == "e":
243 newurl = '/abscontrol/%d/edit/%d' % (int(profile_id), int(pattern_id))
246 newurl = '/abscontrol/%d/edit/%d' % (int(profile_id), int(pattern_id))
244 else:
247 else:
245 newurl = '/abscontrol/%d/view/%d' % (int(profile_id), int(pattern_id))
248 newurl = '/abscontrol/%d/view/%d' % (int(profile_id), int(pattern_id))
246
249
247 return redirect(newurl)
250 return redirect(newurl)
248
251
249 def viewPattern(request, profile_id, pattern_id):
252 def viewPattern(request, profile_id, pattern_id):
250
253
251 profile_list = Profile.objects.filter(state=1)
254 profile_list = Profile.objects.filter(state=1)
252 objProfile = Profile.objects.get(pk=profile_id)
255 objProfile = Profile.objects.get(pk=profile_id)
253
256
254 patternChoosen = Pattern.objects.get(pk=pattern_id)
257 patternChoosen = Pattern.objects.get(pk=pattern_id)
255
258
256 objAntennaUp = patternChoosen.antennaup_set.get()
259 objAntennaUp = patternChoosen.antennaup_set.get()
257 objAntennaDown = patternChoosen.antennadown_set.get()
260 objAntennaDown = patternChoosen.antennadown_set.get()
258
261
259 lsPatterns = objProfile.pattern_set.all()
262 lsPatterns = objProfile.pattern_set.all()
260
263
261 return render_to_response('abscontrol/viewPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
264 return render_to_response('abscontrol/viewPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
262 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
265 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
263 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
266 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
264 })
267 })
265
268
266 def deletePattern(request, profile_id, pattern_id):
269 def deletePattern(request, profile_id, pattern_id):
267 newurl = '/abscontrol/edit/%d' % int(profile_id)
270 newurl = '/abscontrol/edit/%d' % int(profile_id)
268
271
269 return redirect(newurl)
272 return redirect(newurl)
270
273
271 def importProfile(request):
274 def importProfile(request):
272 profile_list = Profile.objects.filter(state=1)
275 profile_list = Profile.objects.filter(state=1)
273 return render_to_response('abscontrol/import.html', {'profile_list': profile_list,})
276 return render_to_response('abscontrol/import.html', {'profile_list': profile_list,})
274
277
275 def showImport(request):
278 def showImport(request):
276 if request.method == 'POST':
279 if request.method == 'POST':
277 txtFilename = request.FILES['txtFile']
280 txtFilename = request.FILES['txtFile']
278 if txtFilename:
281 if txtFilename:
279 destination = open('/tmp/'+txtFilename.name, 'wb+')
282 destination = open('/tmp/'+txtFilename.name, 'wb+')
280 for chunk in txtFilename.chunks():
283 for chunk in txtFilename.chunks():
281 destination.write(chunk)
284 destination.write(chunk)
282 destination.close()
285 destination.close()
283 filename = '/tmp/'+txtFilename.name
286 filename = '/tmp/'+txtFilename.name
284 readFile = readABSFile(filename)
287 readFile = readABSFile(filename)
285 expName, num_patterns, patterns = readFile.getMetadata()
288 expName, num_patterns, patterns = readFile.getMetadata()
286 else:
289 else:
287 txtFilename = "Error"
290 txtFilename = "Error"
288 #content = "Error"
291 #content = "Error"
289 expName = ""
292 expName = ""
290 num_patterns = 0
293 num_patterns = 0
291
294
292 return render_to_response('abscontrol/upload-edit.html', {'txtFilename': txtFilename, 'patterns' : patterns,
295 return render_to_response('abscontrol/upload-edit.html', {'txtFilename': txtFilename, 'patterns' : patterns,
293 'expName' : expName, 'num_patterns' : num_patterns,
296 'expName' : expName, 'num_patterns' : num_patterns,
294 })
297 })
295
298
296 def saveImport(request):
299 def saveImport(request):
297 patterns = []
300 patterns = []
298
301
299 expName = request.POST["txtProfile"]
302 expName = request.POST["txtProfile"]
300 num_patterns = int(request.POST["txtNumPatterns"])
303 num_patterns = int(request.POST["txtNumPatterns"])
301
304
302 newprofile = Profile(name=expName)
305 newprofile = Profile(name=expName)
303 newprofile.save()
306 newprofile.save()
304
307
305 for i in range(0,num_patterns):
308 for i in range(0,num_patterns):
306 number = request.POST["txtNumberPattern"+str(i+1)]
309 number = request.POST["txtNumberPattern"+str(i+1)]
307 txtAntennaUp = request.POST["txtAntennaUp"+str(i+1)]
310 txtAntennaUp = request.POST["txtAntennaUp"+str(i+1)]
308 txtAntennaDown = request.POST["txtAntennaDown"+str(i+1)]
311 txtAntennaDown = request.POST["txtAntennaDown"+str(i+1)]
309 dicPattern = {"number" : number, "up" : txtAntennaUp, "down" : txtAntennaDown}
312 dicPattern = {"number" : number, "up" : txtAntennaUp, "down" : txtAntennaDown}
310 patterns.append(dicPattern)
313 patterns.append(dicPattern)
311 newpattern = newprofile.pattern_set.create(value=number)
314 newpattern = newprofile.pattern_set.create(value=number)
312 newpattern.antennaup_set.create(value=txtAntennaUp)
315 newpattern.antennaup_set.create(value=txtAntennaUp)
313 newpattern.antennadown_set.create(value=txtAntennaDown)
316 newpattern.antennadown_set.create(value=txtAntennaDown)
314
317
315 newurl = '/abscontrol/view/%d' % newprofile.id
318 newurl = '/abscontrol/view/%d' % newprofile.id
316
319
317 return redirect(newurl)
320 return redirect(newurl)
318 '''
321 '''
319 return render_to_response('abscontrol/upload-view.html', {'expName' : expName, 'patterns' : patterns,
322 return render_to_response('abscontrol/upload-view.html', {'expName' : expName, 'patterns' : patterns,
320 'num_patterns' : num_patterns,
323 'num_patterns' : num_patterns,
321 })
324 })
322 '''
325 '''
323
326
324 def overJRO(request, profile_id, pattern_id, antenna_id):
327 def overJRO(request, profile_id, pattern_id, antenna_id):
325 if request.GET["beam"] == "Up":
328 if request.GET["beam"] == "Up":
326 objAntenna = AntennaUp.objects.get(pk=antenna_id)
329 objAntenna = AntennaUp.objects.get(pk=antenna_id)
327 else:
330 else:
328 objAntenna = AntennaDown.objects.get(pk=antenna_id)
331 objAntenna = AntennaDown.objects.get(pk=antenna_id)
329 objProfile = Profile.objects.get(pk=profile_id)
332 objProfile = Profile.objects.get(pk=profile_id)
330 exp_name = objProfile.name
333 exp_name = objProfile.name
331
334
332 phase_tx = objAntenna.value
335 phase_tx = objAntenna.value
333 gain_tx = objAntenna.tx
336 gain_tx = objAntenna.tx
334 gain_rx = objAntenna.rx
337 gain_rx = objAntenna.rx
335 ues_tx = objAntenna.ues
338 ues_tx = objAntenna.ues
336 only_rx = objAntenna.only_rx
339 only_rx = objAntenna.only_rx
337
340
338 return exp_name, phase_tx, gain_tx, gain_rx, ues_tx, only_rx
341 return exp_name, phase_tx, gain_tx, gain_rx, ues_tx, only_rx
339
342
340 def export(request, profile_id):
343 def export(request, profile_id):
341 listPatterns = []
344 listPatterns = []
342 objProfile = Profile.objects.get(pk=profile_id)
345 objProfile = Profile.objects.get(pk=profile_id)
343 exp_name = objProfile.name
346 exp_name = objProfile.name
344 lsPatterns = objProfile.pattern_set.all()
347 lsPatterns = objProfile.pattern_set.all()
345 for element in lsPatterns:
348 for element in lsPatterns:
346 objAntennaUp = element.antennaup_set.get()
349 objAntennaUp = element.antennaup_set.get()
347 objAntennaDown = element.antennadown_set.get()
350 objAntennaDown = element.antennadown_set.get()
348 dicPatterns = {"number" : element.value, "up" : objAntennaUp.value, "down" : objAntennaDown.value}
351 dicPatterns = {"number" : element.value, "up" : objAntennaUp.value, "down" : objAntennaDown.value}
349 listPatterns.append(dicPatterns)
352 listPatterns.append(dicPatterns)
350
353
351 absFile = saveABSFile()
354 absFile = saveABSFile()
352 absFile.setParameters(settings.MEDIA_ROOT, exp_name, listPatterns)
355 absFile.setParameters(settings.MEDIA_ROOT, exp_name, listPatterns)
353 filename, filesize = absFile.save()
356 filename, filesize = absFile.save()
354
357
355 wrapper = FileWrapper( open( filename, "r" ) )
358 wrapper = FileWrapper( open( filename, "r" ) )
356 content_type = mimetypes.guess_type( filename )[0]
359 content_type = mimetypes.guess_type( filename )[0]
357
360
358 response = HttpResponse(wrapper, content_type = content_type)
361 response = HttpResponse(wrapper, content_type = content_type)
359 response['Content-Description'] = 'File Transfer'
362 response['Content-Description'] = 'File Transfer'
360 response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(filename)
363 response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(filename)
361 response['Content-Transfer-Encoding'] = 'binary'
364 response['Content-Transfer-Encoding'] = 'binary'
362 response['Expires'] = '0'
365 response['Expires'] = '0'
363 response['Cache-Control'] = 'must-revalidate'
366 response['Cache-Control'] = 'must-revalidate'
364 response['Pragma'] = 'public'
367 response['Pragma'] = 'public'
365 response['Content-Length'] = '%s' % str(filesize)
368 response['Content-Length'] = '%s' % str(filesize)
366 response['X-Sendfile'] = '%s' % smart_str(filename)
369 response['X-Sendfile'] = '%s' % smart_str(filename)
367
370
368 return response
371 return response
369
372
370 def send(request, profile_id):
373 def send(request, profile_id):
371 listPatterns = []
374 listPatterns = []
372 objProfile = Profile.objects.get(pk=profile_id)
375 objProfile = Profile.objects.get(pk=profile_id)
373 exp_name = objProfile.name
376 exp_name = objProfile.name
374
377
375 lsPatterns = objProfile.pattern_set.all()
378 lsPatterns = objProfile.pattern_set.all()
376 for element in lsPatterns:
379 for element in lsPatterns:
377 objAntennaUp = element.antennaup_set.get()
380 objAntennaUp = element.antennaup_set.get()
378 objAntennaDown = element.antennadown_set.get()
381 objAntennaDown = element.antennadown_set.get()
379 dicPatterns = {"number" : element.value, "up" : objAntennaUp.value, "down" : objAntennaDown.value}
382 dicPatterns = {"number" : element.value, "up" : objAntennaUp.value, "down" : objAntennaDown.value}
380 listPatterns.append(dicPatterns)
383 listPatterns.append(dicPatterns)
381
384
382 absFile = saveABSFile()
385 absFile = saveABSFile()
383 absFile.setParameters(settings.MEDIA_ROOT, exp_name, listPatterns)
386 absFile.setParameters(settings.MEDIA_ROOT, exp_name, listPatterns)
384 filename, filesize = absFile.save()
387 filename, filesize = absFile.save()
385
388
386 apiclient = sendFile()
389 apiclient = sendFile()
387 apiclient.execute(filename)
390 apiclient.execute(filename)
388 output = apiclient.getOutput()
391 output = apiclient.getOutput()
389
392
390 if output == "OK":
393 if output == "OK":
391 message = "File sent successfully."
394 message = "File sent successfully."
392 objProfile.hits += 1
395 objProfile.hits += 1
393 objProfile.save()
396 objProfile.save()
394 else:
397 else:
395 message = "Error sending file."
398 message = "Error sending file."
396
399
397 profile_list = Profile.objects.all()
400 profile_list = Profile.objects.all()
398
401
399 return render_to_response('abscontrol/sendFile.html', {'message': message, "profile_list" : profile_list,
402 return render_to_response('abscontrol/sendFile.html', {'message': message, "profile_list" : profile_list,
400 'objProfile': objProfile,
403 'objProfile': objProfile,
401 })
404 })
@@ -1,99 +1,114
1 /*
1 /*
2 * font-family: 'Droid Sans', sans-serif;
2 * font-family: 'Droid Sans', sans-serif;
3 * font-family: 'Ubuntu', sans-serif;
3 * font-family: 'Ubuntu', sans-serif;
4 * font-family: 'Open Sans', sans-serif;
4 * font-family: 'Open Sans', sans-serif;
5 * font-family: 'Open Sans Condensed', sans-serif;
5 * font-family: 'Open Sans Condensed', sans-serif;
6 * font-family: 'Roboto Condensed', sans-serif;
6 * font-family: 'Roboto Condensed', sans-serif;
7 */
7 */
8
8
9 body { font-size: 12px; }
9 body { font-size: 12px; }
10 header {border: 1px solid #fcc; font-size: 2em; height: 50px; text-align: center; line-height: 50px}
10 header {width: 980px; border: 0px solid #fcc !important; height: 50px; text-align: center; line-height: 50px}
11 #schema {margin: 0 auto; width: 980px; border: 1px solid #f00 !important; padding: 10px 10px 10px 10px}
11 #schema {margin: 0 auto; width: 980px; border: 0px solid #f00 !important; padding: 10px 10px 10px 10px}
12 #content {border: 0px solid #1cc; margin-top: 5px; margin-bottom: 5px}
12 #content {border: 0px solid #1cc; margin-top: 5px; margin-bottom: 5px}
13 #content #topcolumn {float: left;border: 1px solid #ddd !important; width: 980px; height: 40px; line-height: 35px;
13 #content #topcolumn {float: left; border: 1px solid #ddd !important; width: 980px; height: 40px; line-height: 35px;
14 margin: 2px 0px; box-shadow: 2px 2px 5px #888;}
14 margin: 2px 0px; box-shadow: 2px 2px 5px #888;}
15 #content #maincolumn {float: left; border: 0px solid #000 !important; width: 980px; margin: 2px 0px; padding: 0px 0px;
15 #content #maincolumn {float: left; border: 1px solid #ddd !important; width: 980px; margin: 2px 0px; padding: 0px 0px;
16 box-shadow: 2px 2px 5px #666;}
16 box-shadow: 2px 2px 5px #666;}
17 footer {border: 1px solid #200; font-size: 0.9em; height: 30px; text-align: center; line-height: 20px}
17 footer {border: 0px solid #200 !important; height: 30px; text-align: center; line-height: 30px;
18 margin: 2px 0px; box-shadow: 2px 2px 5px #888;}
18
19
19 .cleardivs {clear: both; border: 0px solid #400; height: 0px}
20 .cleardivs {clear: both; border: 0px solid #400; height: 0px}
20 /****************************************************************************************/
21 /****************************************************************************************/
21 /****** ESTILOS GENERALES *****************/
22 /****** ESTILOS GENERALES *****************/
22 /****************************************************************************************/
23 /****************************************************************************************/
23 .mnu{ height: 22px; border: 0px solid #c55 !important;}
24 .mnu{ height: 22px; border: 0px solid #c55 !important;}
24 .mnu li{ display:inline;}
25 .mnu li{ display:inline;}
25 .MnuVertical, .MnuHorizontal { font-family: 'Droid Sans', sans-serif; font-size: 1.2em; font-style: italic; text-shadow: 2px 2px #eee}
26 .MnuVertical, .MnuHorizontal { font-family: 'Droid Sans', sans-serif; font-size: 1.2em; font-style: italic; text-shadow: 2px 2px #eee}
26 .MnuHorizontal ul{ list-style: none; list-style-type: none; margin: 0;}
27 .MnuHorizontal ul{ list-style: none; list-style-type: none; margin: 0;}
27
28
28 /*.MnuHorizontal{ display: -webkit-box; -webkit-box-orient:horizontal;}*/
29 /*.MnuHorizontal{ display: -webkit-box; -webkit-box-orient:horizontal;}*/
29 /*.MnuHorizontal a{ display:block; padding:10px; -webkit-box-flex:1; text-align:center; }*/
30 /*.MnuHorizontal a{ display:block; padding:10px; -webkit-box-flex:1; text-align:center; }*/
30
31
31 /****************************************************************************************/
32 /****************************************************************************************/
32 /****** MENU DE NAVEGACION DE PERFILES **********************************/
33 /****** MENU DE NAVEGACION DE PERFILES **********************************/
33 /****************************************************************************************/
34 /****************************************************************************************/
34 #infoProfiles {border: 0px solid #1cc !important; width: 300px; margin: 0px; padding-top: 2px; padding-bottom: 2px;
35 #infoProfiles {border: 0px solid #1cc !important; width: 300px; margin: 0px; padding-top: 2px; padding-bottom: 2px;
35 float: left;}
36 float: left;}
36 #infoProfiles label {padding: 10px 10px 10px 12px; margin: 10px 0}
37 #infoProfiles label {padding: 10px 10px 10px 12px; margin: 10px 0}
37 #infoProfiles select {padding: 4px 0px; margin: 0; font-family: 'Droid Sans', sans-serif;
38 #infoProfiles select {padding: 4px 0px; margin: 0; font-family: 'Droid Sans', sans-serif;
38 font-size: 12px; letter-spacing: 0.029em; width: 200px;}
39 font-size: 12px; letter-spacing: 0.029em; width: 200px;}
39 #mnuProfiles{margin: 0px; border: 0px solid #1494F6 !important; float: left; padding: 2px 10px}
40 #mnuProfiles{margin: 0px; border: 0px solid #1494F6 !important; float: left; padding: 2px 10px}
40 #mnuProfiles ul{list-style: none; list-style-type: none; margin: 0; padding-left: 20px; border: 0px solid #f00 !important}
41 #mnuProfiles ul{list-style: none; list-style-type: none; margin: 0; padding-left: 20px; border: 0px solid #f00 !important}
41 #mnuProfiles li{ width: 80px; padding: 2px; border: 0px solid #c55 !important; float: left; }
42 #mnuProfiles li{ width: 80px; padding: 2px; border: 0px solid #c55 !important; float: left; }
42 #mnuProfiles a{ font-weight: normal; color: #1494F6; display: block; border: 0px solid #1cc !important; text-align: center}
43 #mnuProfiles a{ font-weight: normal; color: #1494F6; display: block; border: 0px solid #1cc !important; text-align: center}
43
44
44 /****************************************************************************************/
45 /****************************************************************************************/
45 /******** FORMULARIO DE PERFILES *************************************/
46 /******** FORMULARIO DE PERFILES *************************************/
46 /****************************************************************************************/
47 /****************************************************************************************/
47 #divProfile { border: 0px solid #dff !important; margin: 10px 0px; padding: 10px 10px; width: 500px }
48 #divProfile { border: 0px solid #dff !important; margin: 10px 0px; padding: 10px 10px; width: 500px }
48 .flsAntenna { margin: 0; width: 100%; padding: 0px; border: 0px solid #f00 !important }
49 .flsAntenna { margin: 0; width: 100%; padding: 0px; border: 0px solid #f00 !important }
49 #divPattern textarea,input[type=text],label{ font-family: "Open Sans"; font-size: inherit; }
50 #divPattern textarea,input[type=text],label{ font-family: "Open Sans"; font-size: inherit; }
50 #divPattern textarea {resize: none; overflow: hidden}
51 #divPattern textarea {resize: none; overflow: hidden}
51 .antenna{ border: 0px solid #1494F6 !important; padding: 2px; margin: 5px 10px; float: left; width: 480px}
52 .antenna{ border: 0px solid #1494F6 !important; padding: 2px; margin: 5px 10px; float: left; width: 480px}
52 .infoAntenna{ border: 0px solid #f00 !important; width: 480px; float: left}
53 .infoAntenna{ border: 0px solid #f00 !important; width: 480px; float: left}
53 .overJRO{ border: 0px solid #1cc !important; width: 250px; float: left; margin: 0px 5px}
54 .overJRO{ border: 0px solid #1cc !important; width: 250px; float: left; margin: 0px 5px}
54 .divAntenna { float: left; margin: 10px; border: 0px solid #fcc !important; width: 190px }
55 .divAntenna { float: left; margin: 10px; border: 0px solid #fcc !important; width: 190px }
55 .divAntenna label{ display: block }
56 .divAntenna label{ display: block }
56 .txtAntenna { width: 175px; max-width: 180px; height: 160px; max-height: 165px; background: #fdfdfb; padding: 4px;
57 .txtAntenna { width: 175px; max-width: 180px; height: 160px; max-height: 165px; background: #fdfdfb; padding: 4px;
57 border: 2px solid #eee !important; /*font-family: "Ubuntu"; font-size: inherit;*/
58 border: 2px solid #eee !important; /*font-family: "Ubuntu"; font-size: inherit;*/
58 text-align: justify; margin: 0 auto; line-height: 20px}
59 text-align: justify; margin: 0 auto; line-height: 20px}
59 .divAntenna p{ width: 175px; max-width: 180px; height: 160px; max-height: 165px; background: #fdfdfb; padding: 2px;
60 .divAntenna p{ width: 175px; max-width: 180px; height: 160px; max-height: 165px; background: #fdfdfb; padding: 2px;
60 border: 1px solid #eee !important; font-family: "Ubuntu"; font-size: inherit;
61 border: 1px solid #eee !important; font-family: "Ubuntu"; font-size: inherit;
61 text-align: justify; margin: 0 auto; line-height: 20px}
62 text-align: justify; margin: 0 auto; line-height: 20px}
62
63
63 .divTx { display: block; float: left; margin: 10px; height: 150px }
64 .divTx { display: block; float: left; margin: 10px; height: 150px }
64 .divTx label{ display: block }
65 .divTx label{ display: block }
65 .divTx textarea{ width: 135px; max-width: 135px; height: 135px; max-height: 140px; text-align: justify }
66 .divTx textarea{ width: 135px; max-width: 135px; height: 135px; max-height: 140px; text-align: justify }
66 .divTx p{ width: 100px; max-width: 105px; height: 160px; max-height: 165px; background: #fdfdfb; padding: 2px;
67 .divTx p{ width: 100px; max-width: 105px; height: 160px; max-height: 165px; background: #fdfdfb; padding: 2px;
67 border: 1px solid #eee !important; font-family: "Ubuntu"; font-size: inherit;
68 border: 1px solid #eee !important; font-family: "Ubuntu"; font-size: inherit;
68 text-align: justify; margin: 0 auto; line-height: 20px;}
69 text-align: justify; margin: 0 auto; line-height: 20px;}
69
70
70 .divUes { display: block; margin: 10px}
71 .divUes { display: block; margin: 10px}
71 .divUes input[type=text] { width: 240px; max-width: 240px; font-family: "Ubuntu"; font-size: inherit;}
72 .divUes input[type=text] { width: 240px; max-width: 240px; font-family: "Ubuntu"; font-size: inherit;}
72
73
73 .overJRO img{width: 400px; height: 200px; text-align: center; vertical-align: middle; margin: 40px 5px 5px 5px;
74 .overJRO img{width: 400px; height: 200px; text-align: center; vertical-align: middle; margin: 40px 5px 5px 5px;
74 display: block; background: #fdfdfb; border: 1px solid #eee !important;}
75 display: block; background: #fdfdfb; border: 1px solid #eee !important;}
75 .overJRO a{ text-align: center; margin: 0 auto; display: block}
76 .overJRO a{ text-align: center; margin: 0 auto; display: block}
76
77
77 /****************************************************************************************/
78 /****************************************************************************************/
78 /****** MENU DE NAVEGACION DE PATRONES **********************************/
79 /****** MENU DE NAVEGACION DE PATRONES **********************************/
79 /****************************************************************************************/
80 /****************************************************************************************/
80 #divMnuPattern{ width: 280px; height: 25px; display: block; border: 0px solid #1cc !important; float: right;
81 #divMnuPattern{ width: 280px; height: 25px; display: block; border: 0px solid #1cc !important; float: right;
81 margin: 5px 40px 5px 0px;}
82 margin: 5px 40px 5px 0px;}
82 #divMnuPattern li{ float: right; display: block; width: 60px; border: 0px solid #2cc !important}
83 #divMnuPattern li{ float: right; display: block; width: 60px; border: 0px solid #2cc !important}
83 #divMnuPattern a{ display: block; line-height: 22px; text-decoration: none; padding: 0px 5px;
84 #divMnuPattern a{ display: block; line-height: 22px; text-decoration: none; padding: 0px 5px;
84 border-bottom: 1px solid #1494F6 !important; margin: 0px 2px; text-align: center; color: #1494F6
85 border-bottom: 1px solid #1494F6 !important; margin: 0px 2px; text-align: center; color: #1494F6
85 }
86 }
86 #infoPattern{ display: block; border: 1px solid #1494f6 !important; margin: 5px 2px; }
87 #infoPattern{ display: block; border: 1px solid #1494f6 !important; margin: 5px 2px; }
87
88
88 #navPatterns{ margin: 0 auto; border: 0px solid #d00 !important; width: 700px; height: 30px;
89 #navPatterns{ margin: 0 auto; border: 0px solid #d00 !important; width: 700px; height: 30px;
89 font-family: 'Ubuntu', sans-serif; font-size: 14px; padding: 5px 0px}
90 font-family: 'Ubuntu', sans-serif; font-size: 14px; padding: 5px 0px}
90 #navPatternList{ margin: 0 auto; border: 0px solid #ecc !important}
91 #navPatternList{ margin: 0 auto; border: 0px solid #ecc !important}
91 #navPatternList ul{ list-style: none; list-style-type: none; margin: 0;}
92 #navPatternList ul{ list-style: none; list-style-type: none; margin: 0;}
92 #navPatternList ul li{ float: left; width: 50px; border: 1px solid #eee !important; }
93 #navPatternList ul li{ float: left; width: 50px; border: 1px solid #eee !important; }
93 #navPatternList a{ width: 50px; border: 0px solid #1cc !important; display: block; text-align: center; line-height: 30px; padding: 1px 0px}
94 #navPatternList a{ width: 50px; border: 0px solid #1cc !important; display: block; text-align: center; line-height: 30px; padding: 1px 0px}
94 .lnkPattern{ background-color: #ccc !important; color: #eee;}
95 .lnkPattern{ background-color: #ccc !important; color: #eee;}
95 .lnkPatternSelected{ background-color: #2cc !important; color: #fff;}
96 .lnkPatternSelected{ background-color: #2cc !important; color: #fff;}
96
97
97 .divListofPatterns{ width: 650px; display: block; border: 1px solid #1cc !important; margin: 0 auto}
98 .divListofPatterns{ width: 650px; display: block; border: 1px solid #1cc !important; margin: 0 auto}
98 .divPattern{ width: 600px; display: block; border: 1px solid #f00 !important; margin: 2px auto; }
99 .divPattern{ width: 600px; display: block; border: 1px solid #f00 !important; margin: 2px auto; }
99
100
101 /****************************************************************************************/
102 /****** HEADER *************/
103 /****************************************************************************************/
104 header nav{width: 960px; border: 0px solid #1cc !important; margin: 0 auto; height: 100%}
105 header nav a{font-family: 'Roboto Condensed', sans-serif; font-size: 1.98em; text-transform: uppercase; width: 232px;
106 padding: 2px; text-align: center; border: 1px solid #ddd !important; box-shadow: 1px 1px 2px #ddd; display: block;
107 float: left; height: 45px; text-decoration: none; background: #eee; line-height: 45px;
108 color: #15425d; margin: 0px 1px}
109
110 /****************************************************************************************/
111 /****** FOOTER *************/
112 /****************************************************************************************/
113 footer p{font-family: 'Roboto Condensed', sans-serif; font-size: 0.98em}
114
@@ -1,110 +1,114
1 {% extends "abscontrol/index.html" %}
1 {% extends "abscontrol/index.html" %}
2 {% block title %}ABS CONTROL:::PROFILE:::{{ objProfile.name }}{% endblock %}
2 {% block title %}ABS CONTROL:::PROFILE:::{{ objProfile.name }}{% endblock %}
3 {% block scripting %}
3 {% block scripting %}
4 <script src="/static/static/js/patterns.js"></script>
4 <script src="/static/static/js/patterns.js"></script>
5 {% endblock %}
5 {% endblock %}
6 {% block mnu_profile %}
6 {% block mnu_profile %}
7 <nav class="MnuVertical" id="mnuProfiles">
7 <nav class="MnuVertical" id="mnuProfiles">
8 <ul>
8 <ul>
9 <li><a href="/abscontrol/new">New</a></li>
9 <li><a href="/abscontrol/new/">New</a></li>
10 <li><a href="#">Save</a></li>
10 {% if objProfile.state == 0 %}
11 <li><a href="/abscontrol/update/{{ objProfile.id }}/?opt=changeName">Save</a></li>
12 {% else %}
13 <li><a href="/abscontrol/update/{{ objProfile.id }}/?opt=update">Save</a></li>
14 {% endif %}
11 <li><a href="#">Save as</a></li>
15 <li><a href="#">Save as</a></li>
12 <li><a href="/abscontrol/import">Import</a></li>
16 <li><a href="/abscontrol/import/">Import</a></li>
13 {% if objProfile %}
17 {% if objProfile %}
14 <li><a href="#" id="lnkExport" alt="{{ objProfile.id }}">Export</a></li>
18 <li><a href="#" id="lnkExport" alt="{{ objProfile.id }}">Export</a></li>
15 {% endif %}
19 {% endif %}
16 </ul>
20 </ul>
17 </nav>
21 </nav>
18 {% endblock %}
22 {% endblock %}
19 {% block maincolumn%}
23 {% block maincolumn%}
20 <div id="maincolumn">
24 <div id="maincolumn">
21 <div id="divProfile">
25 <div id="divProfile">
22 <label for="lblName">Profile:</label>
26 <label for="lblName">Profile:</label>
23 <label for="lblProfile">{{ objProfile.name }}</label>
27 <label for="lblProfile">{{ objProfile.name }}</label>
24 </div>
28 </div>
25 {% if patternChoosen %}
29 {% if patternChoosen %}
26 <div id="navPatterns">
30 <div id="navPatterns">
27 <nav class="" id="navPatternList">
31 <nav class="" id="navPatternList">
28 <ul>
32 <ul>
29 {% for element in lsPatterns %}
33 {% for element in lsPatterns %}
30 {% if patternChoosen.id == element.id %}
34 {% if patternChoosen.id == element.id %}
31 <li><a href="/abscontrol/{{ objProfile.id }}/edit/{{ element.id }}" class="lnkPatternSelected">{{ element.value }}</a></li>
35 <li><a href="/abscontrol/{{ objProfile.id }}/edit/{{ element.id }}" class="lnkPatternSelected">{{ element.value }}</a></li>
32 {% else %}
36 {% else %}
33 <li><a href="/abscontrol/{{ objProfile.id }}/edit/{{ element.id }}" class="lnkPattern">{{ element.value }}</a></li>
37 <li><a href="/abscontrol/{{ objProfile.id }}/edit/{{ element.id }}" class="lnkPattern">{{ element.value }}</a></li>
34 {% endif %}
38 {% endif %}
35 {% endfor %}
39 {% endfor %}
36 </ul>
40 </ul>
37 </nav>
41 </nav>
38 </div>
42 </div>
39 {% endif %}
43 {% endif %}
40 <div id="divPattern">
44 <div id="divPattern">
41 {% block mnuPattern %}
45 {% block mnuPattern %}
42 <div class="divMenu" id="divMnuPattern">
46 <div class="divMenu" id="divMnuPattern">
43 <nav class="MnuHorizontal">
47 <nav class="MnuHorizontal">
44 <ul class="mnu" id="mnuPattern">
48 <ul class="mnu" id="mnuPattern">
45 {% if lsPatterns|length > 1 %}
49 {% if lsPatterns|length > 1 %}
46 <li><a href="/abscontrol/{{ objProfile.id }}/delete/{{ patternChoosen.id }}">Delete</a></li>
50 <li><a href="/abscontrol/{{ objProfile.id }}/delete/{{ patternChoosen.id }}">Delete</a></li>
47 {% endif %}
51 {% endif %}
48 <li><a href="#" class="" id="lnkSave">Save</a></li>
52 <li><a href="#" class="" id="lnkSave">Save</a></li>
49 {% if lsPatterns|length < 10 %}
53 {% if lsPatterns|length < 10 %}
50 <li><a href="/abscontrol/{{ objProfile.id }}/add">Add</a></li>
54 <li><a href="/abscontrol/{{ objProfile.id }}/add">Add</a></li>
51 {% endif %}
55 {% endif %}
52 </ul>
56 </ul>
53 </nav>
57 </nav>
54 </div>
58 </div>
55 <div class="cleardivs"></div>
59 <div class="cleardivs"></div>
56 {% endblock %}
60 {% endblock %}
57 {% block pattern %}
61 {% block pattern %}
58 <div id="infoPattern">
62 <div id="infoPattern">
59
63
60 <div id="antennaUp">
64 <div id="antennaUp">
61 <fieldset class="flsAntenna">
65 <fieldset class="flsAntenna">
62 <legend>UP</legend>
66 <legend>UP</legend>
63 <div class="divAntenna">
67 <div class="divAntenna">
64 <label for="lblAntenna">Antenna</label>
68 <label for="lblAntenna">Antenna</label>
65 <textarea name="txtAntennaUp" class="txtAntenna" cols="38" rows="8">{{ antennaUp.value }}</textarea>
69 <textarea name="txtAntennaUp" class="txtAntenna" cols="38" rows="8">{{ antennaUp.value }}</textarea>
66 </div>
70 </div>
67 <div class="divTx">
71 <div class="divTx">
68 <label for="lblTx">Tx</label>
72 <label for="lblTx">Tx</label>
69 <textarea name="txtTxUp" class="txtTR" cols="20" rows="8">{{ antennaUp.tx }}</textarea>
73 <textarea name="txtTxUp" class="txtTR" cols="20" rows="8">{{ antennaUp.tx }}</textarea>
70 </div>
74 </div>
71 <div class="divTx">
75 <div class="divTx">
72 <label for="lblRx">Rx</label>
76 <label for="lblRx">Rx</label>
73 <textarea name="txtRxUp" class="txtTR" cols="20" rows="8">{{ antennaUp.rx }}</textarea>
77 <textarea name="txtRxUp" class="txtTR" cols="20" rows="8">{{ antennaUp.rx }}</textarea>
74 </div>
78 </div>
75 <div class="cleardivs"></div>
79 <div class="cleardivs"></div>
76 <div class="divUes">
80 <div class="divUes">
77 <label for="lblUes">Ues:</label>
81 <label for="lblUes">Ues:</label>
78 <input type="text" name="txtUesUp" value="{{ antennaUp.ues }}" />
82 <input type="text" name="txtUesUp" value="{{ antennaUp.ues }}" />
79 </div>
83 </div>
80 <input type="hidden" name="txtAntennaUpId" value="{{ antennaUp.id }}" />
84 <input type="hidden" name="txtAntennaUpId" value="{{ antennaUp.id }}" />
81 </fieldset>
85 </fieldset>
82 </div>
86 </div>
83 <div id="antennaDown">
87 <div id="antennaDown">
84 <fieldset class="flsAntenna">
88 <fieldset class="flsAntenna">
85 <legend>DOWN</legend>
89 <legend>DOWN</legend>
86 <div class="divAntenna">
90 <div class="divAntenna">
87 <label for="lblAntenna">Antenna</label>
91 <label for="lblAntenna">Antenna</label>
88 <textarea name="txtAntennaDown" class="txtAntenna" cols="38" rows="8">{{ antennaDown.value }}</textarea>
92 <textarea name="txtAntennaDown" class="txtAntenna" cols="38" rows="8">{{ antennaDown.value }}</textarea>
89 </div>
93 </div>
90 <div class="divTx">
94 <div class="divTx">
91 <label for="lblTx">Tx</label>
95 <label for="lblTx">Tx</label>
92 <textarea name="txtTxDown" class="txtTR" cols="20" rows="8">{{ antennaDown.tx }}</textarea>
96 <textarea name="txtTxDown" class="txtTR" cols="20" rows="8">{{ antennaDown.tx }}</textarea>
93 </div>
97 </div>
94 <div class="divTx">
98 <div class="divTx">
95 <label for="lblRx">Rx</label>
99 <label for="lblRx">Rx</label>
96 <textarea name="txtRxDown" class="txtTR" cols="20" rows="8">{{ antennaDown.rx }}</textarea>
100 <textarea name="txtRxDown" class="txtTR" cols="20" rows="8">{{ antennaDown.rx }}</textarea>
97 </div>
101 </div>
98 <div class="cleardivs"></div>
102 <div class="cleardivs"></div>
99 <div class="divUes">
103 <div class="divUes">
100 <label for="lblUes">Ues:</label>
104 <label for="lblUes">Ues:</label>
101 <input type="text" name="txtUesDown" value="{{ antennaDown.ues }}" />
105 <input type="text" name="txtUesDown" value="{{ antennaDown.ues }}" />
102 </div>
106 </div>
103 <input type="hidden" name="txtAntennaDownId" value="{{ antennaDown.id }}" />
107 <input type="hidden" name="txtAntennaDownId" value="{{ antennaDown.id }}" />
104 </fieldset>
108 </fieldset>
105 </div>
109 </div>
106 </div>
110 </div>
107 {% endblock %}
111 {% endblock %}
108 </div>
112 </div>
109 </div>
113 </div>
110 {% endblock %}
114 {% endblock %}
@@ -1,66 +1,64
1 {% extends "base.html" %}
1 {% extends "base.html" %}
2
2
3 {% block title %}ABS CONTROL:::::{% endblock %}
3 {% block title %}ABS CONTROL:::::{% endblock %}
4 {% block scripting %}
4 {% block scripting %}
5 {% if profile_list %}
5 {% if profile_list %}
6 <script src="/static/static/js/profiles.js"></script>
6 <script src="/static/static/js/profiles.js"></script>
7 {% endif %}
7 {% endif %}
8 {% endblock %}
8 {% endblock %}
9 {% block content %}
9 {% block content %}
10 <div id="content">
10 <div id="content">
11 {% block topcolumn %}
11 {% block topcolumn %}
12 <div id="topcolumn">
12 <div id="topcolumn">
13 <div id="lsProfiles">
13 <div id="lsProfiles">
14 <div id="infoProfiles">
14 <div id="infoProfiles">
15 <label for="lblProfile" class="lblInfo">Profiles: </label>
15 <label for="lblProfile" class="lblInfo">Profiles: </label>
16 {% if profile_list %}
16 {% if profile_list %}
17 <select name="lsProfiles" id="listProfiles">
17 <select name="lsProfiles" id="listProfiles">
18 <option value="-1">Choose ...</option>
18 <option value="-1">Choose ...</option>
19 {% for entry in profile_list %}
19 {% for entry in profile_list %}
20 {% if objProfile %}
20 {% if objProfile %}
21 {% if objProfile.id == entry.id %}
21 {% if objProfile.id == entry.id %}
22 <option value="{{ entry.id }}" selected>{{ entry.name }}</option>
22 <option value="{{ entry.id }}" selected>{{ entry.name }}</option>
23 {% else %}
23 {% else %}
24 <option value="{{ entry.id }}">{{ entry.name }}</option>
24 <option value="{{ entry.id }}">{{ entry.name }}</option>
25 {% endif %}
25 {% endif %}
26 {% else %}
26 {% else %}
27 <option value="{{ entry.id }}">{{ entry.name }}</option>
27 <option value="{{ entry.id }}">{{ entry.name }}</option>
28 {% endif %}
28 {% endif %}
29 {% endfor %}
29 {% endfor %}
30 </select>
30 </select>
31 {% else %}
31 {% else %}
32 <label for="lblMessage" class="lblInfo">No profiles.</label>
32 <label for="lblMessage" class="lblInfo">No profiles.</label>
33 {% endif %}
33 {% endif %}
34 </div>
34 </div>
35 </div>
35 </div>
36 {% block mnu_profile %}
36 {% block mnu_profile %}
37 <div id="mnuProfiles">
37 <div id="mnuProfiles">
38 <nav class="MnuVertical" id="navProfiles">
38 <nav class="MnuVertical" id="navProfiles">
39 <ul>
39 <ul>
40 <li><a href="/abscontrol/new">New</a></li>
40 <li><a href="/abscontrol/new">New</a></li>
41 {% if objProfile %}
41 {% if objProfile %}
42 <li><a href="/abscontrol/edit/{{ objProfile.id }}">Edit</a></li>
42 <li><a href="/abscontrol/edit/{{ objProfile.id }}">Edit</a></li>
43 <li><a href="#">Save</a></li>
43 <li><a href="#">Save</a></li>
44 {% endif %}
44 {% endif %}
45 <li><a href="#">Save as</a></li>
45 <li><a href="#">Save as</a></li>
46 <li><a href="/abscontrol/import">Import</a></li>
46 <li><a href="/abscontrol/import">Import</a></li>
47 {% if objProfile %}
47 {% if objProfile %}
48 <li><a href="#" id="lnkExport" alt="{{ objProfile.id }}">Export</a></li>
48 <li><a href="#" id="lnkExport" alt="{{ objProfile.id }}">Export</a></li>
49 <li><a href="#" id="lnkSendFile" alt="{{ objProfile.id }}">Send</a></li>
49 <li><a href="#" id="lnkSendFile" alt="{{ objProfile.id }}">Send</a></li>
50 {% endif %}
50 {% endif %}
51 </ul>
51 </ul>
52 <div class="cleardivs"></div>
52 <div class="cleardivs"></div>
53 </nav>
53 </nav>
54 </div>
54 </div>
55 {% endblock %}
55 {% endblock %}
56 <div class="cleardivs"></div>
56 <div class="cleardivs"></div>
57 </div>
57 </div>
58 {% endblock %}
58 {% endblock %}
59 {% block maincolumn %}
59 {% block maincolumn %}
60 <div id="maincolumn">
60 <div id="maincolumn" style="height: 50px"></div>
61
62 </div>
63 {% endblock %}
61 {% endblock %}
64 <div class="cleardivs"></div>
62 <div class="cleardivs"></div>
65 </div>
63 </div>
66 {% endblock %} No newline at end of file
64 {% endblock %}
@@ -1,48 +1,48
1 {% load static %}
1 {% load static %}
2 <!DOCTYPE html>
2 <!DOCTYPE html>
3 <html lang="en">
3 <html lang="en">
4 <head>
4 <head>
5 <meta charset="utf-8" />
5 <meta charset="utf-8" />
6 {% comment %}
6 {% comment %}
7 <!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame
7 <!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame
8 Remove this if you use the .htaccess -->
8 Remove this if you use the .htaccess -->
9 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
9 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
10 {% endcomment %}
10 {% endcomment %}
11 <link href='http://fonts.googleapis.com/css?family=Droid+Sans|Ubuntu:400,500,300italic|Open+Sans:400,300,600|Open+Sans+Condensed:300,700|Roboto+Condensed:400,300' rel='stylesheet' type='text/css'>
11 <link href='http://fonts.googleapis.com/css?family=Droid+Sans|Ubuntu:400,500,300italic|Open+Sans:400,300,600|Open+Sans+Condensed:300,700|Roboto+Condensed:400,300' rel='stylesheet' type='text/css'>
12 <link rel="stylesheet" href="{% static 'static/css/style.css' %}" type="text/css" />
12 <link rel="stylesheet" href="{% static 'static/css/style.css' %}" type="text/css" />
13 <script src="{% static 'static/js/jquery-1.9.1.min.js' %}"></script>
13 <script src="{% static 'static/js/jquery-1.9.1.min.js' %}"></script>
14 {% block scripting %}{% endblock %}
14 {% block scripting %}{% endblock %}
15 <title>{% block title %}JRO WEB APPS::::{% endblock %}</title>
15 <title>{% block title %}JRO WEB APPS::::{% endblock %}</title>
16 <meta name="description" content="JRO WEB APPLICATIONS" />
16 <meta name="description" content="JRO WEB APPLICATIONS" />
17 <meta name="author" content="Jose Antonio Sal y Rosas Celi" />
17 <meta name="author" content="Jose Antonio Sal y Rosas Celi" />
18
18
19 {# <meta name="viewport" content="width=device-width; initial-scale=1.0" /> #}
19 {# <meta name="viewport" content="width=device-width; initial-scale=1.0" /> #}
20 {% comment %}
20 {% comment %}
21 <!-- Replace favicon.ico & apple-touch-icon.png in the root of your domain and delete these references -->
21 <!-- Replace favicon.ico & apple-touch-icon.png in the root of your domain and delete these references -->
22 <link rel="shortcut icon" href="/favicon.ico" />
22 <link rel="shortcut icon" href="/favicon.ico" />
23 <link rel="apple-touch-icon" href="/apple-touch-icon.png" />
23 <link rel="apple-touch-icon" href="/apple-touch-icon.png" />
24 {% endcomment %}
24 {% endcomment %}
25 </head>
25 </head>
26 <body>
26 <body>
27 <div id="schema">
27 <div id="schema">
28 <header>
28 <header>
29 {% block header %}
29 {% block header %}
30 <nav>
30 <nav id="header">
31 <a href="/abscontrol/">ABS</a> |
31 <a href="/abscontrol/">ABS</a>
32 <a href="#">CR</a> |
32 <a href="#">CR</a>
33 <a href="#">DDS</a> |
33 <a href="#">DDS</a>
34 <a href="#">JARS</a>
34 <a href="#">JARS</a>
35 </nav>
35 </nav>
36 {% endblock %}
36 {% endblock %}
37 </header>
37 </header>
38 {% block content %}
38 {% block content %}
39 <div id="content"></div>
39 <div id="content"></div>
40 {% endblock %}
40 {% endblock %}
41 <footer>
41 <footer>
42 {% block footer %}
42 {% block footer %}
43 <p>&copy; Copyright by Jicamarca Radio Observatory</p>
43 <p>&copy; Copyright 2013 by Jicamarca Radio Observatory</p>
44 {% endblock %}
44 {% endblock %}
45 </footer>
45 </footer>
46 </div>
46 </div>
47 </body>
47 </body>
48 </html>
48 </html>
General Comments 0
You need to be logged in to leave comments. Login now