The following has evaluated to null or missing: ==> FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) [in template "252001#252047#252845" at line 128, column 37] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: dMTJsonObject = FrontendService.media... [in template "252001#252047#252845" at line 128, column 21] ----
1<#-- used @ Veranstaltung-Detailseite Intro
2 used @ Publikation-Detailseite Intro
3-->
4
5<#--
6Web content templates to display teaser on thema detail page
7
8Generic template for detail pages Intro / Teaser element
9-->
10<#--
11Display the current page title
12-->
13<#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" />
14<#include "${fullTemplatesPath}/macros/debugging.ftl" />
15
16<#include "${fullTemplatesPath}/macros/page-modules/PMIntro.ftl" />
17<#include "${fullTemplatesPath}/macros/atomic-modules/AMPublicationCarousel.ftl" />
18<#include "${fullTemplatesPath}/macros/atomic-modules/AMMetadata.ftl" />
19<#include "${fullTemplatesPath}/macros/atomic-modules/AMDatetime.ftl" />
20
21
22<#--
23 renders the Intro for nearly all Pages
24 TODO: remove Share? (was in the designs, but not anymore?)
25 TODO: check if languageSelect/filter are working (js)
26
27 - portletId
28 - data = {
29 "media": string (src from image),
30 "category": string,
31 "title": string,
32 "author": string,
33 "subheadline": string,
34 "copy": string,
35 "filter": {
36 "id": string,
37 "name": string,
38 "entries": Array<Object> ({key:value}),
39 },
40 "languageSelect": {
41 "id": string,
42 "name": string,
43 "entries": Array<Object> ({key:value}),
44 },
45 "meta": {
46 "pos"; string (top/bottom)
47 "date": string,
48 "hash": string,
49 "info": string, (url)
50 },
51 "share" : {
52 "login": string,
53 "print": string,
54 "mail": string,
55 "multishare": string?? (tbd)
56 }
57 - AMMetadata: macro
58 - position: String ("top") -> defines wether the meta-data should be rendered above or below the intro-content
59 }
60-->
61
62<#assign
63 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
64
65 ServiceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()
66 DLAPP = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService")
67
68 themeDisplay = ServiceContext.getThemeDisplay()
69 editmode = FrontendService.user.isPrivilegedUser(themeDisplay)
70
71 languageId = themeDisplay.getLocale()
72 groupId = themeDisplay.getScopeGroupId()
73 currentUrl = themeDisplay.getURLCurrent()
74
75 layout = themeDisplay.getLayout()
76 layouttpl = layout.getTypeSettingsProperties().getProperty("layout-template-id")
77/>
78
79<#setting locale="${languageId}">
80
81<#-- get article from url -->
82
83<#assign entry = FrontendService.article.getArticleToUrl(currentUrl, groupId?number)! >
84
85
86<#if entry?has_content>
87
88 <#if entry.resourcePrimKey??>
89 <#assign primaryKey = entry.resourcePrimKey?number >
90 <#elseif entry.classPK??>
91 <#assign primaryKey = entry.classPK?number >
92 </#if>
93
94 <#assign
95 jsonString = FrontendService.article.getWebcontent(primaryKey)
96 json = FrontendService.json.parseAsJson(jsonString)
97 availablelanguages = FrontendService.article.getAssetEntryToUrl(primaryKey).getAvailableLanguageIds()
98
99 title = entry.getTitle(languageId)
100 data = {
101 "title": title
102 }
103 />
104 <@debugJsonString jsonString "ADT_KASDE_DYNAMIC_INTRO" />
105
106 <#if hasContent('untertitel', languageId, json)>
107 <#assign data = data + { "subheadline": getValueForLanguage('untertitel', languageId, json, "first") } >
108 </#if>
109
110 <#if hasContent('beschreibung', languageId, json)>
111 <#assign data = data + { "copy": getValueForLanguage('beschreibung', languageId, json, "first") } >
112 </#if>
113
114 <#-- fill meta data -->
115 <#assign meta = {} />
116
117 <#-- PUBLIKATIONEN DETAIL -->
118 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")>
119
120 <#if hasContent('coverDMTKASDEMEDIUM', languageId, json)>
121 <#assign
122 coverBildString = getValueForLanguage('coverDMTKASDEMEDIUM', languageId, json, "first")
123 />
124
125 <#if coverBildString?has_content>
126 <#assign
127 coverBild = FrontendService.json.parseAsJson(coverBildString)
128 dMTJsonObject = FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale )
129 linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',coverBild.groupId?number, coverBild.uuid )
130 data = data + { "media": linkToDMT, "meta" : dMTJsonObject }
131 />
132 <#if dMTJsonObject.altText?? >
133 <#assign data = data + {"alt" : dMTJsonObject.altText} />
134 </#if>
135 <#if dMTJsonObject.quelle??>
136 <#assign meta = meta + { "quelle": dMTJsonObject.quelle } />
137 </#if>
138 </#if>
139 <#-- uncomment to display pdf cover as Intro Image
140 <#elseif hasContent('document_pdfDMTBASICDOCUMENT', languageId, json)>
141 <#assign
142 pdfDocument = getValueForLanguage('document_pdfDMTBASICDOCUMENT', languageId, json, "first")
143 fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, groupId?number)!/>
144 <#if fileEntry?has_content>
145 <#assign
146 linkToThumbnail = FrontendService.link.getThumbnailSrc(fileEntry , themeDisplay)
147 data = data + { "media": linkToThumbnail }
148 />
149 </#if>
150 -->
151 </#if>
152
153 <#assign
154 meta = meta + { "orderInfo": "true" }
155 verbundJournalArticle = FrontendService.publication.getVerbundToPublikation( entry )!""
156 />
157
158
159
160 <#if hasContent('erscheinungsdatum', languageId, json)>
161 <#assign
162 erscheinungsdatum = getValueForLanguage('erscheinungsdatum', languageId, json, "first")
163 />
164 <#if erscheinungsdatum?has_content >
165 <#assign
166 erscheinungsdatumFormatted = FrontendService.date.getDateFormatLong( erscheinungsdatum, languageId )
167 meta = meta + { "date": erscheinungsdatumFormatted }
168 />
169 </#if>
170 </#if>
171
172 <#if verbundJournalArticle?has_content>
173 <#assign
174 verbundJsonString = FrontendService.article.getWebcontent(verbundJournalArticle.resourcePrimKey)
175 verbundJson = FrontendService.json.parseAsJson(verbundJsonString)
176 laufendenummer = getValueForLanguage('laufendenummer', languageId, verbundJson, "first")
177 coverImg = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, verbundJson, "first")
178 />
179 <@debugJsonString verbundJsonString "ADT_KASDE_DYNAMIC_INTRO-verbundJournalArticle" />
180 <#assign meta = meta + { "laufendenummer": laufendenummer } >
181
182 <#if coverImg?has_content && coverImg.url?has_content >
183 <#assign meta = meta + { "coverImg": coverImg.url } >
184 </#if>
185 </#if>
186
187
188 <#if meta?has_content>
189 <#assign data = data + {"meta": meta } >
190 </#if>
191
192 </#if>
193 <#-- PUBLIKATIONEN DETAIL END -->
194
195
196 <#-- VERANSTALTUNGEN DETAIL -->
197 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")>
198 <#assign
199 friendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, languageId, groupId)!""
200 links = []
201 />
202 <#if availablelanguages?has_content && friendlyUrl?has_content>
203 <#if (availablelanguages?size > 1) >
204 <#list availablelanguages as language>
205 <#assign
206 defaultLanguage = "de_DE"
207 defaultLocale = FrontendService.language.getLocaleByKey(defaultLanguage)
208 linkLocale = (FrontendService.language.getLocaleByKey(language))!defaultLocale
209 langFriendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, linkLocale, groupId)
210
211 link = {
212 "key": language!defaultLanguage,
213 "value": linkLocale.getDisplayLanguage(languageId),
214 "url": "/c/portal/update_language?p_l_id=" +
215 layout.plid + "&redirect=" + langFriendlyUrl +
216 "&languageId=" + language
217 }
218 />
219 <#if language == languageId>
220 <#assign link = link + { "selected": "true" } >
221 </#if>
222 <#assign links = links + [link]>
223 </#list>
224 <#assign
225 data = data + {
226 "languageSelect": {
227 "id": "languageSelectRedirect",
228 "name": "languageselectRedirect",
229 "entries": links,
230 "label": languageUtil.get(languageId, "diese.veranstaltung.ist.in.weiteren.sprachen.verfuegbar")
231 }
232 }
233 />
234 </#if>
235 </#if>
236 </#if>
237
238 <#if hasContent('erscheinungsdatum', languageId, json)>
239 <#assign
240 startdate = getValueForLanguage('erscheinungsdatum', languageId, json, "first")
241 meta = meta + { "start": startdate?date.iso, "end": "" }
242 />
243 </#if>
244
245 <#if hasContent('startdatum', languageId, json)>
246 <#assign
247 startdate = getValueForLanguage('startdatum', languageId, json, "first")
248 meta = meta + { "start": startdate?date.iso, "end": "" }
249 />
250 </#if>
251
252 <#if hasValue('einfuehrungText', locale, json)>
253 <#assign data = data + { "einfuehrungText" : getValueForLanguage('einfuehrungText', locale, json, "first") } >
254 <#elseif hasValue(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first")>
255 <#assign data = data + { "einfuehrungText" : getValueForLanguage(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first") } >
256 </#if>
257
258 <#if hasContent('endedatum', languageId, json)>
259 <#assign
260 enddate = getValueForLanguage('endedatum', languageId, json, "first")
261 meta = meta + { "end": enddate?date.iso }
262 />
263 </#if>
264
265 <#if hasContent('startzeit', languageId, json)>
266 <#assign
267 startzeit = getValueForLanguage('startzeit', languageId, json, "first")
268 />
269 <#if startzeit?has_content >
270 <#assign meta = meta + { "startzeit": startzeit } />
271 </#if>
272 </#if>
273
274 <#if hasContent('endezeit', languageId, json)>
275 <#assign
276 endezeit = getValueForLanguage('endezeit', languageId, json, "first")
277 meta = meta + { "endezeit": endezeit }
278 />
279 </#if>
280
281 <#if hasContent('ortWCSKASDEORT', languageId, json)>
282 <#assign
283 ortWCSKASDEORT = FrontendService.json.parseAsJson(getValueForLanguage('ortWCSKASDEORT', languageId, json, "first"))
284 ortWCSKASDEORTPrimaryKey = ortWCSKASDEORT.classPK?number
285 ortWCSKASDEORTWebContent = FrontendService.article.getWebcontentByPk(ortWCSKASDEORTPrimaryKey)!""
286 />
287 <#if ortWCSKASDEORTWebContent?has_content >
288 <#assign
289 ortWCSKASDEORTTitle = ortWCSKASDEORTWebContent.getTitle(languageId)!""
290 />
291 <#if ortWCSKASDEORTTitle?has_content >
292 <#assign
293 meta = meta + { "ortWCSKASDEORT": ortWCSKASDEORTTitle }
294 />
295 </#if>
296 </#if>
297 </#if>
298
299
300 <#if hasContent('veranstaltungsnummer', languageId, json)>
301 <#assign
302 verauuid = getValueForLanguage('veranstaltungsnummer', languageId, json, "first")
303 meta = meta + { "verauuid": verauuid }
304 />
305 </#if>
306
307
308 <#if (data.meta)?has_content >
309 <#assign meta = data.meta />
310 </#if>
311
312 <#if !(data.media)?has_content && hasContent('mediumDMTKASDEMEDIUM', languageId, json)>
313 <#assign
314 medium = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, json, "first")
315 mediaData = getRelatedMediaObject(medium, themeDisplay, languageId, FrontendService, "hd-resolution")
316 />
317 <#assign data = data + { "media": mediaData.url , "meta" : mediaData.meta} >
318
319
320 <#if mediaData.meta?? && mediaData.meta.quelle??>
321 <#assign meta = meta + data.meta + { "quelle": mediaData.meta.quelle } />
322 </#if>
323 </#if>
324
325
326 <#if meta?has_content>
327 <#assign data = data + {"meta": meta } >
328 </#if>
329
330 <#-- END fill meta data -->
331
332 <#if hasContentForSequence('autorenWCSKASDEPERSON', languageId, json)>
333 <#assign
334 journalArticles = getValueForLanguageAnsprechpartner('autorenWCSKASDEPERSON', languageId, json)
335 authors = []
336 />
337 <#list journalArticles as articleString>
338 <#assign article = FrontendService.json.parseAsJson(articleString) />
339 <#if article?has_content && article?is_hash && article.classPK??>
340 <#assign articleDereferenced = FrontendService.person.resolveContactInstanceToPerson(article, languageId)!"" />
341 <#if articleDereferenced?has_content >
342 <#assign
343 author = ""
344 articlePrimaryKey = articleDereferenced.classPK?number
345 articleJsonString = FrontendService.article.getWebcontent(articlePrimaryKey)
346 articleJson = FrontendService.json.parseAsJson(articleJsonString)
347 />
348 <@debugJsonString articleJsonString "ADT_KASDE_DYNAMIC_INTRO-autorenWCSKASDEPERSON" />
349 <#if hasValue('anredetitel', languageId, articleJson)>
350 <#assign author = author + getValueForLanguage('anredetitel', languageId, articleJson, " ") + " ">
351 </#if>
352 <#if hasValue('vorname', languageId, articleJson)>
353 <#assign author = author + getValueForLanguage('vorname', languageId, articleJson, " ") + " ">
354 </#if>
355 <#if hasValue('nachname', languageId, articleJson)>
356 <#assign author = author + getValueForLanguage('nachname', languageId, articleJson, " ") + " ">
357 </#if>
358
359 <#attempt>
360 <#assign href = FrontendService.article.getFriendlyUrl(articlePrimaryKey, languageId, groupId)!"#" >
361 <#recover>
362 <#assign href = "#" >
363 </#attempt>
364 <#if href?has_content && href != "#" && href != "/_404">
365 <#assign author = '<a href="' + href + '">' + author?trim + '</a>'>
366 </#if>
367
368 <#assign authors = authors + [author?trim]>
369 </#if>
370 </#if>
371 </#list>
372 <#if authors?has_content>
373 <#assign data = data + { "author": authors?join(", ") } >
374 </#if>
375 </#if>
376
377 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL") >
378 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "VERANSTALTUNGSTYP")! >
379 <#if categories?has_content && categories[0]?has_content >
380 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
381 </#if>
382
383 <#if hasContent('ausgebucht', languageId, json)>
384 <#assign data = data + { "ausgebucht" : getValueForLanguage('ausgebucht', languageId, json, "first") }>
385 </#if>
386
387 <#if hasContent('storniert', languageId, json)>
388 <#assign data = data + { "storniert" : getValueForLanguage('storniert', languageId, json, "first") }>
389 </#if>
390
391 <#elseif layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL") >
392 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "PUBLIKATIONSREIHE")! >
393 <#if categories?has_content && categories[0]?has_content >
394 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
395 </#if>
396 <#else>
397 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "THEMA")! >
398 <#if categories?has_content && categories[0]?has_content >
399 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
400 </#if>
401 </#if>
402
403
404 <#assign
405 languages = []
406 />
407
408 <#attempt>
409 <#if json["document_pdfDMTBASICDOCUMENT"]?? >
410 <#if availablelanguages?has_content>
411 <#list availablelanguages as pdf_language>
412 <#assign
413 docRefJson = getValueForLanguage('document_pdfDMTBASICDOCUMENT', pdf_language, json, "first")
414 docRef = FrontendService.json.parseAsJson(docRefJson)
415 />
416 <#if docRef?is_hash && pdf_language != languageId >
417 <#assign
418 lang = FrontendService.language.getLocaleByKey(pdf_language)!""
419 docGroupId = docRef["groupId"]?number
420 docUuid = docRef["uuid"]
421 dMTJsonObject = FrontendService.media.getDMTJsonObject( docGroupId, docUuid, locale )
422 dMTLink = FrontendService.media.getLinkToDMT( dMTJsonObject )
423 />
424 <#if lang?has_content>
425 <#assign
426 languages = languages + [
427 {
428 "key": pdf_language,
429 "value": FrontendService.language.getLocaleByKey(pdf_language).getDisplayLanguage(),
430 "url": dMTLink
431 }]
432 />
433 </#if>
434 </#if>
435 </#list>
436 </#if>
437 </#if>
438 <#recover>
439 </#attempt>
440
441 <#if (languages?size > 0)>
442 <#attempt>
443 <#assign
444 data = data + { "languageSelect": {
445 "id": "languageSelect",
446 "name": "languageselect",
447 "entries": languages,
448 "documents": "",
449 "button": "true"
450 }}
451 />
452 <#recover>
453 </#attempt>
454 </#if>
455
456 <@PMIntro "ADT_KASDE_DYNAMIC_INTRO" data AMMetadata AMDatetime "bottom" />
457 ${FrontendService.article.getEditArticleHtml(primaryKey, themeDisplay)}
458
459 <#if data.meta?has_content>
460 <#if data.meta.laufendenummer?has_content !isACColorScheme() && !isVLCColorScheme() && !isDPMColorScheme()>
461 <div>
462 <div id="publicationVerbundPagination">
463 <@AMPublicationCarousel data.meta.laufendenummer data.meta.date data.meta.coverImg />
464 </div>
465 </div>
466 </#if>
467 </#if>
468
469<#elseif (editmode?? && editmode)>
470 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_DYNAMIC_INTRO" layouttpl currentUrl />
471</#if>
Kongresswahlen
Der kolumbianische Kongress besteht aus insgesamt 295 Mandatsträgern, 108 Senatoren und 187 Abgeordnete des Repräsentantenhauses. 100 Senatoren werden in einem nationalen Stimmbezirk gewählt. Fünf Senatsmandate erhält aufgrund der Bestimmungen des Friedensvertrags die FARC-Nachfolgepartei Comunes. Zwei weitere Senatoren werden auf nationaler Ebene von den indigenen Gemeinschaften Kolumbiens gewählt. Der Kandidat mit dem zweitstärksten Ergebnis bei den Präsidentschaftswahlen erhält ebenfalls ein Senatsmandat. 161 Vertreter des Repräsentantenhauses werden in lokalen Wahlkreisen in den Departments gewählt. Wie im Senat erhält Comunes auch im Repräsentantenhaus automatisch fünf Mandate. Die im Friedensvertrag vereinbarte Zusicherung von insgesamt zehn Kongressmandaten soll die Integration der ehemaligen Guerilleros in den politischen Prozess ermöglichen und gilt letztmalig für die Wahlperiode 2022-26. Jeweils einen Repräsentanten wählen in speziellen Stimmbezirken die Vertreter der indigenen und afrokolumbianischen Gemeinschaften sowie die Kolumbianer im Ausland. Der Kandidat für die Vizepräsidentschaft mit dem zweitstärksten Ergebnis erhält ebenfalls einen Sitz im Repräsentantenhaus. 2022 werden erstmals zusätzlich 16 Mandate in speziellen Übergangswahlkreisen in besonders vom inneren Konflikt betroffenen Regionen vergeben. Diese zusätzlichen Mandate sind ebenfalls Produkt des Friedensabkommens und sollen den Opfern des Konflikts eine Stimme im Kongress geben.
Bogota D.C. (18), Antioquia (17) und Valle de Cauca (13) sind die Departments mit den meisten Vertretern im Repräsentantenhaus. 88 Prozent der registrierten Wähler leben in urbanen Gebieten und nur 12 Prozent auf dem Land.
In der aktuellen Wahlperiode stellt die Regierungspartei Centro Democrático von Präsident Ivan Duque und Ex-Präsident Alvaro Uribe mit 19 Senatoren die größte Senatsfraktion, gefolgt von Cambio Radical (16), Partido Conservador (14), Partido Liberal (14), Partido de la U (14) und Alianza Verde (9). Der Polo Democrático des 2018 unterlegenen Präsidentschaftskandidaten Gustavo Petro verfügt nur über fünf Senatssitze. Im Repräsentantenhaus stellt der Partido Liberal - zusammen mit dem Partido Conservador eine der beiden Traditionsparteien Kolumbiens - mit 35 Abgeordneten die größte Fraktion, gefolgt vom Centro Democrático (32), Cambio Radical (30), Partido de la U (25) und dem Partido Conservador (21). In beiden Kammern liegt der Frauenanteil aktuell bei lediglich rund 20 Prozent. Nach Angaben der Wahlbehörde haben sich insgesamt 2835 Kandidatinnen und Kandidaten für die Kongresswahlen eingeschrieben. Für den Senat liegt der Anteil der weiblichen Kandidaturen bei rund 40 Prozent. Nur fünf der 16 Wahllisten haben eine weibliche Spitzenkandidatin. Auch wenn die traditionellen politischen Parteien wie überall in der Region in den letzten Jahren einen massiven Vertrauensverlust erfahren haben, stellen sie den Großteil der Kandidaten. Unabhängige Kandidaturen, soziale Bewegungen oder Bürgerinitiativen spielen eine untergeordnete Rolle. Allerdings versuchen die Parteien, mit prominenten Köpfen außerhalb des traditionellen Politikbetriebs, z.B. aus den Bereichen Kultur, Medien und Wissenschaft, ihre Kandidatenlisten aufzufrischen. Die Kandidatenlisten haben – auch wenn nach wie vor großer Nachholbedarf besteht – mehr Frauen und Vertreter der jüngeren Generation integriert. Verlässliche Umfragen zu den Kongresswahlen gibt es kaum. Analysten erwarten aber, dass der neue Kongress bunter, weiblicher und jünger wird.
Ob damit auch eine deutliche Verschiebung nach links einhergeht, bleibt abzuwarten. Die Sozialproteste des vergangenen Jahres, die niedrigen Popularitätswerte der Regierung Duque, die trotz hohen Wirtschaftswachstums kaum sinkende Arbeitslosigkeit, sowie die pandemiebedingte Verschärfung der strukturellen Armut und Ungleichheit haben gerade in der jungen Generation zu einer starken Wechselstimmung geführt, die der in allen Umfragen führende linkspopulistische Präsidentschaftskandidat Gustavo Petro geschickt für seinen Wahlkampf nutzt. Er wirbt mit dem Argument für Kandidaten seiner Wahlkoalition Pacto Historico, dass ein tiefgreifender Wandel in Kolumbien nur möglich sei, wenn er sich nach einem Wahlsieg auf eine breite linke Mehrheit im Kongress stützen könne. Mit dem entgegengesetzten Argument werben seine Mitbewerber für Kandidaten rechts der politischen Mitte. Insbesondere die Anhänger von Expräsident Uribe warnen vor venezolanischen Verhältnissen und der Aushöhlung der demokratischen Institutionen, um eine linke Mehrheit im Kongress zu verhindern.
Ob es zu einem signifikanten Linksruck im Kongress kommt, hängt von verschiedenen Faktoren ab, insbesondere von der Wahlbeteiligung und der Mobilisierungskraft der politischen Lager. Die Wahlen werden zeigen, ob die wochenlangen, landesweiten Sozialproteste nur von einer lauten Minderheit getragen wurden, oder ob es diesmal tatsächlich zu einer starken Mobilisierung der unzufriedenen und regierungskritischen Jugend kommt. Die Wahlbeteiligung der letzten Kongresswahlen lag nur knapp unter 50 Prozent. Die Wahlbeteiligung bei den landesweiten Jugendräten im Dezember 2021, bei denen 12,2 Millionen Jugendliche im Alter von 14-28 wahlberechtigt waren, lag sogar unter zehn Prozent. Allerdings sind diese Gremien oft kaum bekannt und politisch wenig einflussreich, da sie nur eine Beratungsfunktion und wenige Entscheidungsbefugnisse haben. Arbeits- und Ausbildungschancen sowie Sicherheit sind wichtige Themen, über die alle Kandidaten und Parteien zu mobilisieren versuchen. Welche Rolle die hochemotionale Debatte über die aktuelle Änderung des Abtreibungsrechts – das kolumbianische Verfassungsgericht hatte Ende Februar in einem Urteil festgestellt, dass ein Schwangerschaftsabbruch bis zur 24 Woche kein Delikt ist und entsprechend nicht bestraft werden darf – für die Wahlentscheidung spielt, ist unsicher. In einer Umfrage eines seriösen Umfrageinstituts lehnen über 80 Prozent der Befragten diese Entscheidung ab.
Während Gustavo Petro offensiv für einen Linksruck im Kongress wirbt, hoffen politische Akteure im Mitte-Rechts-Lager, dass die Unzufriedenheit der Wähler sich in erster Linie auf Verluste für die Regierungspartei Centro Democrático beschränkt und man selbst davon profitieren könnte. Beobachter halten es für realistisch, dass enttäuschte Wähler der Partei von Staatspräsident Ivan Duque nicht ganz nach links abwandern, sondern bei Parteien wie dem Partido Conservador oder Cambio Radical zu Zuwächsen führen.
Vorwahlen zu den Präsidentschaftswahlen
Noch zählt die Liste der Präsidentschaftskandidaten über 20 offizielle Bewerber, darunter lediglich vier Frauen. 15 Bewerber haben sich in drei Wahlallianzen zusammengeschlossen: Der linksgerichtete Pacto Histórico, das Mitte-Links-Bündnis Centro Esperanza und das Mitte-Rechts-Bündis Equipo por Colombia. Diese Wahlallianzen führen am Tag der Kongresswahlen ihre internen Vorwahlen durch. Im Pacto Historico gilt es als sicher, dass sich der unterlegene Präsidentschaftskandidat von 2018, Gustavo Petro, ehemaliges Mitglied der Guerrilla M-19 und ehemaliger Bürgermeister von Bogotá, deutlich durchsetzt. In einer kürzlich veröffentlichten Umfrage des seriös geltenden Umfrageinstituts Invamer gaben 79 Prozent der Befragten, die an der Vorwahl dieses Wahlbündnisses teilnehmen wollen, an, für Gustavo Petro zu stimmen.[i] Francia Márquez, eine afrokolumbianische Politikerin, die durch ihr Engagement für die vernachlässigten Minderheiten, Umweltschutz und Frauenrechte populär wurde, liegt abgeschlagen bei 14 Prozent, die anderen Kandidaten noch dahinter.
In der Koalition Centro Esperanza liegt der drittplatzierte Präsidentschaftskandidat von 2018, Sergio Fajardo, Mathematikprofessor und ehemaliger Bürgermeister von Medellin, mit 38 Prozent vor dem Senator der Liberalen Partei, Juan Manuel Galan, Sohn des von Drogenkartellen ermordeten, berühmten Politikers Luis Carlos Galán (23,9 Prozent). Dem ehemaligen Gouverneur des Departments Boyacá und Politker der Alianza Verde, Carlos Amaya, (15 Prozent) und Alejandro Gaviria, ehemaliger Gesundheitsminister von Präsident Santos (13 Prozent), werden nur Außenseiterchancen zugerechnet. Die Umfrage für die Vorwahl der Mitte-Rechts-Allianz führt der ehemalige Bürgermeister von Medellin, Federico Gutiérrez, mit 29 Prozent vor Alex Char, Mitglied eines politisch einflussreichen Familienclans und ehemaliger Bürgermeister von Barranquilla (25 Prozent), an. Der ehemalige Bürgermeister von Bogota, Enrique Peñalosa, und der junge Senator Davíd Barguil vom Partido Conservador kommen lediglich auf 19 bzw. 16 Prozent. Allerdings werden Barguil von Experten Außenseiterchancen zugerechnet, da der Partido Coservador bei Parlamentswahlen stets 1,5 – 2 Millionen Wähler an die Urnen bringt. Da die Partei geschlossen hinter ihrem Kandidaten steht, wird erwartet, dass die Wähler der konservativen Partei in der Vorwahl geschlossen für Barguil stimmen. Alex Char verfügt über ein starkes politisches Netzwerk an der Atlantikküste, das ihm viele Stimmen sichert. Federico Gutiérrez gilt vielen als der heimliche Kandidat von Ex-Präsident Alvaro Uribe, obwohl das Centro Democrático mit Oscar Ivan Zuluaga offiziell einen eigenen Kandidaten ins Rennen um die Präsidentschaft schickt.
Neben dem ehemaligen Minister Zuluaga treten sechs weitere Kandidaten bei den Präsidentschaftswahlen an, die keiner der drei Wahlallianzen angehören. Die bekannteste Bewerberin darunter ist Ingrid Betancourt, die ehemalige Präsidentschaftskandidatin, die 2002 von den FARC entführt und nach sieben Jahren Geiselhaft im kolumbianischen Dschungel in einer spektakulären Geheimdienstaktion befreit wurde. Ihre Kandidatur wurde vor allem im Ausland sehr stark wahrgenommen und begrüßt. Ihr werden im ersten Wahlgang aber keine realen Chancen eingeräumt. Ursprünglich hatte sie sich der Mitte-Links-Koalition angeschlossen, diese dann aber wegen interner Konflikte wieder verlassen. Ihre Kandidatur könnte dem Gewinner dieser Vorwahl aber im ersten Wahlgang wichtige Stimmen kosten. Außenseiterchancen in einem ersten Wahlgang werden auch dem Unternehmer und ehemaligen Bürgermeister von Bucaramanga, Rodolfo Hernández, zugerechnet, der sich geschickt als ein Vertreter des Antiestablishment und scharfer Kritiker der traditionellen politischen Klasse präsentiert.
Der Invamer-Umfrage zufolge würde der Linkspopulist Gustavo Petro den ersten Wahlgang der Präsidentschaftswahlen am 29. Mai in allen denkbaren Szenarien mit über 40 Prozent deutlich gewinnen, aber eine absolute Mehrheit verfehlen. Nach der erfolgten Kandidatenkür der Wahlallianzen erwarten Beobachter neue Bündnisse und Absprachen zwischen Kandidaten und unterlegenen Bewerbern, so dass Prognosen aktuell kaum belastbar sind. Als sicher gilt vielen Beobachtern, dass Gustavo Petro in die Stichwahl am 19.6. einzieht. Ob der zweite Kandidat in der Stichwahl eher aus der Mitte-Rechts-Allianz oder dem Mitte-Links-Bündnis kommt, oder doch einer der Kandidaten außerhalb der Allianzen den Sprung in die Stichwahl schafft, bleibt abzuwarten. Da Gustavo Petro stark polarisiert und in den meisten Umfragen genauso hohe oder noch höhere Ablehnung wie Zustimmung erfährt, könnte ein Mitbewerber dieses Anti-Petro-Votum in einem zweiten Wahlgang kapitalisieren, ähnlich wie es Präsident Duque bei den Wahlen 2018 gelungen ist.
Die Beteiligung an den Vorwahlen wird zudem als wichtiger Indikator für das politische Kräfteverhältnis angesehen. In der Invamer-Umfrage geben 38 Prozent der Befragten an, sich an der Vorwahl des Pacto Historico beteiligen zu wollen. Die Vorwahl der Mitte-Rechts-Allianz käme mit 19,1 Prozent lediglich auf die Hälfte und die Mitte-Links-Allianz nur auf 14,5 Prozent. 28,4 Prozent sind noch unentschieden. Mit Blick auf die voraussichtliche Wahlbeteiligung von knapp unter 50 Prozent könnte die Koalition von Gustavo Petro mit ca. 7 Millionen Stimmen in der Vorwahl rechnen, die Mitte-Rechts-Allianz mit ca. 4 Millionen, das Centro Esperanza mit weniger. Ein solches Ergebnis würde Gustavo Petros Wahlkampf zwar Auftrieb geben, ist mit Blick auf den ersten und einen wahrscheinlichen zweiten Wahlgang - in dem es dann wieder um die Frage „Für oder gegen Petro?“ geht könnte - noch lange keine Erfolgsgarantie.
Wahlrisiken und Sicherheitslage
Die kolumbianische NGO Misión de Observación Electoral hat kürzlich eine detaillierte Analyse und eine Landkarte möglicher Wahlrisiken vorgestellt. Die Risiken werden dabei in Faktoren, die auf eine mögliche Wahlmanipulation (Klientelismus, Stimmenkauf, Korruption, illegale Wahlkampffinanzierung etc.) hindeuten, und Risikofaktoren aufgrund von Gewalt und Unsicherheit unterschieden. Die Analyse stellte in knapp einem Drittel der ca. 1100 Stadt- und Landkreise Kolumbiens ein gewisses Risiko für Wahlmanipulation fest. Für 51 Kreise wurde ein extremes Risiko, für 98 Kreise ein hohes Risiko und für 186 Kreise ein mittleres Risiko ermittelt. Bewaffnete, illegale Gruppen in verschiedenen Teilen des Landes gefährden die Sicherheit und damit die glaubwürdige Durchführung der Wahlen. So sind beispielsweise 91 Kreise durch die ELN und 124 Kreise durch die Präsenz von FARC-Dissidenten gefährdet. 57 Kreise weisen zudem ein extremes Risiko wegen massiver Vertreibung der Bevölkerung durch bewaffnete Gruppen auf. Kandidaten und politische oder soziale Akteure sind vor und während der Wahlen einem hohen Risiko ausgesetzt. Die MOE registrierte von März 2021 bis Januar 2022 307 Fälle von Bedrohung, zwei Entführungen, 56 Attentate und 81 Morde im Kontext der Wahlen. Wenige Tage vor der Wahl warnte zudem das Büro des UN-Menschenrechtskommissars in Kolumbien vor einer Zunahme der Gewalt im Kontext der Wahlen und forderte die Regierung dazu auf, Vorsichtsmaßnahmen zu treffen, um die freie Beteiligung am Wahlprozess zu garantieren. Insbesondere in den 16 Übergangswahlkreisen in besonders vom Konflikt betroffenen Regionen ist die Sicherheitslage aufgrund der peripheren Lage und der Präsenz von bewaffneten Gruppen und Drogenbanden äußerst prekär. Der Leiter der EU-Wahlbeobachtungsmission, Javi Lopez, hatte bereits Ende Februar vor der zunehmenden politischen Gewalt gewarnt.
Ausblick
Die Kongresswahlen und Vorwahlen der Wahlbündnisse für die Präsidentschaftswahlen am 13. März bilden den Auftakt eines dreimonatigen Wahlprozesses, der mit der ersten Runde der Präsidentschaftswahlen am 29. Mai fortgesetzt wird und am 19. Juni 2022 in einer wahrscheinlichen Stichwahl seinen Höhepunkt findet. Mit großem Interesse verfolgen nationale und internationale Beobachter, ob Kolumbien die Tradition konservativer Regierungen auch 2022 fortsetzt oder ob das Land dem Linksruck vieler lateinamerikanischer Nachbarländer folgt. Während Staatspräsident Duque nicht mehr antreten kann – die kolumbianische Verfassung sieht nur eine vierjährige Amtszeit ohne Wiederwahl vor – hat die Popularität des 2018 noch deutlich unterlegenen Präsidentschaftskandidat Gustavo Petro vom linken Wahlbündnis Pacto Historico zugenommen. Der Linkspopulist führt alle Umfragen mit großem Abstand an, wird die interne Vorwahl voraussichtlich deutlich gewinnen und geht als klarer Favorit in die erste Runde der Präsidentschaftswahlen. In einer möglichen Stichwahl ist ein Erfolg Gustavo Petros aufgrund der starken Polarisierung zwischen seinen Gegnern und Anhängern jedoch keinesfalls sicher.
Die Analyse der Mandatsverteilung nach den Kongresswahlen sowie der Ergebnisse der Vorwahlen der drei Wahlallianzen lassen erste Rückschlüsse zu, welchem Kandidaten es gelingt, sich als wichtigster Herausforderer von Gustavo Petro zu positionieren. Das Büro der Konrad-Adenauer-Stiftung in Bogotá wird dazu weiter berichten.
[i] Vgl. die Invamer-Umfrage vom 04/03/2022.