资产发布器

处理模板时发生错误。
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).

资产发布器

联系人

Dr. Robert Helbig

Dr. Robert Helbig

Leiter des Auslandsbüros Peru

robert.helbig@kas.de

comment-portlet

资产发布器

关于这个系列

德国康拉德•阿登纳基金会在全球五大洲将近70个国家设有自己的代表处。国外工作人员可在现场报告第一手的最新动态和他们驻在国的长期发展。在“国家报道“里,他们提供康拉德•阿登纳基金会网站用户各种独家分析、背景信息和评估。