Giter Site home page Giter Site logo

demostat / demostat Goto Github PK

View Code? Open in Web Editor NEW
10.0 6.0 4.0 1.54 MB

Statusseite für als nächstes anstehende Demonstrationen.

Home Page: https://demostat.de

License: Other

Python 31.97% CSS 29.53% JavaScript 0.26% HTML 38.24%
django django-project demonstration democracy

demostat's Introduction

Demostat

Statusseite für als nächstes anstehende Demonstrationen in Erfurt.

Die Software steckt noch in der tiefsten Anfangsphase und ist extrem unvollständig! (Das hält hier aber keinen davon ab, sie trotzdem zu nutzen :P)

Screenshot Demo Detail

Wie, gestern war wieder eine Demo? Warum weiß ich davon nix?

Leider ist diese Frage hier viel zu oft vorgekommen. Das wollen wir ändern und habe diese Website geschaffen. Auf einem Blick alle Demos der nächsten vier Wochen. Dazu gleich eine Übersichtskarte, wo sich getroffen wird und Links zu offiziellen Aufrufen, Livetickern und anderweitiges Material.

Findet die Demo erst in weiter Zukunft statt oder ist schon lange vorbei? Dann lohnt sich ein Blick in das Archiv. Sortiert nach Jahr, Monat und Tag und (blad) filterbar.

Wer steckt hinter der Demo? Auch das lässt sich ganz einfach herausfinden. Zu jeder Organisation gibt es eine kleine Zusammenfassung mit Links zur Homepage.

Inhalte

Startseite

Alle Demos der nächsten vier Wochen aufgelistet nach Datum.

Archiv

Alle Demos, die eingetragen wurden, sortiert nach Jahr, Monat und Tag.

Demo

Jeder Demo wir ein Ort und eine Organisation zugeordnet. Neben Name und kurzer Beschreibung ist noch eine Linkliste vorhanden, bei der z.B. auf den offiziellen Aufruf oder Social-Media Kanäle verwiesen werden können.

Organisation

Jede Organisation hat einen Namen, eine kurze Beschreibung und einen Link zur Homepage.

Dokumentation & Installation

https://docs.demostat.de

Selber bauen

pip3 install sphinx
cd docs/
make html

Die fertigen HTML sind dann unter docs/_build/html/ verfügbar.

Lizenz

Diese Software hat noch keine Lizenz. Das bedeutet, dass das deutsche Urherberrecht gilt.

Wir arbeiten fleißig daran, dass schnellstmöglich eine passende Lizenz gefunden und diese Projekt darunter veröffentlicht wird.

demostat's People

Contributors

clerie avatar frommmoritz avatar jugendhacker avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

demostat's Issues

Dictsort is not tiemzone aware -- Demos from next day are l�isted for today

In demostat/templates/demostat/components/demo_card_list.html demos are grouped by the dates of their day using this function:

{% regroup demo_list|dictsort:"date" by day as demo_list_date %}

But however, since django uses UTC time internally the sorting by day does not appear to be timezone aware. I have created demonstrations for 2021-01-01T00:00:00+01:00, 2021-01-01T00:30:00+01:00 and 2021-01-01T01:00:00+01:00. As you can see in the screenshot, the first two are grouped for today and only the third one (also being on 2021-01-01 in UTC) is being shown for the next day.

Screenshot_2020-12-31 Anstehende Demos Demostat(1)

This is not a huge deal since not many demonstrations start before 01:00:00 (winter) or 02:00:00 (summer), therefore I would not prioritize it.

Reverse Fehler again

Reverse for 'demos_month' with arguments '('', '')' not found. 1 pattern(s) tried: ['demo/(?P<date__year>[0-9]{4})/(?P<date__month>[0-9]{2})/$']

At the home path /

Error Pages

Aktuell wird lediglich eine unschöne Standart Fehlerseite geworfen.
Hier könnte text mit der Bitte die URL zu Überprüfen und link zum Archiv eingefügt werden.

localtime() cannot be applied to a naive datetime

Wenn ich die Migrations aus dem aktuellen dev Branch (3f89cae) auf einer bestehenden Datenbank ausführe wird der Fehler localtime() cannot be applied to a naive datetime geworfen

Error during template rendering

In template /home/user/Documents/demostat/fork/page/demostat/templates/demostat/components/demo_card_list.html, error at line 2

localtime() cannot be applied to a naive datetime


1 | {% if demo_list %}
2 | {% regroup demo_list\|dictsort:"date" by day as demo_list_date %}

Python Version: 3.6.7
Datenbank Version: 10.1.38-MariaDB-0ubuntu0.18.04.1 - Ubuntu 18.04

Wir müssen unbedingt darauf achten dass neue Versionen mit bestehenden Datasets funktionieren!

Organisation-View verschönern

Die Übersichtsseite muss dringend überarbeitet werden. Nicht nur, dass bestimmte Details nicht angezeigt werden, sondern auch, dass die angezeigten Demos ungefiltert sind und demnacht auch viel zu viele angezeigt werden können

Reverse Fehler

Wenn ich eine Demo mit dem Slug test aufrufe via /d/1/ erhalte ich diesen Fehler:
Reverse for 'demo' with arguments '('test',)' not found. 1 pattern(s) tried: ['demo/(?P<date__year>[0-9]{4})/(?P<date__month>[0-9]{2})/(?P<date__day>[0-9]{2})/(?P<slug>[\\w-]+)/$']

Ich vermute mal da fehlen auf Zeile 53 in der views.py von demostatapp irgendwie Argumente

Konfiguration der Inhalte

Wär schön, wenn man sowas wie den Seitentitel usw. konfigurieren könnte.

Zwei Möglichkeiten:

  • Über settings.py als globale Varaible
  • Per Template

Sollen da dann auch Impressum usw rein?

Was sollen die Default Werte sein?

Container

Ich bin gerade dabei einen OCI image für demostat vorzubereiten. Aus der Dokumentation werde ich allerdings nicht ganz schlau. Dort wird das ganze ja über pip als Abhängigkeit installiert, was mir das Gefühl gibt, das demostat als Framework angesehen wird? Weil zum Starten des Server muss dies in eine eigene Ordnerstruktur eingebunden werden. Wäre es okay dies in dem Image direkt zu benutzen und nicht eingebunden in eine andere django-struktur? Wenn ja würde ich Scripts vorbereiten die in diesem repo sitzen um das Image direkt starten zu können, ohne vorher ein eigenes django-projekt zu erstellen. Dadurch würde das Image die gleiche Version haben wie das was ihr auf pip hochladet.

Karte sehr mächtig auf Detailseite

Die Karte, welche durchaus relevant ist, ist sehr prominent eingebunden. Auf Mobilgeräten stellt dies eher kein Problem dar, so nimmt diese, wenn der Bildschirm das 16:9 Format hat, fast die gesamte Seite ein. Hier könnte ein Grid eingesetzt werden, wie Bootstrap es mitbringt.

image

Öffentliche API

Auch wenn dies für die Endnutzer nicht wirklich relevant ist, wäre eine read-only API sinnvoll. JSON scheint hierfür angemessen. Darüber sollten demos, locations und organisationen abgerufen werden können. Die Filter welche bereits auf der Seite vorhanden sind wie nach tags sollten hierzu erweitert werden. Teilweise könnte die Implementation dieses features mit #62 Hand in Hand gehen

Sollte diese API 100% öffentlich seien oder durch ein token system geschützt seien, anhand welcher auch rate limiting betrieben werden könnte?

Script für Beispieldaten

Um mal eben eine Version testen zukönnen, wär es super ein Script zu haben, dass die Datenbank mal eben mit ein paar Test-Daten füllen kann.

OSM Karte über Cache Proxy

Um die Last auf die OSM Server zu reduzieren sollten die OSM Karte auf Applikationsseite gecached werden.

https://wiki.openstreetmap.org/wiki/Tile_proxy

Die Frage: ein/mehrere Zentrale(r) Caching wie z.b. tiles.demostat.de welche für alle Installationen genutzt werden kann -> schlecht weil Zentralisiert, gut weil komplett unabhängige Software eingesetzt werden kann
Applikationsseitig etwas wie /osmproxy/ welche das in Dateien cachet und bei bedarf Webserver seitig ebenfalls nochmal zusätzlich mit einem cache versehen werden kann -> schlecht weil in der Software relativ eingeschränkt, gut weil wäre teil der Applikation

Lizenz

Ich denke dieses Projekt sollte dringend eine Lizenz bekommen damit niemand den Code klauen kann.

Logo

Um dieses Projekt besser in den Köpfen der Leute behalten zu können ist ein Logo sinnvoll. Dieses könnte an folgenden Stellen eingesetzt werden:

  • favicon (ggf. extra, kleineres, Logo)
  • GitHub
  • Auf der Seite
    • in der Titelbar
    • im Footer

Demo hervorheben

Demos sollen vorgehoben werden können
Dadurch werden sie groß auf der Startseite angezeigt und sollen Besucher auf betimmte Ereignisse hinweisen

ActvityPub Anbindung

Ich habe in letzter Zeit ein wenig nachgedacht und mir sind folgende Usecases eingefallen:

  • Neue Demos könnten leicht im Fediverse verbreitet werden
  • Wenn es einen Liveticker irgendwann eigebaut geben sollte könnte dieser via eigenem Account im Fediverse sein
  • Instanz B könnte durch folgen eine Demo von Instanz A auch bei sich mit aufnehmen ohne die Infos manuell übertragen zu müssen

Ich würde mich evtl nach meinen Prüfungen (also erst im Juni oder so) daran versuchen diese Features zu implementieren... was sagt ihr dazu?

Leaflet Map

Statt dem aktuellen OSM Frame, wär es gut, gleich eine Leaflet Map einzubinden.
Das würde auch die Implementierung von #54 wesentlich vereinfachen.

https://leafletjs.com/

Demobanner einbinden

Im Zusammenhang mit #24 werden so oder so Grafiken benötigt.

Gibt es eine hübsche Möglichkeit Grafiken auf der Demo-Seite usw. anzuzeigen?

Markdown Support für Anmerkungen

Der Markdownsupport bei Anmerkungen sollte überarbeitet werden.
Der Dokumentenstruktur würde es zugute kommen, dass alle Elemente rein in CSS dargestellt werden. Als statt <h1> nun <p class="h1"> oder <span class="h1">. Zu dem sollte das CSS noch so weit angepasst werden, dass es sich gut in das Dokumentendesign einfügt.

Bild von Karte für Noscript user generrieren

Aktuell können Benutzer welche JavaScipt deaktivert haben nicht sehen wo eine Demonstration stattfindet. Dafür könnte ein Bild generiert werden, welches den entsprechenden Kartenausschnitt zeigt.

?: (mysql.W002) MySQL Strict Mode is not set for database connection 'default'

Wenn python3 manage.py migrate ausgeführt wird und MySQL wie in der README.me konfiguriert werde kommt folgende Warnung:

?: (mysql.W002) MySQL Strict Mode is not set for database connection 'default'
	HINT: MySQL's Strict Mode fixes many data integrity problems in MySQL, such as data truncation upon insertion, by escalating warnings into errors. It is strongly recommended you activate it. See: https://docs.djangoproject.com/en/2.1/ref/databases/#mysql-sql-mode

Es kann seien dass dies erst mit #34 dazu kam, muss noch näher untersucht werden und ggf. die README.md in der live Sektion entsprechend angepasst werden.

Die Migrations werden jedoch problemlos ausgeführt!

Filter für Tags

Irgendwo müssen Ergebnisse gefiltert nach Tags erscheinen. Vll. in den Monatsansichten und dann mit GET-Query '?tag=umwelt`?

float() argument must be a string or a number, not 'NoneType'

Exception Type: TypeError
Exception Value: float() argument must be a string or a number, not 'NoneType'
Exception Location: demostat/models.py in marker_lat, line 22
Python Version: 3.5.3

Error during template rendering
demostat/templates/demostat/base.html, error at line 0
float() argument must be a string or a number, not 'NoneType'

Dieser Fehler tritt auf wenn eine Demo angezeigt wird, wo die Location keine Koordinaten hat.

Hinzufügen eines click overlays für Karte

Wenn über die Seite, sowohl Mobil als auch Großer Screen, gescrollt wir wird die Karte automatisch fokussiert und entsprechend auf dieser gezoomt.
In diesem Fall könnte ein kleines overlay welches vor der Karte liegt und erst bei dem 1. Klick verschwindet unerwünschte Interaktionen blockieren.

Könnte irgendwie so aussehen (alles untested):

$('.clickoverlay').on('click', function () {
    $(this).remove();
});

der entsprechende Style dazu:

.clickoverlay  {
    z-index: 9999999 !important;
    width: 101%;
    height: 101%;
    color: rgba(0, 0, 0, 0);
    background-color: rgba(0, 0, 0, 0);

    /* https://stackoverflow.com/a/5703632 */
    position: relative;
    top: 50%;
    transform: translateY(-50%); 
}

.clickoverlay:hover {
    color: white;
    background-color: rgba(0, 0, 0, 0.5);
}

Template Monatsansicht

  • Aktueller Monat
  • Pagination zum folgenden und vorhergehenden Monat
  • Anzahl der Demos im Monat
  • Anzeige der Demos pro Tag

Text Formatierung für Anmerkungen

Es wär schön, wenn man in den Anmerkungen Mardown verwenden könnte.
Statt der standartmäßigen HTML Tags, sollten jedoch eher einfach nur CSS Beschreibungen die Darstellung übernehmen. Dafür hat Bootstrap auch passende Klassen schon vorbereitet:

Statt <h1> --> <span class="h1">

Seitentitel stimmt nicht mit titel tag überein

Der html title Tag lautet: Anstehende Demos | Demostat
Der h1 auf der Startseite lautet hingegen: Demos in Erfurt

Der Seitentitel könnte wie folgt lauten:
<seiten Name> | Demos in xxx - Demostat

Admin Oberfläche optimieren

Gebt den Admins Komfort!

  • Links direkt auf der Demoseite editierbar
  • Alle Formulare mit Beschriftungen versehen

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.