angle-uparrow-clockwisearrow-counterclockwisearrow-down-uparrow-leftatcalendarcard-listchatcheckenvelopefolderhouseinfo-circlepencilpeoplepersonperson-fillperson-plusphoneplusquestion-circlesearchtagtrashx

Reorganisieren, umstrukturieren, zu Inhaltselementen wechseln, Themen hinzufügen, weitere Sprachen hinzufügen

Nach dem Marathon bin ich Ringo Starr: Ich habe Blasen an meinen Fingern!

14 August 2019
post main image
unsplash.com/@creativegangsters

In diesem Beitrag geht es um die Bearbeitung von Code, viel Bearbeitung, viel Bearbeitung, viel Bearbeitung! Wenn Sie viel Funktionalität implementieren, bemerken Sie Dinge, die Aufmerksamkeit erfordern, Dinge, die Sie recherchieren müssen, wie machen andere das, was ist die Vielzahl bestimmter Wörter, etc. Ich unterhalte eine ToDo-Liste und jedes Mal, wenn ich etwas bemerkte, das Aufmerksamkeit erforderte, fügte ich es dieser Liste hinzu. Die Liste wurde zu groß, also beschloss ich, für einen Moment keinen Code mehr hinzuzufügen und zuerst viele dieser Probleme zu lösen. Ich wusste, dass ich viel bearbeiten musste.

Verschieben Sie Blaupausen in Blaupausen/Administratoren, wenn sie nur von einem Administrator verwendet werden.

Ich habe eine Struktur, in der alle Blaupausen auf der gleichen Ebene liegen, in einem Verzeichnis (überraschenderweise) namens "Blaupausen". Ich habe mich entschieden, alle Administrator-Blueprints in das Unterverzeichnis'blueprints/admin' zu verschieben. Ich musste dies auch für die Vorlagen tun, Administrator Blueprint-Vorlagen nach'templates/admin' verschieben. Viel Bearbeitung.

Von Blog- und Seitenmodellen zu Inhaltselementen wechseln

Das war ein großes Problem. Diese Website ist ein Blog, hat aber auch Seiten. Als ich anfing, habe ich Modelle BlogPost, BlogPostAuthor, BlogPostCategory, BlogPostTag definiert. Dann wollte ich meine Seiten auch in der Datenbank haben, also habe ich Seite, PageAuthor, PageCategory, PageTag definiert. Diese sind aber fast identisch mit dem BlogPost. Also weg damit! Ich habe beide nach ContentItem, ContentItemAuthor, ContentItemCategory, ContentItemTag verschoben. Das ContentItem hat ein Attribut content_item_type, das angibt, ob es sich um einen Blogbeitrag, eine Seite oder etwas anderes handelt. Ich habe das nicht erfunden, viele CMS und Blog-Software verwalten Inhalte auf diese Weise. Warum habe ich nicht schon früher daran gedacht? Ich tat es, aber ich versuchte nur, viele andere Dinge zum Laufen zu bringen. Wieder eine Menge Bearbeitung.

Ich benutze Alembic für SQLAlchemy Datenbank-Migrationen. Es ist ein wunderbares Programm, aber manchmal kann es einen in ernste Schwierigkeiten bringen. Dies war auch hier der Fall, wo ich Tabellen entfernen musste, die mit anderen Tabellen verknüpft waren. Alembic kehrte mit der Meldung zurück, dass es keine Fremdschlüssel entfernen konnte. Das Problem ist, dass Alembic in einem solchen Fall bereits viele Dinge getan hat, was bedeutet, dass Alembic nach dem manuellen Entfernen eines Fremdschlüssels in Mariadb anfing, sich zu beschweren, dass es bereits gelöschte Tabellen löschen wollte. Ich löste dies, indem ich die Versionsdatei bearbeitete und 'Upgrade Head' und 'Editieren und Wiederholen' erneut ausführte, bis schließlich keine Fehler mehr gefunden wurden. Dies ist in der Tat auch eine Warnung für alle, die Alembic benutzen wollen. Wenn Sie auf Probleme stoßen, dann können Sie diese oft nur lösen, wenn Sie ein sehr gutes Verständnis von SQL haben. Wie auch immer, eine Menge Bearbeitung.

Unterstützung für Themen hinzufügen

Diese Website ist sehr Standard Bootstrap. Es ist schön, einige Themen auszuprobieren und dazu müssen Sie so viel wie möglich aus anderen Stylesheets entfernen, damit ein neues Thema übernommen werden kann. Ich hatte eine style.css, die ich in default.css und custom.css aufteilte. Die erste, default.css, enthält die sehr spezifischen Änderungen gegenüber dem Standard Bootstrap-Thema, dies sind nur ein paar Zeilen. Diese Datei ist nur enthalten, wenn die Standarddatei bootstrap.min.css enthalten ist. Die zweite, custom.css, enthält nicht-farbige Styles für WTForms, etc. und muss immer enthalten sein. Es gibt viele Themen für Bootstrap, ich habe mich entschieden, Bootswatch Themen hinzuzufügen, sie werden mit einer MIT-Lizenz geliefert. Nachdem ich sie hinzugefügt habe, habe ich sie in der Navigationsleiste auswählbar gemacht. PROBIEREN SIE DAS SELBST AUS. Jetzt kann ich leicht überprüfen, ob ich vergessen habe, Stylingartikel zu entfernen. Übrigens, ich mag die standardmäßigen Bootstrap-Kopfzeilengrößen immer noch nicht. Außerdem kann ich nur sagen, dass es sich um eine Menge Editing handelte.

Weitere Sprachen hinzufügen

Eines Tages sollte ich weitere Sprachen hinzufügen und ich entschied, dass dies heute der Fall ist. Ich musste noch das Skript erweitern, das mit der DeepL-API kommuniziert. Wie auch immer, ich habe einige neue Sprachen hinzugefügt, maschinell übersetzt mit der DeepL API. Du kannst sie oben rechts auswählen. Diesmal nicht so viel Bearbeitung, aber es fühlte sich wie eine Menge Bearbeitung an.

Und dann war da noch.... ein Käfer.

Es gibt alle Zeitfehler in meinem Code, aber nach so viel Bearbeitung kommt eine Zeit, in der man etwas anderes machen will, wissen Programmierer. Es stellte sich heraus, dass beim Ändern einer Sprache der Sprachwahlschalter einen Wert aus der vorherigen Auswahl erhalten hat. Lustig..... NICHT. Ich habe das mehrsprachige Rezept von der Flask-Website implementiert und das Problem lag in dem Code, der die Sprache aus dem ersten Teil der URL öffnet. Ich habe nicht berücksichtigt, dass ein Sprachwechsel auch vom Besucher selbst vorgenommen werden kann, was durch eine Anfrage über die aktuelle URL mit der angehängten Sprache erfolgt. Ok, repariert. Genug Bearbeitung für heute.

Und dann gab es noch einen weiteren Bonus.....

Bevor ich alle Änderungen an der Produktion vorgenommen habe, dachte ich, ich schreibe einen Beitrag, diesen Beitrag, über meinen Editiermarathon. Alles in Ordnung, bis ich versuchte, diesem Beitrag ein Bild zuzuordnen. Was? Aber dann erinnerte ich mich, dass ich dies beim Bearbeiten der View-Datei übersprungen habe, nicht jetzt, wo ich dachte, dass ich das irgendwann später tun würde. Wenn man etwas mit Flask baut, kennt man den Bildschirm: Werkzeug debugger - Traceback (letzter Aufruf). Ich bin glücklich, mehr Bearbeitung im letzten Moment. Hey, kein Problem, ich werde es tun. Ich werde es bearbeiten.

Links / Impressum

Bootswatch: Free themes for Bootstrap
https://bootswatch.com

Einen Kommentar hinterlassen

Kommentieren Sie anonym oder melden Sie sich zum Kommentieren an.

Kommentare

Eine Antwort hinterlassen

Antworten Sie anonym oder melden Sie sich an, um zu antworten.