import ast
import json
from django import forms
from django.utils.safestring import mark_safe
class KmUnitWidget(forms.widgets.TextInput):
def render(self, label, value, attrs=None):
if isinstance(value, (int, float)):
unit = int(value*attrs['km2unit'])
elif isinstance(value, basestring):
units = []
values = [s for s in value.split(',') if s]
for val in values:
units.append('{0:.0f}'.format(float(val)*attrs['km2unit']))
unit = ','.join(units)
disabled = 'disabled' if attrs.get('disabled', False) else ''
name = attrs.get('name', label)
if 'line' in attrs:
label += '_{0}'.format(attrs['line'].pk)
html = '
Km
Units
'.format(disabled, label, name, value, disabled, label, unit)
script = ''''''.format(label=label)
if disabled:
return mark_safe(html)
else:
return mark_safe(html+script)
class UnitKmWidget(forms.widgets.TextInput):
def render(self, label, value, attrs=None):
if isinstance(value, (int, float)):
km = value/attrs['km2unit']
elif isinstance(value, basestring):
kms = []
values = [s for s in value.split(',') if s]
for val in values:
kms.append('{0:.0f}'.format(float(val)/attrs['km2unit']))
km = ','.join(kms)
disabled = 'disabled' if attrs.get('disabled', False) else ''
name = attrs.get('name', label)
if 'line' in attrs:
label += '_{0}'.format(attrs['line'].pk)
html = '''
Units
Km
'''.format(disabled, label, name, value, disabled, label, km)
script = ''''''.format(label=label)
if disabled:
return mark_safe(html)
else:
return mark_safe(html+script)
class KmUnitHzWidget(forms.widgets.TextInput):
def render(self, label, value, attrs=None):
unit = float(value)*attrs['km2unit']
if unit%10==0:
unit = int(unit)
hz = 150000*float(value)**-1
disabled = 'disabled' if attrs.get('disabled', False) else ''
name = attrs.get('name', label)
if 'line' in attrs:
label += '_{0}'.format(attrs['line'].pk)
html = '''
Km
Units
Hz
'''.format(disabled, label, name, value, disabled, unit, hz)
script = ''''''.format(label=label)
if disabled:
return mark_safe(html)
else:
return mark_safe(html+script)
class KmUnitDcWidget(forms.widgets.TextInput):
def render(self, label, value, attrs=None):
unit = int(float(value)*attrs['km2unit'])
disabled = 'disabled' if attrs.get('disabled', False) else ''
name = attrs.get('name', label)
label += '_{0}'.format(attrs['line'].pk)
dc = float(json.loads(attrs['line'].params)['pulse_width'])*attrs['line'].rc_configuration.ipp/100
html = '''
Km
Units
DC[%]
'''.format(disabled, label, name, value, disabled, unit, dc)
script = ''''''.format(label=label)
if disabled:
return mark_safe(html)
else:
return mark_safe(html+script)
class DefaultWidget(forms.widgets.TextInput):
def render(self, label, value, attrs=None):
disabled = 'disabled' if attrs.get('disabled', False) else ''
name = attrs.get('name', label)
html = '
'.format(disabled, label, name, value)
return mark_safe(html)
class HiddenWidget(forms.widgets.HiddenInput):
def render(self, label, value, attrs=None):
disabled = 'disabled' if attrs.get('disabled', False) else ''
name = self.attrs.get('name', label)
html = ''.format(disabled, label, name, value)
return mark_safe(html)
class CodesWidget(forms.widgets.Textarea):
def render(self, label, value, attrs=None):
disabled = 'disabled' if attrs.get('disabled', False) else ''
name = attrs.get('name', label)
if '[' in value:
value = ast.literal_eval(value)
if isinstance(value, list):
codes = '\r\n'.join(value)
else:
codes = value
html = ''.format(disabled, label, name, codes)
return mark_safe(html)