TG: Path components

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Nyx
User
Beiträge: 6
Registriert: Donnerstag 14. Juni 2007, 11:10

Dienstag 7. August 2007, 13:47

Hallo,

ich habe ne Anfängerfrage was die Pfad-Struktur in Turbogears betrifft:

Ich habe eine Seite auf der verschiedene Kostenarten aufgelistet werden. Auf dieser Seite kann man dann bestimmte einzelne Kostenarten anklicken und kommt auf eine Detailseite. Das funktioniert auch gut.

Zusätzlich kann man sich auf der Seite durch Anklicken einer Jahreszahl die Aufstellung für ein anderes Jahr ansehen.
Das Problem dabei ist: Ich wusste mir nicht anders zu helfen, als eine eigene Klasse Budgetuebersicht zu machen und ein eigenes Template (kostenarten_budget.kid), die jedoch auch nichts anderes machen als class Kostenarten und kostenarten.kid
Der einzige Unterschied ist, dass einmal ein Jahr übergeben wird und ein anderes Mal das aktuelle berechnet wird.

Für die Wartung der Seite ist das natürlich ein Horror.
Wie kann ich das in eine Klasse schreiben?

Grüße,
Roland.

Code: Alles auswählen

class Budgetuebersicht:
	@expose(template="fibu.templates.kostenarten_budget")
	def default(self, jahr):
		kostenarten = model.Kostenart.select(orderBy="nummer")
		#viele weitere Befehle ...
		return dict(kostenarten=kostenarten, jahr=jahr)
		
class Kostenarten:
	jahr=Budgetuebersicht()
	@expose(template="fibu.templates.kostenarten")
	def index(self):
		jetzt=datetime.now()
		jahr=str(jetzt.year)
		kostenarten = model.Kostenart.select(orderBy="nummer")
		#viele weitere Befehle ... identisch mit den obigen
		return dict(kostenarten=kostenarten, jahr=jahr)
	@expose(template="fibu.templates.kostenart")
	def default(self, kostenartID):
		try:
			kostenartID=int(kostenartID)
		except(ValueError):
			return "Ungueltige Kostenart-ID!"
		try:
			kostenart=model.Kostenart.get(kostenartID)
		except model.SQLObjectNotFound:
			return "Kostenart nicht gefunden!"
		else:
			jetzt=datetime.now()
			jahr=str(jetzt.year)
			rech = Berechnungen(kostenart.bestellungen, jahr)
			summe = rech.gesamtkostenliste(jahr)
			return dict(kostenart=kostenart, summe=summe)
Antworten