##// END OF EJS Templates
- Finalizada la funcion que lee(importa) un archivo ABS sin guardarlo a la base de datos....
jsalyrosas -
r152:153
parent child
Show More
@@ -1,105 +1,107
1 from django.db import models
1 from django.db import models
2 from django.utils import timezone
2 from django.utils import timezone
3
3
4 class Profile(models.Model):
4 class Profile(models.Model):
5
5
6 name = models.CharField(max_length=250)
6 name = models.CharField(max_length=250)
7 date_create = models.DateTimeField()
7 date_create = models.DateTimeField()
8 date_modified = models.DateTimeField(null=True)
8 date_modified = models.DateTimeField(null=True)
9 hits = models.PositiveIntegerField()
9 hits = models.PositiveIntegerField()
10 state = models.PositiveSmallIntegerField()
10 state = models.PositiveSmallIntegerField()
11
11
12 class Meta:
12 class Meta:
13 db_table = "abs_profile_antenna"
13 db_table = "abs_profile_antenna"
14
14
15 def save(self):
15 def save(self):
16 if self.pk is None:
16 if self.pk is None:
17 self.date_create = timezone.now()
17 self.date_create = timezone.now()
18 self.hits = 0
18 self.hits = 0
19 self.state = 1
19 self.state = 1
20 else:
20 else:
21 self.date_modified = timezone.now()
21 self.date_modified = timezone.now()
22 super(Profile, self).save()
22 super(Profile, self).save()
23
23
24 def __unicode__(self):
24 def __unicode__(self):
25 return u'%s' % self.name
25 return u'%s' % self.name
26
26
27 class Pattern(models.Model):
27 class Pattern(models.Model):
28
28
29 profile = models.ForeignKey(Profile)
29 profile = models.ForeignKey(Profile)
30 value = models.PositiveIntegerField()
30 value = models.PositiveIntegerField()
31 date_create = models.DateTimeField()
31 date_create = models.DateTimeField()
32 date_modified = models.DateTimeField(null=True)
32 date_modified = models.DateTimeField(null=True)
33 hits = models.PositiveIntegerField()
33 hits = models.PositiveIntegerField()
34 state = models.PositiveSmallIntegerField()
34 state = models.PositiveSmallIntegerField()
35
35
36 class Meta:
36 class Meta:
37 db_table = "abs_pattern_antenna"
37 db_table = "abs_pattern_antenna"
38
38
39 def save(self, *args, **kwargs):
39 def save(self, *args, **kwargs):
40 if not self.pk:
40 if not self.pk:
41 self.date_create = timezone.now()
41 self.date_create = timezone.now()
42 self.hits = 0
42 self.hits = 0
43 self.state = 1
43 self.state = 1
44 else:
44 else:
45 self.date_modified = timezone.now()
45 self.date_modified = timezone.now()
46 super(Pattern, self).save(*args, **kwargs)
46 super(Pattern, self).save(*args, **kwargs)
47
47
48 def __unicode__(self):
48 def __unicode__(self):
49 return u'%s' % self.value
49 return u'%s' % self.value
50
50
51
51
52 class AntennaUp(models.Model):
52 class AntennaUp(models.Model):
53
53
54 pattern = models.ForeignKey(Pattern)
54 pattern = models.ForeignKey(Pattern)
55 value = models.TextField()
55 value = models.TextField()
56 tx = models.TextField()
56 tx = models.TextField(null=True)
57 rx = models.TextField()
57 rx = models.TextField(null=True)
58 ues = models.CharField(max_length=120)
58 ues = models.CharField(max_length=120, null=True)
59 only_rx = models.PositiveSmallIntegerField(default=0)
59 date_create = models.DateTimeField()
60 date_create = models.DateTimeField()
60 date_modified = models.DateTimeField(null=True)
61 date_modified = models.DateTimeField(null=True)
61 hits = models.PositiveIntegerField()
62 hits = models.PositiveIntegerField()
62 state = models.PositiveSmallIntegerField()
63 state = models.PositiveSmallIntegerField()
63
64
64 class Meta:
65 class Meta:
65 db_table = "abs_antenna_up"
66 db_table = "abs_antenna_up"
66
67
67 def save(self, *args, **kwargs):
68 def save(self, *args, **kwargs):
68 if self.pk is None:
69 if self.pk is None:
69 self.date_create = timezone.now()
70 self.date_create = timezone.now()
70 self.hits = 0
71 self.hits = 0
71 self.state = 1
72 self.state = 1
72 else:
73 else:
73 self.date_modified = timezone.now()
74 self.date_modified = timezone.now()
74 super(AntennaUp, self).save(*args, **kwargs)
75 super(AntennaUp, self).save(*args, **kwargs)
75
76
76 def __unicode__(self):
77 def __unicode__(self):
77 return u'%s' % self.value
78 return u'%s' % self.value
78
79
79
80
80 class AntennaDown(models.Model):
81 class AntennaDown(models.Model):
81
82
82 pattern = models.ForeignKey(Pattern)
83 pattern = models.ForeignKey(Pattern)
83 value = models.TextField()
84 value = models.TextField()
84 tx = models.TextField()
85 tx = models.TextField(null=True)
85 rx = models.TextField()
86 rx = models.TextField(null=True)
86 ues = models.CharField(max_length=120)
87 ues = models.CharField(max_length=120, null=True)
88 only_rx = models.PositiveSmallIntegerField(default=0)
87 date_create = models.DateTimeField()
89 date_create = models.DateTimeField()
88 date_modified = models.DateTimeField(null=True)
90 date_modified = models.DateTimeField(null=True)
89 hits = models.PositiveIntegerField()
91 hits = models.PositiveIntegerField()
90 state = models.PositiveSmallIntegerField()
92 state = models.PositiveSmallIntegerField()
91
93
92 class Meta:
94 class Meta:
93 db_table = "abs_antenna_down"
95 db_table = "abs_antenna_down"
94
96
95 def save(self, *args, **kwargs):
97 def save(self, *args, **kwargs):
96 if self.pk is None:
98 if self.pk is None:
97 self.date_create = timezone.now()
99 self.date_create = timezone.now()
98 self.hits = 0
100 self.hits = 0
99 self.state = 1
101 self.state = 1
100 else:
102 else:
101 self.date_modified = timezone.now()
103 self.date_modified = timezone.now()
102 super(AntennaDown, self).save(*args, **kwargs)
104 super(AntennaDown, self).save(*args, **kwargs)
103
105
104 def __unicode__(self):
106 def __unicode__(self):
105 return u'%s' % self.value
107 return u'%s' % self.value
@@ -1,281 +1,264
1 from django.shortcuts import render_to_response, redirect
1 from django.shortcuts import render_to_response, redirect
2 from abscontrol.models import Profile, Pattern, AntennaDown, AntennaUp
2 from abscontrol.models import Profile, Pattern, AntennaDown, AntennaUp
3 from util.readABSFile import readABSFile
3 from util.readABSFile import readABSFile
4
4
5 txtAntenna = "[[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
5 txtAntenna = "[[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
6 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
6 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
7 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
7 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
8 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
8 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
9 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
9 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
10 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
10 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
11 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
11 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
12 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]]"
12 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]]"
13
13
14 txtTxUp = "[[1,1,1,1,1,1,1,1]," \
14 txtTxUp = "[[1,1,1,1,1,1,1,1]," \
15 "[1,1,1,1,1,1,1,1]," \
15 "[1,1,1,1,1,1,1,1]," \
16 "[1,1,1,1,1,1,1,1]," \
16 "[1,1,1,1,1,1,1,1]," \
17 "[1,1,1,1,1,1,1,1]," \
17 "[1,1,1,1,1,1,1,1]," \
18 "[1,1,1,1,1,1,1,1]," \
18 "[1,1,1,1,1,1,1,1]," \
19 "[1,1,1,1,1,1,1,1]," \
19 "[1,1,1,1,1,1,1,1]," \
20 "[1,1,1,1,1,1,1,1]," \
20 "[1,1,1,1,1,1,1,1]," \
21 "[1,1,1,1,1,1,1,1]]"
21 "[1,1,1,1,1,1,1,1]]"
22
22
23 txtTxDown = "[[1,1,1,1,0,0,0,0]," \
23 txtTxDown = "[[1,1,1,1,0,0,0,0]," \
24 "[1,1,1,1,0,0,0,0]," \
24 "[1,1,1,1,0,0,0,0]," \
25 "[1,1,1,1,0,0,0,0]," \
25 "[1,1,1,1,0,0,0,0]," \
26 "[1,1,1,1,0,0,0,0]," \
26 "[1,1,1,1,0,0,0,0]," \
27 "[0,0,0,0,1,1,1,1]," \
27 "[0,0,0,0,1,1,1,1]," \
28 "[0,0,0,0,1,1,1,1]," \
28 "[0,0,0,0,1,1,1,1]," \
29 "[0,0,0,0,1,1,1,1]," \
29 "[0,0,0,0,1,1,1,1]," \
30 "[0,0,0,0,1,1,1,1]]"
30 "[0,0,0,0,1,1,1,1]]"
31
31
32 txtRxUp = "[[0,0,0,0,1,1,1,1]," \
32 txtRxUp = "[[0,0,0,0,1,1,1,1]," \
33 "[0,0,0,0,1,1,1,1]," \
33 "[0,0,0,0,1,1,1,1]," \
34 "[0,0,0,0,1,1,1,1]," \
34 "[0,0,0,0,1,1,1,1]," \
35 "[0,0,0,0,1,1,1,1]," \
35 "[0,0,0,0,1,1,1,1]," \
36 "[1,1,1,1,1,1,1,1]," \
36 "[1,1,1,1,1,1,1,1]," \
37 "[1,1,1,1,1,1,1,1]," \
37 "[1,1,1,1,1,1,1,1]," \
38 "[1,1,1,1,1,1,1,1]," \
38 "[1,1,1,1,1,1,1,1]," \
39 "[1,1,1,1,1,1,1,1]]"
39 "[1,1,1,1,1,1,1,1]]"
40
40
41 txtRxDown = "[[1,1,1,1,1,1,1,1]," \
41 txtRxDown = "[[1,1,1,1,1,1,1,1]," \
42 "[1,1,1,1,1,1,1,1]," \
42 "[1,1,1,1,1,1,1,1]," \
43 "[1,1,1,1,1,1,1,1]," \
43 "[1,1,1,1,1,1,1,1]," \
44 "[1,1,1,1,1,1,1,1]," \
44 "[1,1,1,1,1,1,1,1]," \
45 "[1,1,1,1,1,1,1,1]," \
45 "[1,1,1,1,1,1,1,1]," \
46 "[1,1,1,1,1,1,1,1]," \
46 "[1,1,1,1,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
49
50 txtUes = "[0.533333,0.00000,1.06667,0.00000]"
50 txtUes = "[0.533333,0.00000,1.06667,0.00000]"
51
51
52 def index(request):
52 def index(request):
53 #latest_poll_list = profileAntenna.objects.all().order_by('-pub_date')[:5]
53 #latest_poll_list = profileAntenna.objects.all().order_by('-pub_date')[:5]
54 profile_list = Profile.objects.all()
54 profile_list = Profile.objects.all()
55 return render_to_response('abscontrol/index.html', {'profile_list': profile_list})
55 return render_to_response('abscontrol/index.html', {'profile_list': profile_list})
56
56
57 def new(request):
57 def new(request):
58 profile_list = Profile.objects.all()
58 profile_list = Profile.objects.all()
59
59
60 return render_to_response('abscontrol/new.html', {'profile_list': profile_list,
60 return render_to_response('abscontrol/new.html', {'profile_list': profile_list,
61 'txtAntenna' : txtAntenna,
61 'txtAntenna' : txtAntenna,
62 'txtUes' : txtUes, 'txtTxUp' : txtTxUp,
62 'txtUes' : txtUes, 'txtTxUp' : txtTxUp,
63 'txtTxDown' : txtTxDown, 'txtRxUp' : txtRxUp,
63 'txtTxDown' : txtTxDown, 'txtRxUp' : txtRxUp,
64 'txtRxDown' : txtRxDown,
64 'txtRxDown' : txtRxDown,
65 })
65 })
66
66
67 def save(request):
67 def save(request):
68
68
69 txtProfile = request.POST["txtProfile"]
69 txtProfile = request.POST["txtProfile"]
70
70
71 txtAntennaUp = request.POST["txtAntennaUp"]
71 txtAntennaUp = request.POST["txtAntennaUp"]
72 txtTxUp = request.POST["txtTxUp"]
72 txtTxUp = request.POST["txtTxUp"]
73 txtRxUp = request.POST["txtRxUp"]
73 txtRxUp = request.POST["txtRxUp"]
74 txtUesUp = request.POST["txtUesUp"]
74 txtUesUp = request.POST["txtUesUp"]
75
75
76 txtAntennaDown = request.POST["txtAntennaDown"]
76 txtAntennaDown = request.POST["txtAntennaDown"]
77 txtTxDown = request.POST["txtTxDown"]
77 txtTxDown = request.POST["txtTxDown"]
78 txtRxDown = request.POST["txtRxDown"]
78 txtRxDown = request.POST["txtRxDown"]
79 txtUesDown = request.POST["txtUesDown"]
79 txtUesDown = request.POST["txtUesDown"]
80
80
81 newprofile = Profile(name=txtProfile)
81 newprofile = Profile(name=txtProfile)
82 newprofile.save()
82 newprofile.save()
83
83
84 newpattern = newprofile.pattern_set.create(value=1)
84 newpattern = newprofile.pattern_set.create(value=1)
85 newpattern.antennaup_set.create(value=txtAntennaUp,tx=txtTxUp,rx=txtRxUp,ues=txtUesUp)
85 newpattern.antennaup_set.create(value=txtAntennaUp,tx=txtTxUp,rx=txtRxUp,ues=txtUesUp)
86 newpattern.antennadown_set.create(value=txtAntennaDown,tx=txtTxDown,rx=txtRxDown,ues=txtUesDown)
86 newpattern.antennadown_set.create(value=txtAntennaDown,tx=txtTxDown,rx=txtRxDown,ues=txtUesDown)
87
87
88 newurl = '/abscontrol/view/%d' % newprofile.id
88 newurl = '/abscontrol/view/%d' % newprofile.id
89
89
90 return redirect(newurl)
90 return redirect(newurl)
91
91
92 def view(request, profile_id):
92 def view(request, profile_id):
93 nextPattern = 0
93 nextPattern = 0
94
94
95 if request.method == 'GET' and 'pattern' in request.GET:
95 if request.method == 'GET' and 'pattern' in request.GET:
96 pattern_value = request.GET["pattern"]
96 pattern_value = request.GET["pattern"]
97 else:
97 else:
98 pattern_value = 1
98 pattern_value = 1
99
99
100 profile_list = Profile.objects.all()
100 profile_list = Profile.objects.all()
101 objProfile = Profile.objects.get(pk=profile_id)
101 objProfile = Profile.objects.get(pk=profile_id)
102
102
103 lsPatterns = objProfile.pattern_set.all()
103 lsPatterns = objProfile.pattern_set.all()
104 patternChoosen = objProfile.pattern_set.get(value=pattern_value)
104 patternChoosen = objProfile.pattern_set.get(value=pattern_value)
105 objAntennaUp = patternChoosen.antennaup_set.get()
105 objAntennaUp = patternChoosen.antennaup_set.get()
106 objAntennaDown = patternChoosen.antennadown_set.get()
106 objAntennaDown = patternChoosen.antennadown_set.get()
107
107
108 if len(lsPatterns) > 1:
108 if len(lsPatterns) > 1:
109 if pattern_value == 1:
109 if pattern_value == 1:
110 nextValuePattern = pattern_value + 1
110 nextValuePattern = pattern_value + 1
111 nextPattern = objProfile.pattern_set.get(value=nextValuePattern)
111 nextPattern = objProfile.pattern_set.get(value=nextValuePattern)
112
112
113
113
114 return render_to_response('abscontrol/view.html', {'objProfile': objProfile, 'profile_list': profile_list,
114 return render_to_response('abscontrol/view.html', {'objProfile': objProfile, 'profile_list': profile_list,
115 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
115 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
116 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
116 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
117 'nextPattern' : nextPattern,
117 'nextPattern' : nextPattern,
118 })
118 })
119
119
120 def edit(request, profile_id):
120 def edit(request, profile_id):
121 if request.method == 'GET' and 'pattern' in request.GET:
121 if request.method == 'GET' and 'pattern' in request.GET:
122 pattern_value = request.GET["pattern"]
122 pattern_value = request.GET["pattern"]
123 else:
123 else:
124 pattern_value = 1
124 pattern_value = 1
125
125
126 profile_list = Profile.objects.all()
126 profile_list = Profile.objects.all()
127 objProfile = Profile.objects.get(pk=profile_id)
127 objProfile = Profile.objects.get(pk=profile_id)
128
128
129 lsPatterns = objProfile.pattern_set.all()
129 lsPatterns = objProfile.pattern_set.all()
130 patternChoosen = objProfile.pattern_set.get(value=pattern_value)
130 patternChoosen = objProfile.pattern_set.get(value=pattern_value)
131 objAntennaUp = patternChoosen.antennaup_set.get()
131 objAntennaUp = patternChoosen.antennaup_set.get()
132 objAntennaDown = patternChoosen.antennadown_set.get()
132 objAntennaDown = patternChoosen.antennadown_set.get()
133
133
134 return render_to_response('abscontrol/edit.html', {'objProfile': objProfile, 'profile_list': profile_list,
134 return render_to_response('abscontrol/edit.html', {'objProfile': objProfile, 'profile_list': profile_list,
135 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
135 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
136 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
136 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
137 })
137 })
138
138
139 def addPattern(request, profile_id):
139 def addPattern(request, profile_id):
140 profile_list = Profile.objects.all()
140 profile_list = Profile.objects.all()
141 objProfile = Profile.objects.get(pk=profile_id)
141 objProfile = Profile.objects.get(pk=profile_id)
142
142
143 return render_to_response('abscontrol/addPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
143 return render_to_response('abscontrol/addPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
144 'txtAntenna' : txtAntenna, 'txtUes' : txtUes,
144 'txtAntenna' : txtAntenna, 'txtUes' : txtUes,
145 'txtTxUp' : txtTxUp, 'txtTxDown' : txtTxDown,
145 'txtTxUp' : txtTxUp, 'txtTxDown' : txtTxDown,
146 'txtRxUp' : txtRxUp, 'txtRxDown' : txtRxDown,
146 'txtRxUp' : txtRxUp, 'txtRxDown' : txtRxDown,
147 })
147 })
148
148
149 def editPattern(request, profile_id, pattern_id):
149 def editPattern(request, profile_id, pattern_id):
150 profile_list = Profile.objects.all()
150 profile_list = Profile.objects.all()
151 objProfile = Profile.objects.get(pk=profile_id)
151 objProfile = Profile.objects.get(pk=profile_id)
152 lsPatterns = objProfile.pattern_set.all()
152 lsPatterns = objProfile.pattern_set.all()
153 patternChoosen = Pattern.objects.get(pk=pattern_id)
153 patternChoosen = Pattern.objects.get(pk=pattern_id)
154 objAntennaUp = patternChoosen.antennaup_set.get()
154 objAntennaUp = patternChoosen.antennaup_set.get()
155 objAntennaDown = patternChoosen.antennadown_set.get()
155 objAntennaDown = patternChoosen.antennadown_set.get()
156
156
157 return render_to_response('abscontrol/editPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
157 return render_to_response('abscontrol/editPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
158 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
158 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
159 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
159 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
160 })
160 })
161
161
162 def savePattern(request, profile_id):
162 def savePattern(request, profile_id):
163 pattern_id = 0
163 pattern_id = 0
164 method = "save"
164 method = "save"
165
165
166 if 'pattern_id' in request.POST:
166 if 'pattern_id' in request.POST:
167 pattern_id = request.POST["pattern_id"]
167 pattern_id = request.POST["pattern_id"]
168 method = "update"
168 method = "update"
169
169
170 maxValuePattern = 0
170 maxValuePattern = 0
171 txtAntennaUp = request.POST["txtAntennaUp"]
171 txtAntennaUp = request.POST["txtAntennaUp"]
172 txtTxUp = request.POST["txtTxUp"]
172 txtTxUp = request.POST["txtTxUp"]
173 txtRxUp = request.POST["txtRxUp"]
173 txtRxUp = request.POST["txtRxUp"]
174 txtUesUp = request.POST["txtUesUp"]
174 txtUesUp = request.POST["txtUesUp"]
175
175
176 txtAntennaDown = request.POST["txtAntennaDown"]
176 txtAntennaDown = request.POST["txtAntennaDown"]
177 txtTxDown = request.POST["txtTxDown"]
177 txtTxDown = request.POST["txtTxDown"]
178 txtRxDown = request.POST["txtRxDown"]
178 txtRxDown = request.POST["txtRxDown"]
179 txtUesDown = request.POST["txtUesDown"]
179 txtUesDown = request.POST["txtUesDown"]
180
180
181 if method == "save":
181 if method == "save":
182 objProfile = Profile.objects.get(pk=profile_id)
182 objProfile = Profile.objects.get(pk=profile_id)
183 lsPatterns = objProfile.pattern_set.all()
183 lsPatterns = objProfile.pattern_set.all()
184 for element in lsPatterns:
184 for element in lsPatterns:
185 if element.value > maxValuePattern:
185 if element.value > maxValuePattern:
186 maxPattern = element.value
186 maxPattern = element.value
187
187
188 if maxPattern < 10 :
188 if maxPattern < 10 :
189 newValuePattern = maxPattern + 1
189 newValuePattern = maxPattern + 1
190 newpattern = objProfile.pattern_set.create(value=newValuePattern)
190 newpattern = objProfile.pattern_set.create(value=newValuePattern)
191 newpattern.antennaup_set.create(value=txtAntennaUp,tx=txtTxUp,rx=txtRxUp,ues=txtUesUp)
191 newpattern.antennaup_set.create(value=txtAntennaUp,tx=txtTxUp,rx=txtRxUp,ues=txtUesUp)
192 newpattern.antennadown_set.create(value=txtAntennaDown,tx=txtTxDown,rx=txtRxDown,ues=txtUesDown)
192 newpattern.antennadown_set.create(value=txtAntennaDown,tx=txtTxDown,rx=txtRxDown,ues=txtUesDown)
193
193
194 newurl = '/abscontrol/%d/view/%d' % (int(profile_id), newpattern.id)
194 newurl = '/abscontrol/%d/view/%d' % (int(profile_id), newpattern.id)
195 else:
195 else:
196 newurl = '/abscontrol/edit/%d' % (int(profile_id))
196 newurl = '/abscontrol/edit/%d' % (int(profile_id))
197 else:
197 else:
198 txtAntennaUpId = request.POST["txtAntennaUpId"]
198 txtAntennaUpId = request.POST["txtAntennaUpId"]
199 objAntennaUp = AntennaUp.objects.get(pk=txtAntennaUpId)
199 objAntennaUp = AntennaUp.objects.get(pk=txtAntennaUpId)
200 objAntennaUp.value = txtAntennaUp
200 objAntennaUp.value = txtAntennaUp
201 objAntennaUp.tx = txtTxUp
201 objAntennaUp.tx = txtTxUp
202 objAntennaUp.rx = txtRxUp
202 objAntennaUp.rx = txtRxUp
203 objAntennaUp.ues = txtUesUp
203 objAntennaUp.ues = txtUesUp
204 objAntennaUp.save()
204 objAntennaUp.save()
205
205
206 txtAntennaDownId = request.POST["txtAntennaDownId"]
206 txtAntennaDownId = request.POST["txtAntennaDownId"]
207 objAntennaDown = AntennaDown.objects.get(pk=txtAntennaDownId)
207 objAntennaDown = AntennaDown.objects.get(pk=txtAntennaDownId)
208 objAntennaDown.value = txtAntennaDown
208 objAntennaDown.value = txtAntennaDown
209 objAntennaDown.tx = txtTxDown
209 objAntennaDown.tx = txtTxDown
210 objAntennaDown.rx = txtRxDown
210 objAntennaDown.rx = txtRxDown
211 objAntennaDown.ues = txtUesDown
211 objAntennaDown.ues = txtUesDown
212 objAntennaDown.save()
212 objAntennaDown.save()
213
213
214 newurl = '/abscontrol/%d/view/%d' % (int(profile_id), int(pattern_id))
214 newurl = '/abscontrol/%d/view/%d' % (int(profile_id), int(pattern_id))
215
215
216 return redirect(newurl)
216 return redirect(newurl)
217
217
218 def viewPattern(request, profile_id, pattern_id):
218 def viewPattern(request, profile_id, pattern_id):
219
219
220 profile_list = Profile.objects.all()
220 profile_list = Profile.objects.all()
221 objProfile = Profile.objects.get(pk=profile_id)
221 objProfile = Profile.objects.get(pk=profile_id)
222
222
223 patternChoosen = Pattern.objects.get(pk=pattern_id)
223 patternChoosen = Pattern.objects.get(pk=pattern_id)
224
224
225 objAntennaUp = patternChoosen.antennaup_set.get()
225 objAntennaUp = patternChoosen.antennaup_set.get()
226 objAntennaDown = patternChoosen.antennadown_set.get()
226 objAntennaDown = patternChoosen.antennadown_set.get()
227
227
228 lsPatterns = objProfile.pattern_set.all()
228 lsPatterns = objProfile.pattern_set.all()
229
229
230 return render_to_response('abscontrol/viewPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
230 return render_to_response('abscontrol/viewPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
231 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
231 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
232 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
232 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
233 })
233 })
234
234
235 def deletePattern(request, profile_id, pattern_id):
235 def deletePattern(request, profile_id, pattern_id):
236 newurl = '/abscontrol/edit/%d' % int(profile_id)
236 newurl = '/abscontrol/edit/%d' % int(profile_id)
237
237
238 return redirect(newurl)
238 return redirect(newurl)
239
239
240 def importProfile(request):
240 def importProfile(request):
241
241
242 return render_to_response('abscontrol/import.html', { })
242 return render_to_response('abscontrol/import.html', { })
243
243
244 def saveImport(request):
244 def saveImport(request):
245 if request.method == 'POST':
245 if request.method == 'POST':
246 txtFilename = request.FILES['txtFile']
246 txtFilename = request.FILES['txtFile']
247 if txtFilename:
247 if txtFilename:
248 destination = open('/tmp/'+txtFilename.name, 'wb+')
248 destination = open('/tmp/'+txtFilename.name, 'wb+')
249 for chunk in txtFilename.chunks():
249 for chunk in txtFilename.chunks():
250 destination.write(chunk)
250 destination.write(chunk)
251 destination.close()
251 destination.close()
252 filename = '/tmp/'+txtFilename.name
252 filename = '/tmp/'+txtFilename.name
253 readFile = readABSFile(filename)
253 readFile = readABSFile(filename)
254 expName, num_patterns, patterns = readFile.getMetadata()
254 expName, num_patterns, patterns = readFile.getMetadata()
255
256 '''
257 f = open('/tmp/'+txtFilename.name, 'r')
258 newContent = f.readlines()
259 f.close()
260 content = ""
261 for i,line in enumerate(newContent):
262 if i == 0:
263 newLine = line.replace("'","")
264 pos = newLine.find("=")
265 expName = newLine[pos+1:].strip()
266 elif i == 2:
267 pos = line.find("=")
268 num_patterns = line[pos+1:].strip()
269 else:
270 content += line
271 '''
272 else:
255 else:
273 txtFilename = "Error"
256 txtFilename = "Error"
274 #content = "Error"
257 #content = "Error"
275 expName = ""
258 expName = ""
276 num_patterns = 0
259 num_patterns = 0
277
260
278 return render_to_response('abscontrol/upload.html', {'txtFilename': txtFilename, 'patterns' : patterns,
261 return render_to_response('abscontrol/upload.html', {'txtFilename': txtFilename, 'patterns' : patterns,
279 'expName' : expName, 'num_patterns' : num_patterns,
262 'expName' : expName, 'num_patterns' : num_patterns,
280 })
263 })
281
264
@@ -1,81 +1,85
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: 11px; }
9 body { font-size: 12px; }
10 header {border: 1px solid #fcc; font-size: 2em; height: 50px; text-align: center; line-height: 50px}
10 header {border: 1px solid #fcc; font-size: 2em; height: 50px; text-align: center; line-height: 50px}
11 #schema {margin: 0 auto; width: 980px; border: 1px solid #f00; padding: 10px 10px 10px 10px}
11 #schema {margin: 0 auto; width: 980px; border: 1px solid #f00; padding: 10px 10px 10px 10px}
12 #content {border: 1px solid #1cc; margin-top: 5px; margin-bottom: 5px}
12 #content {border: 1px solid #1cc; margin-top: 5px; margin-bottom: 5px}
13 #content #leftcolumn {float: left;border: 1px solid #c55; width: 150px; }
13 #content #leftcolumn {float: left;border: 1px solid #c55; width: 150px; }
14 #content #maincolumn {float: left; border: 1px solid #000; width: 800px; padding-left: 20px;}
14 #content #maincolumn {float: left; border: 1px solid #000; width: 800px; padding-left: 20px;}
15 footer {border: 1px solid #200; font-size: 0.9em; height: 30px; text-align: center; line-height: 20px}
15 footer {border: 1px solid #200; font-size: 0.9em; height: 30px; text-align: center; line-height: 20px}
16
16
17 .cleardivs {clear: both; border: 0px solid #400; height: 0px}
17 .cleardivs {clear: both; border: 0px solid #400; height: 0px}
18 /****************************************************************************************/
18 /****************************************************************************************/
19 /****** ESTILOS GENERALES *****************/
19 /****** ESTILOS GENERALES *****************/
20 /****************************************************************************************/
20 /****************************************************************************************/
21 .mnu{ height: 22px; border: 0px solid #c55 !important;}
21 .mnu{ height: 22px; border: 0px solid #c55 !important;}
22 .mnu li{ display:inline;}
22 .mnu li{ display:inline;}
23 .MnuVertical, .MnuHorizontal { font-family: 'Droid Sans', sans-serif; font-size: 1.2em; font-style: italic; text-shadow: 2px 2px #eee}
23 .MnuVertical, .MnuHorizontal { font-family: 'Droid Sans', sans-serif; font-size: 1.2em; font-style: italic; text-shadow: 2px 2px #eee}
24 .MnuHorizontal ul{ list-style: none; list-style-type: none; margin: 0;}
24 .MnuHorizontal ul{ list-style: none; list-style-type: none; margin: 0;}
25
25
26 /*.MnuHorizontal{ display: -webkit-box; -webkit-box-orient:horizontal;}*/
26 /*.MnuHorizontal{ display: -webkit-box; -webkit-box-orient:horizontal;}*/
27 /*.MnuHorizontal a{ display:block; padding:10px; -webkit-box-flex:1; text-align:center; }*/
27 /*.MnuHorizontal a{ display:block; padding:10px; -webkit-box-flex:1; text-align:center; }*/
28
28
29 /****************************************************************************************/
29 /****************************************************************************************/
30 /****** MENU DE NAVEGACION DE PERFILES **********************************/
30 /****** MENU DE NAVEGACION DE PERFILES **********************************/
31 /****************************************************************************************/
31 /****************************************************************************************/
32 #content #infoProfiles {border: 1px solid #d00 !important; width: 140px; margin: 0px; padding-top: 2px; padding-bottom: 2px}
32 #content #infoProfiles {border: 1px solid #d00 !important; width: 140px; margin: 0px; padding-top: 2px; padding-bottom: 2px}
33 .lblInfo {padding-left: 12px; line-height: 20px;}
33 .lblInfo {padding-left: 12px; line-height: 20px;}
34 #infoProfiles select {padding-left: 12px; line-height: 20px;margin-left: 12px}
34 #infoProfiles select {padding-left: 12px; line-height: 20px;margin-left: 12px}
35 #content nav {border: 0px solid #c55 !important; margin: 0px;}
35 #content nav {border: 0px solid #c55 !important; margin: 0px;}
36
36
37 #leftcolumn #mnuProfiles{ margin: 5px 0px; border: 0px solid #1494F6 !important; }
37 #leftcolumn #mnuProfiles{ margin: 5px 0px; border: 0px solid #1494F6 !important; }
38 #mnuProfiles ul{list-style: none; list-style-type: none; margin: 0; padding-left: 20px; border: 0px solid #f00 !important}
38 #mnuProfiles ul{list-style: none; list-style-type: none; margin: 0; padding-left: 20px; border: 0px solid #f00 !important}
39 #mnuProfiles li{ width: 80px; padding: 2px; border: 0px solid #c55 !important; line-height: 22px}
39 #mnuProfiles li{ width: 80px; padding: 2px; border: 0px solid #c55 !important; line-height: 22px}
40 #mnuProfiles a{ font-weight: normal; color: #1494F6; display: block; border: 0px solid #1cc !important; text-align: left}
40 #mnuProfiles a{ font-weight: normal; color: #1494F6; display: block; border: 0px solid #1cc !important; text-align: left}
41
41
42 /****************************************************************************************/
42 /****************************************************************************************/
43 /******** FORMULARIO DE PERFILES *************************************/
43 /******** FORMULARIO DE PERFILES *************************************/
44 /****************************************************************************************/
44 /****************************************************************************************/
45 #divProfile { border: 0px solid #dff; margin: 10px 0px; padding: 10px 10px; width: 500px }
45 #divProfile { border: 0px solid #dff; margin: 10px 0px; padding: 10px 10px; width: 500px }
46 .flsAntenna { margin: 10px 0px; width: 750px; padding: 10px 10px }
46 .flsAntenna { margin: 10px 0px; width: 750px; padding: 10px 10px }
47 #divPattern textarea,input[type=text],label{ font-family: Monaco; font-size: inherit; }
47 #divPattern textarea,input[type=text],label{ font-family: "Open Sans"; font-size: inherit; }
48
48
49 #divPattern textarea {resize: none; overflow: hidden}
49 #divPattern textarea {resize: none; overflow: hidden}
50
50
51 .divAntenna { float: left; margin: 10px; height: 160px; border: 0px solid #fcc !important; width: 260px }
51 .divAntenna { float: left; margin: 10px; height: 160px; border: 0px solid #fcc !important; width: 260px }
52 .divAntenna label{ display: block }
52 .divAntenna label{ display: block }
53 .txtAntenna { max-width: 250px; max-height: 125px; width: 250px; height: 125px }
53 .txtAntenna { width: 250px; max-width: 250px; height: 135px; max-height: 140px; }
54 .divAntenna p{ max-width: 250px; max-height: 125px; width: 250px; height: 125px }
54 .divAntenna p{ width: 250px; max-width: 250px; height: 130px; max-height: 130px; border: 1px solid #eee !important}
55
55
56 .divTx { display: block; float: left; margin: 10px; height: 150px }
56 .divTx { display: block; float: left; margin: 10px; height: 150px }
57 .divTx label{ display: block }
57 .divTx label{ display: block }
58 .divTx textarea{ width: 135px; max-width: 135px; height: 125px; max-height: 125px; text-align: justify }
58 .divTx textarea{ width: 135px; max-width: 135px; height: 135px; max-height: 140px; text-align: justify }
59 .divTx p{ width: 135px; max-width: 135px; height: 125px; max-height: 125px; text-align: justify }
59 .divTx p{ width: 135px; max-width: 135px; height: 130px; max-height: 130px; text-align: justify }
60
60
61 .divUes { display: block; margin: 10px}
61 .divUes { display: block; margin: 10px}
62 .divUes input[type=text] { width: 240px; max-width: 240px;}
62 .divUes input[type=text] { width: 240px; max-width: 240px;}
63
63
64 /****************************************************************************************/
64 /****************************************************************************************/
65 /****** MENU DE NAVEGACION DE PATRONES **********************************/
65 /****** MENU DE NAVEGACION DE PATRONES **********************************/
66 /****************************************************************************************/
66 /****************************************************************************************/
67 #divMnuPattern{ width: 280px; height: 25px; display: block; border: 0px solid #1cc !important; float: left; margin-left: 500px}
67 #divMnuPattern{ width: 280px; height: 25px; display: block; border: 0px solid #1cc !important; float: left; margin-left: 500px}
68 #divMnuPattern li{ float: left; display: block; width: 60px; border: 0px solid #2cc !important}
68 #divMnuPattern li{ float: left; display: block; width: 60px; border: 0px solid #2cc !important}
69 #divMnuPattern a{ display: block; line-height: 22px; text-decoration: none; padding: 0px 5px;
69 #divMnuPattern a{ display: block; line-height: 22px; text-decoration: none; padding: 0px 5px;
70 border-bottom: 1px solid #1494F6 !important; margin: 0px 2px; text-align: center; color: #1494F6
70 border-bottom: 1px solid #1494F6 !important; margin: 0px 2px; text-align: center; color: #1494F6
71 }
71 }
72 #infoPattern{ display: block; border: 1px solid #1494f6 !important, margin: 5px 2px; }
72 #infoPattern{ display: block; border: 1px solid #1494f6 !important, margin: 5px 2px; }
73
73
74 #navPatterns{ margin: 10px auto; border: 0px solid #d00 !important; width: 500px; height: 30px; font-family: 'Ubuntu', sans-serif; font-size: 14px;
74 #navPatterns{ margin: 10px auto; border: 0px solid #d00 !important; width: 500px; height: 30px; font-family: 'Ubuntu', sans-serif; font-size: 14px;
75 padding: 10px 0px}
75 padding: 10px 0px}
76 #navPatternList{ margin: 0px auto; border: 1px solid #ecc !important}
76 #navPatternList{ margin: 0px auto; border: 1px solid #ecc !important}
77 #navPatternList ul{ list-style: none; list-style-type: none; margin: 0;}
77 #navPatternList ul{ list-style: none; list-style-type: none; margin: 0;}
78 #navPatternList ul li{ float: left; width: 50px; border: 1px solid #eee !important; }
78 #navPatternList ul li{ float: left; width: 50px; border: 1px solid #eee !important; }
79 #navPatternList a{ width: 50px; border: 0px solid #1cc !important; display: block; text-align: center; line-height: 25px}
79 #navPatternList a{ width: 50px; border: 0px solid #1cc !important; display: block; text-align: center; line-height: 25px}
80 .lnkPattern{ background-color: #ccc !important; color: #eee;}
80 .lnkPattern{ background-color: #ccc !important; color: #eee;}
81 .lnkPatternSelected{ background-color: #2cc !important; color: #fff;}
81 .lnkPatternSelected{ background-color: #2cc !important; color: #fff;}
82
83 .divListofPatterns{ width: 650px; display: block; border: 1px solid #1cc !important; margin: 0 auto}
84 .divPattern{ width: 600px; display: block; border: 1px solid #f00 !important; margin: 2px auto; }
85
@@ -1,36 +1,37
1 {% extends "abscontrol/index.html" %}
1 {% extends "abscontrol/index.html" %}
2 {% block title %}ABS CONTROL:::::IMPORT PROFILE{% endblock %}
2 {% block title %}ABS CONTROL:::::IMPORT PROFILE{% endblock %}
3
3
4 {% block content %}
4 {% block content %}
5 <div id="content">
5 <div id="content">
6 <div id="divPattern">
6 <div id="divPattern">
7 <div class="divUes">
7 <div class="divUes">
8 <label for="lblFile">File:</label>
8 <label for="lblFile">File: {{ txtFilename }}</label>
9 <label for="lblFilename">{{ txtFilename }}</label>
10 </div>
9 </div>
11 <div class="divUes">
10 <div class="divUes">
12 <label for="lblExperiment">Experiment:</label>
11 <label for="lblExperiment">Experiment: {{ expName }}</label><br />
13 <p>{{ expName }}</p>
12 <label for="lblNumber">Number of patterns: {{ num_patterns }}</label>
14 <label for="lblNumber">Number of patterns:</label>
15 <p>{{ num_patterns }}</p>
16 </div>
13 </div>
17 {% if patterns %}
14 {% if patterns %}
18 <div>
15 <div class="divListofPatterns">
19 {% for element in patterns %}
16 {% for element in patterns %}
20 <div>
17 <div class="divPattern">
21 <label for="lblNumber">Pattern: {{ element.number }}</label>
18 <div>
19 <label for="lblNumber">Pattern: {{ element.number }}</label>
20 </div>
21 <div class="divAntenna">
22 <label for="lblAntennaUp">Antenna Up:</label>
23 <p>{{ element.up }}</p>
24 </div>
25 <div class="divAntenna">
26 <label for="lblAntennaDown">Antenna Down:</label>
27 <p>{{ element.down }}</p>
28 </div>
29 <div class="cleardivs"></div>
22 </div>
30 </div>
23 <div>
31 <div class="cleardivs"></div>
24 <label for="lblAntennaUp">Antenna Up:</label>
25 <p>{{ element.up }}</p>
26 </div>
27 <div>
28 <label for="lblAntennaDown">Antenna Down:</label>
29 <p>{{ element.down }}</p>
30 </div>
31 {% endfor %}
32 {% endfor %}
32 </div>
33 </div>
33 {% endif %}
34 {% endif %}
34 </div>
35 </div>
35 </div>
36 </div>
36 {% endblock %}
37 {% endblock %}
@@ -1,50 +1,70
1 '''
1 '''
2 Created on May 2, 2013
2 Created on May 2, 2013
3
3
4 @author: Jose Antonio Sal y Rosas Celi
4 @author: Jose Antonio Sal y Rosas Celi
5 @contact: jose.salyrosas@jro.igp.gob.pe
5 @contact: jose.salyrosas@jro.igp.gob.pe
6 '''
6 '''
7
7
8 class readABSFile(object):
8 class readABSFile(object):
9
9
10 __scriptName = "readABSFile.py"
10 __scriptName = "readABSFile.py"
11
11
12 def __init__(self, filename):
12 def __init__(self, filename):
13 self.fileName = filename
13 self.fileName = filename
14 self.content = ""
14 self.content = ""
15 self.exp_name = ""
15 self.exp_name = ""
16 self.number_patterns = 0
16 self.number_patterns = 0
17 self.patterns = {}
17 self.patterns = {}
18
18
19 def readFile(self):
19 def readFile(self):
20 f = open(self.fileName, 'r')
20 f = open(self.fileName, 'r')
21 self.content = f.readlines()
21 self.content = f.readlines()
22 f.close()
22 f.close()
23
23
24 def getMetadata(self):
24 def getMetadata(self):
25 self.readFile()
25 self.readFile()
26
26
27 newLine = self.content[0].replace("'","")
27 newLine = self.content[0].replace("'","")
28 pos = newLine.find("=")
28 pos = newLine.find("=")
29 self.exp_name = newLine[pos+1:].strip()
29 self.exp_name = newLine[pos+1:].strip()
30
30
31 pos = self.content[2].find("=")
31 pos = self.content[2].find("=")
32 self.number_patterns = int(self.content[2][pos+1:].strip())
32 self.number_patterns = int(self.content[2][pos+1:].strip())
33
33
34 self.patterns = self.getPatterns(self.content[3:])
34 self.patterns = self.getPatterns(self.content[3:])
35
35
36 return self.exp_name, self.number_patterns, self.patterns
36 return self.exp_name, self.number_patterns, self.patterns
37
37
38 def getPatterns(self, content):
38 def getPatterns(self, content):
39 lsPattern = []
39 lsPattern = []
40 index = 8
40 patterns = self.getValueofPattern(content)
41 for element in patterns:
42 if element != "":
43 strValue = element.replace("=","/")
44 pattern = strValue.split("/")
45 dicPattern = {"number" : pattern[0], "up" : pattern[1], "down" : pattern[2]}
46 lsPattern.append(dicPattern)
41
47
42 for i in range(0, self.number_patterns):
48 return lsPattern
43 first = i+index
49
44 second = first+index
50 def getValueofPattern(self, content):
45 antennaUp = content[i:first]
51 strValue = "".join(element.replace("\n","+").strip() for element in content)
46 antennaDown = content[first+1:second]
52 strValue = strValue.replace("\r","+")
47 dicPattern = {"number" : content[i], "up" : antennaUp, "down" : antennaDown}
53 strValue = strValue.replace("$","")
48 lsPattern.append(dicPattern)
54 strValue = strValue.replace("]]+++[[","]]/[[")
55 strValue = strValue.replace("]]++[[","]]/[[")
56 strValue = strValue.replace("]]+[[","]]/[[")
57 strValue = strValue.replace("],++[","],[")
58 strValue = strValue.replace("],+[","],[")
59 strValue = strValue.replace("]]+++","]]|")
60 strValue = strValue.replace("]]++","]]|")
61 strValue = strValue.replace("]]+","]]|")
62 strValue = strValue.replace(" =++[[","=[[")
63 strValue = strValue.replace("=++[[","=[[")
64 strValue = strValue.replace(" =+[[","=[[")
65 strValue = strValue.replace("=+[[","=[[")
66 strValue = strValue.replace("+","").strip()
67 #print strValue
68 lsPatterns = strValue.split("|")
49
69
50 return lsPattern No newline at end of file
70 return lsPatterns No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now