The following has evaluated to null or missing: ==> FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) [in template "252001#252047#252845" at line 132, 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 132, 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 hasValue(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'detailsubtitle'), languageId, json)>
111 <#assign data = data + { "detailsubtitle": getValueForLanguage(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'detailsubtitle'), languageId, json, "first") } >
112 </#if>
113
114 <#if hasContent('beschreibung', languageId, json)>
115 <#assign data = data + { "copy": getValueForLanguage('beschreibung', languageId, json, "first") } >
116 </#if>
117
118 <#-- fill meta data -->
119 <#assign meta = {} />
120
121 <#-- PUBLIKATIONEN DETAIL -->
122 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")>
123
124 <#if hasContent('coverDMTKASDEMEDIUM', languageId, json)>
125 <#assign
126 coverBildString = getValueForLanguage('coverDMTKASDEMEDIUM', languageId, json, "first")
127 />
128
129 <#if coverBildString?has_content>
130 <#assign
131 coverBild = FrontendService.json.parseAsJson(coverBildString)
132 dMTJsonObject = FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale )
133 linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',coverBild.groupId?number, coverBild.uuid )
134 data = data + { "media": linkToDMT, "meta" : dMTJsonObject }
135 />
136 <#if dMTJsonObject.altText?? >
137 <#assign data = data + {"alt" : dMTJsonObject.altText} />
138 </#if>
139 <#if dMTJsonObject.quelle??>
140 <#assign meta = meta + { "quelle": dMTJsonObject.quelle } />
141 </#if>
142 </#if>
143 <#-- uncomment to display pdf cover as Intro Image
144 <#elseif hasContent('document_pdfDMTBASICDOCUMENT', languageId, json)>
145 <#assign
146 pdfDocument = getValueForLanguage('document_pdfDMTBASICDOCUMENT', languageId, json, "first")
147 fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, groupId?number)!/>
148 <#if fileEntry?has_content>
149 <#assign
150 linkToThumbnail = FrontendService.link.getThumbnailSrc(fileEntry , themeDisplay)
151 data = data + { "media": linkToThumbnail }
152 />
153 </#if>
154 -->
155 </#if>
156
157 <#assign
158 meta = meta + { "orderInfo": "true" }
159 verbundJournalArticle = FrontendService.publication.getVerbundToPublikation( entry )!""
160 />
161
162
163
164 <#if hasContent('erscheinungsdatum', languageId, json)>
165 <#assign
166 erscheinungsdatum = getValueForLanguage('erscheinungsdatum', languageId, json, "first")
167 />
168 <#if erscheinungsdatum?has_content >
169 <#assign
170 erscheinungsdatumFormatted = FrontendService.date.getDateFormatLong( erscheinungsdatum, languageId )
171 meta = meta + { "date": erscheinungsdatumFormatted }
172 />
173 </#if>
174 </#if>
175
176 <#if verbundJournalArticle?has_content>
177 <#assign
178 verbundJsonString = FrontendService.article.getWebcontent(verbundJournalArticle.resourcePrimKey)
179 verbundJson = FrontendService.json.parseAsJson(verbundJsonString)
180 laufendenummer = getValueForLanguage('laufendenummer', languageId, verbundJson, "first")
181 coverImg = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, verbundJson, "first")
182 />
183 <@debugJsonString verbundJsonString "ADT_KASDE_DYNAMIC_INTRO-verbundJournalArticle" />
184 <#assign meta = meta + { "laufendenummer": laufendenummer } >
185
186 <#if coverImg?has_content && coverImg.url?has_content >
187 <#assign meta = meta + { "coverImg": coverImg.url } >
188 </#if>
189 </#if>
190
191
192 <#if meta?has_content>
193 <#assign data = data + {"meta": meta } >
194 </#if>
195
196 </#if>
197 <#-- PUBLIKATIONEN DETAIL END -->
198
199
200 <#-- VERANSTALTUNGEN DETAIL -->
201 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")>
202 <#assign
203 friendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, languageId, groupId)!""
204 links = []
205 />
206 <#if availablelanguages?has_content && friendlyUrl?has_content>
207 <#if (availablelanguages?size > 1) >
208 <#list availablelanguages as language>
209 <#assign
210 defaultLanguage = "de_DE"
211 defaultLocale = FrontendService.language.getLocaleByKey(defaultLanguage)
212 linkLocale = (FrontendService.language.getLocaleByKey(language))!defaultLocale
213 langFriendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, linkLocale, groupId)
214
215 link = {
216 "key": language!defaultLanguage,
217 "value": linkLocale.getDisplayLanguage(languageId),
218 "url": "/c/portal/update_language?p_l_id=" +
219 layout.plid + "&redirect=" + langFriendlyUrl +
220 "&languageId=" + language
221 }
222 />
223 <#if language == languageId>
224 <#assign link = link + { "selected": "true" } >
225 </#if>
226 <#assign links = links + [link]>
227 </#list>
228 <#assign
229 data = data + {
230 "languageSelect": {
231 "id": "languageSelectRedirect",
232 "name": "languageselectRedirect",
233 "entries": links,
234 "label": languageUtil.get(languageId, "diese.veranstaltung.ist.in.weiteren.sprachen.verfuegbar")
235 }
236 }
237 />
238 </#if>
239 </#if>
240 </#if>
241
242 <#if hasContent('erscheinungsdatum', languageId, json)>
243 <#assign
244 startdate = getValueForLanguage('erscheinungsdatum', languageId, json, "first")
245 meta = meta + { "start": startdate?date.iso, "end": "" }
246 />
247 </#if>
248
249 <#if hasContent('startdatum', languageId, json)>
250 <#assign
251 startdate = getValueForLanguage('startdatum', languageId, json, "first")
252 meta = meta + { "start": startdate?date.iso, "end": "" }
253 />
254 </#if>
255
256 <#if hasValue('einfuehrungText', locale, json)>
257 <#assign data = data + { "einfuehrungText" : getValueForLanguage('einfuehrungText', locale, json, "first") } >
258 <#elseif hasValue(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first")>
259 <#assign data = data + { "einfuehrungText" : getValueForLanguage(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first") } >
260 </#if>
261
262 <#if hasContent('endedatum', languageId, json)>
263 <#assign
264 enddate = getValueForLanguage('endedatum', languageId, json, "first")
265 meta = meta + { "end": enddate?date.iso }
266 />
267 </#if>
268
269 <#if hasContent('startzeit', languageId, json)>
270 <#assign
271 startzeit = getValueForLanguage('startzeit', languageId, json, "first")
272 />
273 <#if startzeit?has_content >
274 <#assign meta = meta + { "startzeit": startzeit } />
275 </#if>
276 </#if>
277
278 <#if hasContent('endezeit', languageId, json)>
279 <#assign
280 endezeit = getValueForLanguage('endezeit', languageId, json, "first")
281 meta = meta + { "endezeit": endezeit }
282 />
283 </#if>
284
285 <#if hasContent('ortWCSKASDEORT', languageId, json)>
286 <#assign
287 ortWCSKASDEORT = FrontendService.json.parseAsJson(getValueForLanguage('ortWCSKASDEORT', languageId, json, "first"))
288 ortWCSKASDEORTPrimaryKey = ortWCSKASDEORT.classPK?number
289 ortWCSKASDEORTWebContent = FrontendService.article.getWebcontentByPk(ortWCSKASDEORTPrimaryKey)!""
290 />
291 <#if ortWCSKASDEORTWebContent?has_content >
292 <#assign
293 ortWCSKASDEORTTitle = ortWCSKASDEORTWebContent.getTitle(languageId)!""
294 />
295 <#if ortWCSKASDEORTTitle?has_content >
296 <#assign
297 meta = meta + { "ortWCSKASDEORT": ortWCSKASDEORTTitle }
298 />
299 </#if>
300 </#if>
301 </#if>
302
303
304 <#if hasContent('veranstaltungsnummer', languageId, json)>
305 <#assign
306 verauuid = getValueForLanguage('veranstaltungsnummer', languageId, json, "first")
307 meta = meta + { "verauuid": verauuid }
308 />
309 </#if>
310
311
312 <#if (data.meta)?has_content >
313 <#assign meta = data.meta />
314 </#if>
315
316 <#if !(data.media)?has_content && hasContent('mediumDMTKASDEMEDIUM', languageId, json)>
317 <#assign
318 medium = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, json, "first")
319 mediaData = getRelatedMediaObject(medium, themeDisplay, languageId, FrontendService, "hd-resolution")
320 />
321 <#assign data = data + { "media": mediaData.url , "meta" : mediaData.meta} >
322
323
324 <#if mediaData.meta?? && mediaData.meta.quelle??>
325 <#assign meta = meta + data.meta + { "quelle": mediaData.meta.quelle } />
326 </#if>
327 </#if>
328
329
330 <#if meta?has_content>
331 <#assign data = data + {"meta": meta } >
332 </#if>
333
334 <#-- END fill meta data -->
335
336 <#if hasContentForSequence('autorenWCSKASDEPERSON', languageId, json)>
337 <#assign
338 journalArticles = getValueForLanguageAnsprechpartner('autorenWCSKASDEPERSON', languageId, json)
339 authors = []
340 />
341 <#list journalArticles as articleString>
342 <#assign article = FrontendService.json.parseAsJson(articleString) />
343 <#if article?has_content && article?is_hash && article.classPK??>
344 <#assign articleDereferenced = FrontendService.person.resolveContactInstanceToPerson(article, languageId)!"" />
345 <#if articleDereferenced?has_content >
346 <#assign
347 author = ""
348 articlePrimaryKey = articleDereferenced.classPK?number
349 articleJsonString = FrontendService.article.getWebcontent(articlePrimaryKey)
350 articleJson = FrontendService.json.parseAsJson(articleJsonString)
351 />
352 <@debugJsonString articleJsonString "ADT_KASDE_DYNAMIC_INTRO-autorenWCSKASDEPERSON" />
353 <#if hasValue('anredetitel', languageId, articleJson)>
354 <#assign author = author + getValueForLanguage('anredetitel', languageId, articleJson, " ") + " ">
355 </#if>
356 <#if hasValue('vorname', languageId, articleJson)>
357 <#assign author = author + getValueForLanguage('vorname', languageId, articleJson, " ") + " ">
358 </#if>
359 <#if hasValue('nachname', languageId, articleJson)>
360 <#assign author = author + getValueForLanguage('nachname', languageId, articleJson, " ") + " ">
361 </#if>
362
363 <#attempt>
364 <#assign href = FrontendService.article.getFriendlyUrl(articlePrimaryKey, languageId, groupId)!"#" >
365 <#recover>
366 <#assign href = "#" >
367 </#attempt>
368 <#if href?has_content && href != "#" && href != "/_404">
369 <#assign author = '<a href="' + href + '">' + author?trim + '</a>'>
370 </#if>
371
372 <#assign authors = authors + [author?trim]>
373 </#if>
374 </#if>
375 </#list>
376 <#if authors?has_content>
377 <#assign data = data + { "author": authors?join(", ") } >
378 </#if>
379 </#if>
380
381 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL") >
382 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "VERANSTALTUNGSTYP")! >
383 <#if categories?has_content && categories[0]?has_content >
384 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
385 </#if>
386
387 <#if hasContent('ausgebucht', languageId, json)>
388 <#assign data = data + { "ausgebucht" : getValueForLanguage('ausgebucht', languageId, json, "first") }>
389 </#if>
390
391 <#if hasContent('storniert', languageId, json)>
392 <#assign data = data + { "storniert" : getValueForLanguage('storniert', languageId, json, "first") }>
393 </#if>
394
395 <#elseif layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL") >
396 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "PUBLIKATIONSREIHE")! >
397 <#if categories?has_content && categories[0]?has_content >
398 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
399 </#if>
400 <#else>
401 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "THEMA")! >
402 <#if categories?has_content && categories[0]?has_content >
403 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
404 </#if>
405 </#if>
406
407
408 <#assign
409 languages = []
410 />
411
412 <#attempt>
413 <#if json["document_pdfDMTBASICDOCUMENT"]?? >
414 <#if availablelanguages?has_content>
415 <#list availablelanguages as pdf_language>
416 <#assign
417 docRefJson = getValueForLanguage('document_pdfDMTBASICDOCUMENT', pdf_language, json, "first")
418 docRef = FrontendService.json.parseAsJson(docRefJson)
419 />
420 <#if docRef?is_hash && pdf_language != languageId >
421 <#assign
422 lang = FrontendService.language.getLocaleByKey(pdf_language)!""
423 docGroupId = docRef["groupId"]?number
424 docUuid = docRef["uuid"]
425 dMTJsonObject = FrontendService.media.getDMTJsonObject( docGroupId, docUuid, locale )
426 dMTLink = FrontendService.media.getLinkToDMT( dMTJsonObject )
427 />
428 <#if lang?has_content>
429 <#assign
430 languages = languages + [
431 {
432 "key": pdf_language,
433 "value": FrontendService.language.getLocaleByKey(pdf_language).getDisplayLanguage(),
434 "url": dMTLink
435 }]
436 />
437 </#if>
438 </#if>
439 </#list>
440 </#if>
441 </#if>
442 <#recover>
443 </#attempt>
444
445 <#if (languages?size > 0)>
446 <#attempt>
447 <#assign
448 data = data + { "languageSelect": {
449 "id": "languageSelect",
450 "name": "languageselect",
451 "entries": languages,
452 "documents": "",
453 "button": "true"
454 }}
455 />
456 <#recover>
457 </#attempt>
458 </#if>
459
460 <@PMIntro "ADT_KASDE_DYNAMIC_INTRO" data AMMetadata AMDatetime "bottom" />
461 ${FrontendService.article.getEditArticleHtml(primaryKey, themeDisplay)}
462
463 <#if data.meta?has_content>
464 <#if data.meta.laufendenummer?has_content !isACColorScheme() && !isVLCColorScheme() && !isDPMColorScheme()>
465 <div>
466 <div id="publicationVerbundPagination">
467 <@AMPublicationCarousel data.meta.laufendenummer data.meta.date data.meta.coverImg />
468 </div>
469 </div>
470 </#if>
471 </#if>
472
473<#elseif (editmode?? && editmode)>
474 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_DYNAMIC_INTRO" layouttpl currentUrl />
475</#if>
Lange Unklarheit im Nachgang der Stichwahl
Die Stichwahl um das Präsidentschaftsamt in Peru am 6. Juni 2021 ist mit ca. 0,25 Prozent Unterschied der Wählerstimmen so knapp ausgefallen, dass das Nationale Wahlgericht 43 Tage brauchte, um das Ergebnis und die Rechtmäßigkeit der Wahl endgültig zu bestätigen.
Nachdem die konservative Kandidatin Keiko Fujimori in der Wahlnacht zunächst vorne lag, holte ihr sozialistischer Konkurrent Pedro Castillo nach Auszählung der Stimmen auf dem Land auf. Zwar erklärte sich Castillo schon in der Woche nach der Wahl zum Präsidenten und erhielt Glückwünsche von seinen sozialistischen Mitstreitern aus weiten Teilen Lateinamerikas. Doch Fujimori zweifelte die Rechtmäßigkeit der Auszählung unter dem Vorwurf systematischer Manipulation an und stellte damit über 200.000 Stimmen in Frage.
Grundlage waren Unregelmäßigkeiten wie gefälschte Unterschriften von Wahlhelfern sowie statistisch fragwürdig hohe Stimmabgaben für Castillo in bestimmen Distrikten. Der Überprüfungsprozess wurde schließlich durch die Partei Fujimoris selbst verzögert, die die zu überprüfenden Akten der Wahlergebnisse nicht fristgerecht beim Wahlgericht eingereicht hatte. Zudem gab es Anschuldigungen, dass das Wahlgericht selbst parteiisch auf der Seite des Sozialisten agiere, in Folge dessen ein konservativer Richter aus Frust seinen Rücktritt erklärte und nachbesetzt werden musste. In weiten Teilen der Bevölkerung haben die Wahlbehörden durch die lange Verzögerung der Bekanntgabe des neuen Präsidenten an Vertrauen verloren. Auf den Straßen der Innenstadt Limas kam es zu Protestmärschen von Anhängern beider Lager.
Nach dem sechswöchigen institutionellen Chaos hat das Wahlgericht alle Beschwerden geprüft und entschieden: die Wahl war rechtmäßig und Pedro Castillo wird das Präsidentenamt übernehmen. Zwar erkennt Fujimori die Entscheidung der Wahlbehörde an, jedoch sprechen sie und ihre Anhänger weiterhin von Wahlbetrug.
Der Überraschungssieger und seine radikale Agenda
Der Sieg des Dorflehrers Pedro Castillo kam trotz des guten Abschneidens in der ersten Runde der Präsidentschaftswahlen überraschend, denn in Peru wird traditionell konservativ gewählt. Der Erfolg des Sozialisten kann auf drei wesentliche Gründe zurückgeführt werden. Erstens, die Frustration der Wählerschaft gegenüber Vertretern des Establishments, die in den Augen vieler Peruaner eher ihre Eigeninteressen als die ihres Volkes vertreten. Die Enttäuschung verstärkte sich durch die politische Krise der letzten Jahre sowie das bislang desaströse Management der Corona-Krise. Zweitens kann das Wahlergebnis als Wunsch weiter Teile der Bevölkerung nach grundlegenden Reformen des Wirtschaftssystems interpretiert werden. Auch hier hatten die schweren Auswirkungen der Pandemie einen entscheidenden Einfluss: neben dem Einbruch der Wirtschaft um elf Prozent im Jahr 2020, stiegen die Preise für Miete, Wasser, Strom, Öl und Gas um durchschnittlich sieben Prozent in den letzten zwölf Monaten. Damit wurde insbesondere die arme Bevölkerung des Landes belastet. Drittens haben sich trotz Zweifel an Castillo viele Wähler nicht dafür mobilisieren lassen, für die umstrittene Kandidatin Fujimori zu stimmen. Gründe hierfür sind hauptsächlich ihre autoritäre Familiengeschichte und ihre Verwicklung in Korruptionsskandale.
Castillo hat im Wahlkampf mit einer radikalen Veränderung des Wirtschaftssystems geworben. Er kündigt an, die Verfassung zu ersetzen, um Bodenschätze und Privateigentum zu verstaatlichen sowie internationale Handelsabkommen außer Kraft zu setzen. Das Verfassungsgericht solle abgeschafft und die Pressfreiheit eingeschränkt werden.[1]
Diese Politikvorhaben sind maßgeblich durch seinen Parteichef Vladimir Cerrón geprägt. Der in Kuba ausgebildete Mediziner orientiert sich am Vorbild Venezuelas und hat seine sozialistischen Bestrebungen schon während des linksgerichteten internationalen Parteientreffens „São Paulo Forum“ in Havana im Jahr 2018 angekündigt: „Fidel [Castro] hat uns gelehrt, dass für eine Utopie zu kämpfen auch bedeutet, sie zu errichten“.[2] 2019 wurde der ehemalige Gouverneur der Region Junín wegen Korruption zu vier Jahren und acht Monaten Freiheitsstrafe auf Bewährung verurteilt, wurde aber frühzeitig entlassen.[3] Auch die aktuelle Kampagne seiner Partei soll durch kriminelle Gruppen finanziert worden sein, z.B. durch ein Netzwerk von staatlichen Mitarbeitern regionaler Behörden, das Verwaltungsposten sowie offizielle Dokumente (z.B. Führerscheine) verkauft haben soll.[4] Diese Vorwürfe, die gerade von der Staatsanwaltschaft untersucht werden, werden auch den neuen Präsidenten begleiten.
Drei Szenarien für die neue Regierung unter Castillo
Damit Castillo seine angekündigten Reformen tatsächlich umsetzen kann, bedarf es einer Verfassungsänderung. Dafür ist laut Artikel 206 der peruanischen Verfassung aber die Zustimmung des Kongresses notwendig.[5] Im konservativ dominierten Kongress ist seine marxistisch-leninistisch orientierte Partei „Perú Libre“ mit 37 der 130 Sitze jedoch weit von einer Mehrheit entfernt, auch wenn eine Koalition mit der Partei „Juntos por el Perú“ mit weiteren fünf Sitzen möglich erscheint.
Auf dieser Basis ergeben sich drei mögliche Szenarien:
- Castillo umgeht den Kongress und initiiert eigenmächtig entgegen der Verfassung eine Volksabstimmung.
- Castillo versucht im Rahmen der rechtlichen Bestimmungen die Verfassung zu ändern. Da er aber nicht über die notwendigen Stimmen im Kongress verfügt, wäre eine Konfrontation mit der Legislative vorprogrammiert.
- Castillo gibt seine radikale Agenda auf und arrangiert sich mit dem Kongress, um gemäßigtere Reformen durchzusetzen.
Szenario 1 („das Extrem“): Aushebelung der demokratischen Institutionen
Castillos Parteichef Cerrón hat schon vor der Wahl klargestellt, dass die Regierung keine Zustimmung vom Kongress benötigen würde, um eine Volksabstimmung für eine neue Verfassung einzuberufen.[6] Statt durch die Zustimmung des Kongresses, soll die Legitimität einer neuen verfassungsgebenden Versammlung direkt durch einen Volksentscheid hergestellt werden. Um diesen einzuberufen, hat die Partei des neuen Präsidenten bereits angekündigt, im großen Maße Unterschriften zu sammeln. Dieser Prozess widerspricht dem Wortlaut des Artikels 206, der die Voraussetzungen für die Einberufung einer neuen verfassungsgebenden Versammlung eindeutig an die Zustimmung des Kongresses knüpft, anstatt an einen Volksentscheid oder eine Volksinitiative.[7]
Aber selbst wenn der Kongress umgangen werden würde, gäbe es weitere „Checks and Balances“: Volksentscheide werden von den Wahlbehörden organisiert, deren Leitungen von der Judikative bestimmt wird und die sich Castillos Vorhaben entgegenstellen könnten; das sich bisher zurückhaltende Militär könnte eingreifen; das Volk könnte sich zu Protesten gegen die Vorhaben des Präsidenten formieren und schlussendlich müsste das Volk einem möglichen Volksentscheid natürlich auch zustimmen.
Wenn es Castillo gegen allen Zweifel gelingen sollte, eine neue verfassungsgebende Versammlung einzuberufen, dann hätte dies schwere Folgen für internationale Investoren, insbesondere im Bergbausektor: bestehende Verträge könnten aufgelöst und Eigentum enteignet werden; erhöhte Abgaben, Lohnkosten und Anschaffungskosten für Technologien könnten die Wirtschaftlichkeit des für Peru wichtigen Wirtschaftssektors in Frage stellen. Mittelfristig würde das Land dann an strategischem Wert für westliche Investoren verlieren. Hier liegt auch ein Einfallstor für eine verstärkte strategische Partnerschaft Perus mit China.
Szenario 2 („business as usual“): Konfrontation zwischen Exekutive und Legislative
In diesem Szenario würde Castillo die Verfassungsordnung zwar einhalten, dem Kongress bezüglich der verweigerten Zustimmung zur Verfassungsänderung aber die Vertrauensfrage stellen und so Neuwahlen provozieren. Laut Artikel 134 der Verfassung darf der Präsident den Kongress auflösen, wenn dieser sich zweimal weigert, dem Kabinett das Vertrauen auszusprechen. Verfassungsrechtlich kann Castillo die notwendige Zustimmung des Kongresses für eine mögliche Verfassungsänderung zwar nicht umgehen. Jedoch könnte er das Zeitfenster bis zur Neuwahl nutzen, um wie im ersten Szenario beschrieben, einen Volksentscheid durchzuführen oder direkt eine verfassungsgebende Versammlung einzuberufen.
Diesem Schritt könnte der Kongress zuvorkommen, indem er mit einer Zwei-Drittel-Mehrheit ein Amtsenthebungsverfahren gegen den Präsidenten einleitet, um die wohl gemäßigtere Vizepräsidentin Dina Boluarte als Staatsoberhaupt einzusetzen (obwohl diese sich auch für eine neue Verfassung ausgesprochen hat).
Dies würde für das Land eine weitere Phase der Konfrontation zwischen Exekutive und Legislative bedeuten, allerdings im Rahmen der gültigen (gleichwohl in dieser Hinsicht mehrmals als dysfunktional angeprangerten) Verfassungsordnung. Somit würde die Instabilität der politischen Institutionen, die das Land seit 2016 prägt, fortgeführt werden. Der Bergbau- und Geschäftssektor würden auf Autopilot weiterlaufen; Investoren wären jedoch weiterhin zurückhaltend.
Szenario 3 („die realpolitische Lösung“): Mäßigung des neuen Präsidenten
Es bestünde auch die Möglichkeit, dass sich Castillo von Vladimir Cerrón und seiner Partei distanziert und sich stattdessen der gemäßigteren Linkspartei „Juntos por el Perú“ und dem linken Flügel anderer Parteien im Kongress (wie „Accion Popular“, „Podemos Perú“ und „Somos Perú“) annähert. Auf diese Art könnten auf demokratischen Wegen und im Rahmen der aktuellen Verfassung Reformen im Bereich Gesundheit und Bildung, die sogar gemäßigte politische Akteure als unerlässlich erachten, durchgeführt werden. Castillo würde allerdings weiterhin auf erhöhte Steuersätze für die Ober- und Mittelschicht, sowie auf einer Überregulierung der Märkte und internationalen Investitionen beharren.
Dieses Szenario wäre mit der Regierung von Ex-Präsident Ollanta Humala (2011-2016) zu vergleichen, der in der vorletzten Präsidentenwahl den Sieg erreichte, indem er von seinem radikalen Diskurs abwich und sich zu einem demokratischen Kompromiss verpflichtete. Unter Humala wurde der staatliche Apparat und die damit verbundene Bürokratie aufgebläht; dennoch wuchs die peruanische Wirtschaft durchschnittlich um fünf Prozent jährlich.
Einschätzung
Castillo eilt sein radikaler Ruf voraus, jedoch ist er politisch ein relativ unbeschriebenes Blatt. Es ist daher nicht abzusehen, ob und wie er seine radikalen Reformvorhaben tatsächlich in die Tat umsetzen wird. Von den drei geschilderten Szenarien ist das zweite („Konfrontation zwischen Exekutive und Legislative“) am wahrscheinlichsten, weil das Volk eine wie im ersten Szenario beschriebene Aushebelung der demokratischen Ordnung kaum zulassen würde, Castillo aber auch kaum Indizien für eine wie im dritten Szenario beschriebene Mäßigung gezeigt hat.
Ein wesentlicher Faktor der Ausrichtung Castillos ist seine Beziehung zu Vladimir Cerrón. Zwar ist Cerróns Rolle in der neuen Regierung weiterhin unklar, er wird aber als enger Berater Castillos starken Einfluss auf den designierten Präsidenten haben. Außerdem ist Castillo auf die Stimmen der Kongressabgeordneten von „Perú Libre“ angewiesen, deren Loyalität sich Cerrón zum großen Teil sicher sein kann. Andererseits hat Castillo auch gemäßigtere Kräfte in seinen Beraterkreis aufgenommen. So hat sich sein wirtschaftspolitischer Chefberater, Pedro Francke, mehrmals für den Erhalt des Wirtschaftssystems Perus ausgesprochen. Es bleibt abzuwarten, ob sich Castillo dieser Forderung anschließt.
Selbst wenn Castillo demokratische Institutionen wie Wahlbehörden, Gerichte und den Presserat unterwandern würde, um den Einfluss der linken Kräfte dauerhaft im Staatssystem zu zementieren, ist es unwahrscheinlich, dass Peru das gleiche Schicksal wie Venezuela oder Kuba widerfährt. So kann Castillo durch die Verstaatlichung des Bergbausektors mittelfristig wesentlich weniger Macht an sich binden, als dies etwa mit der Verstaatlichung des ungleich größeren Ölsektors in Venezuela und des Zuckerrohrsektors in Kuba möglich war.[8] Denn für einen radikalen und dauerhaften Wandel des bestehenden Wirtschaftssystems bedarf es neben ideologischen Anhängern und politischem Kalkül auch langanhaltend hohen Geldflüssen, um wichtige Akteure wie die Sicherheitsbehörden durch Anreize – etwa lukrative Posten und finanzielle Vorteile – an sich zu binden.
Zudem ist nicht klar, wie die Sicherheitsbehörden auf eine mögliche Aushebelung der demokratischen Institutionen reagieren würden. Das Militär hält traditionell Abstand zu politischen Belangen. Nach Experteneinschätzungen positionieren sich die Polizei und der Geheimdienst intern jedoch dezidiert gegen die radikalen Vorhaben Castillos. Sie seien unter Umständen bereit, gegen Verfassungsverletzungen zu intervenieren. In diesem Szenario könnte ein Polizeistreik zu Chaos auf den Straßen der Städte führen, der das Militär nötigt, einzugreifen und den Präsidenten zwingt, die Verantwortung zu übernehmen und schließlich zurückzutreten. Ähnliche Ereignisse konnten in den Nachbarstaaten Ecuador im Jahr 2010 und Bolivien im Jahr 2019, als Reaktion gegen Rafael Correa und Evo Morales, beobachtet werden.
Auch wenn Peru wahrscheinlich nicht vor einem radikalen Umbruch des gesamten politischen und ökonomischen Systems steht, ist zu erwarten, dass die peruanische Wirtschaftsleistung, die Landeswährung sowie Unternehmenswerte weiter an Wert verlieren werden. Wie hoch der Verlust ausfällt wird je nach Szenario unterschiedlich sein. Nach Experteneinschätzungen wäre die Einberufung einer neuen verfassungsgebenden Versammlung, wie sie im ersten Szenario beschrieben wird, besonders schmerzhaft, da die Wirtschaft aufgrund der Unsicherheit im Vergleich zu den anderen Szenarien bis 2026 jährlich bis zu zehn Prozent des Bruttoinlandsproduktes einbüßen würde. Folglich würden auch mehr Peruaner unter die Armutsgrenze fallen.[9]
Fazit
Die Wahl Castillos war ein Ausdruck des Frusts großer Teile der Bevölkerung gegenüber der politischen Klasse und des wirtschaftlichen Systems. Ob die Wahl des Sozialisten zu einer Verbesserung des politischen Systems sowie der Lebensverhältnisse der Peruaner führen wird, ist fraglich. Wie der neue Präsident seine radikalen Reformen umzusetzen vermag, bleibt auch unklar. Je nach Szenario werden die Demokratie und Wirtschaft mehr oder weniger darunter leiden. Eine aufgeheizte politische Stimmung im Kongress und auf den Straßen ist zumindest vorprogrammiert.
--------------------------------------------------------------
[1] Eine genauere Beschreibung der Reformagenda findet sich im Länderbericht vom 7. Juni 2021, https://www.kas.de/de/laenderberichte/detail/-/content/spannendes-kopf-an-kopf-rennen-bei-den-stichwahlen-um-die-praesidentschaft-in-peru (abgerufen am 19. Juli 2021).
[2] https://diariocorreo.pe/politica/vladimir-cerron-foro-de-sao-paulo-fidel-castro-es-un-ejemplo-vivo-en-nuestra-sociedad-peru-libre-pedro-castillo-video-noticia/ (abgerufen am19. Juli 2021).
[3] Das Urteil gegen Cerrón wurde jedoch am 9. Juni aufgehoben. Gegen diese Entscheidung soll Berufung eingelegt werden. https://andina.pe/agencia/noticia-poder-judicial-presentara-recurso-apelacion-caso-cerron-848703.aspx (abgerufen am 19. Juli 2021).
[4] https://gestion.pe/peru/fiscalia-de-junin-revela-que-los-dinamicos-del-centro-habrian-financiado-campana-de-peru-libre-nndc-noticia/ (abgerufen am 19. Juli 2021).
[5] Jede Verfassungsreform muss vom Kongress mit der absoluten Mehrheit der gesetzlichen Anzahl seiner Mitglieder gebilligt und per Referendum ratifiziert werden. Das Referendum kann entfallen, wenn die Zustimmung des Kongresses in zwei aufeinanderfolgenden Jahren mit jeweils mehr als zwei Dritteln der Abgeordneten erreicht wird.
[6] https://twitter.com/VLADIMIR_CERRON/status/1389728839035654144 (abgerufen am 19. Juli 2021).
[7] Cerrón und Castillo stützen sich auf die Artikel 31 und 32 der peruanischen Verfassung. Artikel 31 garantiert das allgemeine Teilnahmerecht der Bürger an politischen und öffentlichen Prozessen durch das Stimmrecht und das Recht, Amtsenthebungsverfahren gegen Funktionäre einzuleiten (usw.). Artikel 32 enthält die besonderen Voraussetzungen und legitimen Gründe für eine Volksabstimmung. Danach dürfen zwar Gesetze durch Volksabstimmungen geändert werden, aber nicht internationale Verträge, die durch die Verfassung garantierten Grundrechte und die Verfassung selbst, es sei denn die Voraussetzungen von Artikel 206 sind erfüllt.
[8] Ein Vergleich zeigt, dass der Anteil des venezolanischen Erdölsektors zur Zeit der Amtsübernehme von Hugo Chavez im Jahr 1999 etwa ein Drittel des venezolanischen BIPs betrug (https://heinonline.org/HOL/LandingPage?handle=hein.journals/energy20&div=25&id=&page, abgerufen am 19. Juli 2021). Im Falle von Kuba betrug der Anteil des Zuckerrohrsektors zur Zeit der Amtsübernahme von Fidel Castro im Jahr 1958 auch etwa 30 Prozent der kubanischen Wirtschaft (https://foresightcuba.com/la-industria-azucarera-cubana/, abgerufen am 19. Juli 2021). In Peru hingegen erbringt der Bergbausektor weniger als zehn Prozent der Wirtschaftsleistung, wenn auch der prozentuale Anteil der Exporte wesentlich höher ist (https://www.bcrp.gob.pe/docs/Publicaciones/Notas-Estudios/2021/nota-de-estudios-21-2021.pdf, abgerufen am 19. Juli 2021).
[9] Martín Tanaka und José Carlos Saavedra, SAE Report. "Procesos políticos en América Latina y lecciones para el Perú", SAE Especial Briefing 27. Mai 2021.
Argomenti
Fornito da
Auslandsbüro Peru
Informazioni su questa serie
La Fondazione Konrad Adenauer è presente con uffici propri in circa 70 Paesi dei cinque Continenti. I collaboratori presenti sul posto possono riferire direttamente su avvenimenti attuali e sviluppi nel lungo periodo nei Paesi in cui sono impegnati. Sotto "Notizie dai Paesi" mettono a disposizione degli utenti del sito web della Fondazione Konrad Adenauer analisi, informazioni di background e valutazioni esclusive.