| 78 | |
| 79 | |
| 80 | def _normalize_env_vars_formdata(formdata): |
| 81 | def getlist(key): |
| 82 | try: |
| 83 | return formdata.getlist(key) |
| 84 | except AttributeError: |
| 85 | value = formdata.get(key) |
| 86 | if value is None: |
| 87 | return [] |
| 88 | return value if isinstance(value, list) else [value] |
| 89 | |
| 90 | indexes = set() |
| 91 | for key in formdata: |
| 92 | match = re.match(r"env_vars-(\d+)-", key) |
| 93 | if match: |
| 94 | indexes.add(int(match.group(1))) |
| 95 | |
| 96 | pairs = [] |
| 97 | new_i = 0 |
| 98 | |
| 99 | for i in sorted(indexes): |
| 100 | if getlist(f"env_vars-{i}-delete"): |
| 101 | continue |
| 102 | |
| 103 | key_value = (getlist(f"env_vars-{i}-key") or [""])[0] |
| 104 | value_value = (getlist(f"env_vars-{i}-value") or [""])[0] |
| 105 | environment_value = (getlist(f"env_vars-{i}-environment") or [""])[0] |
| 106 | |
| 107 | if key_value or value_value: |
| 108 | pairs.append((f"env_vars-{new_i}-key", key_value)) |
| 109 | pairs.append((f"env_vars-{new_i}-value", value_value)) |
| 110 | pairs.append((f"env_vars-{new_i}-environment", environment_value)) |
| 111 | new_i += 1 |
| 112 | |
| 113 | for key in formdata: |
| 114 | if not key.startswith("env_vars-"): |
| 115 | for value in getlist(key): |
| 116 | pairs.append((key, value)) |
| 117 | |
| 118 | return FormData(pairs) |
| 119 | |
| 120 | |
| 121 | class ProjectEnvVarForm(Form): |