Return a list of ``[(name, value), ...]`` for the current state of the form. :param name: Same as for :meth:`submit` :param index: Same as for :meth:`submit`
(self, name=None, index=None, submit_value=None)
| 651 | return uploads |
| 652 | |
| 653 | def submit_fields(self, name=None, index=None, submit_value=None): |
| 654 | """Return a list of ``[(name, value), ...]`` for the current state of |
| 655 | the form. |
| 656 | |
| 657 | :param name: Same as for :meth:`submit` |
| 658 | :param index: Same as for :meth:`submit` |
| 659 | |
| 660 | """ |
| 661 | submit = [] |
| 662 | # Use another name here so we can keep function param the same for BWC. |
| 663 | submit_name = name |
| 664 | if index is not None and submit_value is not None: |
| 665 | raise ValueError("Can't specify both submit_value and index.") |
| 666 | |
| 667 | # If no particular button was selected, use the first one |
| 668 | if index is None and submit_value is None: |
| 669 | index = 0 |
| 670 | |
| 671 | # This counts all fields with the submit name not just submit fields. |
| 672 | current_index = 0 |
| 673 | for name, field in self.field_order: |
| 674 | if name is None: # pragma: no cover |
| 675 | continue |
| 676 | if submit_name is not None and name == submit_name: |
| 677 | if index is not None and current_index == index: |
| 678 | submit.append((field.pos, name, field.value_if_submitted())) |
| 679 | if submit_value is not None and \ |
| 680 | field.value_if_submitted() == submit_value: |
| 681 | submit.append((field.pos, name, field.value_if_submitted())) |
| 682 | current_index += 1 |
| 683 | else: |
| 684 | value = field.value |
| 685 | if value is None: |
| 686 | continue |
| 687 | if isinstance(field, File): |
| 688 | submit.append((field.pos, name, field)) |
| 689 | continue |
| 690 | if isinstance(field, Radio): |
| 691 | if field.selectedIndex is not None: |
| 692 | submit.append((field.optionPositions[field.selectedIndex], name, value)) |
| 693 | continue |
| 694 | if isinstance(value, list): |
| 695 | for item in value: |
| 696 | submit.append((field.pos, name, item)) |
| 697 | else: |
| 698 | submit.append((field.pos, name, value)) |
| 699 | submit.sort(key=operator.itemgetter(0)) |
| 700 | return [x[1:] for x in submit] |
| 701 | |
| 702 | def __repr__(self): |
| 703 | value = '<Form' |