367 super(Select, self).__init__(attrs) |
367 super(Select, self).__init__(attrs) |
368 self.multiple = multiple |
368 self.multiple = multiple |
369 |
369 |
370 def render(self, form, field): |
370 def render(self, form, field): |
371 name, curvalues, attrs = self._render_attrs(form, field) |
371 name, curvalues, attrs = self._render_attrs(form, field) |
372 vocab = field.vocabulary(form) |
|
373 options = [] |
372 options = [] |
374 for label, value in vocab: |
373 for label, value in field.vocabulary(form): |
375 if value in curvalues: |
374 if value in curvalues: |
376 options.append(tags.option(label, value=value, selected='selected')) |
375 options.append(tags.option(label, value=value, selected='selected')) |
377 else: |
376 else: |
378 options.append(tags.option(label, value=value)) |
377 options.append(tags.option(label, value=value)) |
379 if attrs is None: |
378 if attrs is None: |
390 if values and values[0]: |
389 if values and values[0]: |
391 attrs['checked'] = u'checked' |
390 attrs['checked'] = u'checked' |
392 return name, values, attrs |
391 return name, values, attrs |
393 |
392 |
394 |
393 |
395 class Radio(FieldWidget): |
394 class Radio(Input): |
396 pass |
395 type = 'radio' |
|
396 setdomid = False |
|
397 |
|
398 def render(self, form, field): |
|
399 name, curvalues, attrs = self._render_attrs(form, field) |
|
400 options = [] |
|
401 for label, value in field.vocabulary(form): |
|
402 if value in curvalues: |
|
403 options.append(tags.input(name=name, type=self.type, value=value, checked='checked', **attrs)) |
|
404 else: |
|
405 options.append(tags.option(name=name, type=self.type, value=value, **attrs)) |
|
406 options[-1] += label + '<br/>' |
|
407 return '\n'.join(options) |
397 |
408 |
398 |
409 |
399 class DateTimePicker(TextInput): |
410 class DateTimePicker(TextInput): |
400 monthnames = ('january', 'february', 'march', 'april', |
411 monthnames = ('january', 'february', 'march', 'april', |
401 'may', 'june', 'july', 'august', |
412 'may', 'june', 'july', 'august', |