Mein erstes Python MINI Webprojekt

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Was fasziniert dich denn so sehr an whitespace? Hierfür sind definitiv Tabellen gedacht und die lassen doch wirklich ohne Problem an alle Browser gleich anpassen...
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

SchneiderWeisse hat geschrieben:Hierfür sind definitiv Tabellen gedacht und die lassen doch wirklich ohne Problem an alle Browser gleich anpassen...
Vor allem sollte man auf die Semantik achten - und Kalender passen hier wirklich rein intuitiv in Tabellen rein.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Übrigens definiert HTML 5 auch Kalender-Eingabetypen in Formularen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Es fuehren ja immer viele Wege nach Rom.
Und ich habe mir auch den HTMLCalendar angesehen, mit dem man in drei Zeilen und ein bisschen CSS das auch ordentlich hinbekommen kann.
Leider lassen sich die Feiertage in den Algorithmus von calender.py nicht so einfach integrieren. Also auf den ersten Blick schien das so.

In meiner codegolf Lösung war das einfach nur ein extra if-else und schon war ich fertig.
BTW: Da der Wettbewerb noch im Gange ist, habe ich auch den Code nicht eingestellt.

Die Argumentation mit den Spaces ist mir nicht logisch, da es auch so funtionieren muss. Und es geht ja, wie Pygments beweist. Pygments hat ja bis jetzt auch noch niemand in Frage gestellt.
Vermutlich haben auch einige, die IE benutzen oder andere Browser unter Windows, die Darstellung wie gewollt sehen können.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Pygments highlightet auch Quelltext der fast immer in Monospace gesetzt ist, daher passt das ja auch so (wobei "passt" jetzt nicht das richtige Wort ist, "ist ok so" triffts eher. Eine Tabelle wäre für die HTML-Ausgabe semantisch besser, aber das kombiniert sich schlecht mit <pre>.)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Leonidas hat geschrieben:Pygments highlightet auch Quelltext der fast immer in Monospace gesetzt ist, daher passt das ja auch so
Ich denke deine Argumentation ist nicht kausal. Die Formatierung ist ja nicht im Quelltext enthalten sondern ist lediglich eine Darstellungsfrage.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

hendrikS hat geschrieben:Ich denke deine Argumentation ist nicht kausal. Die Formatierung ist ja nicht im Quelltext enthalten sondern ist lediglich eine Darstellungsfrage.
Die Ausgaben von Pygments werden fast immer Monospaced dargestellt. Du hingegen stellst es nicht monospaced dar, daher passt die Ausrichtung nicht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

... dann habe ich Dich offenbar eben anders verstanden als Du es meintest.

Ein Update kommt doch bald.
tordmor
User
Beiträge: 100
Registriert: Donnerstag 20. November 2008, 10:29
Wohnort: Stuttgart

hendrikS hat geschrieben: Und ich habe mir auch den HTMLCalendar angesehen, mit dem man in drei Zeilen und ein bisschen CSS das auch ordentlich hinbekommen kann.
Leider lassen sich die Feiertage in den Algorithmus von calender.py nicht so einfach integrieren. Also auf den ersten Blick schien das so.
Try this one:

Code: Alles auswählen

from calendar import HTMLCalendar
from datetime import date

class MyCal(HTMLCalendar):
    def formatday(self, day, weekday, thedate):
        """
        Return a day as a table cell.
        """
        if day == 0:
            return '<td class="noday"> </td>' # day outside month
        else:
            year, month = thedate
            d = date(year, month, day)
            if not self.specialday(d):
                return '<td class="%s">%d</td>' % (self.cssclasses[weekday], day)
            else:
                return '<td class="%s">%d</td>' % ('specialday', day)


    def formatweek(self, theweek, thedate):
        """
        Return a complete week as a table row.
        """
        s = ''.join(self.formatday(d, wd, thedate) for (d, wd) in theweek)
        return '<tr>%s</tr>' % s

    def formatmonth(self, theyear, themonth, withyear=True):
        """
        Return a formatted month as a table.
        """
        v = []
        a = v.append
        a('<table border="0" cellpadding="0" cellspacing="0" class="month">')
        a('\n')
        a(self.formatmonthname(theyear, themonth, withyear=withyear))
        a('\n')
        a(self.formatweekheader())
        a('\n')
        for week in self.monthdays2calendar(theyear, themonth):
            a(self.formatweek(week, (theyear, themonth)))
            a('\n')
        a('</table>')
        a('\n')
        return ''.join(v)

http://www.felix-benner.com
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

tordmor hat geschrieben:

Code: Alles auswählen

        v = []
        a = v.append
        a('<table border="0" cellpadding="0" cellspacing="0" class="month">')
        a('\n')
        a(self.formatmonthname(theyear, themonth, withyear=withyear))
        ...
Hallo!

Genau so -- würde ich es nicht programmieren!
Solcher Code wird sehr schnell sehr unübersichtlich. Einfacher wird es, wenn man für das Zusammensetzen von HTML-Seiten eine Vorlagensprache verwendet. Jinja, Genshi, oder Cheetah --- egal was du nimmst, aber versuche nicht HTML mit Python zusammenzusetzen. Die Fehlersuche wird bei solchem Code zur Hölle. Aber OK, jeder wie er mag.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

gerold hat geschrieben:Genau so -- würde ich es nicht programmieren!
Solcher Code wird sehr schnell sehr unübersichtlich. Einfacher wird es, wenn man für das Zusammensetzen von HTML-Seiten eine Vorlagensprache verwendet. Jinja, Genshi, oder Cheetah --- egal was du nimmst, aber versuche nicht HTML mit Python zusammenzusetzen. Die Fehlersuche wird bei solchem Code zur Hölle.
Nicht nur das, aber man sollte dann auch darauf achten Sachen selbst zu escapen sonst hat man prompt eine XSS-Lücke. Templatesprachen beherrschen teilweise sogar Autoescaping, so dass jeder Code erstmal als "gefährlich" angesehen wird und dann als "safe" markiert werden muss. Meiner Meinung nach ist das eigentlich eine gute Idee, denn ich escape lieber "sichere" Eingaben als alle unsicheren Eingaben zu escapen, was zu größeren Problemen führen kann.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Ich habe die Formatierung des Kalenders jetzt mal korigiert. Getestet habe ich das ganze mit http://www.browsershots.org. War sehr hilfreich. Lediglich der Konqueror weigert sich noch das ganze monospaced darzustellen. Hier scheint es aber ein Browserproblem zu sein. Auch Pygments generierte Seiten kommen schlecht rüber im Konquerer. Es werden im Web auch jede Menge Bugs von Konqueror im Zusammenhang mit <PRE> reported.

Kurzes Feedback noch mal wäre vielleicht nicht schlecht.

Nichts desto trotz werde ich jetzt noch eine weitere Version erstellen, die eine Tabellendarstellung verwendet. Die Idee einfach von HTMLCalender abzuleiten ist eigentlich nicht schlecht. Sonst ist es natürlich auch eine gute Gelegenheit mal Jinja oder Cheetah kennenzulernen.

Ich werde den Kalender demnächst permanent in meine kommende Webseite integrieren und auch noch ein bisschen erweitern wie schon im Root Posting beschrieben. Werde sicher hier mal informieren, wenn noch das ein oder andere Feature dazugekommen ist.

Sonst danke allen für das Feedback. Ich hätte es sonst vielleicht gar nicht gemerkt, daß es mit einigen Browsern ziemlich güllig aussieht.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

hendrikS hat geschrieben:Kurzes Feedback noch mal wäre vielleicht nicht schlecht.
Also für das <FONT>-Element würden dich Web-Designer wohl lynchen ;)

<PRE> ist übrigens im Standard-Style schon monospaced, da muss man nicht zusätzlich monospace anwenden. Für sowas ist Firebug ziemlich toll weil man da mit einem Klick CSS-Eigenschaften ein und ausschalten kann sowie diese auch verändern kann.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Leonidas hat geschrieben: Also für das <FONT>-Element würden dich Web-Designer wohl lynchen ;)
Damit könnte ich im Zweifel leben. :) Aber was ist daran eigentlich falsch oder nicht Web-Designer konform? Ich bin im Web noch Anfänger.
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

hendrikS hat geschrieben:
Leonidas hat geschrieben: Also für das <FONT>-Element würden dich Web-Designer wohl lynchen ;)
Damit könnte ich im Zweifel leben. :) Aber was ist daran eigentlich falsch oder nicht Web-Designer konform? Ich bin im Web noch Anfänger.
Ist wie ein komplettes Layout basierend auf Tabellen machen - einfach veraltet. Die ganze Conten von Präsentation trennen ist auch HTML nicht spurlos vorbeigezogen... Man verwendet heute meistens Container im Zusammenhang mit CSS für das komplette Design.

http://www.csszengarden.com/

Die Seite zeigt was's möglich macht. Eigentlich wird nur die CSS geändert und es sind unendlich viele Designgs möglich...
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

BlackVivi hat geschrieben: http://www.csszengarden.com/
Beeindruckend. Danke für den Tip.
tordmor
User
Beiträge: 100
Registriert: Donnerstag 20. November 2008, 10:29
Wohnort: Stuttgart

gerold hat geschrieben: Genau so -- würde ich es nicht programmieren!
Solcher Code wird sehr schnell sehr unübersichtlich. Einfacher wird es, wenn man für das Zusammensetzen von HTML-Seiten eine Vorlagensprache verwendet. Jinja, Genshi, oder Cheetah --- egal was du nimmst, aber versuche nicht HTML mit Python zusammenzusetzen. Die Fehlersuche wird bei solchem Code zur Hölle. Aber OK, jeder wie er mag.

mfg
Gerold
:-)
Öhm, der Code ist aus der standardlib kopiert (calendar.py). Ich hab nur die Übergabe des Datums an format_day hinzugefügt. Ansonsten stimme ich dir zu :)
http://www.felix-benner.com
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

tordmor hat geschrieben:Öhm, der Code ist aus der standardlib kopiert (calendar.py).
Hallo tordmor!

Dass die für die Standardlib keine externe Vorlagensprache einbinden, sehe ich ein. :-)

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten