3. hrcli shell

Mit hrlci shell erhält man man eine interaktive iypthon shell

# hrcli shell
Python 3.6.0 (default, Mar  3 2017, 23:25:37)
Type "copyright", "credits" or "license" for more information.

IPython 5.3.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

   wsgi ...... Application Instance
   db ....... db Instance
   models ... wsgi.models  (auch als import * importiert)
   qa ....... wsgi.qa      (auch als import * importiert)
   mandate... wsgi.mandate (auch als import * importiert)

In [1]:

Hier kann man interaktiv Abfragen etc erstellen.

3.1. Alle Wahlen anzeigen

In [2]: Wahl.query.all()
Out[2]:
[<Wahl 1: NRW 2008>,
<Wahl 2: EU 2009>,
<Wahl 3: BPW 2010>,
<Wahl 4: LTW STMK 2010>,
<Wahl 5: NRW 2013>,
<Wahl 6: EU 2014>,
<Wahl 11: LTW OOE 2009>,
<Wahl 12: LTW OOE 2015>,
<Wahl 15: BPW2016 [alt]>,
<Wahl 16: BPW2016>,
<Wahl 21: BPW2016 Stich1 - 22.5.16>,
<Wahl 22: BPW2016 Stich WH - 4.12.16>]

3.2. Eine Wahl mit einer bestimmten id (ID == Primary Key) holen

In [8]: w = Wahl.query.get(1)
In [9]: w
Out[9]: <Wahl 1: NRW 2008>

In der ipython shell wir bei Eingabe einer Variable, hier w die Magic Methode __repr__ des Objekts aufgerufen, wie hier für wsgi.models.Wahl.__repr__.

def __repr__(self):
    """
    Attention: Uses Python 3.6 format string
    """
    return f"<Wahl {self.id}: {self.bez}>"

3.3. Autovervollständigen mit TAB

Mit TAB kann man wie in der Shell autovervollständigen.

In [3]: w.<TAB>
w.anz_parteien               w.bezl                       w.delete_meta                w.gemeindeergebnisse
w.berechne_wahlkarten        w.bl                         w.discriminator              w.get_ergpos_for_liste
w.berechne_wahlkarten_for_bl w.clear_erg                  w.eingabelisten              w.get_listen_for_bl
w.bez                        w.datum                      w.ergdict                    w.id

3.4. Methodendoc mit ? anzeigen lassen

Mit ? kann man sich für Methoden oder Funktionen den Docstring anzeigen lassen.

In [3]: w.clear_erg?
Signature: w.clear_erg(commit=True)
Docstring:
Setzt bei allen Gemeindeergebnissen der Wahl ABG, GIG, PXX auf 0. Die WAB bleiben erhalten. Ruft dafür für jedes
Gemeindeergebnise :py:method:`GemeindeErgebnis.clear_erg` auf.
:param commit: Soll automatisch ein db.session.commit() erfolgen?
:return:
File:      /opt/hr/wsgi/models.py
Type:      method