def __init__(self, *args, **kwargs):
super(SelectTowerForm, self).__init__(*args, **kwargs)
# We create the choice field here in the init so that if the network
# values change, the form will pick up the changes and not require the
# server to be restarted.
choices = []
# We create a convoluted tower queryset so that towers that have never
# synced (last_active = None) sort after active and inactive towers.
the_past = datetime.datetime.now() - datetime.timedelta(days=10*365)
all_towers = models.BTS.objects.all().annotate(
new_last_active=Coalesce('last_active', Value(the_past))).order_by(
'-new_last_active')
for tower in all_towers:
value = tower.id
user_profile = models.UserProfile.objects.get(
network=tower.network)
abbreviated_uuid = tower.uuid[0:5]
if tower.nickname:
prefix = 'Tower "%s" - %s..' % (
tower.nickname, abbreviated_uuid)
else:
prefix = 'Tower %s..' % abbreviated_uuid
display = '%s (%s)' % (prefix, user_profile.user.email)
choices.append((value, display))
self.fields['tower'] = forms.ChoiceField(
label="Tower", choices=choices, required=False)
# Set layout attributes.
self.helper = FormHelper()
self.helper.form_id = 'select-tower-form'
self.helper.form_method = 'post'
self.helper.form_action = '/dashboard/staff/tower-monitoring'
self.helper.add_input(Submit('submit', 'Select'))
self.helper.layout = Layout('tower')
dashboard_forms.py 文件源码
python
阅读 19
收藏 0
点赞 0
评论 0
评论列表
文章目录