Asset-Herausgeber

Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing:
==> data.meta [in template "252001#252047#252845" at line 459, column 10]
----
Tip: It's the step after the last dot that caused this error, not those before it.
----
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: #if data.meta.laufendenummer?has_cont... [in template "252001#252047#252845" at line 459, column 5]
----
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.laufendenummer?has_content !isACColorScheme() && !isVLCColorScheme() && !isDPMColorScheme()> 
460 <div>  
461 <div id="publicationVerbundPagination"> 
462 <@AMPublicationCarousel data.meta.laufendenummer data.meta.date data.meta.coverImg /> 
463 </div> 
464 </div> 
465 </#if> 
466 
467<#elseif (editmode?? && editmode)> 
468 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_DYNAMIC_INTRO" layouttpl currentUrl /> 
469</#if> 

Asset-Herausgeber

Zu wählen ist in Brasilien nicht nur ein Recht, sondern auch eine Pflicht: Brasilianische Staatsangehörige im Alter von 18 bis 70 Jahren sind zur Abgabe ihrer Stimme verpflichtet. Jugendlichen ab 16 Jahren und Älteren ab 70 Jahren steht es frei zu wählen. Wahltage sind traditionell der erste und letzte Sonntag im Oktober. Wer seine Wahlpflicht nicht ausübt und unentschuldigt fehlt, muss eine Strafe in Höhe von bis zu 35 Reais (knapp 9 EUR) zahlen. Andernfalls ist es unmöglich, einen Personalausweis oder Reisepass zu beantragen. Bei mehrfachem unentschuldigtem Fernbleiben kann ein Staatsbürger sogar sein Wahlrecht verlieren.

Das präsidentielle Regierungssystem der Republik Brasilien ist durch eine Mischung aus dem Mehrheitswahlrecht sowie dem Verhältniswahlrecht charakterisiert.

Der Staatspräsident, die 27 Gouverneure sowie die Bürgermeister von Städten mit mehr als 200.000 Einwohnern werden alle vier Jahre mit der absoluten Mehrheit der abgegebenen gültigen Stimmen gewählt. Erreicht kein Kandidat die absolute Mehrheit im ersten Wahlgang, so kommt es zu einer Stichwahl zwischen den zwei bestplatzierten Kandidaten aus dem ersten Wahlgang. Seit 1994 ist das Amt des Staatspräsidenten auf vier Jahre beschränkt und seit 1997 können sich Vertreter der Exekutive in einem konsekutiven Turnus zur Wiederwahl stellen. So konnte Fernando Henrique Cardoso (PSDB) 1998 als erster Präsident Brasiliens direkt wiedergewählt werden. Mit einfacher Mehrheit werden hingegen Senatoren und Bürgermeister von Städten mit weniger als 200.000 Einwohnern gewählt.

Damit eine Kandidatur um ein politisches Amt für Vertreter der Exekutive möglich ist, sind Mandatsträger dazu verpflichtet, ihr aktuelles politisches Amt bis zum 7. April 2018 niederzulegen (portugiesisch: desincompatibilização). Ausgenommen von dieser Vorschrift sind Mandatsträger, die sich um das gleiche politische Amt bewerben, welches sie bereits innehaben. Der aktuelle Staatspräsident Michel Temer muss sein Amt also nicht aufgeben und kann sich potentiell zur Wiederwahl stellen. Darüber hinaus ist die Mitgliedschaft in einer Partei zwingende Voraussetzung für eine Kandidatur. Für einen Zeitraum von 30 Tagen ist es Mandatsträgern der Legislative und Exekutive sieben Monate vor der Wahl möglich, die Partei zu wechseln, ohne dabei ihr Mandat zu verlieren (portugiesisch: janela de troca de partidos). Jede Partei hat großes Interesse daran, neue Mitglieder in ihren Reihen zu begrüßen, denn durch die Vergrößerung der Partei winkt dieser mehr finanzielle Unterstützung sowie mehr kostenlose Werbezeit im Fernsehen und im Radio.

Nach dem Verhältniswahlrecht (portugiesisch: representação proporcional) werden Abgeordnete und Stadträte gewählt. Dabei können die Wähler einen Kandidaten einer Partei oder einer sogenannten Wahlkampfkoalition (portugiesisch: coligação), einem Zusammenschluss zweier oder mehrerer Parteien, wählen. Die Sitze im Parlament werden an die Parteien oder Wahlkampfkoalitionen gemäß der auf die Partei oder die Wahlkampfkoalition entfallenen Stimmen nach dem Prinzip der „offenen Liste“ (portugiesisch: lista aberta) besetzt. Das heißt: Die Kandidaten mit den meisten Stimmen einer Liste erhalten ein Mandat, eine Rangordnung gibt es nicht. Im Gegensatz zum Prinzip der „geschlossenen Liste“ (portugiesisch: lista fechada) stimmen die Brasilianer also primär für einzelne Personen anstatt für eine Partei.

Im brasilianischen Zwei-Kammer-System setzt sich der Kongress aus dem Senat (portugiesisch: Senado) und dem Abgeordnetenhaus (portugiesisch: Câmara dos Deputados) zusammen. Dabei repräsentiert der Senat die 26 brasilianischen Bundesstaaten und den Bundesdistrikt Brasilia. Jeder Gliedstaat entsendet 3 Senatoren in den Senat. Somit zählt der Senat insgesamt 81 Mitglieder, die für die Dauer von acht Jahren gewählt werden. Nach dem in Brasilien gängigen Rotationsprinzip werden im Herbst 2018 lediglich 54 der 81 Senatoren, also zwei Drittel der Mitglieder des Senats, neu bestimmt. Im Jahr 2022 werden erneut 27 der 81 Senatoren gewählt. Dies entspricht einem Drittel.

Im Gegensatz dazu werden die insgesamt 513 Volksvertreter des Abgeordnetenhauses in direkter und geheimer Wahl alle vier Jahre auf einmal gewählt. Zwar entsprechen die 27 Wahlkreise den 26 Bundesstaaten sowie dem Bundesdistrikt Brasilia, jedoch ist die Einwohnerzahl der Gliedstaaten nicht proportional zu den zugeteilten Sitzen pro Staat im Abgeordnetenhaus. Dies führt dazu, dass einige Staaten mit Blick auf die Vertreter im Abgeordnetenhaus überrepräsentiert sind und ein einziger, nämlich São Paulo, unterrepräsentiert ist. Der Grund hierfür liegt in Artikel 45 der brasilianischen Verfassung in Verbindung mit der Lei Complementar nº 78 aus dem Jahr 1993, welche jedem Staat ein Minimum von 8 Sitzen garantiert und ein Maximum von 70 Sitzen vorschreibt.

/documents/265553/265605/7_file_storage_file_26504_1.jpg/c1b9a6dc-8bcd-f7a9-b225-1b4bb832fc00

Bei der Wahl zum Abgeordnetenhaus müssen die Parteien erstmalig eine Sperrklausel von 1,5% der gültigen Stimmen in mindestens neun Bundesstaaten überwinden. Bis 2030 soll die Sperrklausel auf 3% ansteigen. Diejenigen Parteien, die bei der Wahl im Herbst 2018 die 1,5%-Hürde unterschreiten, verlieren ab dem Folgejahr 2019 den Zugang zum Fundo Partidário und erhalten künftig keine Werbezeit mehr im Fernsehen. Das Ziel der Einführung der 3%-Hürde besteht darin, die Anzahl der im Parlament vertretenen Parteien zu reduzieren, um die Kammer handlungsfähiger zu machen. Derzeit sind im Abgeordnetenhaus 25 Parteien vertreten, die Regierungskoalition besteht aus nicht weniger als elf Parteien. Bemerkenswert ist, dass bei den letzten Parlamentswahlen nur elf Parteien die nach wie vor virtuelle Sperrklausel von 3% überschritten.

Über die Vorbereitung und Organisation sowie die rechtmäßige Durchführung der Wahl wacht das Oberste Wahlgericht (portugiesisch: Tribunal Superior Eleitoral, TSE). Bei ihm müssen sich bis zum 7. April 2018 (sechs Monate vor der Wahl) alle Parteien registrieren, die an der Wahl teilnehmen wollen. Daneben ist das Oberste Wahlgericht zuständig für die Regelung der Wahlkampffinanzierung. So hat es 2015 im Sinne der Korruptionsbekämpfung und -prävention die Spendenzahlungen von Unternehmen an Parteien verboten. Privatpersonen ist es weiterhin erlaubt, maximal 10% ihres Privatvermögens an Kandidaten oder Parteien zu spenden. Der Stichtag zur Berechnung des Prozentsatzes ist der letzte Tag des Vorwahljahres. Als Reaktion auf das Verbot der Firmenspenden hat der Kongress im Jahr 2017 einen neuen Wahlfonds (portugiesisch: Fundo Especial de Financiamento de Campanha, FEFC) geschaffen. Nach Schätzungen beziffert sich dieser auf 1,7 Mrd. Reais (rund 400 Mio. EUR), welche das Oberste Wahlgericht am 18. Juni 2018 nach den folgenden Kriterien an die zur Wahl zugelassenen Parteien verteilt: 2% der Summe wird den Parteien zu gleichen Teilen zugesprochen; 15% werden unter den Parteien entsprechend ihrer Anzahl an Senatoren aufgeteilt (Stichtag: 28. August 2017); weitere 35% werden dem Wahlausgang im Jahr 2014 entsprechend unter den Parteien verteilt; die verbleibenden 48% des Fonds werden proportional zu der Anzahl der Vertreter der Parteien im Abgeordnetenhaus zugeteilt (Stichtag: 28. August 2017). Nicht verwendete Mittel müssen zurückgegeben werden. Im Mai 2018 hat das Oberste Wahlgericht entschieden, dass mindestens 30% des Wahlfonds Frauen zugutekommen müssen.

/documents/265553/265605/7_file_storage_file_25894_1.jpg/8ebc0adb-bd4f-c2a5-9e77-a9ec4a9add84

Neben dieser temporären Finanzspritze im Wahlkampf stellt der 2018 rund 1 Mrd. Reais (über 200 Mio. EUR) umfassende Parteifonds (portugiesisch: Fundo Partidário) eine dauerhafte Finanzierungsquelle für Parteien dar. Ein kleiner Teil von 5% des Parteifonds wird gleichmäßig an Parteien verteilt, die rechtmäßig beim Obersten Wahlgericht registriert sind. Der Großteil von 95% wird entsprechend des Wahlergebnisses der Parteien bei den letzten nationalen Wahlen (2014) verteilt.

/documents/265553/265605/7_file_storage_file_25464_1.jpg/fa07be26-18aa-255e-273c-248c79306abe

Anders als beim Wahlfonds kann das Geld aus dem Parteifonds nicht nur zu Wahlkampfzwecken genutzt werden, sondern auch für die Aufrechterhaltung des Parteisitzes, die Bezahlung von Mitarbeitern, politische Werbung allgemeiner Natur, zur politischen Förderung von Frauen u.v.m.

Eng verbunden mit der Parteienfinanzierung ist die kostenlose Sendezeit im Fernsehen und im Radio. In einem Zeitraum von 35 Tagen steht den Parteien vom 31. August bis zum 4. Oktober täglich rund eine Stunde kostenlose Werbezeit im Fernsehen und im Radio zu. Die exakte Sendezeit bemisst sich nach der Größe der Partei. Auch hier reserviert das Oberste Wahlgericht mindestens 30% der Werbezeit für weibliche Kandidaten. Der Zeitraum der kostenlosen Wahlwerbung wurde von ursprünglich 45 Tagen auf 35 Tage verkürzt.

Weitere Informationen in portugiesischer Sprache finden Sie hier:

/documents/265553/265605/7_file_storage_file_26605_1.jpg/3e7263b8-fe9f-c592-c979-31f310519fcb

Asset-Herausgeber

Kontakt

Dr. Jan Woischnik

Dr

Leiter der Abteilung Lateinamerika

Jan.Woischnik@kas.de +49 30 26996-3577 +49 30 26996-53577
Kontakt

Franziska Hübner

Franziska Hübner bild

Referentin Stabsstelle Evaluierung

Franziska.Huebner@kas.de +49 30 26996-3513
Das brasilianische Abgeordnetenhaus

Asset-Herausgeber