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>
Ein schweigender Präsident ohne politische Strategie
Zum zweihundertjährigen Jubiläum der Unabhängigkeit der Republik Peru, dem 28. Juli 2021, ist Castillo in sein neues Amt eingeschworen worden. In seiner Vereidigungsrede sprach er von der Etablierung einer Verfassunggebenden Versammlung, seinem Auszug aus dem Regierungspalast aufgrund der kolonialen Geschichte des Ortes sowie von der Neuausrichtung der Wirtschaft. Keines dieser Versprechen hat er bisher erfüllen können. Erklären konnte er seine politische Strategie auch nicht, denn seit seiner Amtsübernahme hat Castillo neben drei kontroversen Ansprachen kein einziges Interview gegeben.
Neben mangelhaften Kommunikationsfähigkeiten leidet Pedro Castillo an einem fehlenden Netzwerk erfahrener und fähiger Politiker. Besonders deutlich wurde dies, als sich die Vereidigungszeremonie seines ersten Kabinetts um Stunden verspätete, weil er einen Teil der ausgewählten Minister erst noch überreden musste, ihre Posten tatsächlich anzunehmen. Die Umstände haben zu einem Machtvakuum geführt, welches das Ansehen des Präsidenten beschädigt und das Vertrauen in die Regierungsführung gemindert hat.
Die Auswahl seines ersten Kabinetts empfanden viele als Affront, denn unter den neuen Ministern befanden sich politische Extremisten mit wenig oder keiner Führungserfahrung in politischen Ämtern. Bei der Wahl der Regierungsmannschaft hatte Vladimir Cerrón, der radikale Generalsekretär der Regierungspartei „Perú Libre“, entscheidenden Einfluss geübt. „Inakzeptabel und beschämend“ („Inaceptable y vergonzoso“) hieß es auf dem Titelblatt der angesehensten Tageszeitung des Landes „El Comercio“ am Folgetag.[1]
Als Erster unter Gleichen wurde Guido Bellido zum Premierminister ernannt. Gegen ihn und Cerrón wird wegen Korruptionsverdacht hinsichtlich der Finanzierung der Wahlkampfkampagne des Präsidenten ermittelt. Bellido wird zudem vorgeworfen, eine Abgeordnete vor seinem Amtsantritt sexistisch beleidigt zu haben.
Als weiterer Skandal galt die Ernennung von Hector Bejar zum Außenminister. Der Soziologe hat seine Guerilla-Ausbildung in Kuba absolviert und organisierte Anfang der sechziger Jahre Guerilla-Bewegungen in Bolivien. Im Jahr 1965 führte er die Nationale Befreiungsarmee in Ayacucho an, bevor er ein Jahr später inhaftiert wurde. Er ist Verfechter eines sozialistischen Wirtschaftssystems; diplomatische Erfahrung hat er jedoch nicht vorzuweisen. Nachdem Bejar erklärte, dass die maoistische Terrororganisation „Sendero Luminoso“ eine Schöpfung der peruanischen Marine und der CIA gewesen sei, musste er bereits Mitte August von seinem Amt zurücktreten. Als neuer Außenminister wurde der Karrierediplomat Óscar Maúrtua eingesetzt.
Trotz dieser Kontroversen wurde das Kabinett Ende August vom Kongress bestätigt. Hauptgrund dafür waren taktische Erwägungen. Aus Sicht der Kongressmehrheit sollte Castillo nicht die Chance gegeben werden, nach Ablehnung der Regierungsmannschaft die Vertrauensfrage stellen zu können. Bei einer zweimalig abgelehnten Vertrauensfrage hätte er nämlich jenen Kongress auflösen und seine radikalen Politikvorhaben ohne die Opposition in der Legislative umsetzen können.
Die ersten Monate der Amtszeit des neuen peruanischen Staatspräsidenten waren von einer ständigen Auseinandersetzung zwischen Exekutive und Legislative geprägt. Zunächst konnte die Opposition wichtige Ausschussvorsitze für sich gewinnen, darunter die Ressorts für Wirtschaft, Bildung, Verfassungsfragen sowie Verteidigung und Geheimdienst. Und auch die Kongresspräsidentin María del Carmen Alva positionierte sich dezidiert gegen die Regierung. Als sie konstatierte, dass die „Straße“ die Absetzung des Präsidenten fordere („la calle pide vacancia presidencial“)[2], stellte die Fraktion der Regierungspartei „Perú Libre“ erfolglos einen Misstrauensantrag gegen sie. Die ständige Konfrontation führte dazu, dass der Präsident und sein Kabinett praktisch nicht regierungsfähig waren.
Hierzu gesellten sich Machtkämpfe zwischen den gemäßigten und radikalen Linken, was wiederum zu einer Verschlechterung des Verhältnisses zwischen Castillo und seinem Kabinettschef Guido Bellido führte. Der Präsident begann, sich der weniger extremen Linken Veronika Mendoza und ihrer Fraktion „Nuevo Perú“ anzunähern, wohingegen sich der Premierminister zu den radikaleren Positionen von Cerrón bekannte. Dies führte in der Folge zu einer Spaltung der Kongressfraktion innerhalb der Regierungspartei „Perú Libre“ zwischen den Anhängern Castillos und Cerróns. Es wurde davon berichtet, dass die Anhänger Castillos Unterschriften sammelten, um ihre eigene Partei zu gründen und damit eigene Kandidaten für die Kommunal- und Regionalwahlen 2022 aufzustellen.
Infolge der politischen Auseinandersetzungen mit dem Präsidenten ist Premierminister Bellido Anfang Oktober zurückgetreten. In diesem Zuge kam es auch zu einer weitreichenden Neubesetzung des Kabinetts. Dieses wird nun angeführt durch die neue Premierministerin Mirtha Vásquez des sozialistischen Bündnisses „Frente Amplio“. Sie war während der Regierung des ehemaligen Präsidenten Francisco Sagasti Kongresspräsidentin und weist somit wichtige politische Erfahrung auf.
Die Ernennung von Vásquez wird als Triumph für die Fraktion von Verónika Mendoza gewertet, denn die neue Premierministerin distanzierte sich gleich zu Beginn von „Perú Libre“, indem sie erklärte, dass eine Verfassunggebende Versammlung keine Priorität für ihre Regierung sei. Daraufhin riefen die extremeren linken Abgeordneten von „Perú Libre“ gegen die Bestätigung von Vásquez als Premierministerin auf. Sie sehen sich im neuen Regierungsprogramm nicht mehr repräsentiert. 16 der 37 Abgeordneten der Partei „Perú Libre“ stimmten demzufolge – genauso wie die gesamte Fraktion der konservativen Fujimori-Partei „Fuerza Popular“ – gegen das neue Kabinett. Trotzdem reichte es mit 68 von 130 Stimmen knapp für die einfache Mehrheit, um das Kabinett zu bestätigen. Ausschlaggebend dafür waren insbesondere die moderaten Kräfte, die in der neuen Regierungsmannschaft die Chance für eine Abgrenzung Castillos von „Perú Libre“ sahen.
In das neue Kabinett wurden aber auch kontroverse Minister eingesetzt. Besonders wurde die Ernennung von Luis Barranzuela zum Innenminister aufgrund seiner Tätigkeit als Anwalt von „Perú Libre“ im Zusammenhang mit Korruptionsvorwürfen kritisiert. Nachdem der Minister trotz verschärfter Maßnahmen zur Eindämmung der Pandemie am 31. Oktober in seinem Haus eine Halloween-Party veranstaltete, musste er nach weniger als einem Monat sein Amt niederlegen. Mit seinem Nachfolger, dem ehemaligen Staatsanwalt Avelino Guillén, steht Peru vor dem dritten Innenminister innerhalb von weniger als dreieinhalb Monaten.
Gescheiterte Reformpolitik ohne Plan und Ziel
Die ersten hundert Tage der Amtszeit von Pedro Castillo zeichnen sich nicht nur durch politische Machtkämpfe innerhalb des Führungskreises, sondern auch durch eine verfehlte Umsetzung der wirtschaftspolitischen Agenda aus.
Der Wert des peruanischen Sol ist nach dem Amtsantritt des Präsidenten stark gesunken und erreichte Anfang Oktober ein Allzeittief, bevor eine leichte Erholung mit dem nun erfolgten Kabinettswechsel eintrat. Die Preise für Lebensmittel, Gas und Benzin sind gestiegen und ein Ausdruck für die verhältnismäßig hohe Inflation im Land, die im letzten Jahr ca. fünf Prozent betrug. Ein Hauptgrund dafür, dass der peruanische Sol und damit auch die Inflationsrate nicht noch mehr unter der politischen Instabilität gelitten haben, war die Bestätigung des erfahrenen Direktors der peruanischen Zentralbank Julio Velarde um weiter fünf Jahre.
Um die Wirtschaft wiederzubeleben hat Castillo die Auszahlung eines Bonus („Bono Yanapay“) für Familien, die besonders von Armut betroffen sind, umgesetzt. Zudem hat die Regierung sechs arbeitsfreie Tage bis Ende des Jahres für Angestellte im öffentlichen Bereich beschlossen, um den Tourismus und die wirtschaftliche Reaktivierung zu fördern. Diese Maßnahmen werden das Vertrauen in die peruanische Wirtschafts- und Fiskalpolitik aber kaum wiederherstellen.
Insgesamt konnte sich die Wirtschaft nach dem Einbruch um ca. elf Prozent im Zuge der Corona-Pandemie und der politischen Krise im Jahr 2020 mit bis zu zwölf Prozent Wirtschaftswachstum im Jahr 2021 wieder erholen, doch ist im kommenden Jahr keine Erhöhung der Privatinvestitionen zu erwarten. Dafür sind sowohl der anhaltende Wunsch des Präsidenten nach Verstaatlichung, als auch seine Unterstützung der Anti-Bergbau-Bewegung und sein Mangel an politischer Führung verantwortlich.
Castillo hat in den ersten Monaten seiner Amtszeit eine Reihe von radikalen Wirtschaftsreformen angestoßen, die durchweg von der Opposition abgelehnt wurden. Hierzu zählt die angedachte Umsetzung einer zweiten Agrarreform nach Vorbild von Juan Velasco Alvarado, die am Jahrestag des Putsches des linken Militärdiktators im Jahr 1968 angekündigt wurde. Bei der „Reform“ handelte es sich jedoch nicht um eine klare Gesetzesinitiative, sondern um eine emblematische Konfrontation mit dem Kongress. Ohne überhaupt einen konkreten Vorschlag einzubringen, forderte der Premierminister, die Auflösung des Kongresses im Falle einer Ablehnung der Reform („Si no la aprueban, que se regresen”).[3]
Es standen sogar Initiativen zur Verstaatlichung natürlicher Ressourcen im Raum. Auf einer Kundgebung forderte Castillo den Kongress der Republik auf, gemeinsam an einem Gesetz zur Verstaatlichung des Camisea-Gasfeldes zu arbeiten. Im Anschluss versicherte der Wirtschafts- und Finanzminister Pedro Francke jedoch, dass eine Verstaatlichung nicht die Verstaatlichung privater Aktivitäten bedeute, sondern diese lediglich „in den Dienst des Landes stelle“.[4] Solche ambivalenten Aussagen bereiten möglichen Investoren Kopfschmerzen.
Im Zuge der Diskussionen um mögliche Enteignungen kam es Ende Oktober in der Region Ayacucho zu einem Aufstand mit Brandlegungen und Plünderungen durch Bergbaugegner, die die Schließung mehrerer Minen erzwangen. So wurde auch zeitweise die Tätigkeit des Bergbauunternehmens „Antamina“, das in der Region eine der weltweit größten Kupfer- und Zinkminen unterhält, eingestellt. Auf politischer Ebene reagierte die Regierung äußerst zögerlich. Die neue Premierministerin bezeichnete die Proteste trotz der Gewaltausbrüche seitens der Demonstranten als legitim. Kurz nach den Vorfällen mobilisierte Castillo das Militär, um die Bürgersicherheit im Land herzustellen. Doch statt das Militär in die Bergbauregionen zu senden, bezogen sich die Maßnahmen zum größten Teil auf die Hauptstadt.
Ein weitere fehlgeleitete Initiative der Regierung ist die geplante Steuerreform. Die Exekutive hat den Kongress um legislative Befugnisse zur Verabschiedung einer Steuerreform gebeten. Wirtschafts- und Finanzminister Francke erklärte, dass die Steuern für die reichsten Bürger und Unternehmen erhöht werden müssten. Unabhängig von den Konsequenzen für die Wettbewerbsfähigkeit des Landes stellt sich angesichts des Missmanagements großer Teile der öffentlichen Verwaltung die Frage, ob Verstaatlichungen und höhere Steuern überhaupt sinnvolle Maßnahmen zur Bewältigung der sozialpolitischen Herausforderungen wären.
Insgesamt leidet die Professionalität der öffentlichen Verwaltung unter dem Management der neuen Regierung. Denn bei Personalentscheidungen im Beamtenapparat werden Mitglieder von Gewerkschaften und linken Interessengruppen aus politischen Gründen bevorzugt. Selbst hohe Militärs wurden ausgetauscht, weil sie sich gegen fragwürdige Beförderungen innerhalb der Streitkräfte gestellt hatten. Dieser Trend stellt die Handlungsfähigkeit der öffentlichen Verwaltung des Staates weiter in Frage.
Außenpolitisch ist die Bilanz des neuen Präsidenten ebenfalls dürftig. Mitte September unternahm Pedro Castillo seine erste Auslandsreise nach Mexiko und in die USA, um an multilateralen Treffen der Vereinten Nationen, der Organisation Amerikanischer Staaten und der Gemeinschaft der Lateinamerikanischen und Karibischen Staaten teilzunehmen. In einer Rede vor der Generalversammlung der Vereinten Nationen betonte er die demokratische Ausrichtung seiner Regierung, die wirtschaftliche Stärke Perus und die Notwendigkeit der internationalen Zusammenarbeit bei der Impfung gegen das Corona-Virus. Castillo nutzte die Zeit in New York aber auch, um sich mit Venezuelas Machthaber Nicolás Maduro über die Zukunft der sozialistischen Bewegung in Lateinamerika auszutauschen. Das Treffen löste in Peru heftige Kritik aus, weshalb Außenminister Óscar Maúrtua über die kontroverse Zusammenarbeit mit dem Maduro-Regime vom Kongress befragt wurde. Inzwischen hat die peruanische Regierung den Vertreter der Maduro-Regierung als neuen Botschafter akkreditiert und sich von der Lima-Gruppe, die das venezolanische Regime verurteilt, abgewandt.
Generell verfolgen der Präsident und seine Regierung eine nationalistische Außenpolitik. Außenminister Óscar Maúrtua hingegen vertritt eine internationalistische Haltung, die mit der Wahrung der Demokratie, der Menschenrechte und der Förderung des internationalen Handels einhergeht, was wiederum von der extremen Linken kritisiert wird. Diese Dichotomie wird sich wahrscheinlich nicht auflösen, weil weder der Präsident noch das diplomatische Corps an einem Entgegenkommen interessiert scheinen. Dementsprechend werden sich die außenpolitischen Veränderungen unter dem neuen Präsidenten auf punktuelle Initiativen statt strukturelle Umgestaltungen beschränken.
Fazit
Nach 100 Tagen im Amt ist keine klare Führungslinie des peruanischen Präsidenten zu erkennen. Nachdem Pedro Castillo sein Regierungsprogramm und seine Personalentscheidungen anfänglich an den Vorstellungen des radikalen Parteiführers Cerrón ausgerichtet hatte, distanzierte er sich letzthin immer weiter von der Partei „Perú Libre“. Das Investitionsklima konnte der Präsident nicht verbessern. Eine durchdachte außenpolitische Strategie ist nicht erkennbar.
Um trotz der momentanen politischen Situation endlich Ergebnisse vorweisen zu können, wird sich die Regierung neue Verbündete suchen müssen. Dafür müsste der Präsident jedoch Zugeständnisse gegenüber den moderaten Fraktionen im Kongress machen. Wie eine Konsolidierung mit dem Establishment aussehen könnte, bleibt jedoch weiter unklar. Deshalb wird das Land auch in den kommenden Monaten von politischer Ungewissheit geprägt sein.
[1] „El Comercio“, 30. Juli 2021, Ausgabe Nr. 91229, S. 1.
[2] https://elcomercio.pe/politica/maria-del-carmen-alva-la-calle-pide-vacancia-presidencial-nndc-noticia/ (abgerufen am 7. November 2021).
[3] https://gestion.pe/peru/politica/bellido-reta-al-congreso-si-no-la-aprueban-reforma-agraria-que-se-regresen-y-que-la-poblacion-escoja-otros-nndc-noticia/?ref=gesr (abgerufen am 7. November 2021).
[4] https://elcomercio.pe/economia/mef-pedro-francke-nacionalizar-el-gas-de-camisea-no-significa-estatizar-la-actividad-privada-pedro-castillo-nndc-noticia/ (abgerufen am 7. November 2021).
Themen
Bereitgestellt von
Auslandsbüro Peru
Über diese Reihe
Die Konrad-Adenauer-Stiftung ist in rund 110 Ländern auf fünf Kontinenten mit einem eigenen Büro vertreten. Die Auslandsmitarbeiter vor Ort können aus erster Hand über aktuelle Ereignisse und langfristige Entwicklungen in ihrem Einsatzland berichten. In den "Länderberichten" bieten sie den Nutzern der Webseite der Konrad-Adenauer-Stiftung exklusiv Analysen, Hintergrundinformationen und Einschätzungen.