Element in Liste ersetzen

Django, Flask, Bottle, WSGI, CGI…
Antworten
Pitwheazle
User
Beiträge: 909
Registriert: Sonntag 19. September 2021, 09:40

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?
Benutzeravatar
pillmuncher
User
Beiträge: 1488
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

So?

Code: Alles auswählen

farbe = 'rot' if kategorie.start_jg <= user.jg else False
zeile = kategorie, ((farbe,'-'), *((None,'-'),) * 8)
In specifications, Murphy's Law supersedes Ohm's.
Pitwheazle
User
Beiträge: 909
Registriert: Sonntag 19. September 2021, 09:40

Mann, mann, mann, da hätte ich mal wieder selbst drauf kommen können! Danke!
Sirius3
User
Beiträge: 17826
Registriert: Sonntag 21. Oktober 2012, 17:20

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?
Pitwheazle
User
Beiträge: 909
Registriert: Sonntag 19. September 2021, 09:40

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?
Benutzeravatar
noisefloor
User
Beiträge: 3882
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
Benutzeravatar
__blackjack__
User
Beiträge: 13241
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
Antworten