Case-Study

Ivan Hörler und Andreas Zweili

Created: 2018-03-15 Don 20:15

Ausgangslage

  • Webshop erstellen
  • Währungsumrechnung CHF zu …
  • Freie Software in Bezug auf Open-Source Code.

Vision

Die Vision wurde anhand eines Mindmaps erstmals grob umfasst:

webshop.png

Vision - Artikel

Vision-Artikel.png

Vision - Warenkorb

Vision-Warenkorb.png

Varianten

ASP.NET (C#) und SQL Server

csharp.png

Laravel (PHP) und MySQL

laravel.png

Django und MariaDB

django.png

Kriterien

  • Freie Software
  • Cross Plattform nutzbar
  • Lesbarkeit des Codes
  • Einfachheit des Setups
  • Ohne spezielle Tools nutzbar
  • Vorkenntnisse und Lernfaktor

Vergleich

Variante Erreichte Punktzahl von 235
ASP.NET und SQL Server 141
Laravel und MySQL 161
Django und MariaDB 196

Kosten

Tools

  • Ausgaben während der Case-Study: 0.00 CHF
  • 100% freie Software
  • „Let’s Encrypt“ für SSL
  • „freenom.com“ für Domain

Laravel Webshop

Sprache Codezeilen
PHP 8679
Total 8679

Django Webshop

Sprache Codezeilen
Python 1460
SQL 4639
Total 6099

Vorgehen

Currencies - App

  • Wurde in Django als eigenen App entwickelt und sollte daher problemlos in andere Applikationen eingebunden werden können.
  • Die Quelle der Währungen ist die Schweizerische Nationalbank mit der URL:

https://www.snb.ch

https://www.snb.ch/selector/de/mmr/exfeed/rss

currencies-rss-reader.png

Currencies - Quelle

currencies-rss-xml.png

Currencies - Parsing

  • Das Konvertieren des XML’s wurde mit Python eigener Module gemacht.
  • für das Herunterladen des XML’s wurde das Modul ’urllib’ verwendet (1)
  • für das Parsen über die einzelnen items/nodes das Modul xml.etree.ElementTree. (2)

(1) https://docs.python.org/2/library/urllib.html

(2) https://docs.python.org/2/library/xml.etree.elementtree.html

Currencies - Ablauf

currencies.png

Infrastruktur

Server-Architecture.png

Programmierung

form.png
amount_form = CartForm(
    initial={'amount_form': cart_position.amount}
)

Fazit

  • Trotz Model View Controll, SQL unerlässlich.
  • Vagrant (up, suspend, provision, destroy)
  • Git, Python/Django, JS brauchts trotzdem.

Besten Dank für die Aufmerksahmkeit.

Ivan & Andreas