Giter Club home page Giter Club logo

ephios's Introduction

tests Documentation Status PyPI Coverage Status translated by Weblate

ephios

ephios is a tool to manage shifts for medical services. Planners can create events for which volunteer help is required (e.g. security/medical services, beach patrols, exercises). An event can contain multiple shifts for which different processes can be applied for signup (e.g. a direct confirmation for an event or an "application" that has to be accepted first). The volunteers can register for the respective shifts via a clearly arranged web interface. The planners can then assign personnel and have an overview of the current status. Around this central feature there are further supporting functions like the management of the volunteers and their qualifications or an overview of the volunteer hours worked. A flexible group systems helps to support complex permission szenarios. The functionality can be extended using plugins.

Documentation

You can find the documentation for ephios at Read the Docs. This includes the user guide and installation instructions.

Contributing

Contributions to ephios are very welcome. You can find information about contributing at our Contribution page We are using Weblate for translations, you can also contribute there.

ephios's People

Contributors

benbals avatar dependabot-preview[bot] avatar dependabot[bot] avatar felixrindt avatar gritfessel avatar jeriox avatar olewun avatar strawberriesandcheese avatar weblate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

ephios's Issues

Manage qualification grants for user

As a Manager I want to manage qualification grants while creating or editing a user. I expect the page to have formset with forms for qualification grants. The formset is pre-populated with the existing grants for that user (if editing a user) with the option to delete each grant. I also want to have a button to enter a new grant. I expect that this adds a new form to the formset where I can enter the desired qualification and the expiration date.

Hint: have a look at pretix, they use a jquery library to manage the client-side stuff of the formsets (adding a new form, deleting)

ICS Export

Als Nutzer möchte ich einen Export der Termine als ICS-Datei angeboten bekommen. Dabei gibt es getrennte Exports für meine Termine (im Status confirmed) und für alle Termine. Die Links und Erläuterungen zum Einbinden sollen in meinen Einstellungen zu finden sein.

Übersetzungen

Als Nutzer der Plattform erwarte ich, Texte in meiner Sprache angezeigt zu bekommen.

AC:

  • alle bisher eingeführten Strings werden übersetzt (siehe Django translation framework)

Bearbeiten der Schichtkonfiguration

Beim Anlegen und Bearbeiten von Events möchte ich als Veranwortlicher zu jeder Schicht die Schichtkonfiguration bearbeiten können. Dazu sollte das Einteilungsverfahren Angaben machen können, was konfiguriert werden soll.

Für Schicht absagen

Als Helfer möchte ich mitteilen können, dass ich für eine bestimmte Schicht keine Zeit habe. Dafür möchte ich auf der Detailseite eines Events für jede Schicht neben dem Register-Button auch einen Absagen-Button haben. Drücke ich diesen, wird eine Participation mit dem Status rejected angelegt.

Benutzer bearbeiten

Als Manager möchte ich einen Nutzer bearbeiten. Dabei möchte ich die selben Optionen haben wie beim Anlegen des Nutzers. In der Liste der Nutzer soll es für jeden Nutzer eine entsprechende Schaltfläche geben. Der Nutzer soll über Änderungen per Mail informiert werden.

Qualifikationen verwalten

Als Administrator möchte ich die verfügbaren Qualifikationen verwalten. Dies kann vorerst über das Django Admin-Interface geschehen. Dafür erwarte ich, dass es entsprechende Models gibt und diese bei Django Admin registriert sind.

Qualifikationen

Helfer haben Qualifikationen in verschiedenen Tracks, z.B. medizinisch, Führerschein, Bootsführerschein, Einweisungen in Geräte/Fahrzeuge, Führungsqualifikation, Fachqualifikation...

Qualifikationen können andere beinhalten. Das Beinhalten ist dann transitiv. Jeder NotSan kann als RettSan eingesetzt werden. Jeder RettSan als SanH und damit jeder NotSan als SanH. Jeder mit Führerschein C darf was fahren, wo er B braucht, usw...

Wichtige Frage: Muss eine Quali mehrere Vorgänger haben können oder reicht einer?

Event löschen

Als Planer möchte ich ein Event einer Gruppe, für die ich Berechtigungen habe, löschen können. Dabei sollen alle Shifts, Participations etc. ebenfalls gelöscht werden. Das View existiert schon, es fehlen nur die entsprechenden Buttons

Button save event/shift in create shift view

Currently, the button for saving a newly created shift is labeled with Save event because a shift is needed when you create a new event. When the event is active already it should be Save shift.

Show other groups that are allowed to view the event

Als Planer möchte ich beim Bearbeiten eines Events unterhalb des Feldes für die Sichtbarkeit eine Liste der Gruppen sehen, für die das Event außerdem sichtbar ist. Dies sind Gruppen, die die view_event-Permission für dieses Event haben, aber für die ich nicht die publish_event_for_group-Permission habe.

Event ansehen

hängt ab von #11

Als Helfer möchte ich die Details eines Events sehen. Dabei möchte ich (sofern verfügbar) alle Abteilungen und deren Positionen sowie die bisher zugeteilten Helfer sehen. Wenn das Event nur eine Schicht hat, möchte ich eine andere Ansicht haben, in der das Vorhandensein von Schichten nicht erwähnt wird.

Kalender-URL schöner anzeigen

Als Nutzer möchte ich auf meiner Profilseite ein read-only-Feld sehen, in dem die URL zu meinem Kalender-Feed steht. Der Link soll nicht klickbar sein, damit die ics-Datei nicht heruntergeladen wird. Neben dem Link soll ein Button zum Kopieren der URL vorhanden sein.

Event bearbeiten

Als Verantwortlicher eines Events möchte ich das Event bearbeiten können. Dabei möchte ich die selben Optionen zur Verfügung haben wie bei der Erstellung des Events (#7)

Publish package

  • choose license
  • fill out necessary infos in pyproject.toml (author?)
  • #96 rebranding
  • create GitHub organization and move repo
  • maybe remove some models from django-admin?
  • translate everything
  • squash migrations
  • test publishing to pypi and installation
  • document installation process
  • publish to actual PyPI

Benutzer anlegen

Als Manager möchte ich einen neuen Nutzer mit allen erforderlichen Informationen anlegen. Eine enstprechende Schaltfläche auf der Liste der Benutzer führt mich zu einem entsprechenden View.

Liste der Benutzer ansehen

Als Manager möchte ich die Liste der Nutzer sehen, dafür soll es einen entsprechenden Menüpunkt geben.

select2 einbinden

Als Nutzer der Seite möchte ich übersichtliche select-Inputs nutzen. Dafür soll select2 zum Einsatz kommen.

Improve static file management

Currently all external JS and CSS files are loaded from CDNs. We should discuss whether we want to serve those files locally and how we want to manage the versions of these files (e.g. with yarn)

EV Instant Confirmation - Konfiguration

Als Planer möchte ich für das Einteilungsverfahren Instant Confirmation eine Mindestqualifikation und eine Maximalanzahl an Helfern konfigurieren können. Diese Werte werden vor der Anmeldung zu einer Schicht geprüft.

Nutzer löschen

Als Manager möchte ich einen Nutzer löschen können. Dafür soll es in der Liste der Nutzer sowie auf der Bearbeitungsseite eines Nutzers eine entsprechende Schaltfläche geben.

EV "Einteilung auf Positionen" - Anmeldung

hängt ab von #11

Als Helfer möchte ich mich für eine Schicht mit diesem EV anmelden. Nach dem Anklicken des Signup-Buttons auf der Eventseite erwarte ich, ein Formular zu sehen. Ich kann dabei angeben, für welche Abteilung ich mich bewerbe. Es werden nur Abteilungen zur Auswahl angeboten, bei denen ich für wenigstens eine der Positionen die erforderliche Qualifikation habe.

Updates per Mail

Als Nutzer der Plattform möchte ich per Mail über Änderungen informiert werden. Dies beinhaltet folgende Ereignisse:

  • Ein neues Event wurde angelegt
  • Mein Passwort wurde geändert
  • Der Zustand einer Participation hat sich geändert.
  • Jemand hat seine Schichtteilnahme aktualisiert für ein Event, für das der Nutzer verantwortlich ist.

EV "Einteilung auf Positionen" - Anlegen von Schichten

hängt ab von #7, #17

Als Verwalter möchte ich beim Anlegen einer Schicht das verwendete Einteilungsverfahren aus den verfügbaren Verfahren auswählen.

Beim Anlegen der Schicht möchte ich für dieses Verfahren Abteilungen anlegen. Jede Abteilung hat Positionen. Dazu folgendes:

  • Eine Position kann optional sein. Wenn sie optional ist, muss sie nicht besetzt werden.
  • Für eine Position können Qualifikationen festgelegt werden, die zur Besetzung dieser Position erfüllt sein müssen.
  • Eventuell: Für eine Abteilung können Qualifikationen festgelegt werden, die (jeweils) wenigstens bei einem Helfer vorhanden sein müssen.

Aus dieser Auswahl wird dann ein YAML nach folgendem Beispiel erzeugt. Diese wird im signup_configuration-Feld der Shift gespeichert.

---
sections:
- name: "RTW 01-83-01"
  positions:
  - id: 1
    qualifications:
    - id: 42
      name: Führerschein C1 
    - id: 23
      name: Rettungssanitäter
  - id: 2
    qualifications:
    - id: 111
      name: Notfallsanitäter  
- name: "BHP A"
  positions:
  - id: 3
    qualifications:
    - id: 7
      name: Notarzt 
  - id: 4
    qualifications:
    - id: 17
      name: RettSan
  - id: 5
    qualifications:
    - id: 15
      name: SanH
    optional: true

improve PDF export for SectionBasedSignupMethod

As a planner, I'd like to see the positions and their required qualifications in the PDF export. If the position is already taken, there should be the name of the user next to it. See the PDF linked in #10 for reference. Probably we want the signup methods to deliver something like a dict that is rendered to the table in the PDF file.

EV Anmeldung mit Bestätigung

Helfer melden hier zunächst Interesse für eine Schicht an und werden später durch Terminverantwortliche bestätigt. Optional kann der Helfer eine abweichende Teilnahmezeit angeben.

Als Bedingung zur Anmeldung kann folgendes eingestellt werden

  • Mindestqualifikation

EV "Einteilung auf Positionen" - Einteilung

hängt ab von #11, #12

Als Verantwortlicher für ein Event möchte ich eine Einteilungsansicht für dieses Event aufrufen können. Auf dieser Seite kann ich Helfer zu Positionen zuteilen sowie bestehende Anmeldungen sehen und diese bestätigen oder ablehnen.

PDF-Export für Events

Als Verantwortlicher für ein Event möchte ich einen PDF-Export des Events anstoßen können. Dabei werden alle relevanten Informationen zum Event und zu den Schichten aufgelistet. Insbesondere wird auch eine Auflistung der Sections (falls vorhanden) und eine Liste bzw. Zuteilung der Helfer erstellt. Nicht besetzte Positionen bekommen dabei ein leeres Feld, um eine Eintragung in Papierform zu ermöglichen.

Export der alten Software:
KTW (Zusatz).pdf

Event anlegen

Als Planer möchte ich ein neues Event anlegen können. Dabei möchte ich folgendes auswählen:

  • für welche Gruppen das Event sichtbar sein soll. Nur Gruppen, für die ich Events sichtbar machen darf, können ausgewählt werden.
  • welchen Eventtyp das Event hat
  • welche Personen oder Gruppen die Verantwortlichen für das Event sind
  • welche Schichten das Event hat

Standardmäßig existiert eine Schicht. Jede Schicht hat Start-, End- und Treffzeiten und einen Treffort sowie eine SignupMethod.

Berechtigungen vergeben

Als Administrator der Seite möchte ich einzelnen Nutzern oder Gruppen zu Planern für bestimmte Gruppen machen. Dafür muss zuerst die Berechtigung publish_event_for_group programmatisch an einem zentralen Punkt erzeugt werden. Anschließend möchte ich in einem entsprechenden View zu jeder Gruppe die Planer auswählen, wodurch die Berechtigung an diese Personen für diese Gruppe vergeben wird. Außerdem sollten diese Personen dann der Gruppe Planer hinzugefügt werden.

Rebrand everything to ephios

Rebrand

  • package and folder names
  • README
  • mail templates
  • pyproject.toml
  • navbar
  • main page
  • github action
  • github projects/boards

Restructure

  • move directories
  • rename participator to participant

Disable mails while creating event

As a planner, I want to choose whether an email notifiication should be sent out while creating a new event. This is useful when creating events in the past or events where it is known that there are already enough volunteers. I expect the form to have a checkbox for that (ticked by default).

Mail-Abonnement verwalten

Als Nutzer möchte ich einstellen, ob ich Mail-Benachrichtigungen zu neuen Events (siehe #5) erhalten möchte. Die Option soll auf meiner Profilseite zu finden sein.

Discuss signup method explanations to user

do we want to explain the active signup method to the user on the event detail page? it may be confusing when different things happen after hitting the register button without explanation because different signup methods do different things. could also be information overload.

We should also change the terminology for the event detail page:
Anmelden -> Teilnehmen

Event-Archiv

Als Nutzer der Seite möchte ich ein Archiv der vergangenen Dienste sehen können. Dafür soll es einen entsprechenden Menüpunkt geben. In der Liste der Events sollen dann nur noch Events angezeigt werden, die in der Zukunft liegen.

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.