Modul:Politik

Aus FürthWiki

Seiten-Übersicht

Zur Klasse Politik gehörende Seiten:
Hauptseite Unterseiten
Allgemein
Faktenbox Vorlagen
Formulare
Module
Alias
Abfrage Vorlagen


Formulare


Sonstige

Bilder-Galerie aktueller Stadtrat / galerieAktuellerStadtrat()

Die Bilder-Galerie des aktuellen Stadtrats wird mittels der Funktion galerieAktuellerStadtrat() automatisch mit den jeweils aktuellen Mitgliedern des Stadtrats gefüllt. Dazu ist es nötig, dass bei den jeweiligen Personen-Artikeln die Funktion korrekt eingetragen ist wie folgt:

  1. Das „von“-Datum, aber kein „bis“-Datum ist eingetragen. Daran erkennt die Galerie-Funktion, dass die jeweilige Person aktuell im Stadtrat sein muss.
  2. Neu gewählte Stadträte haben erst die Funktion inne, wenn sie bei der konstituierenden Sitzung vereidigt wurden, und nicht bereits mit der Wahl. Ebenso beenden ausscheidende Stadträte erst die Funktion, wenn deren Nachfolger bei der konstituierenden Sitzung vereidigt wurden. Daher darf ...
    • bei neu gewählten Stadträten das „von“-Datum erst mit/nach erfolgter konstituierenden Sitzung eingetragen werden (mit deren Datum) und ...
    • bei ausscheidenden Stadträten das „bis“-Datum ebenso erst mit/nach erfolgter konstituierenden Sitzung eingetragen werden (ein Tag vor deren Datum).
    • Äquivalent ist bei Austausch von Stadträten während der Amtsperiode zu verfahren z. B. bei Verzicht oder Tod des bisherigen Stadtrats.
    • Die gleichen Mechanismen greifen bei Bürgermeistern und Referenten.
    • Beim Geschäftsführer der Infra fürth holding wird jeweils der dortige, aktuell eingetragene Geschäftsführer genommen.
    • Erläuterung: Bis zur konstituierenden Sitzung bleiben die bisherigen Stadträte (komissarisch) im Amt. Zudem kann es passieren, dass ein (wieder-)gewählter Stadtrat aus irgendwelchen Gründen doch nicht seine Funktion antreten kann und dann ein „Nachrücker“ seinen Sitz übernimmt. Ebenso kann ein vorerst abgewählter Stadtrat doch noch wiedereinziehen, falls er für jemanden nachrückt. Insofern wäre es falsch, den Funktionseintrag bereits direkt nach der Wahl vorzunehmen.
  3. Falls bei einem Stadtrat auf seiner Personen-Seite mehrere Parteien eingetragen sind, ist es nötig, beim jeweiligen Bermerkungsfeld die Partei einzutragen.

local p = {}

local str = require("Modul:String")
local tab = require("Modul:Table")
local wik = require("Modul:Wiki")

p.parteiKuerzel = {
	["AfD"] = "Alternative für Deutschland",
	["BHE"] = "Bund der Heimatvertriebenen und Entrechteten",
	["BHE"] = "Bund der Heimatvertriebenen und Entrechteten",
	["BP"] = "Bayernpartei",
	["BSW"] = "Bündnis Sarah Wagenknecht",
	["BVP"] = "Bayerische Volkspartei",
	["BdH"] = "Bund der Heimatvertriebenen",
	["CDU"] = "Christlich Demokratische Union Deutschlands",
	["CSU"] = "Christlich-Soziale Union in Bayern",
	["DDP"] = "Deutsche Demokratische Partei",
	["DFP"] = "Deutsche Freisinnige Partei",
	["dieBasis"] = "Basisdemokratische Partei Deutschland",
	["DIE FRANKEN"] = "Partei für Franken",
	["Die PARTEI"] = "Partei für Arbeit, Rechtsstaat, Tierschutz, Elitenförderung und basisdemokratische Initiative",
	["DKP"] = "Deutsche Kommunistische Partei",
	["FDP"] = "Freie Demokratische Partei",
	["FVp"] = "Freisinnige Volkspartei",
	["FW"] = "Freie Wähler",
	["GB/BHE"] = "Gesamtdeutscher Block/Bund der Heimatvertriebenen und Entrechteten",
	["GJ"] = "Grüne Jugend",
	["Grüne"] = "Bündnis 90/Die Grünen",
	["GUTuN"] = "Generation Umwelt, Tierschutz und Nachhaltigkeit",
	["HJ"] = "Hitlerjugend",
	["JU"] = "Junge Union",
	["JuLis"] = "Junge Liberale",
	["KPD"] = "Kommunistische Partei Deutschlands",
	["Linke"] = "Die Linke",
	["MLPD"] = "Marxistisch-Leninistische Partei Deutschlands",
	["NPD"] = "Nationaldemokratische Partei Deutschlands",
	["NSDAP"] = "Nationalsozialistische Deutsche Arbeiterpartei",
	["PIRATEN"] = "Piratenpartei Deutschland",
	["PdH"] = "Partei der Humanisten",
	["REP"] = "Die Republikaner",
	["SA"] = "Sturmabteilung",
	["SDAJ"] = "Sozialistische Deutsche Arbeiterjugend",
	["SPD"] = "Sozialdemokratische Partei Deutschlands",
	["Tierschutzpartei"] = "Partei Mensch Umwelt Tierschutz",
	["UCS"] = "Unabhängige Christlich-Soziale",
	["Volt"] = "Volt Deutschland",
	["WASG"] = "Wahlalternative Arbeit und soziale Gerechtigkeit",
	["WAV"] = "Wirtschaftliche Aufbau-Vereinigung",
	["WP"] = "Wirtschaftspartei",
	["ÖDP"] = "Ökologisch-Demokratische Partei"}

function p.getLangfassung(partei)
	local partei_lower = string.lower(partei)
	for pk, pl in pairs(p.parteiKuerzel) do
		if string.lower(pk) == partei_lower then
			partei = pl
			break
		end
	end
	return partei
end

function p.GetKuerzel(frame)
	return p.getKuerzel(frame.args[1])
end

function p.getKuerzel(partei)
	local partei_lower = string.lower(partei)
	for pk, pl in pairs(p.parteiKuerzel) do
		if string.lower(pl) == partei_lower then
			partei = pk
			break
		end
	end
	return partei
end

function p.getKombi(partei)
	local kombi
	if partei ~= nil then
		local langfassung = p.getLangfassung(partei)
		local kuerzel = p.getKuerzel(partei)
		if not wik.pageExists(langfassung) and wik.pageExists(kuerzel) then
			kombi = "[[" .. kuerzel .. "|" .. langfassung .. "]]" ..
				" (" .. kuerzel .. ")"
		else
			kombi = "[[" .. langfassung .. "]]"
			if kuerzel ~= langfassung then
				kombi = kombi .. " (" .. kuerzel .. ")"
			end
		end
	end
	return kombi
end

function p.GetQuerySelector(frame)
	return p.getQuerySelector(str.splitAndStrip(frame.args[1], ";"))
end

function p.getQuerySelector(partei)
	local s = ""
	if partei ~= nil then
		partei = tab.toTable(partei)
		for _, pp in ipairs(partei) do
			if pp ~= nil and pp ~= "" then
				local langfassung = p.getLangfassung(pp)
				local kuerzel = p.getKuerzel(pp)
				s = str.appendWithSeparator(s, "||", langfassung)
				if kuerzel ~= langfassung then
					s = str.appendWithSeparator(s, "||", kuerzel)
				end
			end			
		end
	end
	if s ~= "" then
		s = "[[Partei::" .. s .. "]]"
	end
	return s
end

function p.GetParteiListe()
	return table.concat(p.getParteiListe(), ";")
end

function p.getParteiListe()
	local liste = {}
	local l = {}
	local query = {"[[Partei::+]]", "?Partei#=", mainlabel="-", limit=10000}	-- Partei-Attribute abfragen
	query = mw.smw.ask(query)
	for _, q in ipairs(query) do
		q = q[1]
		if type(q) ~= "table" then
			q = {q}
		end
		for _, e in ipairs(q) do
			l[e] = true
			l[p.getKuerzel(e)] = true
		end
	end
	for e, _ in pairs(l) do														-- in Liste umwandeln und sortieren
		table.insert(liste, e)
	end
	table.sort(liste)
	return liste
end

function p.galerieAktuellerStadtrat(frame)
	local t = ""
	local buergermeister = {}
	-- OBs
	t = t .. "<gallery>\n"
	local query = {
		"[[SubObjektTyp::Funktion]][[Funktion::Oberbürgermeister]]" ..
			"[[Ehemals::falsch]]",
		"?-has subobject.Seite#",
		"?-has subobject.Bild#",
		"?-has subobject.Partei#",
		"?Funktion",
		"?FunktionBemerkung",
		limit = 1000}
	local query_result = mw.smw.ask(query)
	buergermeister[1] = { ["Seite"] = query_result[1]["Seite"]}
	t = t .. galleryEntry(query_result[1])
	for i = 2, 3 do
		query[1] =
			"[[SubObjektTyp::Funktion]]" ..
			"[[Funktion::" .. i .. ". Bürgermeister]][[Ehemals::falsch]]"
		query_result = mw.smw.ask(query)
		buergermeister[i] = { ["Seite"] = query_result[1]["Seite"]}
		query[1] =																-- Doppelfunktion Berufsmäßiges Stadtratsmitglied?
			"[[-has subobject::" .. query_result[1]["Seite"] .. "]]" ..
			"[[Funktion::Berufsmäßiges Stadtratsmitglied]][[Ehemals::falsch]]"
		local query_result2 = mw.smw.ask(query)
		if query_result2 ~= nil then
			query_result[1]["Funktion"] = query_result[1]["Funktion"] ..
				"<br>[[Berufsmäßiges Stadtratsmitglied]]"
		end
		t = t .. galleryEntry(query_result[1])
	end
	t = t .. "</gallery>\n"
	-- direkt gewählte Stadträte
	query[1] =
		"[[SubObjektTyp::Funktion]][[Funktion::Stadtrat]][[Ehemals::falsch]]"
	local stadtraete = mw.smw.ask(query)
	t = t .. "<gallery>\n"
	for _, s in ipairs(stadtraete) do
		s["Funktion"] = "[[Stadtrat (Funktion)|Stadtrat]]"
		local ist_ob = false
		for _, b in ipairs(buergermeister) do									-- Bürgermeister ausfiltern
			ist_ob = ist_ob or (s["Seite"] == b["Seite"])
		end
		if not ist_ob then
			query[1] =															-- Doppelfunktion Berufsmäßiges Stadtratsmitglied?
				"[[-has subobject::" .. s["Seite"] .. "]]" ..
				"[[Funktion::Berufsmäßiges Stadtratsmitglied]]" ..
				"[[Ehemals::falsch]]"
			query_result = mw.smw.ask(query)
			if query_result ~= nil then
				s["Funktion"] = s["Funktion"] ..
					"<br>[[Berufsmäßiges Stadtratsmitglied]]"
			end
			t = t .. galleryEntry(s)
		end
	end
	t = t .. "</gallery>\n"
	-- berufsmäßige Stadtratsmitglieder
	query[1] =
		"[[SubObjektTyp::Funktion]]" ..
		"[[Funktion::Berufsmäßiges Stadtratsmitglied]][[Ehemals::falsch]]"
	query_result = mw.smw.ask(query)
	t = t .. "<gallery>\n"
	for _, bs in ipairs(query_result) do
		local ist_ob = false
		for _, b in ipairs(buergermeister) do									-- Bürgermeister ausfiltern
			ist_ob = ist_ob or (bs["Seite"] == b["Seite"])
		end
		local ist_stadtrat = false
		for _, s in ipairs(stadtraete) do										-- Stadträte ausfiltern
			ist_stadtrat = ist_stadtrat or (bs["Seite"] == s["Seite"])
		end
		if not ist_ob and not ist_stadtrat then
			bs["Partei"] = nil
			t = t .. galleryEntry(bs)
		end
	end
	t = t .. "</gallery>\n"
	-- Geschäftsführer infra fürth
	query = {"[[Infra fürth holding]]", "?Geschäftsführer#"}
	query = mw.smw.ask(query)
	local geschaeftsfuehrer = query[1]["Geschäftsführer"]
	query = {"[[" .. geschaeftsfuehrer .. "]]", "?Bild#"}
	query = mw.smw.ask(query)
	query = query[1]
	query["Seite"] = geschaeftsfuehrer
	query["Funktion"] = "Geschäftsführer [[Infra fürth holding]]"
	t = t .. "<gallery>\n"
	t = t .. galleryEntry(query)
	t = t .. "</gallery>\n"
	t = frame:preprocess(t)
	return t
end

function galleryEntry(query)
	local t = ""
	local seite = query["Seite"]
	local bild = query["Bild"] or "Datei:IconPersonCanvas.jpg"
	local funktion = query["Funktion"]
	local bemerkung = query["FunktionBemerkung"]								-- Partei in optional in Bemerkung
	if not wik.pageExists(bemerkung) then										-- Wenn Seite ... nicht optimal, aber funzt erstmal
		bemerkung = nil
	end
	local partei = tab.toTable(bemerkung or query["Partei"] or {})
	for i, _ in ipairs(partei) do
		partei[i] = "[[" .. partei[i] .. "|" ..
			p.getKuerzel(partei[i]) .. "]]"
	end
	partei = table.concat(partei, ", ")
	t = t .. bild .. "|[[" .. seite .. "]]<br>" .. funktion .. "<br>" .. partei .. "\n"
	return t
end

return p