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>
Ausgangslage und Wahlkampf
Seit Jahren befindet sich Peru in einer politischen Dauerkrise. Zudem wurde das Land hart von der COVID-19 Pandemie getroffen. Mit über 180.000 Toten verzeichnet es gemessen an der Bevölkerungsgröße weltweit die meisten Toten. Gleichzeitig ist die Wirtschaft 2020 um über elf Prozent eingebrochen, was auch die sozialen Unterschiede weiter verstärkte. Der Interimsregierung des scheidenden Präsidenten Francisco Sagasti gelang es nicht, wirkungsvolle Maßnahmen zur Bekämpfung der Pandemie und Wiederbelebung der Wirtschaft zu ergreifen.
Folglich haben die Politik und das „Establishment“ das Vertrauen in der Bevölkerung weiter verloren und die Wähler orientierten sich an den Rändern des politischen Spektrums. Der Ausgang der ersten Runde der Präsidentschaftswahlen im April war Ausdruck dafür: von den achtzehn Präsidentschaftskandidaten konnten sich zwei Kandidaten für die Stichwahl qualifizieren, die zusammen weniger als zwanzig Prozent der Wählerstimmen auf sich vereinen, der sozialistische Pedro Castillo und die konservative Keiko Fujimori, Tochter des ehemaligen Präsidenten Alberto Fujimori (1990-2000).
Nach dieser ersten Wahlrunde herrschte in Peru ein erbitterter Wahlkampf. Wahlplakate im ganzen Land warnten vor den Folgen des Kommunismus wie Armut, Arbeitslosigkeit und Hunger. Viele Analysten verglichen den möglichen Sieg von Pedro Castillo mit einem Szenario wie in Venezuela nach Amtsübernahme von Hugo Chavez. Wichtige Vertreter des gesellschaftlichen Spektrums – inklusive des Literatur-Nobelpreisträgers Mario Vargas Llosa – riefen zur Wahl von Fujimori auf.
Auf die Möglichkeit, dass ein Sozialist neuer Staatspräsident werden könnte, reagierten im Vorfeld der Wahlen auch die Märkte: der Dollar stieg gegenüber dem peruanischen Sol auf ein Allzeithoch; Investitionsvorhaben wurden verschoben; viele Peruaner transferierten aus Angst vor Enteignung ihr Geld ins Ausland, nicht zuletzt, weil die ältere Generation eine Enteignung durch den Staat bereits unter dem damaligen Präsidenten Juan Velasco Alvarado (1968-1975) miterlebt hatte.
Auf der anderen Seite ließen die Anhänger von Castillo nicht von populistischen Forderungen, wie Enteignung und Verstaatlichung, bis hin zur Einschränkung der „neoliberalen“ Presse, ab. Die kontroverse Vergangenheit und Familiengeschichte der Fujimoris wurde in den Vordergrund gerückt. Zwei Wochen vor der Wahl überschattete ein Terroranschlag den Wahlkampf. Eine Gruppierung, die laut Sicherheitsbehörden der Terrororganisation „Sendero Luminoso“ („Leuchtender Pfad“) zugeordnet wird, massakrierte sechzehn Zivilisten, darunter auch Kinder, um vor einer Wahl von Fujimori abzuschrecken.
In den Debatten konnte Fujimori durch technische und politische Expertise Punkten. Hingegen brachte Castillo sein volksnahes Auftreten Sympathie ein. Bis kurz vor der Wahl lagen die Kandidaten gleichauf. Die ersten Hochrechnungen sehen Fujimori nun mit 51,014 Prozent der Wählerstimmen vorne. Wer das Rennen um die Präsidentschaftswahl tatsächlich macht, wird sich offiziell nach Angaben der obersten Wahlbehörde in den kommenden Tagen, aber bis spätestens bis Samstag, den 12. Juni, entscheiden.
Szenario 1: Staatspräsident Pedro Castillo – Radikale Reformen und Aushebelung der Demokratie?
Der 51-jährige Castillo stammt aus der armen Bergbauregion Cajamarca im Norden des Landes und war bisher hauptsächlich als Dorfschullehrer tätig. Er gilt als volksnah, zeigt sich stets mit Cowboy-Hut und propagiert Gerechtigkeit gegenüber den Reichen, die das Land ausbeuten würden. Er gehört einer evangelikalen Freikirche an und vertritt höchst konservative gesellschaftliche Ansichten, weshalb er sich gegen die Anerkennung gleichgeschlechtlicher Partnerschaften und die Legalisierung von Abtreibung ausspricht.
In der Politik ist Castillo als Anführer eines Lehrerstreiks im Jahr 2017 bekannt geworden. In diesem Zusammenhang werden ihm auch Verbindungen zu einer Unterorganisation der maoistischen Terrororganisation „Leuchtender Pfad“ vorgeworfen. Aufgrund seiner radikalen linksgerichteten Forderungen wird er von Analysten oft mit Evo Morales aus Bolivien verglichen.
Castillos Reformagenda ist in der Tat radikal: Verstaatlichung von Bodenschätzen; Neuaushandlung oder Außerkraftsetzung bestehender Verträge mit ausländischen Unternehmen sowie bestehender Freihandelsabkommen (inkl. Pazifikallianz, Freihandelsabkommen mit der EU und den USA); Abschaffung privater Rentenfonds; Importverbot für Güter, die auch in Peru produziert werden; wirtschaftliche Dezentralisierung mit neuen Rechten für Regionalregierungen zur Steuererhebung; Regulierung der Presse durch Inhaltsprüfung durch staatliche Apparate mit dem Ziel der Erziehung des Volkes; Schaffung von paramilitärischen Gruppen und die Militarisierung der peruanischen Jugend, um eine revolutionäre Erfahrung zu fördern; Einführung der Todesstrafe und Austritt Perus aus der Amerikanischen Menschenrechtskonvention.
Die meisten dieser Reformen bedürften der Änderung der Verfassung von 1993. Dafür ist jedoch laut Artikel 206 zunächst die Zustimmung des Kongresses und danach ein Referendum notwendig. Beruhend auf einer willkürlichen Interpretation der Verfassung kündigte der Gründer von „Perú Libre“, Vladimir Cerrón, aber bereits an, dass die Regierung keine Zustimmung vom Kongress benötigen würde, um eine Volksabstimmung für eine neue Verfassung einzuberufen. Castillo und sein Team planen daher, ohne Beteiligung der Legislative eine Volksabstimmung zu organisieren, um eine verfassungsgebende Versammlung aus Vertretern von Gewerkschaften, Indigenen-Gruppen und Frauenbewegungen zu legitimieren. Hiermit bahnt sich eine offene Konfrontation zwischen Präsident und Kongress an, die das Land auf lange Jahre politisch destabilisieren könnte.
Szenario 2: Staatspräsidentin Keiko Fujimori – Wirtschaftliche Prosperität und gesellschaftliche Konfrontation?
Die 46-Jährige Fujimori weist neben ihrer internationalen Ausbildung eine große Erfahrung in der peruanischen Politik vor. Die ehemalige Kongressabgeordnete ist seit 2010 Vorsitzende der Partei „Fuerza Popular“ und stand dieses Jahr zum dritten Mal in Folge in der Stichwahl für das Präsidentschaftsamt. 2011 verlor sie mit 48,55 Prozent der Stimmen gegen Ollanta Humala und 2016 erneut sehr knapp mit 49,88 Prozent gegen Pedro Pablo Kuczynski.
Fujimori steht für einen starken Staat und marktwirtschaftliche Politik. Ihre Partei und ihr Team gelten als sehr gut ausgebildet und erfahren. Die designierte Präsidentin ist jedoch eine sehr umstrittene Persönlichkeit: aufgrund ihrer Verstrickungen in Korruption, ihrer Familiengeschichte und ihres autoritären Führungsstils erfuhr sie für viele Jahre die höchste Ablehnung – die sogenannten „anti votos“ – in der Bevölkerung.
Im Zusammenhang mit dem monumentalen Odebrecht-Korruptionsskandal laufen gegen sie strafrechtliche Ermittlungen wegen Bestechlichkeit. Im Oktober 2018 wurde sie deswegen in Untersuchungshaft genommen und später auf Kaution freigelassen. Zwar ist Korruption bereits seit Langem in den Institutionen des Landes präsent, jedoch hatte Keiko Fujimori in den Augen vieler Bürger erst durch die massive Verwicklung ihrer Partei in den wohl größten Korruptionsskandal des Landes ihre Legitimität als Politikerin eingebüßt.
Andere kritisieren Fujimori aufgrund ihrer Haltung gegenüber der weithin umstrittenen Politik ihres Vaters. Unter der Präsidentschaft von Alberto Fujimori wurden zwar die peruanische Wirtschaft nachhaltig gestärkt und der bewaffnete Konflikt gegen den „Leuchtenden Pfad“ gewonnen, aber auch demokratische Institutionen ausgehebelt und Menschenrechtsverbrechen begangen. Keiko Fujimori nahm damals die Rolle der „ersten Dame“ des Staates ein. Weite Teile des Volkes waren indirekt von den Repressionen des Staates betroffen.
Damit einher geht die Ablehnung weiter Teile der Bevölkerung gegenüber dem autoritäreren Führungsstil Keiko Fujimoris. Innerhalb ihrer Partei setzt sie explizit auf Einigkeit, Disziplin und Loyalität. Nach außen gibt sie sich stets konfrontativ. Als ihre Partei die Mehrheit im Kongress während der vergangenen Legislaturperiode stellte, war ihr Konfrontationskurs in der Opposition ein ausschlaggebender Grund für die Instabilität der politischen Institutionen. Daher fürchten viele Bürger, dass die potenzielle neue Staatspräsidentin ihre autoritären Neigungen ausspielen und ihre Macht in der Exekutive ausbauen könnte.
Im Gegensatz zu Castillo sieht Fujimoris Parteiprogramm keine grundlegende Veränderung des politischen und wirtschaftlichen Systems vor. Die Politikerin strebt eine Reihe sinnvoller Gesetzesvorhaben an, um die Wirtschaft zu beleben, sowie den Sozialstaat und den Sicherheitsapparat des Landes zu stärken: öffentlich-private Investitionsprojekte; Vereinfachung des Steuersystems; finanzielle Zuschüsse an Familien, die ein Mitglied durch die COVID-19 Pandemie verloren haben; Direktzahlung der Abgaben von Bergbauunternehmen an die Bürger; Ausbau der Sicherheitskräfte durch bessere Ausbildung und Ausrüstung. Fujimori hat sich gegen weitere Einschränkungen der Wirtschaft zur Eindämmung der Pandemie ausgesprochen und setzt auf eine Impfinitiative mit Unterstützung der Streitkräfte, regionaler Regierungen, privater Unternehmen, zivilgesellschaftlicher Organisationen und der Kirchen. Auch die lang erwarteten Schulöffnungen sind im Gespräch.
Um ihre Vorhaben umzusetzen, braucht Fujimori die Unterstützung weiterer Kräfte des politischen Mitte-Rechts-Spektrums, denn Fujimoris Partei selbst stellt im neuen Kongress nur 24 der 130 Abgeordneten. Hierbei könnte die Einbeziehung moderater Kräfte wie ein internes System von „Checks and Balances“ wirken, so dass sie von ihrem Konfrontationskurs abkommen und auf einen Konsens mit anderen politischen Akteuren setzen müsste.
Dies wäre besonders wichtig, um einen Aufruhr in der Bevölkerung zu verhindern. Bereits im Wahlkampf riefen linke Parteien zu Demonstrationen gegen Fujimori auf. Wenn es zu massiven Unruhen und Krawallen auf den Straßen der peruanischen Großstädte käme, bestünde die Möglichkeit, dass Fujimori mit der Staatsgewalt durchgreift. Dadurch könnte sie, ähnlich wie der kurzfristige Interimspräsident Manuel Merino im November 2020, ein Amtsenthebungsverfahren im Kongress provozieren.
Fazit
Das knappe Kopf-an-Kopf-Rennen der beiden Kandidaten zeigt, wie gespalten Perus Wählerschaft ist. Die überraschend große Zustimmung für den bislang weitgehend unbekannten Außenseiter Castillo kann auf die Frustration gegenüber dem „Establishment“, die prekäre wirtschaftliche Situation großer Teile des Landes und den Wunsch nach grundlegenden Reformen des Wirtschaftssystems, insbesondere innerhalb der ländlichen Bevölkerung, zurückgeführt werden. Auf der anderen Seite konnte es Fujimori schaffen, die konservativen Kräfte gegenüber einem möglichen radikalen linksgerichteten Systemwechsel zu solidarisieren. So sprachen sich viele ehemalige Konkurrenten klar für Fujimori aus und traten ihrem Wahlkampfteam bei.
Im Falle eines Sieges Castillos bleibt unklar, wie dieser sich positionieren wird, um seine radikale Reformagenda gegen den konservativ dominierten Kongress durchzusetzen. Wenn Fujimori die Wahl für sich entscheiden sollte, dann wird sie Protestbewegungen auf den Straßen gegenüberstehen. Es ist anzunehmen, dass sie dann versuchen wird, ihre politische Macht durch „Dealmaking“ im Kongress zu sichern. Sie sollte aber auch die Forderungen nach Chancengleichheit, Interessenausgleich und Transparenz ernst nehmen, um einen politischen Konsens in der Bevölkerung zu finden und damit der Polarisierung entgegenzutreten.