|
13 | 13 | import unicodedata |
14 | 14 | import time |
15 | 15 | import json |
| 16 | +import re |
16 | 17 | import warnings |
17 | 18 | from datetime import datetime, timezone |
18 | 19 |
|
@@ -2164,47 +2165,17 @@ def _build_lookup_field_models( |
2164 | 2165 | cascade_delete: str = CASCADE_BEHAVIOR_REMOVE_LINK, |
2165 | 2166 | language_code: int = 1033, |
2166 | 2167 | ) -> tuple: |
2167 | | - """Build a (lookup, relationship) pair for a lookup field creation. |
2168 | | -
|
2169 | | - Returns ``(LookupAttributeMetadata, OneToManyRelationshipMetadata)``. |
2170 | | - Used by both the batch resolver and ``TableOperations.create_lookup_field`` |
2171 | | - to avoid duplicating the metadata assembly logic. |
2172 | | -
|
2173 | | - Note: ``referencing_table`` and ``referenced_table`` are lowercased |
2174 | | - automatically because Dataverse stores entity logical names in |
2175 | | - lowercase. ``lookup_field_name`` is kept as-is (it is a SchemaName). |
2176 | | - """ |
2177 | | - # Dataverse logical names are always lowercase. Callers may pass |
2178 | | - # SchemaName-cased values (e.g. "new_SQLTeam"); normalise here so |
2179 | | - # the relationship metadata uses valid logical names. |
2180 | | - referencing_lower = referencing_table.lower() |
2181 | | - referenced_lower = referenced_table.lower() |
2182 | | - |
2183 | | - lookup = LookupAttributeMetadata( |
2184 | | - schema_name=lookup_field_name, |
2185 | | - display_name=Label( |
2186 | | - localized_labels=[ |
2187 | | - LocalizedLabel( |
2188 | | - label=display_name or referenced_table, |
2189 | | - language_code=language_code, |
2190 | | - ) |
2191 | | - ] |
2192 | | - ), |
2193 | | - required_level="ApplicationRequired" if required else "None", |
2194 | | - ) |
2195 | | - if description: |
2196 | | - lookup.description = Label( |
2197 | | - localized_labels=[LocalizedLabel(label=description, language_code=language_code)] |
2198 | | - ) |
2199 | | - rel_name = f"{referenced_lower}_{referencing_lower}_{lookup_field_name}" |
2200 | | - relationship = OneToManyRelationshipMetadata( |
2201 | | - schema_name=rel_name, |
2202 | | - referenced_entity=referenced_lower, |
2203 | | - referencing_entity=referencing_lower, |
2204 | | - referenced_attribute=f"{referenced_lower}id", |
2205 | | - cascade_configuration=CascadeConfiguration(delete=cascade_delete), |
| 2168 | + """Delegate to the base implementation (kept here for subclass discoverability).""" |
| 2169 | + return _ODataBase._build_lookup_field_models( |
| 2170 | + referencing_table, |
| 2171 | + lookup_field_name, |
| 2172 | + referenced_table, |
| 2173 | + display_name=display_name, |
| 2174 | + description=description, |
| 2175 | + required=required, |
| 2176 | + cascade_delete=cascade_delete, |
| 2177 | + language_code=language_code, |
2206 | 2178 | ) |
2207 | | - return lookup, relationship |
2208 | 2179 |
|
2209 | 2180 | def _build_create_relationship( |
2210 | 2181 | self, |
|
0 commit comments