Seite 1 von 1

Element in Liste ersetzen

Verfasst: Dienstag 8. August 2023, 17:10
von Pitwheazle
Das sieht ja zu bescheuert aus:

Code: Alles auswählen

if (kategorie.start_jg) <= (user.jg):
    zeile = (kategorie,(("rot",'-'),  (None,'-'),(None,'-'),(None,'-'),(None,'-'),(None,'-'),(None,'-'),(None,'-'),(None,'-')))
else:
    zeile = (kategorie,((False,'-'),  (None,'-'),(None,'-'),(None,'-'),(None,'-'),(None,'-'),(None,'-'),(None,'-'),(None,'-')))
... Tupel kann man ja nicht ändern, wie kann man das schöner machen?

Re: Element in Liste ersetzen

Verfasst: Dienstag 8. August 2023, 18:59
von pillmuncher
So?

Code: Alles auswählen

farbe = 'rot' if kategorie.start_jg <= user.jg else False
zeile = kategorie, ((farbe,'-'), *((None,'-'),) * 8)

Re: Element in Liste ersetzen

Verfasst: Dienstag 8. August 2023, 20:07
von Pitwheazle
Mann, mann, mann, da hätte ich mal wieder selbst drauf kommen können! Danke!

Re: Element in Liste ersetzen

Verfasst: Mittwoch 9. August 2023, 05:10
von Sirius3
Das Tuple im Tuple sieht eher aus wie eine Liste. Ein Wert sollte immer nur von einem Typ sein. Die Farbe ist aber mal ein String und mal ein Wahrheitswert. Warum? Für was wird diese Tupelstruktur gebraucht?

Re: Element in Liste ersetzen

Verfasst: Mittwoch 9. August 2023, 14:21
von Pitwheazle
Nun ja, ich erstelle damit eine Liste im Template "uebersicht". Dort wird die Arbeit an allen Aufgabenkategorien aufgezeigt und farbig markiert, was noch zu machen, besser zumachen ist und was gut klappt. Die Tupel sind in eine Liste eingebettet und das sieht etwa so aus:

Code: Alles auswählen

[(<Kategorie: addieren>, (('rot', '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'))),
...
(<Kategorie: bruch-und-kommazahl>, (('gruen', Decimal('63')), (None, 20), ('gelb', '24%'), (None, '2:35'), (None, 112.6), (None, '0/15'), (None, 0), (None, 0), (None, 0))), 
(<Kategorie: bruchrechnung>, (('rot', Decimal('0')), (None, 0), ('unset', '-%'), (None, '-'), (None, '-'), (None, '0/15'), (None, 0), (None, 0), (None, 0))), 
(<Kategorie: zuordnungen>, ((False, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'))), 
(<Kategorie: prozentrechnung>, ((False, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-')))]
und wird im Template hier ausgelesen:

Code: Alles auswählen

 ...
    {% for style, item in zeile %}
        <td class = "{{style}}">{{item}}</td>
    {% endfor %}...
... besser kann ich es mal wieder nicht. Ist da was gegen zu sagen?

Re: Element in Liste ersetzen

Verfasst: Mittwoch 9. August 2023, 15:41
von noisefloor
Hallo,

willst du das nicht besser als Dict implementieren? Im Moment ist da ja irgendein "Magie" hinter, die jedem Element / Index eine Kategorie zuordnet. Dict wäre explizieter.

Und da, wo die Farbe steht, hast du aktuell 3 1/2 Werte: einen String, None, False und 'unset'. Letzteres ist zwar auch ein String, aber hat vermutlich eine andere Bedeutung als "grün" oder "rot"? Das sollte man vermutlich mal mindestens auf eine Farbe oder None eindampfen.

Gruß, noisefloor

Re: Element in Liste ersetzen

Verfasst: Mittwoch 9. August 2023, 15:50
von __blackjack__
@noisefloor: "unset" ist ein gültiger Farbwert in CSS. Wobei hier ja eine CSS-Klasse gesetzt wird. Die zu aller Verwirrung noch an den Namen `style` gebunden wird.

Re: Element in Liste ersetzen

Verfasst: Mittwoch 9. August 2023, 15:51
von Pitwheazle
Ändern oder so lassen?