Asset-Herausgeber

Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing:
==> FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) [in template "252001#252047#252845" at line 127, 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 127, 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 
98 title = entry.getTitle(languageId) 
99 data = { 
100 "title": title 
101
102 /> 
103 <@debugJsonString jsonString "ADT_KASDE_DYNAMIC_INTRO" /> 
104 
105 <#if hasContent('untertitel', languageId, json)> 
106 <#assign data = data + { "subheadline": getValueForLanguage('untertitel', languageId, json, "first") } > 
107 </#if> 
108 
109 <#if hasContent('beschreibung', languageId, json)> 
110 <#assign data = data + { "copy": getValueForLanguage('beschreibung', languageId, json, "first") } > 
111 </#if> 
112 
113 <#-- fill meta data --> 
114 <#assign meta = {} /> 
115 
116 <#-- PUBLIKATIONEN DETAIL --> 
117 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")> 
118 
119 <#if hasContent('coverDMTKASDEMEDIUM', languageId, json)> 
120 <#assign 
121 coverBildString = getValueForLanguage('coverDMTKASDEMEDIUM', languageId, json, "first") 
122 /> 
123 
124 <#if coverBildString?has_content> 
125 <#assign 
126 coverBild = FrontendService.json.parseAsJson(coverBildString) 
127 dMTJsonObject = FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) 
128 linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',coverBild.groupId?number, coverBild.uuid ) 
129 data = data + { "media": linkToDMT, "meta" : dMTJsonObject } 
130 /> 
131 <#if dMTJsonObject.altText?? > 
132 <#assign data = data + {"alt" : dMTJsonObject.altText} /> 
133 </#if> 
134 <#if dMTJsonObject.quelle??> 
135 <#assign meta = meta + { "quelle": dMTJsonObject.quelle } /> 
136 </#if> 
137 </#if> 
138 <#-- uncomment to display pdf cover as Intro Image 
139 <#elseif hasContent('document_pdfDMTBASICDOCUMENT', languageId, json)> 
140 <#assign 
141 pdfDocument = getValueForLanguage('document_pdfDMTBASICDOCUMENT', languageId, json, "first") 
142 fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, groupId?number)!/> 
143 <#if fileEntry?has_content> 
144 <#assign 
145 linkToThumbnail = FrontendService.link.getThumbnailSrc(fileEntry , themeDisplay) 
146 data = data + { "media": linkToThumbnail } 
147 /> 
148 </#if> 
149 --> 
150 </#if> 
151 
152 <#assign 
153 meta = meta + { "orderInfo": "true" } 
154 verbundJournalArticle = FrontendService.publication.getVerbundToPublikation( entry )!"" 
155 /> 
156 
157 
158 
159 <#if hasContent('erscheinungsdatum', languageId, json)> 
160 <#assign 
161 erscheinungsdatum = getValueForLanguage('erscheinungsdatum', languageId, json, "first") 
162 /> 
163 <#if erscheinungsdatum?has_content > 
164 <#assign 
165 erscheinungsdatumFormatted = FrontendService.date.getDateFormatLong( erscheinungsdatum, languageId ) 
166 meta = meta + { "date": erscheinungsdatumFormatted } 
167 /> 
168 </#if> 
169 </#if> 
170 
171 <#if verbundJournalArticle?has_content> 
172 <#assign 
173 verbundJsonString = FrontendService.article.getWebcontent(verbundJournalArticle.resourcePrimKey) 
174 verbundJson = FrontendService.json.parseAsJson(verbundJsonString) 
175 laufendenummer = getValueForLanguage('laufendenummer', languageId, verbundJson, "first") 
176 coverImg = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, verbundJson, "first") 
177 /> 
178 <@debugJsonString verbundJsonString "ADT_KASDE_DYNAMIC_INTRO-verbundJournalArticle" /> 
179 <#assign meta = meta + { "laufendenummer": laufendenummer } > 
180 
181 <#if coverImg?has_content && coverImg.url?has_content > 
182 <#assign meta = meta + { "coverImg": coverImg.url } > 
183 </#if> 
184 </#if> 
185 
186 
187 <#if meta?has_content> 
188 <#assign data = data + {"meta": meta } > 
189 </#if> 
190 
191 </#if> 
192 <#-- PUBLIKATIONEN DETAIL END --> 
193 
194 
195 <#-- VERANSTALTUNGEN DETAIL --> 
196 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")> 
197 <#assign 
198 friendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, languageId, groupId)!"" 
199 languages = entry.getAvailableLanguageIds() 
200 links = [] 
201 /> 
202 <#if languages?has_content && friendlyUrl?has_content> 
203 <#if (languages?size > 1) > 
204 <#list languages 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 <#list json["document_pdfDMTBASICDOCUMENT"]?keys as pdf_language> 
411 <#if pdf_language?has_content > 
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 </#if> 
436 </#list> 
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> 

Asset-Herausgeber

Vor seinem Amtsantritt als Präsident der Republik war der Abgeordnete Jair Bolsonaro eher für seine kontroversen Äußerungen als für die Vertretung eines klar umrissenen politischen Projekts bekannt.[1] Dennoch gelang es ihm 2018, genügend Stimmen zu erhalten, die ihm den Einzug in die zweite Runde der Präsidentschaftswahlen ermöglichten, obwohl er nur über geringe Wahlkampfmittel verfügte und einer bis dahin nichtssagenden politischen Partei (Partido Social Liberal-PSL) angehörte. Mit einem Diskurs, der im klaren Gegensatz zu anderen Parteien des Establishments stand[2] und unter Nutzung seines Status als politischer Außenseiter warb Bolsonaro für einen Kurs, der auf der Verteidigung bürgerlicher, konservativer Werte basierte. Bolsonaro verstand es 2018, die zunehmende Politikverdrossenheit und Unzufriedenheit mit den traditionellen Parteien für sich zu nutzen. Er kombinierte diesen Ansatz mit einem sehr konservativen Narrativ, das Sicherheit und Ordnung, die Bekämpfung der Korruption und die Belebung der Wirtschaft mit einem liberalen Kurs versprach. Bei den Wahlen erhielt Bolsonaro 55,13 Prozent der gültigen Stimmen und schlug damit den Kandidaten der Arbeiterpartei (PT) Fernando Haddad, der im zweiten Wahlgang 44,87 Prozent erreichte. Nach vier Jahren tritt der Amtsinhaber nun an, um seinen politischen Kurs zu konsolidieren.

 

Rückblick auf Bolsonaros Regierungsführung

Mit Blick auf die bisherige Amtszeit der Regierung Bolsonaro zeigt sich, dass sie nicht in der Lage war, viele der im Wahlkampf versprochenen Veränderungen durchzusetzen. In der Innenpolitik hat der Präsident schließlich dem Druck der eigentlich von ihm als „Establishment“ bekämpften Parteien des sogenannten „Centrão“, einer Gruppe weitgehend ideologiefreier, programmatisch schwacher und stattdessen hauptsächlich an Ämtern und Posten interessierter Parteien, nachgegeben. Seit der Neugründung des brasilianischen demokratischen Systems 1985 sind die Präsidenten gezwungen, Mehrheitsallianzen im Kongress zu bilden, was oft bedeutet, dass sie Posten in als strategisch angesehenen Ministerien abgeben müssen, um stabile Koalitionen in der Legislative zu bilden. Bolsonaro hat diese Art, Politik zu machen, immer kritisiert – nicht, weil er sie für unmoralisch hält, sondern weil er den Eindruck erweckt hat, dass es für ihn ausreicht, die Position des Chefs der Exekutive einzunehmen, um uneingeschränkt befugt zu sein, Dekrete zu erlassen oder Gesetzesänderungen zu unterzeichnen, ohne politische Absprachen treffen zu müssen. Daher standen Konfrontationen und polemische Äußerungen gegenüber den Führern des Repräsentantenhauses und des Senats immer wieder auf der Tagesordnung. Für seine Angriffe nutzte der Präsident gerne die sozialen Medien.

Nach und nach geriet Bolsonaro aber durch diesen Kurs unter Druck, da die Parteiführungen im Kongress ihm die Gefolgschaft verweigerten. Der Präsident gab dem Druck der Legislative allmählich nach und begann sich dem „Centrão“ als Mehrheitsbeschaffer im Kongress anzunähern, um seine Projekte durchzusetzen. Schließlich führten  zahlreiche Personalrochaden auf Ministerebene 2021 dazu, dass strategische Positionen in seinem Kabinett an die neuen Verbündeten des "Centrão" gingen.[3] Im März des vergangenen Jahres gab es sechs Ministerwechsel, darunter in den Ministerien Verteidigung, Justiz und Auswärtige Angelegenheiten. Im Juli wurden die Minister der Casa Civil, vergleichbar mit dem Kanzleramt, und des Generalsekretariats des Präsidenten ersetzt und das Ministerium für Arbeit und soziale Sicherheit, das zuvor zum Wirtschaftsministerium gehörte, neu geschaffen. Hinzu kommt, dass sich der Präsident seit Beginn seiner Amtszeit sehr auf Militärs in seinem Kabinett stützt und deren bisherige Loyalität und Verschwiegenheit schätzt.[4]

Brasiliens Ruf auf dem internationalen Parkett hat insbesondere durch den ehemaligen Außenminister Ernesto Araújo – ein treuer Vertreter des sogenannten „Bolsonarismo“[5] – gelitten. Seit seinem Amtsbeginn hat die brasilianische Diplomatie die Verteidigung einer Reihe von Werten aufgegeben, die bis dahin als fester Bestandteil der Außenpolitik des Landes angesehen wurden. Multilateralismus, regionale Integrationsprojekte und der Umweltschutz, um nur einige Beispiele zu nennen, wurden zurückgestellt. Sein Nachfolger, Carlos França, ein erfahrener Diplomat mit einem diskreteren Auftreten als sein Vorgänger, hat scheinbar erkannt, dass der Schaden, der dem internationalen Image Brasiliens in den letzten drei Jahren zugefügt wurde, wieder behoben werden muss.

Bolsonaros Regierung ist es nicht gelungen, die Korruption zu bekämpfen, im Gegenteil. Zahlreiche Verstrickungen in Korruptionsskandale hafteten auch seiner Regierung an, vor allem durch seine Söhne. Auch die ökonomischen Schwierigkeiten, die schon vor seinem Amtsantritt das Land beherrschten, bestehen weiter. Sein Wirtschaftsminister Paulo Guedes (parteilos), der in den Sog des Skandals um die sogenannten Pandora Papers geriet, schlug eine Reihe von Maßnahmen vor, die ausländische Investoren anlocken, die Arbeitslosigkeit verringern und die Entbürokratisierung des öffentlichen Sektors fördern sollten. Diese blieben weitestgehend erfolglos, so dass die Wirtschaftsleistung des Landes weiter schwächelt. Einerseits wirkte sich die Pandemie direkt auf die brasilianische Wirtschaft (wie auch auf die Weltwirtschaft) aus, andererseits versäumte es die brasilianische Regierung, notwendige Maßnahmen zu ergreifen, die die Auswirkungen der Stagnation der Wirtschaftstätigkeit und insbesondere der Inflation wirksam hätten abfedern können.[6]

Ein besonderes Kapitel der Regierung Bolsonaro ist schließlich ihr Umgang mit und das Management der Coronapandemie. Die Art und Weise, wie der Pandemie in Brasilien begegnet wurde, war durch eine Reihe von negativen Ereignissen gekennzeichnet. Um nur bei der politischen Dimension zu bleiben: Bolsonaro hat in weniger als einem Jahr, inmitten der schwersten Gesundheitskrise des Landes, vier Mal den Gesundheitsminister ausgewechselt. Einer von ihnen, Nelson Teich, blieb sogar nur weniger als einen Monat im Amt. Eduardo Pazuello, ein Armeegeneral mit wenig Erfahrung in Gesundheitsfragen, wurde erst nach einer viermonatigen Übergangszeit in sein Amt eingeführt. Die positiven Ergebnisse der aktuell durchgeführten Impfaktionen in Brasilien stehen im Gegensatz zu dem düsteren Szenario der vorangegangenen Monate. Mit mehr als 630.000 Todesfällen ist Brasilien eines der am stärksten betroffenen Ländern weltweit. Präsident Bolsonaro wurde durch eine zu diesem Thema eingesetzte parlamentarische Untersuchungskommission (CPI) attestiert, dass er unangemessen auf die Coronakrise reagiert habe und für die Katastrophe der vielen Tausend Toten Verantwortung trage.  Der Ausschuss stellte beispielsweise fest, dass die Regierung Bolsonaro trotz zahlreicher Angebote auf frühzeitige Impfstoffbestellungen verzichtet hat, da man fälschlicherweise von einer weitgehenden Herdenimmunität ausging und Kosten vermeiden wollte. Dies hat angesichts der vielen Todesopfer und des unvorstellbaren Leids in Brasilien selbst bei Bolsonaros Sympathisanten für Entsetzen gesorgt. Auch die Missachtung von Ratschlägen aus der Wissenschaft, die Entlassungen von Gesundheitsministern während der Pandemie, die strikte Ablehnung von social distancing- und lockdown-Maßnahmen sowie die Empfehlung von Medikamenten wie Hydroxchloroquin, dessen Wirkung zweifelhaft ist, wurden durch den Untersuchungsausschuss ans Tageslicht befördert.

All diese Themen tragen dazu bei, dass Präsident Jair Bolsonaro aktuell bei den brasilianischen Wählern wenig Zustimmung erfährt. Laut der Datafolha-Umfrage vom Dezember 2021[7] liegt die Zustimmung  für den Präsidenten bei 22 Prozent, während die Mehrheit (53 Prozent) seine Amtsführung als Präsident der Republik ablehnt. Aber selbst wenn Bolsonaro aktuell mit geringen Zustimmungswerten zu kämpfen hat, ist der brasilianische Wahlausgang noch ungewiss, da dieser auch davon abhängt, wie sich seine potenziellen Gegner im Wahlkampf aufstellen werden und ob und welche Schwierigkeiten und Querelen es in den nächsten Monaten im Regierungslager bzw. bei den Herausforderern geben wird.

 

Das Wahlszenario: ein Herausforderer und ein unsicherer, offener „dritter Weg“

Stand 2018 der Kampf gegen Lula und die PT im Mittelpunkt der Auseinandersetzung, so sind es 2022 zwei Komplexe, die die Aufmerksamkeit auf sich ziehen. Einerseits die Anwesenheit von Lula und seine mögliche Rückkehr ins Präsidentenamt. Zum anderen das Risiko der Vertiefung des rechtspopulistischen Kurses der Regierung Bolsonaro bei einem Wahlsieg des Amtsinhabers, von dem viele befürchten, dass er die Demokratie und die Macht der Institutionen in Brasilien bei einer weiteren Amtszeit aushöhlen könnte. Dazwischen bewegen sich die Überlegungen zu einem "dritten Weg", der sich als Gegenpol zu beiden Kandidaten präsentiert, bei dem aber noch kein erfolgversprechender Kandidat erkennbar ist, um als wirkliche Alternative anzutreten.

Für Präsident Bolsonaro (Partido Liberal-PL), der sein Mandat verteidigen will, ist das Szenario anders als 2018. Dieses Mal werden sich ihm nicht nur die Linken entgegenstellen, sondern auch frühere Verbündete wie der ehemalige Richter des Lava-Jato-Prozesses und Minister für Justiz und öffentliche Sicherheit seines Kabinetts, Sergio Moro (Podemos). Trotz der geringen Zustimmung zu seiner Regierung ist es dem Präsidenten gelungen, eine Anhängerschaft im Bereich von 25 Prozent zu halten. Diese Unterstützung könnte ausreichen, um ihn in die zweite Runde der Präsidentschaftswahl zu bringen, in der er dann erneut versuchen könnte, die Unterstützung der Brasilianer durch das Schüren der Angst vor Lula, dem Sozialismus und der Herrschaft der linken Arbeiterpartei zu gewinnen. Auch bleibt abzuwarten, wohin sich Vertreter der Wirtschaft und der Evangelikalen Kirchen wenden und mit wem die jeweiligen Kandidaten als Vize in den Wahlkampf gehen.

Lula bleibt im Moment Bolsonaros wichtigster Herausforderer. Nach zwei Amtszeiten als Präsident der Republik ist die momentane Zustimmung für ihn trotz der zahlreichen Korruptionsskandale seiner Regierungsjahre bei den brasilianischen Wählern hoch. In den Umfragen liegt Lula aktuell zwischen 40 und 48 Prozent der Wählergunst, während Bolsonaro zwischen 21 und 30 Prozent schwankt.[8] Von den Kandidaten des "dritten Weges" liegt Sergio Moro (Podemos) zwischen 6 und 9 Prozent, der Gouverneur von São Paulo, João Doria (Partido da Social Democracia Brasileira-PSDB) zwischen 2 und 4 Prozent und Ciro Gomes (Partido Democrático Trabalhista-PDT) kommt auf 4 bis 7 Prozent .

Somit stellt Lula für Bolsonaro die größte Konkurrenz dar. Dieser versucht wiederrum einen Vizepräsidenten, zu gewinnen, um eine nicht-linke, liberale Wählerschaft anzuziehen. Aussichtsreicher Kandidat dafür ist im Moment der ehemalige Gouverneur von São Paulo und frühere Präsidentschaftskandidat und erbitterter Gegner Lulas, Geraldo Alckmin, der nach 33 Jahren aus seiner Partei PSDB ausgetreten ist. Er ist derzeit parteilos und wird von der PSB (Sozialistische Partei Brasiliens), der PSD (Sozialdemokratische Partei) und der PV (Grüne Partei) umworben. Lula und seine Berater haben diese Chance auf eine Öffnung für andere Wählerschichten erkannt. Allerdings ist innerhalb der Arbeiterpartei diese mögliche Wahl des Vizepräsidentschaftskandidaten auch höchst umstritten. Des Weiteren könnten die Korruptionsskandale, die Lulas Amtszeit überschatteten, im Wahlkampf 2022 wieder thematisiert und damit zum Problem seiner Kandidatur werden.

Der "dritte Weg" ist immer noch nicht wirklich sichtbar. Es ist bekannt, dass der Kandidat, der aus diesem Lager hervorgehen wird, sich gleichzeitig gegen Bolsonaro und gegen Lula positionieren wird. Was noch nicht klar ist, ist wer dieser Akteur tatsächlich sein wird. Drei Namen sind derzeit hoch im Kurs: Sergio Moro (Podemos), João Dória (PSDB) und Ciro Gomes (PDT). Allerdings geht man davon aus, dass noch mehr Kandidaten auftauchen könnten. Die Strategie soll offenbar darin bestehen, Bolsonaro in der ersten Runde zu isolieren und Lula in der zweiten Runde zu besiegen. Die Herausforderung ist jedoch eine doppelte: Die erste ist der Kampf um die Führung dieses Blocks des „dritten Weges“. Wenn die Unentschlossenheit der Oppositionsparteien bis zum Ende des Wahlkampfes anhält, besteht die Gefahr, dass die Wähler ihre Stimmen auf verschiedene Kandidaten verteilen, wodurch es nahezu unmöglich sein würde, dass einer von ihnen die zweite Runde erreicht. Eine zweite Herausforderung besteht darin, die Wählerschaft davon zu überzeugen, dass dieser Kandidat des "dritten Weges" tatsächlich ein alternatives Projekt zu Lula oder Bolsonaro darstellt. Viele der Gegner des derzeitigen Präsidenten sind ehemalige Verbündete. Sergio Moro (Podemos) war Justizminister seines Kabinetts.  João Dória (PSDB) verwendete sogar den Ausdruck "Bolsodoria", um die enge Verbundenheit zu demonstrieren, als er bei den Wahlen im Bundesstaat São Paulo um die Unterstützung Bolsonaros warb. Auf den anderen Seite versucht hingegen Ciro Gomes (PDT), sein Image als ehemaliger Verbündeter von Lula (PT) loszuwerden, unter anderem durch scharfe Attacken gegen den ehemaligen Präsidenten.[9] Die Tatsache, dass er mehr als drei Jahre lang als Minister im Kabinett Lulas saß, kann er jedoch nicht leugnen. Es gibt noch weitere Namen, die zur Gruppe des "dritten Weges" stoßen könnten, z.B. André Janones (Avante), Alessandro Vieira (Cidadania), Simone Tebet (MDB), der Senatspräsident Rodrigo Pacheco (PSD) und Luiz Felipe d'Avila (Novo). Bislang hat jedoch keiner von ihnen eine echte Chance auf einen Sieg, da sie in den Umfragen alle unter 2 Prozent liegen. Es besteht natürlich die Möglichkeit, dass sich einige von ihnen anderen Kandidaten des "dritten Weges" als deren Vizepräsidentschaftskandidaten anschließen werden. 

 

Fazit und Ausblick

Das Wahlpanorama 2022 unterscheidet sich signifikant von dem im Jahr 2018, auch wenn die wichtigsten Namen, wieder Jair Bolsonaro und Lula heißen. Die Polarisierung zwischen links und rechts hat dieses Mal eine Bewegung hervorgebracht, die versucht, sich als Alternative zu präsentieren. Dem "dritten Weg" ist es jedoch bisher nicht gelungen, eine ernsthafte Alternative mit einer klaren Führung zu bilden, die die Wähler anspricht. In den kommenden Monaten besteht zwar theoretisch hierzu noch die Möglichkeit und natürlich auch um Wahlbündnisse einzugehen, aber die Zeit wird knapp. Ein Bündnis von João Doria (PSDB) und Sergio Moro (Podemos), bei dem die Rollenverteilung schwierig und konfliktreich wäre, wird beispielsweise noch nicht völlig ausgeschlossen und könnte eine der Strategien sein, die von den Kandidaten des „Dritten Weges“ im Wahlkampf verfolgt wird.[10]

Bei allen Überlegungen, die zurzeit zum Wahlausgang angestellt werden, muss man ebenfalls konstatieren, dass selbst wenn Jair Bolsonaro bei den diesjährigen Wahlen eine Niederlage erleiden sollte, dies nicht automatisch bedeuten würde, dass der Bolsonarismus aus der brasilianischen Politik verschwindet. Viele Kandidaten, die sich mit der Figur des Präsidenten identifizieren, werden bei den Wahlen in den Bundesstaaten antreten. Diese Kandidaten für die Landesregierungen oder den Senat stellen ein Umfeld dar, in dem die politische Idee Bolsonaros überleben kann, zumal auch seine Söhne weiterhin auf der politischen Bühne präsent sein werden.

Für die brasilianische Demokratie steht bei den Wahlen im Oktober viel auf dem Spiel, denn es gilt, ihren Kurs für die nächsten vier Jahre zu bestimmen. Noch ist alles offen, auch wenn die Umfragen derzeit ein scheinbar sehr eindeutiges Bild zeichnen.

 

[1] Als ehemaliger rangniedriger Offizier hat Jair Bolsonaro mehrfach seine Unterstützung für das Militärregime erklärt, das von 1964 bis 1985 Brasilien regierte. Selbst während seiner Amtszeit als Präsident hat Bolsonaro mehrmals zweideutige Formulierungen verwendet, die als versteckte Unterstützung für die autoritäre Regierung interpretiert werden könnten. Vgl.: https://oglobo.globo.com/epoca/brasil/oito-vezes-em-que-bolsonaro-defendeu-golpe-de-64-24949762.

[2]Vgl. https://www.em.com.br/app/noticia/politica/2021/02/09/interna_politica,1236434/video-resgata-promessa-de-bolsonaro-de-que-nao-negociaria-cargos.shtml.

[3]Vgl. Länderbericht der KAS Brasilien https://www.kas.de/de/web/brasilien/laenderberichte/detail/-/content/kabinettsumbildung-in-brasilien-hintergruende-und-konsequenzen.

[4]Vgl. Länderbericht der KAS Brasilien https://www.kas.de/documents/252038/7938566/Politische+Krise+und+der+Einfluss+der+Milita%CC%88rs+in+der+Regierung+Bolsonaro.pdf/3b69cdcd-b230-debf-a36a-d7810f97d9a3?version=1.0&t=1591110065321.

[5] Mit dem Begriff, der sich auf die Person Jair Bolsonaros bezieht, wird verdeutlicht, dass die extreme Rechte in Brasilien weniger durch eine Partei vertreten wird, sondern sich insbesondere stark mit der Person des Präsidenten identifiziert. Mit diesem personalisierten Ansatz gelang es der extremen Rechten, einen moralischen Konservatismus zu etablieren, der eine Agenda von Recht und Ordnung, liberale Wirtschaftspolitik sowie Angriffe auf demokratische Institutionen und die Medien verfolgt und zudem den Anspruch vertritt, die Korruption zu bekämpfen.

[6]Vgl. https://noticias.r7.com/brasilia/bolsonaro-culpa-medidas-de-restricao-por-inflacao-de-1006-11012022.

[7]Vgl. https://g1.globo.com/politica/noticia/2021/12/17/datafolha-bolsonaro-53percent-reprovacao-22percent-aprovacao.ghtml

[8]Vgl. https://valorinveste.globo.com/mercados/brasil-e-politica/noticia/2022/01/01/compilacao-de-pesquisas-aponta-lula-com-40percent-a-48percent-das-intencoes-de-voto-para-presidencia.ghtml.

[9] Vgl. https://congressoemfoco.uol.com.br/projeto-bula/reportagem/ciro-chama-lula-de-canalha-e-diz-que-petista-e-negacionista-politico/.

[10]Vgl. https://www.metropoles.com/colunas/igor-gadelha/apos-pesquisa-aliados-de-moro-querem-convencer-doria-a-ser-vice

Asset-Herausgeber

Kontakt

Anja Czymmeck

Anja Czymmeck

Leiterin des Auslandsbüros Frankreich

anja.czymmeck@kas.de +33 156 69 15 00

comment-portlet

Asset-Herausgeber