##// END OF EJS Templates
Task #95...
Task #95 git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@48 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71

File last commit:

r25:f193286b21f7
r29:2ec340dc44be
Show More
models.py
107 lines | 3.9 KiB | text/x-python | PythonLexer
Juan C. Espinoza
Add rc config mods...
r23
Juan C. Espinoza
Updates to models, views & forms for CR...
r25 import json
Juan C. Espinoza
Add rc config mods...
r23 from polymorphic import PolymorphicModel
Juan C. Espinoza
Proyecto base en Django (refs #259) ...
r0 from django.db import models
Juan C. Espinoza
Add rc config mods...
r23 from django.core.validators import MinValueValidator, MaxValueValidator
Juan C. Espinoza
Updating base models and views ...
r6 from apps.main.models import Configuration
Juan C. Espinoza
Proyecto base en Django (refs #259) ...
r0 # Create your models here.
Juan C. Espinoza
Updating base models and views ...
r6
Juan C. Espinoza
Add rc config mods...
r23 LINE_TYPES = (
('tr', 'Transmission/reception selector signal'),
('tx', 'A modulating signal (Transmission pulse)'),
('codes', 'BPSK modulating signal'),
('windows', 'Sample window signal'),
('sync', 'Synchronizing signal'),
('flip', 'IPP related periodic signal'),
('prog_pulses', 'Programmable pulse'),
)
LINE_PARAMS = {
"tr": [{"name":"time_after", "value": 0}],
"tx": [{"name": "pulse_width", "value": 0},{"name":"delays", "value":""}],
"codes": [{"name":"tx_ref", "value": ""},{"name":"code", "value": "", "choices":"RCLineCode"}],
"windows": [{"name":"tx_ref","value":""}, {"name":"first_height", "value":0}, {"name":"number_of_samples","value":0}, {"name":"resolution","value":0}, {"name":"last_height","value":0}],
"sync": [{"name": "delay", "value": 0}],
"flip": [{"name":"number_of_flips", "value": 0}],
"prog_pulses": [{"name": "begin", "value": 0}, {"name": "end","value": 0}],
}
Juan C. Espinoza
Updating base models and views ...
r6 class RCConfiguration(Configuration):
Juan C. Espinoza
Add rc config mods...
r23
clock = models.FloatField(verbose_name='Clock Master (MHz)', validators=[MinValueValidator(0), MaxValueValidator(80)], blank=True, null=True)
clock_divider = models.PositiveIntegerField(verbose_name='Clock divider', validators=[MinValueValidator(0), MaxValueValidator(256)], blank=True, null=True)
ipp = models.PositiveIntegerField(verbose_name='Inter pulse period (Km)', default=10)
ntx = models.PositiveIntegerField(verbose_name='Number of pulse of transmit', default=1)
time_before = models.PositiveIntegerField(verbose_name='Number of pulse of transmit', default=0)
Juan C. Espinoza
Updating base models and views ...
r6
class Meta:
db_table = 'rc_configurations'
Juan C. Espinoza
Add rc config mods...
r23
def get_number_position(self):
lines = RCLine.objects.filter(rc_configuration=self.rc_configuration)
if lines:
return max([line.position for line in lines])
Juan C. Espinoza
Updates to models, views & forms for CR...
r25 def get_refs_lines(self):
lines = RCLine.objects.filter(rc_configuration=self.pk, line_type__name='tx')
return [(line.pk, line.get_name()) for line in lines]
Juan C. Espinoza
Add rc config mods...
r23 class RCLineCode(models.Model):
Juan C. Espinoza
Updates to models, views & forms for CR...
r25 name = models.CharField(max_length=40)
Juan C. Espinoza
Add rc config mods...
r23 bits_per_code = models.PositiveIntegerField(default=0)
number_of_codes = models.PositiveIntegerField(default=0)
codes = models.TextField(blank=True, null=True)
class Meta:
db_table = 'rc_line_codes'
Juan C. Espinoza
Updates to models, views & forms for CR...
r25 ordering = ('name',)
def __unicode__(self):
return u'%s' % self.name
Juan C. Espinoza
Add rc config mods...
r23
class RCLineType(models.Model):
name = models.CharField(choices=LINE_TYPES, max_length=40)
description = models.TextField(blank=True, null=True)
params = models.TextField(default='[]')
class Meta:
db_table = 'rc_line_types'
def __unicode__(self):
return u'%s - %s' % (self.name.upper(), self.get_name_display())
class RCLine(models.Model):
rc_configuration = models.ForeignKey(RCConfiguration)
line_type = models.ForeignKey(RCLineType)
channel = models.PositiveIntegerField(default=0)
position = models.PositiveIntegerField(default=0)
params = models.TextField(default='{}')
class Meta:
db_table = 'rc_lines'
def __unicode__(self):
return u'%s - %s' % (self.rc_configuration, self.get_name())
def get_name(self):
chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
Juan C. Espinoza
Updates to models, views & forms for CR...
r25 if self.line_type.name in ('tx', 'tr',):
return '%s %s' % (self.line_type.name.upper(), chars[self.position])
elif self.line_type.name in ('codes', 'windows',):
pk = json.loads(self.params)['TX_ref']
ref = RCLine.objects.get(pk=pk)
return '%s %s' % (self.line_type.name.upper(), chars[ref.position])
else:
return self.line_type.name.upper()