run docker container without root users, fix broken links

This commit is contained in:
Joerg Reichert 2023-04-16 12:52:38 +02:00
parent f006eed660
commit 19c29ef021
12 changed files with 151 additions and 90 deletions

2
.env.sample Normal file
View file

@ -0,0 +1,2 @@
APPLICATION_HOST=localhost
ESDATA=../esdata

1
.gitignore vendored
View file

@ -20,3 +20,4 @@ config/morph.yml
/node_modules
/app/assets/builds/*
!/app/assets/builds/.keep
.env

View file

@ -1,37 +1,72 @@
FROM ruby:3.2.2
RUN apt-get update && apt-get install -y curl
RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -
RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -
RUN apt-get update && apt-get install -y ruby ruby-dev ruby-bundler \
build-essential zlib1g-dev libsqlite3-dev libxml2-dev libxslt1-dev pkg-config nodejs
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN gem install bundler
ENV DOCKERIZE_VERSION v0.6.1
RUN curl -sSLO https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
RUN mkdir -p /app
COPY ./docker-entrypoint.sh /
RUN chmod +x docker-entrypoint.sh
WORKDIR /tmp
RUN mkdir -p /home/srm/tmp
#COPY Gemfile.lock /home/srm/tmp/Gemfile.lock
RUN groupadd -r srm && useradd -r -g srm srm
RUN chown -R srm:srm /home/srm
USER srm
WORKDIR /home/srm
RUN git clone https://github.com/sstephenson/rbenv.git .rbenv
RUN git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
RUN echo 'export PATH="/home/srm/.rbenv/bin:$PATH"' >> .bashrc && echo 'eval "$(~/.rbenv/bin/rbenv init -)"' >> .bashrc && . ~/.bashrc
RUN /home/srm/.rbenv/bin/rbenv install 3.2.2
RUN /home/srm/.rbenv/bin/rbenv rehash
RUN /home/srm/.rbenv/bin/rbenv global 3.2.2
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
ENV NODE_VERSION 18.16.0
ENV NVM_DIR /home/srm/.nvm
RUN \
. ~/.nvm/nvm.sh \
&& nvm install $NODE_VERSION \
&& nvm alias default $NODE_VERSION \
&& nvm use default;
ENV NODE_PATH $NVM_DIR/v$NODE_VERSION/lib/node_modules
ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH
RUN gem install bundler
RUN mkdir -p /home/srm/app
ADD . /home/srm/app
USER root
RUN chown -R srm:srm /home/srm/app
USER srm
WORKDIR /home/srm/app
COPY Gemfile Gemfile
COPY Gemfile.lock Gemfile.lock
RUN bundle config build.nokogiri --use-system-libraries
RUN bundle update
RUN bundle install
ADD . /app
WORKDIR /app
COPY package.json package.json
USER root
RUN chown -R srm:srm package.json
USER srm
RUN npm install -g yarn sass
COPY ./docker-entrypoint.sh /
RUN chmod +x docker-entrypoint.sh
EXPOSE 3000
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["rails", "server", "-b", "0.0.0.0"]
CMD ["bundle", "exec", "puma" "-C", "config/puma.rb"]

View file

@ -4,7 +4,7 @@
## Usage / Features
The Stadtratmonitor Leipzig is a lightweight user interface for performing full text searches against paper contents issued to the city council of Leipzig. Note, this solution uses the data from [Ratsinformationssystem Leipzig](https://ratsinfo.leipzig.de/bi/allris.net.asp) that also offers [text search capabilities](https://ratsinfo.leipzig.de/bi/yw010.asp).
The Stadtratmonitor Leipzig is a lightweight user interface for performing full text searches against paper contents issued to the city council of Leipzig. Note, this solution uses the data from [Ratsinformationssystem Leipzig](https://ratsinformation.leipzig.de/allris_leipzig_public/) that also offers [text search capabilities](https://ratsinformation.leipzig.de/allris_leipzig_public/vo040).
### Sorting
* Sort by date, paper was issued
@ -34,7 +34,7 @@ The Stadtratmonitor Leipzig is a lightweight user interface for performing full
* [Firefox Extension](https://addons.mozilla.org/en-US/firefox/addon/simple-rss-reader-srr)
* [RSSOWL](http://www.rssowl.org/)
#### Example using Firefox and RSSOWL
#### Example using Firefox and RSSOWL
Click on the newsfeed icon in the address bar
![Abonnieren mit Firefox](https://cloud.githubusercontent.com/assets/994131/14060508/fe7f4514-f366-11e5-85ae-2fa2e50b91ea.JPG)
@ -63,7 +63,7 @@ docker.
1. Install docker and docker-compose: https://docs.docker.com/compose/install/
1. Start the app: `docker-compose up`
1. Initialize the database: `docker-compose run web rake db:setup`
1. Initialize the database: `docker-compose run --user srm web rake db:setup'`
1. See "Importing data" below
1. Get the address of the docker host: `docker-machine ip default`
1. Point your browser to: 'http://\<IP of docker host\>:3000'
@ -76,19 +76,19 @@ rake tmp:clear
npm install -g sass
#rails css:install:bootstrap
#rails javascript:install:esbuild
rake assets:precompile
rake assets:precompile
```
### Importing data and building the index
1. Currently an API key for morph is required:
`cp config/morph.yml.example config/morph.yml`
Edit the morph.yml file and insert the Morph API key
1. Import the data from our scraper: `docker-compose run web rake import_papers`
1. Build the elasticsearch index: `docker-compose run web rake index:rebuild`
1. You can use [our allris-scraper](https://github.com/CodeforLeipzig/allris-scraper) to download the papers (resp. their links) from the [OPARL](https://oparl.org/) API, this will produce an input.json file
1. Put this input.json to a public web server and set the URL to this file then in:
`app/controllers/import_controller.rb` and `lib/tasks/import_papers.rake`
1. Import the data from our scraper: `docker-compose run --user srm web rake import_papers'`
1. Build the elasticsearch index: `docker-compose run --user srm web rake index:rebuild'`
### Running tests
Assuming docker and docker-compose is installed:
1. `docker-compose run web bin/run-tests`
1. `docker-compose run --user srm web bin/run-tests`

View file

@ -1,2 +1,4 @@
//= link geo.js
//= link application.js
//= link_tree ../../../vendor/javascript .js
//= link_tree ../builds

View file

@ -6,16 +6,16 @@ function geojsonDaten() {
"type": "Feature",
"properties": {
"name": "Stadtbezirksbeirat Mitte",
"raum": "Neues Rathaus, Zi. 495",
"ort": "Martin-Luther-Ring 4-6, 04109 Leipzig",
"raum": "Stadtbüro",
"ort": "Burgplatz 1, 04109 Leipzig",
"typ": "Stadtbezirksbeirat",
"id": "2350"
},
"geometry": {
"type": "Point",
"coordinates": [
12.3726786,
51.3360228
12.3727021,
51.3370619
]
}
},
@ -23,16 +23,16 @@ function geojsonDaten() {
"type": "Feature",
"properties": {
"name": "Stadtbezirksbeirat Nordost",
"raum": "Rathaus Schönefeld, Raum 100",
"ort": "Ossietzkystraße 37, 04347 Leipzig",
"raum": "KulturGut Schloss Schönefeld",
"ort": "Zeumerstraße 1, 04347 Leipzig",
"typ": "Stadtbezirksbeirat",
"id": "2284"
},
"geometry": {
"type": "Point",
"coordinates": [
12.4106166658912,
51.35950645
12.407042064270335,
51.35905225
]
}
},
@ -40,16 +40,16 @@ function geojsonDaten() {
"type": "Feature",
"properties": {
"name": "Stadtbezirksbeirat Ost",
"raum": "IC-E Informationszentrum",
"ort": "Eisenbahnstraße 49, 04315 Leipzig",
"raum": "BSZ 7 - Außenstelle",
"ort": "Neustädter Straße 1, 04315 Leipzig",
"typ": "Stadtbezirksbeirat",
"id": "2295"
},
"geometry": {
"type": "Point",
"coordinates": [
12.4022556,
51.3458445
12.399940740484912,
51.344629850000004
]
}
},
@ -74,7 +74,7 @@ function geojsonDaten() {
"type": "Feature",
"properties": {
"name": "Stadtbezirksbeirat Süd",
"raum": "Immanuel-Kant-Gymnasium, Zi. 024",
"raum": "Immanuel-Kant-Gymnasium, Zi. 408",
"ort": "Scharnhorststraße 15, 04275 Leipzig",
"typ": "Stadtbezirksbeirat",
"id": "2369"
@ -91,16 +91,16 @@ function geojsonDaten() {
"type": "Feature",
"properties": {
"name": "Stadtbezirksbeirat Südwest",
"raum": "Schule am Adler - Oberschule, Erdgeschoss - Raum 10",
"ort": "Antonienstraße 24, 04229 Leipzig",
"raum": "Schule am Grünen Gleis",
"ort": "Baumannstraße 13, 04229 Leipzig",
"typ": "Stadtbezirksbeirat",
"id": "2309"
},
"geometry": {
"type": "Point",
"coordinates": [
12.3293545312521,
51.3209155
12.323566707065215,
51.3176798
]
}
},
@ -159,16 +159,16 @@ function geojsonDaten() {
"type": "Feature",
"properties": {
"name": "Stadtbezirksbeirat Nord",
"raum": "Gohlis-Center, Zi. 340",
"ort": "Elsbethstraße 19-25, 04155 Leipzig",
"raum": "Kulturhof Gohlis, Kultursaal",
"ort": "Eisenacher Straße 72, 04155 Leipzig",
"typ": "Stadtbezirksbeirat",
"id": "2272"
},
"geometry": {
"type": "Point",
"coordinates": [
12.3643525,
51.3634285
12.3592316,
51.3623363
]
}
},
@ -227,16 +227,16 @@ function geojsonDaten() {
"type": "Feature",
"properties": {
"name": "Ortschaftsrat Hartmannsdorf-Knautnaundorf",
"raum": "Gaststätte \"Zur Ratte\"",
"ort": "Erikenstraße 10, 04249 Leipzig",
"raum": "ehem. Gemeindeamt Knautnaundorf",
"ort": "Schkorlopper Straße 34, 04249 Leipzig",
"typ": "Ortschaftsrat",
"id": "2283"
},
"geometry": {
"type": "Point",
"coordinates": [
12.3086769,
51.2653949
12.26865655,
51.25494705
]
}
},
@ -295,16 +295,16 @@ function geojsonDaten() {
"type": "Feature",
"properties": {
"name": "Ortschaftsrat Lützschena-Stahmeln",
"raum": "ehem. Feuerwehrgerätehaus Stahmeln",
"ort": "Mühlenstraße 21, 04159 Leipzig",
"raum": "Leipziger Hotel",
"ort": "Hallesche Straße 190, 04159 Leipzig",
"typ": "Ortschaftsrat",
"id": "2368"
},
"geometry": {
"type": "Point",
"coordinates": [
12.3011131,
51.3766107
12.2710945,
51.3853193
]
}
},
@ -312,16 +312,16 @@ function geojsonDaten() {
"type": "Feature",
"properties": {
"name": "Ortschaftsrat Miltitz",
"raum": "Grundschule Miltitz, Speiseraum",
"ort": "Großmiltitzer Straße 4, 04205 Leipzig",
"raum": "Heimatverein Miltitz",
"ort": "An der alten Post 1, 04205 Leipzig",
"typ": "Ortschaftsrat",
"id": "2365"
},
"geometry": {
"type": "Point",
"coordinates": [
12.2615069,
51.319427
12.25400846230211,
51.32507435
]
}
},
@ -346,7 +346,7 @@ function geojsonDaten() {
"type": "Feature",
"properties": {
"name": "Ortschaftsrat Plaußig ",
"raum": "Naturschutzstation Plaußig, Schulungsraum",
"raum": "Freiwillige Feuerwehr Plaußig - Schulungsraum",
"ort": "Plaußiger Dorfstraße 23, 04349 Leipzig",
"typ": "Ortschaftsrat",
"id": "2377"
@ -380,16 +380,16 @@ function geojsonDaten() {
"type": "Feature",
"properties": {
"name": "Ortschaftsrat Seehausen",
"raum": "Gasthof Hohenheida",
"ort": "Am Anger 42, 04356 Leipzig",
"raum": "Hort der Grundschule Seehausen",
"ort": "Seehausener Allee 15, 04356 Leipzig",
"typ": "Ortschaftsrat",
"id": "2312"
},
"geometry": {
"type": "Point",
"coordinates": [
12.4455644647629,
51.4203442
12.411255135155008,
51.40299085
]
}
},
@ -469,8 +469,8 @@ function createPopUpContent(properties) {
content += "<span style=\"text-decoration: underline;\">Raum:</span> "
content += properties.raum
content += "<ul>"
content += "<li><a href=\"https://ratsinfo.leipzig.de/bi/au020.asp?AULFDNR=" + properties.id + "\">Mitglieder</a></li>"
content += "<li><a href=\"https://ratsinfo.leipzig.de/bi/si018_a.asp?GRA=" + properties.id + "\">Sitzungen</a></li>"
content += "<li><a href=\"https://ratsinformation.leipzig.de/allris_leipzig_public/gr020?GRLFDNR=" + properties.id + "\">Mitglieder</a></li>"
content += "<li><a href=\"https://ratsinformation.leipzig.de/allris_leipzig_public/si018?GRLFDNR=" + properties.id + "\">Sitzungen</a></li>"
content += "</ul>"
return content
}

View file

@ -33,54 +33,54 @@ html
ul
li <b>Beschlussvorlage:</b> Problemstellung mit Entwurf eines Lösungsvorschlags, über den in einem Gremium, z.B. der Ratsversammlung, abgestimmt werden soll
ul
li <b>Beispiel:</b> <a href="https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1009094">https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1009094</a>
li <b>Beispiel:</b> <a href="https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1009094&refresh=false">https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1009094&refresh=false</a>
li <b>Antrag:</b> konkreter Auftrag an die Verwaltung, über dessen Annahme in der Ratsversammlung abgestimmt werden soll
ul
li <b>Beispiel:</b> <a href="https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1007392">https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1007392</a>
li <b>Beispiel:</b> <a href="https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1007392&refresh=false">https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1007392</a>
li <b>Anfrage:</b> Frage einer Fraktion oder einzelner Stadträte an die Verwaltung, die entweder mündlich in der Ratssitzung oder schriftlich beantwortet wird
ul
li <b>Beispiel: </b> <a href="https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1009259">https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1009259</a>
li <b>Beispiel: </b> <a href="https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1009259&refresh=false">https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1009259</a>
li <b>Einwohneranfrage:</b> Fragen von Leipziger Bürger an der Verwaltung. Wie solche gestellt werden können, ist
<a href="https://www.leipzig.de/buergerservice-und-verwaltung/buergerbeteiligung-und-einflussnahme/einwohneranfrage/">hier</a> beschrieben.
ul
li <b>Beispiel:</b> <a href="https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1009373">https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1009373</a>
li <b>Beispiel:</b> <a href="https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1009373&refresh=false">https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1009373</a>
li <b>schriftliche Antwort zur Anfrage:</b> die Reaktion auf die Anfrage zum Nachlesen (mündliche Antworten werden nicht dokumentiert)
ul
li <b>Beispiel:</b> <a href="https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1009309">https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1009309</a>
li <b>Beispiel:</b> <a href="https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1009309&refresh=false">https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1009309</a>
li <b>Wichtige Angelegenheit:</b> Beschlussvorlage, die, aus Sicht des Einreichers, mit hoher Priorität zu bearbeiten ist, da sonst bei Verzug mit Nachteilen zu rechnen ist
ul
li <b>Beispiel:</b> <a href="https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1004172">https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1004172</a>
li <b>Beispiel:</b> <a href="https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1004172&refresh=false">https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1004172</a>
li <b>Wichtige Angelegenheit:</b> Beschlussvorlage, die, aus Sicht des Einreichers, mit höherer Priorität zu bearbeiten ist, da sonst bei Verzug mit Nachteilen zu rechnen ist
ul
li <b>Beispiel:</b> <a href="https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1004172">https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1004172</a>
li <b>Beispiel:</b> <a href="https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1004172&refresh=false">https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1004172</a>
li <b>Reaktionen</b>
ul
li <b>Verwaltungsstandpunkt:</b> Stellungnahme der Verwaltung bezüglich einer Beschlussvorlage, einer Anfrage oder eines Antrags, die eine Empfehlung hinsichtlich der weiteren Bearbeitung abgibt:
ul
li <b>Zustimmung / Zustimmung mit Ergänzung:</b> der ursprünglichen Beschlussvorlage wird im Prinzip von der Verwaltung zugestimmt, so dass sie aus Sicht der Verwaltung zur Abstimmung gegeben werden kann
ul
li <b>Beispiel:</b> <a href="https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1009051">https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1009051</a>
li <b>Beispiel:</b> <a href="https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1009051&refresh=false">https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1009051</a>
li <b>Ablehnung / Ablehnung, da bereits Verwaltungshandeln:</b> die Verwaltung empfiehlt, die Beschlussvorlage oder Antrag abzulehnen, weil entweder die Nachteile, die bei Umsetzung entstehen würden, zu groß wären oder die Forderungen aus der Vorlage aus Sicht der Verwaltung schon so umgesetzt sind
ul
li <b>Beispiel:</b> <a href="https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1008608">https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1008608</a>
li <b>Beispiel:</b> <a href="https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1008608&refresh=false">https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1008608</a>
li <b>Alternativvorschlag</b> die Verwaltung empfiehlt, die Beschlussvorlage oder Antrag mit ihren enthaltenen Lösungsvorschlägen abzulehnen, stimmt aber der geschilderten Problemlage zu und präsentiert deswegen ihrerseits Vorschläge, um dieser abzuhelfen. Diese könnten in Folge vom ursprünglichen Antragsteller oder jemand anderen aufgegriffen werden und in Form einer Änderung oder Neufassung der ursprünglichen Vorlage wieder zur Diskussion gestellt werden
ul
li <b>Beispiel:</b> <a href="https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1009001">https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1009001</a>
li <b>Beispiel:</b> <a href="https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1009001&refresh=false">https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1009001</a>
li <b> Sachstandsbericht: </b> es wird der aktuelle Lage geschildert, ohne diese zu werten oder eine Empfehlung auszusprechen. Diese Informationen könnten in Folge vom ursprünglichen Antragsteller oder jemand anderen aufgegriffen werden und in Form einer Änderung oder Neufassung der ursprünglichen Vorlage wieder zur Diskussion gestellt werden.
ul
li <b>Beispiel:</b> <a href="https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1008613">https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1008613</a>
li <b>Beispiel:</b> <a href="https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1008613&refresh=false">https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1008613</a>
li <b>Änderungsantrag:</b> die ursprüngliche Vorlage wird in einzelnen Punkten abgeändert bzw. der Beschlussvorschlag aus durch einen Vorschag ersetzt. Üblicherweise werden Änderungsanträge von jemand anderen als dem Verfasser der Ursprungsvorlage formuliert, während Neufassung vom ursprünglichen Vorlagen-Einreicher kommen.
ul
li <b>Beispiel:</b> <a href="https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1008935">https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1008935</a>
li <b>Beispiel:</b> <a href="https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1008935&refresh=false">https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1008935</a>
li <b>Neufassung: </b> die ursprüngliche Vorlage wird durch diese Vorlage ersetzt. Dies geschieht in Regel als Antwort auf die Reaktionen auf die ursprüngliche Vorlage. Üblicherweise werden Neufassungen vom Verfasser der Ursprungsvorlage formuliert, während Änderungsanträge von anderen Antragstellern eingereicht werden.
ul
li <b>Beispiel:</b> <a href="https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1009383">https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1009383</a>
li <b>Beispiel:</b> <a href="https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1009383&refresh=false">https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1009383</a>
li <b>Informationsvorlage:</b> Information aus der Stadtverwaltung zur allgemeinen Kenntnisnahme in den Gremien, bedarf selbst keiner Abstimmung
ul
li <b>Beispiel:</b> <a href="https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1008870">https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1008870</a>
li <b>Beispiel:</b> <a href="https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1008870&refresh=false">https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1008870</a>
li <b>Petition:</b> Gesuch oder Beschwerde eines Bürgers an die Verwaltung, mehr Informationen in <a href="https://de.wikipedia.org/wiki/Petition">Wikipedia</a>. Wie in Leipzig Petitionen eingereicht werden können, ist <a href="https://www.leipzig.de/buergerservice-und-verwaltung/buergerbeteiligung-und-einflussnahme/petition/">hier</a> beschrieben. Die so gestellten Petitionen werden vom Petitionsausschuss behandelt.
ul
li <b>Beispiel:</b> <a href="https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1007811">https://ratsinfo.leipzig.de/bi/vo020.asp?VOLFDNR=1007811</a>
li <b>Beispiel:</b> <a href="https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1007811&refresh=false">https://ratsinformation.leipzig.de/allris_leipzig_public/vo020?VOLFDNR=1007811</a>
li <b>Vorlagenstruktur</b>
ul
li <b>Sachverhalt:</b> Schilderung der aus Sicht des Antragsstellers bestehende Problemlage
@ -95,7 +95,7 @@ html
li <b>zur Kenntnis genommen:</b> meistens bezogen auf eine Informationsvorlage oder einem Verwaltungsstandpunkt, die von einem Gremium nur zur Kenntnis genommen werden soll (und damit nicht unbedingt einer Abstimmung bedarf), kann aber auch ein Vorstadium sein, um die Stadträte darauf aufmerksam zu machen, dass sie sich z.B. Gedanken zur Beantwortung einer Anfragen machen sollen.
li <b>Lesung (1. Lesung, 2. Lesung): </b> Beratung / Diskussion in einem Gremium / in einer Stadtratssitzung. Es kann maximal bis zu zwei Lesungen in einem Gremium geben, eine Vorlage kann aber in mehreren Gremien beraten werden, die alle jeweils einen Beschlussvorschlag abgeben können.
li <b>Anhörung: </b> um die eventuell weiterreichenden Folgen einer Beschlussvorlage im Vorfeld besser abschätzen zu können, gibt es öffentliche Anhörungen, an die potenziell betroffenen Bevölkerungsgruppen teilnehmen können. Die Beschlussvorlage wird ihnen vorgestellt und sie können direktes Feedback geben. Siehe auch den Antrag der FDP-Fraktion für die Einführung eines <a href="http://fdp-stadtrat-leipzig.de/antraege/anhoerungsverfahren/">Anhörungsverfahrens</a>
li <b>Beschlussfassung:</b> die eigentliche Abstimmung über den Beschluss in der Stadtratssitzung bzw. in einem beschlussfähigem Ausschuss. AKtuelle Beschlüsse können <a href="https://ratsinfo.leipzig.de/bi/to035.asp">hier</a> eingesehen werden.
li <b>Beschlussfassung:</b> die eigentliche Abstimmung über den Beschluss in der Stadtratssitzung bzw. in einem beschlussfähigem Ausschuss. AKtuelle Beschlüsse können <a href="https://ratsinformation.leipzig.de/bi/to035.asp">hier</a> eingesehen werden.
ul
li <b>zurückgestellt:</b> über die Vorlage wird zu einem späteren Zeitpunkt abgestimmt
li <b>ungeändert beschlossen:</b> der Vorlage (kann auch eine Neufassung oder Änderung sein) wurde von einer Mehrheit der Stadträte zugestimmt
@ -104,7 +104,7 @@ html
li <b>zurückgezogen:</b> der Einreicher hat sich entschieden, seine Vorlage nicht mehr zur Abstimmung zu stellen
li <b>Protokoll / Protokollauszug: </b> zum Teil werden Sitzungsprotokolle oder zu mindestens Auszüge daraus öffentlich verfügbar gemacht
ul
li <b>Beispiel:</b> <a href="https://ratsinfo.leipzig.de/bi/vo021.asp?topSelected=1072868">https://ratsinfo.leipzig.de/bi/vo021.asp?topSelected=1072868</a>
li <b>Beispiel:</b> <a href="https://ratsinformation.leipzig.de/bi/vo021.asp?topSelected=1072868&refresh=false">https://ratsinformation.leipzig.de/bi/vo021.asp?topSelected=1072868</a>
li <b>Gremium</b>
ul
li <b>Stadtrat (Organ):</b> besteht aus den Stadträten und dem Bürgermeister als Vorsitzenden, siehe auch den Beitrag in <a href="https://de.wikipedia.org/wiki/Stadtrat">Wikipedia</a>
@ -112,6 +112,6 @@ html
li <b>Faktion: </b> ist eine freiwilliger Zusammenschluss von Stadträten, die so besser gemeinsame Interessen und Ziele durchsetzen können, siehe auch den Beitrag in der <a href="https://de.wikipedia.org/wiki/Fraktion_(Politik)">Wikipedia</a>. In Leipzig sind aktuell <a href="https://www.leipzig.de/buergerservice-und-verwaltung/stadtrat/fraktionen/">diese Fraktionen</a> vertreten.
li <b>Ratsversammlung: </b> findet einmal im Monat im Sitzungssaals des Rathaus statt und ist durch Tagungsordnungspunkte (TOP) strukturiert.
li <b>Ältestenrat:</b> besteht aus Faktionsvorsitzende sowie dem Oberbürgermeister als Vorsitzenden, berät den Oberbürgermeister hinsichtlich Tagesordnung und Verhandlungsständen
li <b>Ausschuss:</b> Untergremium des Stadtrats, um ein bestimmtes politisches oder fachliches Thema abzudecken. Besteht neben Mitgliedern aus dem Stadtrat auch aus sachkundigen Einwohnern. Es gibt beschließende und beratende Ausschüsse, wie <a href="https://www.leipzig.de/buergerservice-und-verwaltung/stadtrat/ratsversammlung/ausschuesse-der-ratsversammlung/" >hier für Leipzig</a> beschrieben. Alle Ausschüsse in Leipig sind <a href="https://ratsinfo.leipzig.de/bi/au010.asp?T1=Aussch%FCsse&AU=Ausschuss&SORTVON=0&SORTBIS=98">hier</a> aufgelistet. Ausschüsse sollen den Stadtrat entlasten.
li <b>Ausschuss:</b> Untergremium des Stadtrats, um ein bestimmtes politisches oder fachliches Thema abzudecken. Besteht neben Mitgliedern aus dem Stadtrat auch aus sachkundigen Einwohnern. Es gibt beschließende und beratende Ausschüsse, wie <a href="https://www.leipzig.de/buergerservice-und-verwaltung/stadtrat/ratsversammlung/ausschuesse-der-ratsversammlung/" >hier für Leipzig</a> beschrieben. Alle Ausschüsse in Leipig sind <a href="https://ratsinformation.leipzig.de/bi/au010.asp?T1=Aussch%FCsse&AU=Ausschuss&SORTVON=0&SORTBIS=98">hier</a> aufgelistet. Ausschüsse sollen den Stadtrat entlasten.
li <b>Beirat:</b> Ansprechpartner für die von ihnen vertretenen Interessensgruppen. Beraten Stadtrat, Ausschüsse, Stadt-Verwaltung, Institutionen, Verbände und soziale Einrichtungen im Stadtgebiet hinsichtlich spezifischer Probleme ihrer Klientel. Erarbeitet auch Lösungsvorschläge und unterstützt bei der Planung deren Umsetzung. Besteht neben Mitgliedern aus dem Stadtrat auch aus sachkundigen Einwohnern. In Leipzig existieren für jeden Stadtbezirk so genannte <a href="https://www.leipzig.de/buergerservice-und-verwaltung/stadtrat/stadtbezirksbeiraete/">Stadtbezirksbeiräte</a>, die die Interessen eben dieser Bezirke vertreten. Deneben gibt es noch die <a href="https://www.leipzig.de/buergerservice-und-verwaltung/stadtrat/ortschaftsraete/">Ortschaftsräte</a> und die <a href="https://www.leipzig.de/buergerservice-und-verwaltung/stadtrat/fachbeiraete/">Fachbeiräte</a>.
li <b>Dezernat:</b> Abteilung in der Stadtverwaltung mit bestimmter sachlicher Zuständigkeit, siehe auch <a href="https://de.wikipedia.org/wiki/Dezernat">Wikipedia</a>

View file

@ -13,7 +13,7 @@ html
h5#content = 'Inhalt'
div
| Im Rahmen unseres wöchentlichen Treffens im <a href="https://codefor.de/leipzig/">OKLab Leipzig</a> haben wir
einen Aufsatz auf das offizielle <a href="https://ratsinfo.leipzig.de/">Leipziger Ratsinformationssystem</a>
einen Aufsatz auf das offizielle <a href="https://ratsinformation.leipzig.de/">Leipziger Ratsinformationssystem</a>
entwickelt, welcher dieses besser durchsuchbar machen soll.
h5#programming = 'Programmierung'
ul
@ -25,5 +25,5 @@ html
li = link_to 'Web Anwendung Source Code', 'https://github.com/CodeforLeipzig/stadtratmonitor'
li = link_to 'Scraper Source Code', 'https://github.com/jrlover/city_council_leipzig_recent_papers'
li = link_to 'Scraper Ausführung', 'https://morph.io/jrlover/city_council_leipzig_recent_papers'
li = link_to 'Leipziger Ratsinformationssystem (Quelle)', 'https://ratsinfo.leipzig.de/'
li = link_to 'Leipziger Ratsinformationssystem (Quelle)', 'https://ratsinformation.leipzig.de/'
li = link_to 'Impressum unserer Organisation Code for Germany (das auch für dieses Seite gelten soll)', 'https://codefor.de/impressum/'

View file

@ -40,5 +40,5 @@ Rails.application.configure do
# flush stdout in order to get logs in realtime
$stdout.sync = true
#config.hosts = "stadtratmonitor.codeforleipzig.de"
config.hosts = ENV['APPLICATION_HOST'] || 'localhost'
end

View file

@ -76,5 +76,5 @@ Rails.application.configure do
# Do not dump schema after migrations.
config.active_record.dump_schema_after_migration = false
config.hosts = "stadtratmonitor.codeforleipzig.de"
config.hosts = ENV['APPLICATION_HOST'] || 'stadtratmonitor.leipzig.codefor.de'
end

View file

@ -1,8 +1,7 @@
version: "3.7"
volumes:
elasticsearch:
services:
web:
user: srm
build: .
volumes:
- .:/app
@ -11,18 +10,28 @@ services:
links:
- elasticsearch
environment:
ELASTICSEARCH_URL: 'http://elasticsearch:9200'
- ELASTICSEARCH_URL=http://elasticsearch:9200
- APPLICATION_HOST=$APPLICATION_HOST
command: sh -c "cd /home/srm/app && bundle exec puma -C config/puma.rb"
elasticsearch:
user: elasticsearch
build: ./docker/elasticsearch
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ports:
- "9200:9200"
- "9215:9200"
volumes:
- elasticsearch:/usr/share/elasticsearch/data
- $ESDATA:/usr/share/elasticsearch/data //read, write and execute
- ./docker/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
command: sh -c "/usr/share/elasticsearch/bin/elasticsearch"
elastichq:
image: elastichq/elasticsearch-hq
ports:
- "5000:5000"
links:
- elasticsearch
volumes:
esdata:

View file

@ -0,0 +1,12 @@
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0
#
# Set a custom port for HTTP:
#
#http.port: 9200
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
#discovery.seed_hosts: []