91³Ô¹ÏÍø

Watch CBS News

Georgia lawmakers, local leaders clash over election changes in House Bill 369

A bill that recently made its way through the Georgia legislature is drawing sharp criticism from metro Atlanta leaders and others across the state. House Bill 369—which could soon be signed into law by the Governor—stands to fundamentally alter how some local leaders are elected in five major counties.

If enacted, would require district attorneys, county commissioners, and tax commissioners in Fulton, DeKalb, and three other counties to run in nonpartisan elections. Supporters of the bill say the goal is to remove politics from the voting process. However, many lawmakers—especially Democrats—are denouncing the move, questioning its intent and fairness.

"This bill began as something entirely different and has been fundamentally changed through a Senate amendment that was never debated in the House," one lawmaker said. 

Political scientist Andra Gillespie explained, "This bill actually applies to areas that have consolidated their governments. These tend to be larger, more metropolitan counties."

DeKalb County CEO Lorraine Cochran-Johnson has publicly denounced the legislation and is raising questions about its scope. "If fairness and election integrity are truly the goal, why does this bill target five counties and not all 159 across the entire state of Georgia?" she asked.

Critics also point out that the bill could disproportionately impact offices currently held primarily by Black women. "And it is definitely, definitely racism at its fullest," said one local leader.

CBS News Atlanta reached out to the sponsors and other legislative leaders in both chambers. Some were unavailable for comment, while others have yet to respond. 

Senator John Albers, who represents parts of Fulton and Cobb counties, defended the bill, calling it "common sense legislation" that focuses on public safety over politics. "Any reference to a single position is not factual, as this impacts county commissioners, tax commissioners, solicitors, DAs, surveyors, etc. City elections are nonpartisan and I don't see complaints about that," Albers said.

Residents in affected counties have voiced concerns that the bill could create confusion at the ballot box, as many voters rely on party identifiers when voting. Experts warn this could lead to legal challenges if the bill is enacted. If signed into law, HB 369 would take effect in 2028.

The debate over HB 369 continues, with local leaders and communities waiting to see if the Governor will sign the bill and what the future of local elections in Georgia will look like.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=50747257b890e014813016b79ece0fb2'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });