diff --git a/.env.dev b/.env.dev index df39dd4..5974cde 100644 --- a/.env.dev +++ b/.env.dev @@ -1,11 +1,13 @@ DEPLOY_ENV=local SENTRY_DSN= -HOST=api.dev.sahkoinsinoorikilta.fi +HOST=localhost DEBUG=True SECRET_KEY=7p$85^4ibb^p4-=vs44b7!y0e-zemugze18@a#30&71=a8)dp( DB_NAME=postgres DB_USER=postgres DB_PASSWD=postgres -DB_HOST=db +DB_HOST=localhost DB_PORT=5432 EMAIL_API_KEY= +GROUP_KEY= +GOOGLE_CREDS='{}' diff --git a/.env.sample b/.env.sample index 1dcf8b6..7cc953c 100644 --- a/.env.sample +++ b/.env.sample @@ -10,4 +10,4 @@ DB_HOST=db DB_PORT=5432 EMAIL_API_KEY= GROUP_KEY= -GOOGLE_CREDS_JSON='{}' +GOOGLE_CREDS='{}' diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1f3308d..893ccd9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,10 +5,13 @@ stages: - test - publish - deploy + - cleanup install: image: node:14 stage: setup + only: + - pushes script: - npm ci artifacts: @@ -19,6 +22,8 @@ install: audit: image: python:3.9 stage: audit + only: + - pushes needs: [] before_script: - pip install poetry==1.1.13 @@ -30,6 +35,8 @@ audit: test: image: python:3.9 stage: test + only: + - pushes needs: [] services: - postgres:12 @@ -51,6 +58,8 @@ test: lint:py: image: python:3.9 stage: lint + only: + - pushes needs: [] script: - pip install black==22.3.0 @@ -59,6 +68,8 @@ lint:py: lint:js: image: node:14 stage: lint + only: + - pushes needs: ["install"] script: - npm run lint:js @@ -66,13 +77,15 @@ lint:js: lint:md: image: node:14 stage: lint + only: + - pushes needs: ["install"] script: - npm run lint:md publish: - stage: publish image: docker:stable + stage: publish needs: ["test", "lint:py", "lint:js", "lint:md"] services: - docker:stable-dind @@ -86,8 +99,8 @@ publish: - docker push "$IMAGE_NAME" deploy:dev: - stage: deploy image: docker:stable + stage: deploy only: - develop environment: @@ -128,4 +141,48 @@ deploy:production: script: - docker stack deploy --with-registry-auth -c stack-compose.yml "$SERVICE_NAME" after_script: - - docker logout "$CI_REGISTRY" \ No newline at end of file + - docker logout "$CI_REGISTRY" + +docker_prune:dev: + image: docker:stable + stage: cleanup + only: + - schedules + environment: + name: dev + url: http://api.dev.sahkoinsinoorikilta.fi + variables: + DOCKER_HOST: $DEV_CI_DOCKER_HOST + DOCKER_TLS_VERIFY: 1 + before_script: + - mkdir -p ~/.docker + - echo "$DEV_TLSCACERT" > ~/.docker/ca.pem + - echo "$DEV_TLSCERT" > ~/.docker/cert.pem + - echo "$DEV_TLSKEY" > ~/.docker/key.pem + - docker login -u gitlab-ci-token -p "$CI_BUILD_TOKEN" "$CI_REGISTRY" + script: + - docker system prune + after_script: + - docker logout "$CI_REGISTRY" + +docker_prune:prod: + image: docker:stable + stage: cleanup + only: + - schedules + environment: + name: production + url: https://api.sahkoinsinoorikilta.fi + variables: + DOCKER_HOST: $CI_DOCKER_HOST + DOCKER_TLS_VERIFY: 1 + before_script: + - mkdir -p ~/.docker + - echo "$TLSCACERT" > ~/.docker/ca.pem + - echo "$TLSCERT" > ~/.docker/cert.pem + - echo "$TLSKEY" > ~/.docker/key.pem + - docker login -u gitlab-ci-token -p "$CI_BUILD_TOKEN" "$CI_REGISTRY" + script: + - docker system prune + after_script: + - docker logout "$CI_REGISTRY" diff --git a/.husky/pre-commit b/.husky/pre-commit index 2867590..32d0bfb 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -4,7 +4,7 @@ PURPLE='\033[0;35m' NC='\033[0m' # No Color -source "${VIRTUAL_ENV}/bin/activate" +. "${VIRTUAL_ENV}/bin/activate" if [ $? -ne 0 ] then diff --git a/.husky/pre-push b/.husky/pre-push index 07e64c7..eb484ac 100755 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -4,7 +4,7 @@ PURPLE='\033[0;35m' NC='\033[0m' # No Color -source "${VIRTUAL_ENV}/bin/activate" +. "${VIRTUAL_ENV}/bin/activate" if [ $? -ne 0 ] then diff --git a/README.md b/README.md index f6b3eb0..ab49887 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,13 @@ -# SIKWEB 2.0 +# Web 2.0 Backend -A modern web app using a Django backend and an Angular frontend. +[Django](https://www.djangoproject.com/) backend containing multiple small applications and api for Next.js frontend. -## Components - -### Infoscreen - -Angular-based slideshow app for the guild room's screens. - -### Member register - -Data table app for viewing and modifying the member register, member applications and membership payments. - -### Web app - -Mostly static website with an event calendar and news feed. - -## Accessing the source - -### Clone this repository and enter it +* **Web app:** Backend for the main website. +* **Member register:** Data table app for viewing and modifying the member register, member applications and membership payments. +* **Kaehmy:** Form for creating and listing kaehmys +* **Ohlhafv:** Form for creating and listing ohlhafv challenges. +* **Infoscreen:** Angular-based slideshow app for the guild room's screens. +## Installation Set up your SSH key authentication in GitLab Profile Settings. Then clone the repository and checkout the development branch: @@ -28,17 +17,53 @@ cd web2.0-backend git checkout develop ``` -## Development +Copy env file for local use: +```bash +cp .env.dev .env +``` ### Poetry -For depedencies and virtual environment, we use [poetry](https://python-poetry.org/). The easiest integration with VSCode is to have poetry install virtual environment in project folder, configured with +For depedencies and virtual environment, we use [poetry](https://python-poetry.org/). + +First install [python](https://wiki.python.org/moin/BeginnersGuide/Download). Then install poetry: + +```bash +python3 -m pip install poetry +``` + +The easiest integration with VSCode is to have poetry install virtual environment in project folder, configured with ```bash poetry config virtualenvs.in-project true ``` -#### CMDs +### Node + +We use Node.js for few development tasks, like linting. Easiest way to install Node is [nvm](https://github.com/nvm-sh/nvm). After installing install dependencies: + +``` +npm install +``` + +TODO: List scripts + +### Database + +To run a local development database **[docker](https://docs.docker.com/engine/install/)** is recommended. If you want to additianally use a db management tool **[pgAdmin](https://www.pgadmin.org/download/)** is nice. + +After installing docker use the following to create a database: +```bash +docker run --name postgres:12 -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres:12 +``` + +## Development + +Activate virtual environment in shell + +```bash +python3 -m poetry shell +``` Install dependencies @@ -46,12 +71,6 @@ Install dependencies poetry install ``` -Activate virtual environment in shell - -```bash -poetry shell -``` - ### npm scripts We use Node.js for few development tasks, like linting. Easiest way to install Node is [nvm](https://github.com/nvm-sh/nvm). @@ -60,12 +79,13 @@ TODO: List scripts ### Initializing data -Run the following `manage.py` commands. Do not run these in production without thinking! +Run the following `manage.py` commands to initialize a new database. Do not run these in production without thinking! ```bash -python manage.py createdefaultadmin # creates an admin user -python manage.py initialize # creates user groups -python manage.py createdummydata # creates dummy members to the member register +python manage.py migrate # run migrations +python manage.py createdefaultadmin # creates an admin user +python manage.py initialize # creates user groups +python manage.py createdummydata # creates dummy members to the member register ``` ### Running @@ -74,10 +94,6 @@ python manage.py createdummydata # creates dummy members to the member regis python manage.py runserver 0.0.0.0:8000 ``` -Using address `0.0.0.0` will bind to all IP addresses. Using `localhost` will only bind to your machine. - -#### Visit the page - Visit [https://localhost:8000](https://localhost:8000) in your browser! ### Development workflow @@ -87,7 +103,7 @@ When you start working on a feature, create a feature branch for your changes. T Example of creating a feature branch: ```bash -git checkout -b feature-error-page +git checkout -b feature-branch-name ``` When your changes are ready and the code works without errors, submit a merge request to `develop` in GitLab. Another developer reviews your changes and runs the merge. Feature branches should be closed on merge. @@ -98,16 +114,18 @@ Merge requests to `master` should be reviewed by multiple developers. Only a mod ### Linting -Lint python files using `pycodestyle` with +Lint python files using `black` with ```bash -pycodestyle --config=pycodestyle.cfg --count . +npm run lint:py # check changes +npm run lint:py:fix # fix errors ``` Lint javascript and markdown using `eslint` and `remark` with ```bash -npm test +npm run lint:md # markdown +npm run lint:js # javascript ``` Use an editor with linting capabilities to write pretty code that passes linting. Examples include _VSCode_, _Atom_ and _Pycharm_. @@ -128,6 +146,8 @@ Tests are located in `tests.py` under every subproject. Project is run in production with Docker. See `Dockerfile` for details. +For more information about deployment check **[infra](https://gitlab.com/sahkoinsinoorikilta/vtmk/infra)** repository. + ## GitLab CI All pushed changes go through the GitLab Continuous Integration, which consists of automated unit testing and linting. Make sure your changes pass both before merging to `develop` or `master`. diff --git a/kaehmy/forms.py b/kaehmy/forms.py index fb42a41..50792f2 100644 --- a/kaehmy/forms.py +++ b/kaehmy/forms.py @@ -6,15 +6,15 @@ from kaehmy.models import PresetRole, CustomRole, Application, Comment, BaseRole class CheckboxSelectMultiple(forms.widgets.CheckboxSelectMultiple): - option_template_name = "kaehmy/checkbox_option.html" + option_template_name = "checkbox_option.html" def create_option( - self, name, value, label, selected, index, subindex=None, attrs=None + self, name, formIterator, label, selected, index, subindex=None, attrs=None ): dic = super(CheckboxSelectMultiple, self).create_option( - name, value, label, selected, index, subindex, attrs + name, formIterator, label, selected, index, subindex, attrs ) - description = PresetRole.objects.get(id=value).description + description = PresetRole.objects.get(id=formIterator.value).description dic["description"] = description return dic diff --git a/kaehmy/models.py b/kaehmy/models.py index e491733..cc42d15 100644 --- a/kaehmy/models.py +++ b/kaehmy/models.py @@ -13,6 +13,7 @@ class BaseRole(models.Model): is_board = models.BooleanField(_("Board member")) CATEGORIES = ( + ("board", _("Board")), ("corporate", _("Corporate affairs")), ("freshman", _("Freshmen")), ("international", _("International")), @@ -20,11 +21,13 @@ class BaseRole(models.Model): ("media", _("Media")), ("tech", _("Technology")), ("wellbeing", _("Wellbeing")), - ("elepaja", _("Elepaja")), + ("sikpaja", _("Sik-paja")), ("ceremonies", _("Ceremonies")), ("studies", _("Studies")), ("sosso", _("Sössö magazine")), + ("pota", _("PoTa")), ("alumni", _("Alumni relations")), + ("n", _("N")), ("others", _("Others")), ) category = models.CharField( diff --git a/kaehmy/static/kaehmy/css/base.css b/kaehmy/static/kaehmy/css/base.css index cee09ba..e5e10cc 100644 --- a/kaehmy/static/kaehmy/css/base.css +++ b/kaehmy/static/kaehmy/css/base.css @@ -5,12 +5,6 @@ margin-right: auto; } -body { - max-width: 1000px; - margin-left: auto !important; - margin-right: auto !important; -} - div.tooltip-inner { max-width: 25rem; } @@ -28,6 +22,10 @@ div.tooltip-inner { .kaehmy-content { padding-left: 0.5rem; padding-right: 0.5rem; + max-width: 1000px; + width: 100%; + margin-left: auto; + margin-right: auto; } p { diff --git a/kaehmy/static/kaehmy/css/footer.css b/kaehmy/static/kaehmy/css/footer.css index 8c8bba8..47a2547 100644 --- a/kaehmy/static/kaehmy/css/footer.css +++ b/kaehmy/static/kaehmy/css/footer.css @@ -3,13 +3,9 @@ } footer { - /* position: absolute; */ bottom: 0; width: 100%; - height: 60px; /* Set the fixed height of the footer here */ - /* line-height: 60px; /* Vertically center the text there */ - margin-top: 2rem; - margin-bottom: 1rem; + margin: 1rem; } footer .container .col .nav .nav-item { @@ -26,6 +22,7 @@ footer .container .col .nav .nav-item { .lang-select { width: 10rem; + margin-bottom: 1rem; display: inline-block; } diff --git a/kaehmy/static/kaehmy/css/header.css b/kaehmy/static/kaehmy/css/header.css index 53471fc..fadea3b 100644 --- a/kaehmy/static/kaehmy/css/header.css +++ b/kaehmy/static/kaehmy/css/header.css @@ -1,37 +1,28 @@ -.header-content { - +.kaehmy-header { + background-color: #0c2938; } -.header-content .logo { +.kaehmy-header-content { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: center; -} - -.header-content .logo img { - display: block; - height: auto; - margin: auto; -} - -.kaehmy-banner { max-width: 1000px; + width: 100%; margin-left: auto; margin-right: auto; } -@media screen and (min-width: 1000px) { - .kaehmy_header-content { - position: absolute; - left: 0; - top: 0; - background-color: #0c2938; - width: 100%; - } - - .kaehmy_header { - margin-bottom: 331px; - } -} - .kaehmy-banner-image { - width: 100%; + max-height: 10rem; + max-width: 100%; } + +.heading { + display: flex; + place-content: center; + flex-direction: column; + text-align: center; + margin: 1rem; +} \ No newline at end of file diff --git a/kaehmy/static/kaehmy/css/nav.css b/kaehmy/static/kaehmy/css/nav.css index ee7db33..ce41111 100644 --- a/kaehmy/static/kaehmy/css/nav.css +++ b/kaehmy/static/kaehmy/css/nav.css @@ -1,11 +1,15 @@ .kaehmy_navigation { margin-bottom: 10px; -} - -.navbar-border { border-bottom: 2px solid #282b3b; } .navbar-light .navbar-nav .nav-link { color: black; } + +.navbar { + max-width: 1000px; + width: 100%; + margin-left: auto; + margin-right: auto; +} \ No newline at end of file diff --git a/templates/kaehmy/checkbox_option.html b/kaehmy/templates/checkbox_option.html similarity index 100% rename from templates/kaehmy/checkbox_option.html rename to kaehmy/templates/checkbox_option.html diff --git a/kaehmy/views.py b/kaehmy/views.py index 1020936..99430db 100644 --- a/kaehmy/views.py +++ b/kaehmy/views.py @@ -4,6 +4,7 @@ from django.views.decorators.http import require_http_methods from django.views.decorators.csrf import ensure_csrf_cookie from django.http import HttpResponseRedirect from django.contrib.auth.decorators import login_required +from django.template.loader import render_to_string import logging from sikweb.settings import URL @@ -64,14 +65,15 @@ def comment(request, *args, **kwargs): if form.is_valid(): comment = form.save() name = comment.name + url = f"https://{URL}/kaehmy" to_email = comment.parent.email subject = "Kaehmyysi tai kommenttiisi on vastattu!" - email_body = ( - f"{name.capitalize()} on vastannut kaehmyhakemukseesi tai kommenttiisi kaehmypalvelussa.\r\n\r\n" - "Käy lukemassa viesti osoitteessa https://{URL}/kaehmy" + message = render_to_string( + "kaehmy/email_comment.html", {"name": name, "url": url} ) - send_email(to=to_email, subject=subject, body=email_body) + + send_email(to=to_email, subject=subject, body=message, html=True) logging.debug(f"Sent kaehmy comment email to recipient <{to_email}>") return redirect("/kaehmy") @@ -129,16 +131,14 @@ def submit(request, *args, **kwargs): url = f"https://{URL}/kaehmy" name = form.cleaned_data.get("name", "Anonymous") - email_body = ( - f"Moikka {name}!\r\n\r\nHienoa, että kilta kiinnostaa! Kaehmysi on vastaanotettu.\r\n" - "Mahdollisista kommenteista tulee ilmoitus sähköpostitse.\r\n\r\n" - "Käy katsomassa kaehmytilanne osoitteessa {url}" - ) to_email = form.cleaned_data.get("email", "") subject = "Arwokas kirjattu kirje mahdolliselle tulewalle kiltahenkilölle" + message = render_to_string( + "kaehmy/email_kaehmy.html", {"name": name, "url": url} + ) - send_email(to_email, subject, email_body) + send_email(to=to_email, subject=subject, body=message, html=True) logging.debug(f"Sent kaehmy email to recipient <{to_email}>") processHooks(message=f"Uusi New kaehmy! {name} -> {url}", eventType="kaehmy") diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo index b725197..c033300 100644 Binary files a/locale/en/LC_MESSAGES/django.mo and b/locale/en/LC_MESSAGES/django.mo differ diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index 4427a7a..ab91281 100644 --- a/locale/en/LC_MESSAGES/django.po +++ b/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-13 22:18+0200\n" +"POT-Creation-Date: 2022-10-05 14:09+0300\n" "PO-Revision-Date: 2017-11-02 23:09+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -29,233 +29,125 @@ msgstr "ÄPY Item" msgid "External website" msgstr "External website" -#: infoscreen/models.py:184 +#: infoscreen/models.py:183 msgid "Sössö articles" msgstr "Sössö articles" -#: infoscreen/models.py:199 +#: infoscreen/models.py:198 msgid "Today's lunch" msgstr "" -#: infoscreen/models.py:212 webapp/models.py:93 +#: infoscreen/models.py:211 webapp/models.py:95 msgid "Events" msgstr "Events" -#: infoscreen/models.py:227 +#: infoscreen/models.py:226 msgid "Image" msgstr "Image" -#: infoscreen/models.py:273 +#: infoscreen/models.py:272 msgid "External image" msgstr "External image" -#: infoscreen/templates/infoscreen_admin.html:10 -msgid "Infoscreen admin" -msgstr "Infoscreen admin" - -#: infoscreen/templates/infoscreen_admin.html:26 members/templates/base.html:80 -msgid "Log out" -msgstr "Log out" - -#: infoscreen/templates/infoscreen_admin.html:33 -msgid "Infoscreen Admin Pane" -msgstr "Infoscreen Admin Pane" - -#: infoscreen/templates/infoscreen_index.html:8 -msgid "Infoscreen" -msgstr "Infoscreen" - -#: infoscreen/templates/nav.html:5 -msgid "Manage Slides" -msgstr "Manage Slides" - -#: infoscreen/templates/nav.html:9 -msgid "Manage Rotations" -msgstr "Manage Rotations" - -#: infoscreen/templates/nav.html:14 -msgid "Create/Delete" -msgstr "Create/Delete" - -#: infoscreen/templates/tabs/add_remove.html:5 -msgid "Rotations" -msgstr "Rotations" - -#: infoscreen/templates/tabs/add_remove.html:7 -msgid "Select rotation to edit" -msgstr "Select rotation to edit" - -#: infoscreen/templates/tabs/add_remove.html:11 -#: infoscreen/templates/tabs/rotations.html:28 -msgid "Rotation" -msgstr "Rotation" - -#: infoscreen/templates/tabs/add_remove.html:12 -msgid "id" -msgstr "id" - -#: infoscreen/templates/tabs/add_remove.html:13 -#: infoscreen/templates/tabs/add_remove.html:19 -#: infoscreen/templates/tabs/rotations.html:29 -msgid "Preview" -msgstr "Preview" - -#: infoscreen/templates/tabs/add_remove.html:14 -#: infoscreen/templates/tabs/add_remove.html:20 -#: infoscreen/templates/tabs/rotations.html:13 -#: infoscreen/templates/tabs/rotations.html:20 -#: infoscreen/templates/tabs/rotations.html:36 -#: infoscreen/templates/tabs/rotations.html:40 -#: infoscreen/templates/tabs/slides.html:27 -#: infoscreen/templates/tabs/slides.html:32 -#: members/templates/member_edit.html:20 members/templates/payment_edit.html:20 -msgid "Delete" -msgstr "Delete" - -#: infoscreen/templates/tabs/add_remove.html:23 kaehmy/models.py:57 -#: kaehmy/templates/list.html:36 webapp/models.py:188 webapp/models.py:223 -msgid "Name" -msgstr "Name" - -#: infoscreen/templates/tabs/add_remove.html:24 -msgid "Create new" -msgstr "Create new" - -#: infoscreen/templates/tabs/rotations.html:5 -#: infoscreen/templates/tabs/slides.html:21 -msgid "Info items" -msgstr "Info items" - -#: infoscreen/templates/tabs/rotations.html:6 -#: infoscreen/templates/tabs/slides.html:22 -msgid "Infoitems available for rotations" -msgstr "Infoitems available for rotations" - -#: infoscreen/templates/tabs/rotations.html:9 -#: infoscreen/templates/tabs/slides.html:25 -msgid "Item" -msgstr "Item" - -#: infoscreen/templates/tabs/rotations.html:10 -#: infoscreen/templates/tabs/slides.html:26 -msgid "Type" -msgstr "Type" - -#: infoscreen/templates/tabs/rotations.html:11 -msgid "Set duration" -msgstr "Set duration" - -#: infoscreen/templates/tabs/rotations.html:12 -msgid "Add to rotation" -msgstr "Add to rotation" - -#: infoscreen/templates/tabs/rotations.html:19 -msgid "Add" -msgstr "Add" - -#: infoscreen/templates/tabs/rotations.html:31 -msgid "Instances in currently selected rotation" -msgstr "Instances in currently selected rotation" - -#: infoscreen/templates/tabs/rotations.html:34 -msgid "Instance" -msgstr "Instance" - -#: infoscreen/templates/tabs/rotations.html:35 -msgid "Duration" -msgstr "Duration" - -#: infoscreen/templates/tabs/slides.html:6 -msgid "Create new item" -msgstr "Create new item" - -#: infoscreen/templates/tabs/slides.html:7 -msgid "Create a new item by type" -msgstr "Create a new item by type" - -#: infoscreen/templates/tabs/slides.html:10 -msgid "Item type" -msgstr "Item type" - -#: kaehmy/forms.py:35 +#: kaehmy/forms.py:47 msgid "Email (not public)" msgstr "Email (not public)" -#: kaehmy/forms.py:36 +#: kaehmy/forms.py:48 msgid "Phone number (not public)" msgstr "Phone number (not public)" -#: kaehmy/forms.py:41 +#: kaehmy/forms.py:57 msgid "Custom roles" msgstr "Custom roles" -#: kaehmy/forms.py:49 kaehmy/templates/kaehmy.html:42 +#: kaehmy/forms.py:68 templates/kaehmy/kaehmy.html:44 msgid "Preset roles" msgstr "Preset roles" -#: kaehmy/forms.py:71 +#: kaehmy/forms.py:93 msgid "Invalid phone number" msgstr "Invalid phone number" -#: kaehmy/forms.py:79 +#: kaehmy/forms.py:101 msgid "Custom role with the same name already exists." msgstr "Custom role with the same name already exists." -#: kaehmy/models.py:13 +#: kaehmy/models.py:5 msgid "Kaehmy" msgstr "Kaehmy" -#: kaehmy/models.py:20 +#: kaehmy/models.py:12 kaehmy/models.py:63 +#: templates/infoscreen/tabs/add_remove.html:23 templates/kaehmy/list.html:36 +#: webapp/models.py:193 +msgid "Name" +msgstr "Name" + +#: kaehmy/models.py:13 kaehmy/models.py:113 +msgid "Board member" +msgstr "Board member" + +#: kaehmy/models.py:16 +msgid "Board" +msgstr "" + +#: kaehmy/models.py:17 msgid "Corporate affairs" msgstr "Corporate affairs" -#: kaehmy/models.py:21 webapp/templates/freshmen.html:10 -#: webapp/templates/navigation.html:8 +#: kaehmy/models.py:18 msgid "Freshmen" msgstr "Freshmen" -#: kaehmy/models.py:22 webapp/templates/international.html:10 -#: webapp/templates/navigation.html:14 +#: kaehmy/models.py:19 msgid "International" msgstr "International" -#: kaehmy/models.py:23 +#: kaehmy/models.py:20 msgid "External affairs" msgstr "External affairs" -#: kaehmy/models.py:24 +#: kaehmy/models.py:21 msgid "Media" msgstr "" -#: kaehmy/models.py:25 +#: kaehmy/models.py:22 msgid "Technology" msgstr "" -#: kaehmy/models.py:26 +#: kaehmy/models.py:23 msgid "Wellbeing" msgstr "" -#: kaehmy/models.py:27 -msgid "Elepaja" -msgstr "" +#: kaehmy/models.py:24 +msgid "Sik-paja" +msgstr "Sik-paja" -#: kaehmy/models.py:28 +#: kaehmy/models.py:25 msgid "Ceremonies" msgstr "" -#: kaehmy/models.py:29 +#: kaehmy/models.py:26 msgid "Studies" msgstr "" -#: kaehmy/models.py:30 +#: kaehmy/models.py:27 msgid "Sössö magazine" msgstr "Sössö magazine" -#: kaehmy/models.py:31 +#: kaehmy/models.py:28 +msgid "PoTa" +msgstr "PoTa" + +#: kaehmy/models.py:29 msgid "Alumni relations" msgstr "Alumni relations" -#: kaehmy/models.py:32 +#: kaehmy/models.py:30 +msgid "N" +msgstr "" + +#: kaehmy/models.py:31 msgid "Others" msgstr "" @@ -263,120 +155,472 @@ msgstr "" msgid "Category" msgstr "" -#: kaehmy/models.py:40 +#: kaehmy/models.py:39 +msgid "board member" +msgstr "board member" + +#: kaehmy/models.py:45 msgid "Description" msgstr "Description" -#: kaehmy/models.py:43 +#: kaehmy/models.py:48 msgid "Preset kaehmy role" msgstr "Preset kaehmy role" -#: kaehmy/models.py:44 +#: kaehmy/models.py:49 msgid "Preset kaehmy roles" msgstr "Preset kaehmy roles" -#: kaehmy/models.py:51 +#: kaehmy/models.py:56 msgid "Custom kaehmy role" msgstr "Custom kaehmy role" -#: kaehmy/models.py:52 +#: kaehmy/models.py:57 msgid "Custom kaehmy roles" msgstr "Custom kaehmy roles" -#: kaehmy/models.py:58 kaehmy/templates/list.html:40 members/models.py:14 +#: kaehmy/models.py:64 members/models.py:15 templates/kaehmy/list.html:40 msgid "Email" msgstr "Email" -#: kaehmy/models.py:59 +#: kaehmy/models.py:65 msgid "Timestamp" msgstr "" -#: kaehmy/models.py:73 +#: kaehmy/models.py:79 msgid "Kaehmykommentti" msgstr "Kaehmy comment" -#: kaehmy/models.py:74 +#: kaehmy/models.py:80 msgid "Kaehmykommentit" msgstr "Kaehmy comments" -#: kaehmy/models.py:76 ohlhafv/models.py:36 +#: kaehmy/models.py:82 ohlhafv/models.py:37 msgid "Message" msgstr "" -#: kaehmy/models.py:95 kaehmy/templates/kaehmy.html:12 +#: kaehmy/models.py:104 templates/kaehmy/kaehmy.html:12 msgid "Kaehmylomake" msgstr "Kaehmy application" -#: kaehmy/models.py:96 +#: kaehmy/models.py:105 msgid "Kaehmylomakkeet" msgstr "Kaehmy applications" -#: kaehmy/models.py:99 +#: kaehmy/models.py:107 msgid "Phone number" msgstr "" -#: kaehmy/models.py:100 +#: kaehmy/models.py:108 msgid "Year" msgstr "" -#: kaehmy/models.py:101 +#: kaehmy/models.py:109 msgid "Text" msgstr "" -#: kaehmy/models.py:103 +#: kaehmy/models.py:111 msgid "Custom role name" msgstr "" -#: kaehmy/models.py:105 webapp/models.py:224 -msgid "Board member" -msgstr "Board member" - -#: kaehmy/models.py:113 +#: kaehmy/models.py:123 msgid "Kaehmy application: {}" msgstr "Kaehmy application: {}" -#: kaehmy/models.py:135 +#: kaehmy/models.py:145 msgid "Board: {}" msgstr "" -#: kaehmy/models.py:141 +#: kaehmy/models.py:156 msgid "Official: {}" msgstr "" -#: kaehmy/tables.py:13 +#: kaehmy/tables.py:19 msgid "Roles" msgstr "" -#: kaehmy/templates/error.html:8 templates/error.html:8 -msgid "Error" -msgstr "Error" +#: members/forms.py:111 members/models.py:109 members/tables.py:52 +msgid "Member" +msgstr "Member" -#: kaehmy/templates/error.html:15 templates/error.html:15 -msgid "Back" -msgstr "Back" +#: members/forms.py:126 +msgid "I'm a member of AYY" +msgstr "I'm a member of AYY" -#: kaehmy/templates/export.html:9 -msgid "All applications" -msgstr "All applications" +#: members/forms.py:127 +msgid "I want to receive a weekly newsletter" +msgstr "I want to receive a weekly newsletter" -#: kaehmy/templates/export.html:13 -msgid "Board applications" -msgstr "Board applications" +#: members/models.py:13 +msgid "First name" +msgstr "First name" -#: kaehmy/templates/export.html:18 -msgid "Non-board applications" -msgstr "Non-board applications" +#: members/models.py:14 +msgid "Last name" +msgstr "Last name" -#: kaehmy/templates/export.html:23 -msgid "Front page" +#: members/models.py:17 +msgid "Place of residence" +msgstr "Place of residence" + +#: members/models.py:19 members/models.py:69 +#: templates/members/member_add_many.html:39 +msgid "AYY" +msgstr "AYY" + +#: members/models.py:20 +msgid "JAS" +msgstr "JAS" + +#: members/models.py:49 +msgid "Submitted" +msgstr "Submitted" + +#: members/models.py:65 +msgid "Date" +msgstr "Date" + +#: members/models.py:67 +msgid "Source" +msgstr "Source" + +#: members/models.py:70 +msgid "Cash" +msgstr "Cash" + +#: members/models.py:71 templates/members/member_add_many.html:40 +msgid "Bank transfer" +msgstr "Bank transfer" + +#: members/models.py:102 +msgid "Created" +msgstr "Created" + +#: members/models.py:110 templates/members/base.html:52 +#: templates/members/member_add_many_confirm.html:12 +msgid "Members" +msgstr "Members" + +#: members/tables.py:15 +msgid "Last paid" +msgstr "Last paid" + +#: members/tables.py:22 members/tables.py:59 members/tables.py:78 +msgid "Edit" +msgstr "Edit" + +#: members/tables.py:39 +msgid " (not paid)" +msgstr " (not paid)" + +#: members/views/applications.py:56 members/views/applications.py:135 +#: members/views/applications.py:161 +msgid "No application id specified" +msgstr "No application id specified" + +#: members/views/applications.py:77 +msgid "Application missing 'id' field." +msgstr "Application missing 'id' field." + +#: members/views/applications.py:88 +msgid "Email {} is already in use by a member. Application cannot be accepted." +msgstr "" +"Email {} is already in use by a member. Application cannot be accepted." + +#: members/views/applications.py:104 +msgid "Successfully accepted application" +msgstr "Successfully accepted application" + +#: members/views/applications.py:107 +msgid "Jäsenhakemuksesi Sähköinsinöörikiltaan on hyväksytty!" +msgstr "Your membership application has been approved!" + +#: members/views/applications.py:140 +msgid "Successfully deleted application" +msgstr "Successfully deleted application" + +#: members/views/applications.py:150 +msgid "Could not delete application object" +msgstr "Could not delete application object" + +#: members/views/applications.py:191 +msgid "Jäsenhakemuksesi Sähköinsinöörikiltaan on lähetetty onnistuneesti!" +msgstr "Your membership application was sent successfully!" + +#: members/views/applications.py:198 members/views/applications.py:199 +msgid "Kyllä" +msgstr "Yes" + +#: members/views/applications.py:198 members/views/applications.py:199 +msgid "Ei" +msgstr "No" + +#: members/views/members.py:94 members/views/members.py:208 +#: members/views/members.py:234 +msgid "No member id specified" +msgstr "No member id specified" + +#: members/views/members.py:140 +msgid "Failed to import members" +msgstr "Failed to import members" + +#: members/views/members.py:157 +msgid "Successfully added member" +msgstr "Successfully added member" + +#: members/views/members.py:180 +msgid "Member missing 'id' field." +msgstr "Member missing 'id' field." + +#: members/views/members.py:190 +msgid "Successfully updated member" +msgstr "Successfully updated member" + +#: members/views/members.py:213 +msgid "Successfully deleted member" +msgstr "Successfully deleted member" + +#: members/views/members.py:223 +msgid "Could not delete member object" +msgstr "Could not delete member object" + +#: members/views/payments.py:74 +msgid "Successfully added payment for member" +msgstr "Successfully added payment for member" + +#: members/views/payments.py:91 members/views/payments.py:108 +#: members/views/payments.py:128 +msgid "No payment id specified" +msgstr "No payment id specified" + +#: members/views/payments.py:132 +msgid "Successfully deleted payment" +msgstr "Successfully deleted payment" + +#: members/views/payments.py:139 +msgid "Could not delete payment object" +msgstr "Could not delete payment object" + +#: members/views/payments.py:158 +msgid "Successfully updated payment" +msgstr "Successfully updated payment" + +#: members/views/payments.py:163 +msgid "Could not update payment object" +msgstr "Could not update payment object" + +#: members/views/utils.py:122 +msgid "Missing CSV file" +msgstr "Missing CSV file" + +#: ohlhafv/models.py:15 +msgid "Ohlhafv" +msgstr "Øhlhäfv" + +#: ohlhafv/models.py:22 +msgid "Ohlhafv challenge" msgstr "" -#: kaehmy/templates/footer.html:22 ohlhafv/templates/footer.html:23 -#: webapp/templates/footer.html:23 +#: ohlhafv/models.py:23 +msgid "Ohlhafv challenges" +msgstr "" + +#: ohlhafv/models.py:29 +msgid "Team Challenge (1 x 0.33 L, 2 x 0.5 L, 1 x 1.0 L)" +msgstr "" + +#: ohlhafv/models.py:33 +msgid "Challenger" +msgstr "" + +#: ohlhafv/models.py:34 +msgid "Victim" +msgstr "" + +#: ohlhafv/models.py:35 +msgid "Victim email" +msgstr "" + +#: ohlhafv/models.py:36 +msgid "Series" +msgstr "" + +#: ohlhafv/models.py:41 +msgid "Ohlhafv challenge: {} vs. {}" +msgstr "" + +#: sikweb/base.py:189 templates/members/settings.html:20 +msgid "Finnish" +msgstr "Finnish" + +#: sikweb/base.py:190 templates/members/settings.html:21 +msgid "English" +msgstr "English" + +#: templates/footer.html:22 msgid "Copyright Aalto-yliopiston Sähköinsinöörikilta ry" msgstr "Copyright Aalto-yliopiston Sähköinsinöörikilta ry" -#: kaehmy/templates/kaehmy.html:16 +#: templates/infoscreen/infoscreen_admin.html:9 +msgid "Infoscreen admin" +msgstr "Infoscreen admin" + +#: templates/infoscreen/infoscreen_admin.html:25 templates/members/base.html:79 +msgid "Log out" +msgstr "Log out" + +#: templates/infoscreen/infoscreen_admin.html:32 +msgid "Infoscreen Admin Pane" +msgstr "Infoscreen Admin Pane" + +#: templates/infoscreen/infoscreen_index.html:8 +msgid "Infoscreen" +msgstr "Infoscreen" + +#: templates/infoscreen/nav.html:5 +msgid "Manage Slides" +msgstr "Manage Slides" + +#: templates/infoscreen/nav.html:9 +msgid "Manage Rotations" +msgstr "Manage Rotations" + +#: templates/infoscreen/nav.html:14 +msgid "Create/Delete" +msgstr "Create/Delete" + +#: templates/infoscreen/tabs/add_remove.html:5 +msgid "Rotations" +msgstr "Rotations" + +#: templates/infoscreen/tabs/add_remove.html:7 +msgid "Select rotation to edit" +msgstr "Select rotation to edit" + +#: templates/infoscreen/tabs/add_remove.html:11 +#: templates/infoscreen/tabs/rotations.html:28 +msgid "Rotation" +msgstr "Rotation" + +#: templates/infoscreen/tabs/add_remove.html:12 +msgid "id" +msgstr "id" + +#: templates/infoscreen/tabs/add_remove.html:13 +#: templates/infoscreen/tabs/add_remove.html:19 +#: templates/infoscreen/tabs/rotations.html:29 +msgid "Preview" +msgstr "Preview" + +#: templates/infoscreen/tabs/add_remove.html:14 +#: templates/infoscreen/tabs/add_remove.html:20 +#: templates/infoscreen/tabs/rotations.html:13 +#: templates/infoscreen/tabs/rotations.html:20 +#: templates/infoscreen/tabs/rotations.html:36 +#: templates/infoscreen/tabs/rotations.html:40 +#: templates/infoscreen/tabs/slides.html:27 +#: templates/infoscreen/tabs/slides.html:32 +#: templates/members/member_edit.html:20 templates/members/payment_edit.html:20 +msgid "Delete" +msgstr "Delete" + +#: templates/infoscreen/tabs/add_remove.html:24 +msgid "Create new" +msgstr "Create new" + +#: templates/infoscreen/tabs/rotations.html:5 +#: templates/infoscreen/tabs/slides.html:21 +msgid "Info items" +msgstr "Info items" + +#: templates/infoscreen/tabs/rotations.html:6 +#: templates/infoscreen/tabs/slides.html:22 +msgid "Infoitems available for rotations" +msgstr "Infoitems available for rotations" + +#: templates/infoscreen/tabs/rotations.html:9 +#: templates/infoscreen/tabs/slides.html:25 +msgid "Item" +msgstr "Item" + +#: templates/infoscreen/tabs/rotations.html:10 +#: templates/infoscreen/tabs/slides.html:26 +msgid "Type" +msgstr "Type" + +#: templates/infoscreen/tabs/rotations.html:11 +msgid "Set duration" +msgstr "Set duration" + +#: templates/infoscreen/tabs/rotations.html:12 +msgid "Add to rotation" +msgstr "Add to rotation" + +#: templates/infoscreen/tabs/rotations.html:19 +msgid "Add" +msgstr "Add" + +#: templates/infoscreen/tabs/rotations.html:31 +msgid "Instances in currently selected rotation" +msgstr "Instances in currently selected rotation" + +#: templates/infoscreen/tabs/rotations.html:34 +msgid "Instance" +msgstr "Instance" + +#: templates/infoscreen/tabs/rotations.html:35 +msgid "Duration" +msgstr "Duration" + +#: templates/infoscreen/tabs/slides.html:6 +msgid "Create new item" +msgstr "Create new item" + +#: templates/infoscreen/tabs/slides.html:7 +msgid "Create a new item by type" +msgstr "Create a new item by type" + +#: templates/infoscreen/tabs/slides.html:10 +msgid "Item type" +msgstr "Item type" + +#: templates/kaehmy/error.html:8 templates/members/error.html:8 +msgid "Error" +msgstr "Error" + +#: templates/kaehmy/error.html:15 templates/members/error.html:15 +msgid "Back" +msgstr "Back" + +#: templates/kaehmy/export.html:9 +msgid "All applications" +msgstr "All applications" + +#: templates/kaehmy/export.html:13 +msgid "Board applications" +msgstr "Board applications" + +#: templates/kaehmy/export.html:18 +msgid "Non-board applications" +msgstr "Non-board applications" + +#: templates/kaehmy/export.html:23 +msgid "Front page" +msgstr "" + +#: templates/kaehmy/header.html:10 +msgid "Kähmyt ovat auki!" +msgstr "Kaehmys have started!" + +#: templates/kaehmy/header.html:11 +msgid "Haku hallitukseen 24.10. mennessä ja toimihenkilöksi 18.11 mennessä." +msgstr "Apply for the board by 24.10. and for official roles by 18.11." + +#: templates/kaehmy/header.html:12 +msgid "Hae nyt!" +msgstr "Apply now!" + +#: templates/kaehmy/kaehmy.html:16 msgid "" "Kaehmykoneella voit ilmaista kiinnostuksesi toimia killassa ensi vuonna.\n" " Listassa on vastuualueittain sekä hallitus- että " @@ -397,7 +641,7 @@ msgstr "" "Best positions to consider for English speaking people are in the " "International category." -#: kaehmy/templates/kaehmy.html:23 +#: templates/kaehmy/kaehmy.html:23 msgid "" "(HUOM! Kaehmytekstin maksimipituus on 300 merkkiä. Tarvittaessa voit " "kirjoittaa lisätietoja kommenteihin.)" @@ -405,7 +649,7 @@ msgstr "" "(NOTE! The application text is limited to 300 characters. You can use the " "comment section for additional info.)" -#: kaehmy/templates/kaehmy.html:26 +#: templates/kaehmy/kaehmy.html:26 msgid "" "Muista, että kaehmyn lähettäminen on kiinnostuksen ilmaus\n" " eikä siis missään nimessä sitova ilmoittautumien mihinkään " @@ -414,32 +658,47 @@ msgstr "" "Note, that sending an application is not binding and should be considered as " "a gesture of interest." -#: kaehmy/templates/kaehmy.html:29 +#: templates/kaehmy/kaehmy.html:29 msgid "Päivämääriä & deadlineja" msgstr "Dates and deadlines" -#: kaehmy/templates/kaehmy.html:31 +#: templates/kaehmy/kaehmy.html:31 +msgid "Toimikuntamessut @OK20" +msgstr "Guild fair @OK20" + +#: templates/kaehmy/kaehmy.html:32 +msgid "Deadline hallitusvirkoihin hakemiselle." +msgstr "Deadline for applying to the board." + +#: templates/kaehmy/kaehmy.html:33 msgid "Vaalikokous, osa 1 (puheenjohtajan valinta) ja hallitustyrkkypaneeli" msgstr "Election meeting, part 1 (chairman election)" -#: kaehmy/templates/kaehmy.html:32 +#: templates/kaehmy/kaehmy.html:34 msgid "Vaalikokous, osa 2 (hallituksen valinta)" msgstr "Election meeting, part 2 (board election)" -#: kaehmy/templates/kaehmy.html:33 -msgid "Toimikunta-appro" -msgstr "Guild committee crawl" +#: templates/kaehmy/kaehmy.html:35 +msgid "Deadline toimivirkoihin hakemiselle." +msgstr "Deadline for applying to official roles." -#: kaehmy/templates/kaehmy.html:34 +#: templates/kaehmy/kaehmy.html:36 msgid "Vaalikokous, osa 3 (toimarien valinta)" msgstr "Election meeting, part 3 (non-board election)" -#: kaehmy/templates/kaehmy.html:77 -#, python-format +#: templates/kaehmy/kaehmy.html:79 +#, fuzzy, python-format +#| msgid "" +#| "\n" +#| " Hyväksyn tietosuojaselosteen ja tietojeni tallentamisen.\n" +#| " " msgid "" "\n" " Hyväksyn tietosuojaselosteen ja tietojeni " "tallentamisen.\n" " " @@ -451,182 +710,108 @@ msgstr "" "of personal data.\n" " " -#: kaehmy/templates/kaehmy.html:83 members/templates/settings.html:23 +#: templates/kaehmy/kaehmy.html:85 templates/members/settings.html:23 msgid "Submit" msgstr "Submit" -#: kaehmy/templates/list.html:24 kaehmy/templates/list.html:59 +#: templates/kaehmy/list.html:24 templates/kaehmy/list.html:59 msgid "All kaehmys" msgstr "All applications" -#: kaehmy/templates/list.html:32 +#: templates/kaehmy/list.html:32 msgid "Commenting on post by " msgstr "" -#: kaehmy/templates/list.html:44 +#: templates/kaehmy/list.html:44 msgid "Comment" msgstr "" -#: kaehmy/templates/list.html:48 members/templates/application_index.html:15 -#: members/templates/member_add_many.html:55 -#: members/templates/member_add_many_confirm.html:22 +#: templates/kaehmy/list.html:48 templates/members/application_index.html:15 +#: templates/members/member_add_many.html:55 +#: templates/members/member_add_many_confirm.html:22 msgid "Send" msgstr "Send" -#: kaehmy/templates/list.html:57 +#: templates/kaehmy/list.html:57 msgid "Filter kaehmys" msgstr "Filter kaehmys" -#: kaehmy/templates/list.html:70 kaehmy/templates/statistics.html:18 +#: templates/kaehmy/list.html:70 templates/kaehmy/statistics.html:18 msgid "Total kaehmys:" msgstr "Total applications:" -#: kaehmy/templates/list.html:88 +#: templates/kaehmy/list.html:88 msgid "Show comments" msgstr "" -#: kaehmy/templates/list.html:94 +#: templates/kaehmy/list.html:94 msgid "Add comment" msgstr "" -#: kaehmy/templates/message.html:11 +#: templates/kaehmy/message.html:11 msgid "Reply" msgstr "" -#: kaehmy/templates/navigation.html:7 +#: templates/kaehmy/navigation.html:7 msgid "List kaehmys" msgstr "List applications" -#: kaehmy/templates/navigation.html:8 +#: templates/kaehmy/navigation.html:8 msgid "New kaehmy" msgstr "New application" -#: kaehmy/templates/navigation.html:9 kaehmy/templates/statistics.html:13 +#: templates/kaehmy/navigation.html:9 templates/kaehmy/statistics.html:13 msgid "Statistics" msgstr "" -#: members/forms.py:107 members/models.py:101 members/tables.py:41 -msgid "Member" -msgstr "Member" - -#: members/forms.py:123 -msgid "I'm a member of AYY" -msgstr "I'm a member of AYY" - -#: members/forms.py:124 -msgid "I want to receive a weekly newsletter" -msgstr "I want to receive a weekly newsletter" - -#: members/models.py:12 -msgid "First name" -msgstr "First name" - -#: members/models.py:13 -msgid "Last name" -msgstr "Last name" - -#: members/models.py:15 -msgid "Place of residence" -msgstr "Place of residence" - -#: members/models.py:17 members/models.py:68 -#: members/templates/member_add_many.html:39 -msgid "AYY" -msgstr "AYY" - -#: members/models.py:18 -msgid "JAS" -msgstr "JAS" - -#: members/models.py:49 -msgid "Submitted" -msgstr "Submitted" - -#: members/models.py:66 -msgid "Date" -msgstr "Date" - -#: members/models.py:67 -msgid "Source" -msgstr "Source" - -#: members/models.py:69 -msgid "Cash" -msgstr "Cash" - -#: members/models.py:70 members/templates/member_add_many.html:40 -msgid "Bank transfer" -msgstr "Bank transfer" - -#: members/models.py:94 -msgid "Created" -msgstr "Created" - -#: members/models.py:102 members/templates/base.html:53 -#: members/templates/member_add_many_confirm.html:12 -msgid "Members" -msgstr "Members" - -#: members/tables.py:15 -msgid "Last paid" -msgstr "Last paid" - -#: members/tables.py:19 members/tables.py:45 members/tables.py:60 -msgid "Edit" -msgstr "Edit" - -#: members/tables.py:31 -msgid " (not paid)" -msgstr " (not paid)" - -#: members/templates/application_delete_confirm.html:9 +#: templates/members/application_delete_confirm.html:9 msgid "Are you sure you want to delete this application?" msgstr "Are you sure you want to delete this application?" -#: members/templates/application_delete_confirm.html:19 -#: members/templates/member_delete_confirm.html:19 -#: members/templates/payment_delete_confirm.html:19 +#: templates/members/application_delete_confirm.html:19 +#: templates/members/member_delete_confirm.html:19 +#: templates/members/payment_delete_confirm.html:19 msgid "Yes, I'm sure" msgstr "Yes, I'm sure" -#: members/templates/application_edit.html:9 +#: templates/members/application_edit.html:9 msgid "Edit application" msgstr "Edit application" -#: members/templates/application_edit.html:18 +#: templates/members/application_edit.html:18 msgid "Accept" msgstr "Accept" -#: members/templates/application_edit.html:20 +#: templates/members/application_edit.html:20 msgid "Decline" msgstr "Decline" -#: members/templates/application_index.html:7 +#: templates/members/application_index.html:7 msgid "Killan jäseneksi liittyminen on helppoa ja hauskaa!" msgstr "Joining the guild is fun and games!" -#: members/templates/application_index.html:8 +#: templates/members/application_index.html:8 msgid "Täytä vain alla oleva lomake" msgstr "Just fill the form below." -#: members/templates/application_index.html:9 +#: templates/members/application_index.html:9 msgid "Muista myös maksaa jäsenmaksusi!" msgstr "Don't forget to pay your membership fee!" -#: members/templates/application_list.html:8 +#: templates/members/application_list.html:8 msgid "Member applications" msgstr "Member applications" -#: members/templates/application_list.html:20 -#: members/templates/member_list.html:44 members/templates/payment_list.html:41 +#: templates/members/application_list.html:20 +#: templates/members/member_list.html:44 templates/members/payment_list.html:41 msgid "Download Excel" msgstr "Download Excel" -#: members/templates/application_success.html:8 +#: templates/members/application_success.html:8 msgid "Hienoa! Jäsenhakemuksesi on nyt lähetetty." msgstr "Amazing! Your membership application has been sent." -#: members/templates/application_success.html:9 +#: templates/members/application_success.html:9 #, fuzzy #| msgid "" #| "Vahvistusviesti on lähetetty sähköpostiisi. Ota yhteyttä " @@ -638,100 +823,65 @@ msgstr "" "Confirmation email is sent to given email address. Contact " "admin@sahkoinsinoorikilta.fi.fi if you didn't receive it." -#: members/templates/application_success.html:10 +#: templates/members/application_success.html:10 msgid "Takaisin Sähköinsinöörikillan web-sivuille" msgstr "Back to the front page" -#: members/templates/base.html:16 members/templates/member_list.html:11 -#: webapp/templates/index.html:25 +#: templates/members/base.html:15 templates/members/member_list.html:11 msgid "Member register" msgstr "Member register" -#: members/templates/base.html:34 members/templates/base.html:43 +#: templates/members/base.html:33 templates/members/base.html:42 msgid "Member register of SIK ry" msgstr "Member register of SIK ry" -#: members/templates/base.html:55 +#: templates/members/base.html:54 msgid "List members" msgstr "List members" -#: members/templates/base.html:56 members/templates/member_add.html:8 +#: templates/members/base.html:55 templates/members/member_add.html:8 msgid "Add member" msgstr "Add member" -#: members/templates/base.html:57 +#: templates/members/base.html:56 msgid "Add multiple" msgstr "Add multiple" -#: members/templates/base.html:61 -#: members/templates/member_add_many_confirm.html:16 +#: templates/members/base.html:60 +#: templates/members/member_add_many_confirm.html:16 msgid "Payments" msgstr "Payments" -#: members/templates/base.html:63 +#: templates/members/base.html:62 msgid "List payments" msgstr "List payments" -#: members/templates/base.html:64 members/templates/payment_add.html:13 +#: templates/members/base.html:63 templates/members/payment_add.html:13 msgid "Add payment" msgstr "Add payment" -#: members/templates/base.html:68 +#: templates/members/base.html:67 msgid "Applications" msgstr "Applications" -#: members/templates/base.html:70 +#: templates/members/base.html:69 msgid "List applications" msgstr "List applications" -#: members/templates/base.html:71 +#: templates/members/base.html:70 msgid "Application form" msgstr "Application form" -#: members/templates/base.html:76 members/templates/settings.html:11 +#: templates/members/base.html:75 templates/members/settings.html:11 msgid "Settings" msgstr "Settings" -#: members/templates/email_application_accept.html:2 -msgid "Moi" -msgstr "Hi" - -#: members/templates/email_application_accept.html:4 -msgid "Onnittelut! Sinut on hyväksytty Sähköinsinöörikillan jäseneksi." -msgstr "" - -#: members/templates/email_application_accept.html:6 -msgid "Käy kurkkaamassa killan nettisivuilta" -msgstr "Also go and check other challenges at" - -#: members/templates/email_application_accept.html:6 -msgid "" -"tulevia tapahtumia ja piipahda kiltahuoneella tutustumassa uusiin " -"kiltatovereihisi!" -msgstr "" - -#: members/templates/email_application_accept.html:8 -msgid "Liity myös killan TG-kanaville" -msgstr "Join Guild's Telegram channels" - -#: members/templates/email_application_accept.html:9 -msgid "SIK" -msgstr "SIK" - -#: members/templates/email_application_accept.html:10 -msgid "SIK-fuksit 2019" -msgstr "SIK Freshmen 2019" - -#: members/templates/email_application_accept.html:11 -msgid "SIK-fuksit 2019 -tiedotuskanava" -msgstr "SIK Freshmen 2019 Notification channel" - -#: members/templates/email_application_submit.html:2 -#: ohlhafv/templates/email.html:2 +#: templates/members/email_application_submit.html:2 +#: templates/ohlhafv/email.html:2 msgid "Moikka" msgstr "Hi" -#: members/templates/email_application_submit.html:4 +#: templates/members/email_application_submit.html:4 msgid "" "Sait tämän viestin, sillä olet lähettänyt hakemuksen Aalto-yliopiston " "Sähköinsinöörikillan jäseneksi alla olevin tiedoin. Siistiä!" @@ -739,70 +889,78 @@ msgstr "" "You received this email, since you sent a membership application to the " "Guild of Electrical Engineering. That's so cool!" -#: members/templates/email_application_submit.html:6 +#: templates/members/email_application_submit.html:6 msgid "Etunimi" msgstr "First name" -#: members/templates/email_application_submit.html:7 +#: templates/members/email_application_submit.html:7 msgid "Sukunimi" msgstr "Last name" -#: members/templates/email_application_submit.html:8 +#: templates/members/email_application_submit.html:8 msgid "Sähköposti" msgstr "Email" -#: members/templates/email_application_submit.html:9 +#: templates/members/email_application_submit.html:9 msgid "Kotipaikkakunta" msgstr "Place of origin" -#: members/templates/email_application_submit.html:10 +#: templates/members/email_application_submit.html:10 msgid "AYY:n jäsen" msgstr "Member of AYY" -#: members/templates/email_application_submit.html:11 +#: templates/members/email_application_submit.html:11 msgid "Haluan jäsenmailin" msgstr "I want to receive weekly member email" -#: members/templates/email_application_submit.html:13 +#: templates/members/email_application_submit.html:13 msgid "" "Saat sähköpostiisi tiedon, kun sinut on hallituksen kokouksessa hyväksytty " "jäseneksi" msgstr "You will be notified via email once your application has been accepted" -#: members/templates/email_application_submit.html:15 +#: templates/members/email_application_submit.html:15 msgid "Muistathan maksaa jäsenmaksun! Alla maksutiedot" msgstr "Don't forget to pay your membership fee!" -#: members/templates/email_application_submit.html:17 +#: templates/members/email_application_submit.html:17 msgid "Saaja" msgstr "Recepient" -#: members/templates/email_application_submit.html:18 +#: templates/members/email_application_submit.html:18 msgid "Tilinumero" msgstr "Account number" -#: members/templates/email_application_submit.html:20 +#: templates/members/email_application_submit.html:20 msgid "Viite" msgstr "Reference Number" -#: members/templates/email_application_submit.html:21 +#: templates/members/email_application_submit.html:21 msgid "Summa" msgstr "Amount" -#: members/templates/member_add.html:15 members/templates/member_edit.html:18 -#: members/templates/payment_add.html:20 members/templates/payment_edit.html:18 +#: templates/members/member_add.html:15 templates/members/member_edit.html:18 +#: templates/members/payment_add.html:20 templates/members/payment_edit.html:18 msgid "Save" msgstr "Save" -#: members/templates/member_add_many.html:8 +#: templates/members/member_add_many.html:8 msgid "Add many members" msgstr "Add many members" -#: members/templates/member_add_many.html:13 +#: templates/members/member_add_many.html:13 +#, fuzzy +#| msgid "" +#| "\n" +#| " Enter member information in CSV format, separate members on " +#| "separate lines. \n" +#| " If a new member already exists in the database, a new payment " +#| "event will be created for that member instead.\n" +#| " " msgid "" "\n" " Enter member information in CSV format, separate members on " -"separate lines. \n" +"separate lines.\n" " If a new member already exists in the database, a new payment " "event will be created for that member instead.\n" " " @@ -814,11 +972,11 @@ msgstr "" "event will be created for that member instead.\n" " " -#: members/templates/member_add_many.html:21 +#: templates/members/member_add_many.html:21 msgid "Format the member table like this:" msgstr "Format the member table like this:" -#: members/templates/member_add_many.html:25 +#: templates/members/member_add_many.html:25 msgid "" "Columns: First name, last name, email address, place of origin, AYY member, " "JAS recipient" @@ -826,23 +984,23 @@ msgstr "" "Columns: First name, last name, email address, place of origin, AYY member, " "JAS recipient" -#: members/templates/member_add_many.html:28 +#: templates/members/member_add_many.html:28 msgid "Save the file as CSV" msgstr "Save the file as CSV" -#: members/templates/member_add_many.html:33 +#: templates/members/member_add_many.html:33 msgid "Upload file" msgstr "Upload file" -#: members/templates/member_add_many.html:37 +#: templates/members/member_add_many.html:37 msgid "Payment source" msgstr "Payment source" -#: members/templates/member_add_many.html:41 +#: templates/members/member_add_many.html:41 msgid "Cash payment" msgstr "Cash payment" -#: members/templates/member_add_many.html:44 +#: templates/members/member_add_many.html:44 msgid "" "This payment source will be used to create any payments for new members that " "already exist in the database." @@ -850,11 +1008,11 @@ msgstr "" "This payment source will be used to create any payments for new members that " "already exist in the database." -#: members/templates/member_add_many.html:48 +#: templates/members/member_add_many.html:48 msgid "CSV delimiter" msgstr "CSV delimiter" -#: members/templates/member_add_many.html:51 +#: templates/members/member_add_many.html:51 msgid "" "The symbol that is used to separate items in one line. Defaults to " "';' (semicolon)." @@ -862,241 +1020,95 @@ msgstr "" "The symbol that is used to separate items in one line. Defaults to " "';' (semicolon)." -#: members/templates/member_add_many_confirm.html:8 +#: templates/members/member_add_many_confirm.html:8 msgid "Confirm adding these entries?" msgstr "Confirm adding these entries?" -#: members/templates/member_delete_confirm.html:9 +#: templates/members/member_delete_confirm.html:9 msgid "Are you sure you want to delete this member?" msgstr "Are you sure you want to delete this member?" -#: members/templates/member_edit.html:9 +#: templates/members/member_edit.html:9 msgid "Edit member" msgstr "Edit member" -#: members/templates/member_list.html:21 +#: templates/members/member_list.html:21 msgid "Members in register:" msgstr "Members in register:" -#: members/templates/member_list.html:28 members/templates/payment_list.html:25 +#: templates/members/member_list.html:28 templates/members/payment_list.html:25 msgid "Search" msgstr "Search" -#: members/templates/member_list.html:36 members/templates/payment_list.html:33 +#: templates/members/member_list.html:36 templates/members/payment_list.html:33 msgid "Showing results for" msgstr "Showing results for" -#: members/templates/payment_delete_confirm.html:9 +#: templates/members/payment_delete_confirm.html:9 msgid "Are you sure you want to delete this payment?" msgstr "Are you sure you want to delete this payment?" -#: members/templates/payment_edit.html:9 +#: templates/members/payment_edit.html:9 msgid "Edit payment" msgstr "Edit payment" -#: members/templates/payment_list.html:8 +#: templates/members/payment_list.html:8 msgid "Payment events" msgstr "Payment events" -#: members/templates/payment_list.html:18 +#: templates/members/payment_list.html:18 msgid "Payments in register:" msgstr "Payments in register:" -#: members/templates/settings.html:17 +#: templates/members/settings.html:17 msgid "Language" msgstr "Language" -#: members/templates/settings.html:20 sikweb/base.py:216 -msgid "Finnish" -msgstr "Finnish" - -#: members/templates/settings.html:21 sikweb/base.py:217 -msgid "English" -msgstr "English" - -#: members/views/applications.py:53 members/views/applications.py:124 -#: members/views/applications.py:149 -msgid "No application id specified" -msgstr "No application id specified" - -#: members/views/applications.py:73 -msgid "Application missing 'id' field." -msgstr "Application missing 'id' field." - -#: members/views/applications.py:82 -msgid "Email {} is already in use by a member. Application cannot be accepted." -msgstr "" -"Email {} is already in use by a member. Application cannot be accepted." - -#: members/views/applications.py:93 -msgid "Successfully accepted application" -msgstr "Successfully accepted application" - -#: members/views/applications.py:96 -msgid "Jäsenhakemuksesi Sähköinsinöörikiltaan on hyväksytty!" -msgstr "Your membership application has been approved!" - -#: members/views/applications.py:128 -msgid "Successfully deleted application" -msgstr "Successfully deleted application" - -#: members/views/applications.py:138 -msgid "Could not delete application object" -msgstr "Could not delete application object" - -#: members/views/applications.py:176 -msgid "Jäsenhakemuksesi Sähköinsinöörikiltaan on lähetetty onnistuneesti!" -msgstr "Your membership application was sent successfully!" - -#: members/views/applications.py:181 members/views/applications.py:182 -msgid "Kyllä" -msgstr "Yes" - -#: members/views/applications.py:181 members/views/applications.py:182 -msgid "Ei" -msgstr "No" - -#: members/views/members.py:85 members/views/members.py:187 -#: members/views/members.py:211 -msgid "No member id specified" -msgstr "No member id specified" - -#: members/views/members.py:126 -msgid "Failed to import members" -msgstr "Failed to import members" - -#: members/views/members.py:140 -msgid "Successfully added member" -msgstr "Successfully added member" - -#: members/views/members.py:161 -msgid "Member missing 'id' field." -msgstr "Member missing 'id' field." - -#: members/views/members.py:170 -msgid "Successfully updated member" -msgstr "Successfully updated member" - -#: members/views/members.py:191 -msgid "Successfully deleted member" -msgstr "Successfully deleted member" - -#: members/views/members.py:200 -msgid "Could not delete member object" -msgstr "Could not delete member object" - -#: members/views/payments.py:70 -msgid "Successfully added payment for member" -msgstr "Successfully added payment for member" - -#: members/views/payments.py:87 members/views/payments.py:104 -#: members/views/payments.py:122 -msgid "No payment id specified" -msgstr "No payment id specified" - -#: members/views/payments.py:127 -msgid "Successfully deleted payment" -msgstr "Successfully deleted payment" - -#: members/views/payments.py:135 -msgid "Could not delete payment object" -msgstr "Could not delete payment object" - -#: members/views/payments.py:155 -msgid "Successfully updated payment" -msgstr "Successfully updated payment" - -#: members/views/payments.py:160 -msgid "Could not update payment object" -msgstr "Could not update payment object" - -#: members/views/utils.py:111 -msgid "Missing CSV file" -msgstr "Missing CSV file" - -#: ohlhafv/models.py:15 -msgid "Ohlhafv" -msgstr "Øhlhäfv" - -#: ohlhafv/models.py:22 -msgid "Ohlhafv challenge" -msgstr "" - -#: ohlhafv/models.py:23 -msgid "Ohlhafv challenges" -msgstr "" - -#: ohlhafv/models.py:29 -msgid "Team Challenge (1 x 0.33 L, 2 x 0.5 L, 1 x 1.0 L)" -msgstr "" - -#: ohlhafv/models.py:32 -msgid "Challenger" -msgstr "" - -#: ohlhafv/models.py:33 -msgid "Victim" -msgstr "" - -#: ohlhafv/models.py:34 -msgid "Victim email" -msgstr "" - -#: ohlhafv/models.py:35 -msgid "Series" -msgstr "" - -#: ohlhafv/models.py:40 -msgid "Ohlhafv challenge: {} vs. {}" -msgstr "" - -#: ohlhafv/templates/email.html:4 +#: templates/ohlhafv/email.html:4 msgid "on haastanut sinut oluenjuontimittelöön" msgstr "has challenged you to a beer drinking contest" -#: ohlhafv/templates/email.html:4 +#: templates/ohlhafv/email.html:4 msgid "-sarjassa" msgstr "series" -#: ohlhafv/templates/email.html:8 -msgid "Muistattehan vahvistaa haasteen paikan päällä Smökissä torstaina 26.5." +#: templates/ohlhafv/email.html:8 +#, fuzzy +#| msgid "" +#| "Muistattehan vahvistaa haasteen paikan päällä Smökissä torstaina 26.5." +msgid "Muistattehan vahvistaa haasteen paikan päällä Smökissä torstaina 26.5" msgstr "" "Remeber to confirm the challenge at Smökki on Thursday 26.5. at the event" -#: ohlhafv/templates/email.html:10 +#: templates/ohlhafv/email.html:10 msgid "Käy kurkkaamassa muutkin haasteet osoitteessa" msgstr "Also go and check other challenges at" -#: ohlhafv/templates/list.html:8 +#: templates/ohlhafv/list.html:8 msgid "All challenges" msgstr "All challenges" -#: ohlhafv/templates/list.html:12 +#: templates/ohlhafv/list.html:12 msgid "Total challenges:" msgstr "Total challenges:" -#: ohlhafv/templates/navigation.html:5 +#: templates/ohlhafv/navigation.html:5 msgid "New challenge" msgstr "" -#: ohlhafv/templates/navigation.html:6 +#: templates/ohlhafv/navigation.html:6 msgid "List challenges" msgstr "All challenges" -#: ohlhafv/templates/new.html:12 +#: templates/ohlhafv/new.html:12 msgid "Challenge your foe(s) to combat!" msgstr "" -#: ohlhafv/templates/new.html:19 +#: templates/ohlhafv/new.html:19 msgid "Challenge" msgstr "Challenge" -#: templates/admin/base_site.html:44 -msgid "Go" -msgstr "Go" - -#: templates/footer.html:10 templates/project.html:16 -#: webapp/templates/index.html:9 +#: templates/project.html:15 msgid "Aalto-yliopiston Sähköinsinöörikilta ry" msgstr "Aalto-yliopiston Sähköinsinöörikilta ry" @@ -1112,166 +1124,166 @@ msgstr "Tag" msgid "Tags" msgstr "Tags" -#: webapp/models.py:36 +#: webapp/models.py:37 msgid "Tag: {}" msgstr "Tag: {}" -#: webapp/models.py:54 +#: webapp/models.py:56 msgid "Feed" msgstr "" -#: webapp/models.py:55 +#: webapp/models.py:57 msgid "Feeds" msgstr "" -#: webapp/models.py:63 webapp/models.py:102 webapp/models.py:162 -#: webapp/models.py:196 webapp/models.py:248 +#: webapp/models.py:65 webapp/models.py:104 webapp/models.py:166 +#: webapp/models.py:201 webapp/models.py:243 msgid "Deleted: " msgstr "Deleted: " -#: webapp/models.py:64 +#: webapp/models.py:66 msgid "{}Feed: {}" msgstr "" -#: webapp/models.py:92 +#: webapp/models.py:94 msgid "Event" msgstr "" -#: webapp/models.py:103 +#: webapp/models.py:105 msgid "{}Event: {}" msgstr "" -#: webapp/models.py:133 +#: webapp/models.py:135 msgid "Template question" msgstr "" -#: webapp/models.py:134 +#: webapp/models.py:136 msgid "Template questions" msgstr "" -#: webapp/models.py:141 +#: webapp/models.py:144 msgid "Template questions: {}" msgstr "" -#: webapp/models.py:148 +#: webapp/models.py:151 msgid "Signup form" msgstr "" -#: webapp/models.py:149 +#: webapp/models.py:152 msgid "Signup forms" msgstr "" -#: webapp/models.py:163 +#: webapp/models.py:167 msgid "#{} {}{}" msgstr "" -#: webapp/models.py:181 +#: webapp/models.py:185 msgid "Sign-up" msgstr "" -#: webapp/models.py:182 +#: webapp/models.py:186 msgid "Sign-ups" msgstr "" -#: webapp/models.py:228 -msgid "board member" -msgstr "board member" - -#: webapp/models.py:235 +#: webapp/models.py:229 msgid "JobAd" msgstr "" -#: webapp/models.py:236 +#: webapp/models.py:230 msgid "JobAds" msgstr "" -#: webapp/models.py:295 +#: webapp/models.py:291 #, fuzzy #| msgid "Kaehmy" msgid "Hook Kaehmys" msgstr "Kaehmy" -#: webapp/models.py:296 +#: webapp/models.py:292 #, fuzzy #| msgid "Total challenges:" msgid "Hook Ohlhafv challenges" msgstr "Total challenges:" -#: webapp/models.py:297 +#: webapp/models.py:293 msgid "Hook published news" msgstr "" -#: webapp/models.py:298 +#: webapp/models.py:294 msgid "Hook published Job Ads" msgstr "" -#: webapp/models.py:299 +#: webapp/models.py:295 msgid "Hook published events" msgstr "" -#: webapp/models.py:300 +#: webapp/models.py:296 msgid "Hook opened signups" msgstr "" -#: webapp/models.py:325 +#: webapp/models.py:321 msgid "Webhook" msgstr "" -#: webapp/models.py:326 +#: webapp/models.py:322 msgid "Webhooks" msgstr "" -#: webapp/models.py:339 +#: webapp/models.py:335 msgid "Telegram channel" msgstr "" -#: webapp/models.py:340 +#: webapp/models.py:336 msgid "Telegram channels" msgstr "" -#: webapp/templates/contact.html:9 webapp/templates/navigation.html:20 -msgid "Contact" -msgstr "Contact" +#~ msgid "Moi" +#~ msgstr "Hi" -#: webapp/templates/event_calendar.html:10 webapp/templates/navigation.html:11 -msgid "Event calendar" -msgstr "Event calendar" +#~ msgid "Käy kurkkaamassa killan nettisivuilta" +#~ msgstr "Also go and check other challenges at" -#: webapp/templates/guild.html:10 -msgid "Kilta" -msgstr "Guild" +#~ msgid "Liity myös killan TG-kanaville" +#~ msgstr "Join Guild's Telegram channels" -#: webapp/templates/index.html:14 -msgid "This site is not yet ready." -msgstr "" +#~ msgid "SIK" +#~ msgstr "SIK" -#: webapp/templates/index.html:19 -msgid "Are you perhaps looking for one of the following?" -msgstr "" +#~ msgid "SIK-fuksit 2019" +#~ msgstr "SIK Freshmen 2019" -#: webapp/templates/index.html:24 -msgid "Infoscreen admin pane" -msgstr "Infoscreen Admin Pane" +#~ msgid "SIK-fuksit 2019 -tiedotuskanava" +#~ msgstr "SIK Freshmen 2019 Notification channel" -#: webapp/templates/index.html:26 -msgid "Kaehmy application" -msgstr "Kaehmy application" +#~ msgid "Go" +#~ msgstr "Go" -#: webapp/templates/jobs.html:10 webapp/templates/navigation.html:27 -msgid "Jobs" -msgstr "Jobs" +#~ msgid "Contact" +#~ msgstr "Contact" -#: webapp/templates/navigation.html:5 -msgid "Guild" -msgstr "Guild" +#~ msgid "Event calendar" +#~ msgstr "Event calendar" -#: webapp/templates/navigation.html:17 webapp/templates/sosso.html:10 -msgid "Sössö" -msgstr "Sössö" +#~ msgid "Kilta" +#~ msgstr "Guild" -#: webapp/templates/navigation.html:24 -msgid "Corporate" -msgstr "Corporate" +#~ msgid "Infoscreen admin pane" +#~ msgstr "Infoscreen Admin Pane" + +#~ msgid "Kaehmy application" +#~ msgstr "Kaehmy application" + +#~ msgid "Jobs" +#~ msgstr "Jobs" + +#~ msgid "Guild" +#~ msgstr "Guild" + +#~ msgid "Sössö" +#~ msgstr "Sössö" + +#~ msgid "Corporate" +#~ msgstr "Corporate" #~ msgid "Hallitustyrkkypaneeli" #~ msgstr "Panel for board applicants" diff --git a/locale/fi/LC_MESSAGES/django.mo b/locale/fi/LC_MESSAGES/django.mo index e7d259a..4637183 100644 Binary files a/locale/fi/LC_MESSAGES/django.mo and b/locale/fi/LC_MESSAGES/django.mo differ diff --git a/locale/fi/LC_MESSAGES/django.po b/locale/fi/LC_MESSAGES/django.po index ac91863..08bf6be 100644 --- a/locale/fi/LC_MESSAGES/django.po +++ b/locale/fi/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-13 22:18+0200\n" +"POT-Creation-Date: 2022-10-05 14:09+0300\n" "PO-Revision-Date: 2017-11-02 23:04+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -30,233 +30,125 @@ msgstr "ÄPY-tilastot" msgid "External website" msgstr "Ulkoinen verkkosivu" -#: infoscreen/models.py:184 +#: infoscreen/models.py:183 msgid "Sössö articles" msgstr "Sössön artikkelit" -#: infoscreen/models.py:199 +#: infoscreen/models.py:198 msgid "Today's lunch" msgstr "Päivän lounas" -#: infoscreen/models.py:212 webapp/models.py:93 +#: infoscreen/models.py:211 webapp/models.py:95 msgid "Events" msgstr "Tapahtumat" -#: infoscreen/models.py:227 +#: infoscreen/models.py:226 msgid "Image" msgstr "Kuva" -#: infoscreen/models.py:273 +#: infoscreen/models.py:272 msgid "External image" msgstr "Ulkoinen kuva" -#: infoscreen/templates/infoscreen_admin.html:10 -msgid "Infoscreen admin" -msgstr "Infonäyttöjen hallinta" - -#: infoscreen/templates/infoscreen_admin.html:26 members/templates/base.html:80 -msgid "Log out" -msgstr "Kirjaudu ulos" - -#: infoscreen/templates/infoscreen_admin.html:33 -msgid "Infoscreen Admin Pane" -msgstr "Infonäyttöjen hallintapaneeli" - -#: infoscreen/templates/infoscreen_index.html:8 -msgid "Infoscreen" -msgstr "Infonäyttö" - -#: infoscreen/templates/nav.html:5 -msgid "Manage Slides" -msgstr "Hallinnoi dioja" - -#: infoscreen/templates/nav.html:9 -msgid "Manage Rotations" -msgstr "Hallinnoi Rotaatioita" - -#: infoscreen/templates/nav.html:14 -msgid "Create/Delete" -msgstr "Lisää/Poista" - -#: infoscreen/templates/tabs/add_remove.html:5 -msgid "Rotations" -msgstr "Rotaatiot" - -#: infoscreen/templates/tabs/add_remove.html:7 -msgid "Select rotation to edit" -msgstr "Valitse muokattava rotaatio" - -#: infoscreen/templates/tabs/add_remove.html:11 -#: infoscreen/templates/tabs/rotations.html:28 -msgid "Rotation" -msgstr "Rotaatio" - -#: infoscreen/templates/tabs/add_remove.html:12 -msgid "id" -msgstr "id" - -#: infoscreen/templates/tabs/add_remove.html:13 -#: infoscreen/templates/tabs/add_remove.html:19 -#: infoscreen/templates/tabs/rotations.html:29 -msgid "Preview" -msgstr "Esikatsele" - -#: infoscreen/templates/tabs/add_remove.html:14 -#: infoscreen/templates/tabs/add_remove.html:20 -#: infoscreen/templates/tabs/rotations.html:13 -#: infoscreen/templates/tabs/rotations.html:20 -#: infoscreen/templates/tabs/rotations.html:36 -#: infoscreen/templates/tabs/rotations.html:40 -#: infoscreen/templates/tabs/slides.html:27 -#: infoscreen/templates/tabs/slides.html:32 -#: members/templates/member_edit.html:20 members/templates/payment_edit.html:20 -msgid "Delete" -msgstr "Poista" - -#: infoscreen/templates/tabs/add_remove.html:23 kaehmy/models.py:57 -#: kaehmy/templates/list.html:36 webapp/models.py:188 webapp/models.py:223 -msgid "Name" -msgstr "Nimi" - -#: infoscreen/templates/tabs/add_remove.html:24 -msgid "Create new" -msgstr "Luo uusi" - -#: infoscreen/templates/tabs/rotations.html:5 -#: infoscreen/templates/tabs/slides.html:21 -msgid "Info items" -msgstr "Diat" - -#: infoscreen/templates/tabs/rotations.html:6 -#: infoscreen/templates/tabs/slides.html:22 -msgid "Infoitems available for rotations" -msgstr "Rotaatioon lisättävät diat" - -#: infoscreen/templates/tabs/rotations.html:9 -#: infoscreen/templates/tabs/slides.html:25 -msgid "Item" -msgstr "Dia" - -#: infoscreen/templates/tabs/rotations.html:10 -#: infoscreen/templates/tabs/slides.html:26 -msgid "Type" -msgstr "Tyyppi" - -#: infoscreen/templates/tabs/rotations.html:11 -msgid "Set duration" -msgstr "Aseta kesto" - -#: infoscreen/templates/tabs/rotations.html:12 -msgid "Add to rotation" -msgstr "Lisää rotaatioon" - -#: infoscreen/templates/tabs/rotations.html:19 -msgid "Add" -msgstr "Lisää" - -#: infoscreen/templates/tabs/rotations.html:31 -msgid "Instances in currently selected rotation" -msgstr "Nykyisen rotaation diat" - -#: infoscreen/templates/tabs/rotations.html:34 -msgid "Instance" -msgstr "Dia" - -#: infoscreen/templates/tabs/rotations.html:35 -msgid "Duration" -msgstr "Kesto" - -#: infoscreen/templates/tabs/slides.html:6 -msgid "Create new item" -msgstr "Luo uusi dia" - -#: infoscreen/templates/tabs/slides.html:7 -msgid "Create a new item by type" -msgstr "Luo uusi dia tyypin perusteella" - -#: infoscreen/templates/tabs/slides.html:10 -msgid "Item type" -msgstr "Diatyyppi" - -#: kaehmy/forms.py:35 +#: kaehmy/forms.py:47 msgid "Email (not public)" msgstr "Sähköposti (ei julkinen)" -#: kaehmy/forms.py:36 +#: kaehmy/forms.py:48 msgid "Phone number (not public)" msgstr "Puhelinnumero (ei julkinen)" -#: kaehmy/forms.py:41 +#: kaehmy/forms.py:57 msgid "Custom roles" msgstr "Uudet virat" -#: kaehmy/forms.py:49 kaehmy/templates/kaehmy.html:42 +#: kaehmy/forms.py:68 templates/kaehmy/kaehmy.html:44 msgid "Preset roles" msgstr "Kaehmyvirat" -#: kaehmy/forms.py:71 +#: kaehmy/forms.py:93 msgid "Invalid phone number" msgstr "Virheellinen puhelinnumero" -#: kaehmy/forms.py:79 +#: kaehmy/forms.py:101 msgid "Custom role with the same name already exists." msgstr "Samanniminen virka on jo olemassa." -#: kaehmy/models.py:13 +#: kaehmy/models.py:5 msgid "Kaehmy" msgstr "Kaehmy" -#: kaehmy/models.py:20 +#: kaehmy/models.py:12 kaehmy/models.py:63 +#: templates/infoscreen/tabs/add_remove.html:23 templates/kaehmy/list.html:36 +#: webapp/models.py:193 +msgid "Name" +msgstr "Nimi" + +#: kaehmy/models.py:13 kaehmy/models.py:113 +msgid "Board member" +msgstr "Hallituksen jäsen" + +#: kaehmy/models.py:16 +msgid "Board" +msgstr "Hallitus" + +#: kaehmy/models.py:17 msgid "Corporate affairs" msgstr "Yrityssuhteet" -#: kaehmy/models.py:21 webapp/templates/freshmen.html:10 -#: webapp/templates/navigation.html:8 +#: kaehmy/models.py:18 msgid "Freshmen" msgstr "Fuksit" -#: kaehmy/models.py:22 webapp/templates/international.html:10 -#: webapp/templates/navigation.html:14 +#: kaehmy/models.py:19 msgid "International" msgstr "International" -#: kaehmy/models.py:23 +#: kaehmy/models.py:20 msgid "External affairs" msgstr "Ulkosuhteet" -#: kaehmy/models.py:24 +#: kaehmy/models.py:21 msgid "Media" msgstr "Media" -#: kaehmy/models.py:25 +#: kaehmy/models.py:22 msgid "Technology" msgstr "Teknologia" -#: kaehmy/models.py:26 +#: kaehmy/models.py:23 msgid "Wellbeing" msgstr "Hyvinvointi" -#: kaehmy/models.py:27 -msgid "Elepaja" -msgstr "Elepaja" +#: kaehmy/models.py:24 +msgid "Sik-paja" +msgstr "Sik-paja" -#: kaehmy/models.py:28 +#: kaehmy/models.py:25 msgid "Ceremonies" msgstr "Hupitapahtumat" -#: kaehmy/models.py:29 +#: kaehmy/models.py:26 msgid "Studies" msgstr "Opinnot" -#: kaehmy/models.py:30 +#: kaehmy/models.py:27 msgid "Sössö magazine" msgstr "Kiltalehti Sössö" -#: kaehmy/models.py:31 +#: kaehmy/models.py:28 +msgid "PoTa" +msgstr "PoTa" + +#: kaehmy/models.py:29 msgid "Alumni relations" msgstr "Alumnisuhteet" -#: kaehmy/models.py:32 +#: kaehmy/models.py:30 +msgid "N" +msgstr "N" + +#: kaehmy/models.py:31 msgid "Others" msgstr "Muut" @@ -264,120 +156,471 @@ msgstr "Muut" msgid "Category" msgstr "Kategoria" -#: kaehmy/models.py:40 +#: kaehmy/models.py:39 +msgid "board member" +msgstr "hallituksen jäsen" + +#: kaehmy/models.py:45 msgid "Description" msgstr "Kuvaus" -#: kaehmy/models.py:43 +#: kaehmy/models.py:48 msgid "Preset kaehmy role" msgstr "Kaehmyvirka" -#: kaehmy/models.py:44 +#: kaehmy/models.py:49 msgid "Preset kaehmy roles" msgstr "Kaehmyvirat" -#: kaehmy/models.py:51 +#: kaehmy/models.py:56 msgid "Custom kaehmy role" msgstr "Uusi virka" -#: kaehmy/models.py:52 +#: kaehmy/models.py:57 msgid "Custom kaehmy roles" msgstr "Uudet kaehmyvirat" -#: kaehmy/models.py:58 kaehmy/templates/list.html:40 members/models.py:14 +#: kaehmy/models.py:64 members/models.py:15 templates/kaehmy/list.html:40 msgid "Email" msgstr "Sähköposti" -#: kaehmy/models.py:59 +#: kaehmy/models.py:65 msgid "Timestamp" msgstr "Aikaleima" -#: kaehmy/models.py:73 +#: kaehmy/models.py:79 msgid "Kaehmykommentti" msgstr "Kaehmykommentti" -#: kaehmy/models.py:74 +#: kaehmy/models.py:80 msgid "Kaehmykommentit" msgstr "Kaehmykommentit" -#: kaehmy/models.py:76 ohlhafv/models.py:36 +#: kaehmy/models.py:82 ohlhafv/models.py:37 msgid "Message" msgstr "Viesti" -#: kaehmy/models.py:95 kaehmy/templates/kaehmy.html:12 +#: kaehmy/models.py:104 templates/kaehmy/kaehmy.html:12 msgid "Kaehmylomake" msgstr "Kaehmylomake" -#: kaehmy/models.py:96 +#: kaehmy/models.py:105 msgid "Kaehmylomakkeet" msgstr "Kaehmylomakkeet" -#: kaehmy/models.py:99 +#: kaehmy/models.py:107 msgid "Phone number" msgstr "Puhelinnumero" -#: kaehmy/models.py:100 +#: kaehmy/models.py:108 msgid "Year" msgstr "Vuosi" -#: kaehmy/models.py:101 +#: kaehmy/models.py:109 msgid "Text" msgstr "Teksti" -#: kaehmy/models.py:103 +#: kaehmy/models.py:111 msgid "Custom role name" msgstr "Uusi virka" -#: kaehmy/models.py:105 webapp/models.py:224 -msgid "Board member" -msgstr "Hallituksen jäsen" - -#: kaehmy/models.py:113 +#: kaehmy/models.py:123 msgid "Kaehmy application: {}" msgstr "Kaehmy: {}" -#: kaehmy/models.py:135 +#: kaehmy/models.py:145 msgid "Board: {}" msgstr "Hallitus: {}" -#: kaehmy/models.py:141 +#: kaehmy/models.py:156 msgid "Official: {}" msgstr "Toimari: {}" -#: kaehmy/tables.py:13 +#: kaehmy/tables.py:19 msgid "Roles" msgstr "Roolit" -#: kaehmy/templates/error.html:8 templates/error.html:8 -msgid "Error" -msgstr "Virhe" +#: members/forms.py:111 members/models.py:109 members/tables.py:52 +msgid "Member" +msgstr "Jäsen" -#: kaehmy/templates/error.html:15 templates/error.html:15 -msgid "Back" -msgstr "Takaisin" +#: members/forms.py:126 +msgid "I'm a member of AYY" +msgstr "Olen AYY:n jäsen" -#: kaehmy/templates/export.html:9 -msgid "All applications" -msgstr "Kaikki kaehmyt" +#: members/forms.py:127 +msgid "I want to receive a weekly newsletter" +msgstr "Haluan saada viikottaisen jäsentiedotteen" -#: kaehmy/templates/export.html:13 -msgid "Board applications" -msgstr "Hallituskaehmyt" +#: members/models.py:13 +msgid "First name" +msgstr "Etunimi" -#: kaehmy/templates/export.html:18 -msgid "Non-board applications" -msgstr "Toimarikaehmyt" +#: members/models.py:14 +msgid "Last name" +msgstr "Sukunimi" -#: kaehmy/templates/export.html:23 -msgid "Front page" -msgstr "Etusivulle" +#: members/models.py:17 +msgid "Place of residence" +msgstr "Asuinpaikka" -#: kaehmy/templates/footer.html:22 ohlhafv/templates/footer.html:23 -#: webapp/templates/footer.html:23 +#: members/models.py:19 members/models.py:69 +#: templates/members/member_add_many.html:39 +msgid "AYY" +msgstr "AYY" + +#: members/models.py:20 +msgid "JAS" +msgstr "JAS" + +#: members/models.py:49 +msgid "Submitted" +msgstr "Lisätty" + +#: members/models.py:65 +msgid "Date" +msgstr "Päivämäärä" + +#: members/models.py:67 +msgid "Source" +msgstr "Lähde" + +#: members/models.py:70 +msgid "Cash" +msgstr "Käteinen" + +#: members/models.py:71 templates/members/member_add_many.html:40 +msgid "Bank transfer" +msgstr "Tilisiirto" + +#: members/models.py:102 +msgid "Created" +msgstr "Lisätty" + +#: members/models.py:110 templates/members/base.html:52 +#: templates/members/member_add_many_confirm.html:12 +msgid "Members" +msgstr "Jäsenet" + +#: members/tables.py:15 +msgid "Last paid" +msgstr "Viimeksi maksettu" + +#: members/tables.py:22 members/tables.py:59 members/tables.py:78 +msgid "Edit" +msgstr "Muokkaa" + +#: members/tables.py:39 +msgid " (not paid)" +msgstr " (ei maksua)" + +#: members/views/applications.py:56 members/views/applications.py:135 +#: members/views/applications.py:161 +msgid "No application id specified" +msgstr "Hakemuksen ID ei määritelty" + +#: members/views/applications.py:77 +msgid "Application missing 'id' field." +msgstr "Hakemuksen ID ei määritelty." + +#: members/views/applications.py:88 +msgid "Email {} is already in use by a member. Application cannot be accepted." +msgstr "Sähköpostiosoite {} on jo käytössä. Hakemusta ei hyväksytty." + +#: members/views/applications.py:104 +msgid "Successfully accepted application" +msgstr "Onnistuneesti hyväksyttiin hakemus" + +#: members/views/applications.py:107 +msgid "Jäsenhakemuksesi Sähköinsinöörikiltaan on hyväksytty!" +msgstr "" + +#: members/views/applications.py:140 +msgid "Successfully deleted application" +msgstr "Onnistuneesti poistettiin hakemus" + +#: members/views/applications.py:150 +msgid "Could not delete application object" +msgstr "Hakemusobjektia ei voitu poistaa" + +#: members/views/applications.py:191 +msgid "Jäsenhakemuksesi Sähköinsinöörikiltaan on lähetetty onnistuneesti!" +msgstr "" + +#: members/views/applications.py:198 members/views/applications.py:199 +msgid "Kyllä" +msgstr "" + +#: members/views/applications.py:198 members/views/applications.py:199 +msgid "Ei" +msgstr "" + +#: members/views/members.py:94 members/views/members.py:208 +#: members/views/members.py:234 +msgid "No member id specified" +msgstr "Jäsenen ID ei määritelty" + +#: members/views/members.py:140 +msgid "Failed to import members" +msgstr "Jäsenten tuonti epäonnistui" + +#: members/views/members.py:157 +msgid "Successfully added member" +msgstr "Onnistuneesti lisättiin jäsen" + +#: members/views/members.py:180 +msgid "Member missing 'id' field." +msgstr "Jäsenen ID ei määritelty." + +#: members/views/members.py:190 +msgid "Successfully updated member" +msgstr "Onnistuneesti päivitettiin jäsen" + +#: members/views/members.py:213 +msgid "Successfully deleted member" +msgstr "Onnistuneesti poistettiin jäsen" + +#: members/views/members.py:223 +msgid "Could not delete member object" +msgstr "Jäsenobjektia ei voitu poistaa" + +#: members/views/payments.py:74 +msgid "Successfully added payment for member" +msgstr "Onnistuneesti lisättiin maksutapahtuma jäsenelle" + +#: members/views/payments.py:91 members/views/payments.py:108 +#: members/views/payments.py:128 +msgid "No payment id specified" +msgstr "Maksutapahtuman ID ei määritelty" + +#: members/views/payments.py:132 +msgid "Successfully deleted payment" +msgstr "Onnistuneesti poistettiin maksutapahtuma" + +#: members/views/payments.py:139 +msgid "Could not delete payment object" +msgstr "Maksutapahtumaobjektia ei voitu poistaa" + +#: members/views/payments.py:158 +msgid "Successfully updated payment" +msgstr "Onnistuneesti päivitettiin maksutapahtuma" + +#: members/views/payments.py:163 +msgid "Could not update payment object" +msgstr "Maksutapahtumaobjektia ei voitu päivittää" + +#: members/views/utils.py:122 +msgid "Missing CSV file" +msgstr "Puuttuva CSV-tiedosto" + +#: ohlhafv/models.py:15 +msgid "Ohlhafv" +msgstr "Øhlhäfv" + +#: ohlhafv/models.py:22 +msgid "Ohlhafv challenge" +msgstr "Øhlhäfv-haaste" + +#: ohlhafv/models.py:23 +msgid "Ohlhafv challenges" +msgstr "Øhlhäfv-haasteet" + +#: ohlhafv/models.py:29 +msgid "Team Challenge (1 x 0.33 L, 2 x 0.5 L, 1 x 1.0 L)" +msgstr "Joukkuehaaste (1 x 0.33 L, 2 x 0.5 L, 1 x 1.0 L)" + +#: ohlhafv/models.py:33 +msgid "Challenger" +msgstr "Haastaja" + +#: ohlhafv/models.py:34 +msgid "Victim" +msgstr "Uhri" + +#: ohlhafv/models.py:35 +msgid "Victim email" +msgstr "Uhrin sähköpostiosoite" + +#: ohlhafv/models.py:36 +msgid "Series" +msgstr "Sarja" + +#: ohlhafv/models.py:41 +msgid "Ohlhafv challenge: {} vs. {}" +msgstr "Øhlhäfv-haaste: {} vs. {}" + +#: sikweb/base.py:189 templates/members/settings.html:20 +msgid "Finnish" +msgstr "suomi" + +#: sikweb/base.py:190 templates/members/settings.html:21 +msgid "English" +msgstr "englanti" + +#: templates/footer.html:22 msgid "Copyright Aalto-yliopiston Sähköinsinöörikilta ry" msgstr "Copyright Aalto-yliopiston Sähköinsinöörikilta ry" -#: kaehmy/templates/kaehmy.html:16 +#: templates/infoscreen/infoscreen_admin.html:9 +msgid "Infoscreen admin" +msgstr "Infonäyttöjen hallinta" + +#: templates/infoscreen/infoscreen_admin.html:25 templates/members/base.html:79 +msgid "Log out" +msgstr "Kirjaudu ulos" + +#: templates/infoscreen/infoscreen_admin.html:32 +msgid "Infoscreen Admin Pane" +msgstr "Infonäyttöjen hallintapaneeli" + +#: templates/infoscreen/infoscreen_index.html:8 +msgid "Infoscreen" +msgstr "Infonäyttö" + +#: templates/infoscreen/nav.html:5 +msgid "Manage Slides" +msgstr "Hallinnoi dioja" + +#: templates/infoscreen/nav.html:9 +msgid "Manage Rotations" +msgstr "Hallinnoi Rotaatioita" + +#: templates/infoscreen/nav.html:14 +msgid "Create/Delete" +msgstr "Lisää/Poista" + +#: templates/infoscreen/tabs/add_remove.html:5 +msgid "Rotations" +msgstr "Rotaatiot" + +#: templates/infoscreen/tabs/add_remove.html:7 +msgid "Select rotation to edit" +msgstr "Valitse muokattava rotaatio" + +#: templates/infoscreen/tabs/add_remove.html:11 +#: templates/infoscreen/tabs/rotations.html:28 +msgid "Rotation" +msgstr "Rotaatio" + +#: templates/infoscreen/tabs/add_remove.html:12 +msgid "id" +msgstr "id" + +#: templates/infoscreen/tabs/add_remove.html:13 +#: templates/infoscreen/tabs/add_remove.html:19 +#: templates/infoscreen/tabs/rotations.html:29 +msgid "Preview" +msgstr "Esikatsele" + +#: templates/infoscreen/tabs/add_remove.html:14 +#: templates/infoscreen/tabs/add_remove.html:20 +#: templates/infoscreen/tabs/rotations.html:13 +#: templates/infoscreen/tabs/rotations.html:20 +#: templates/infoscreen/tabs/rotations.html:36 +#: templates/infoscreen/tabs/rotations.html:40 +#: templates/infoscreen/tabs/slides.html:27 +#: templates/infoscreen/tabs/slides.html:32 +#: templates/members/member_edit.html:20 templates/members/payment_edit.html:20 +msgid "Delete" +msgstr "Poista" + +#: templates/infoscreen/tabs/add_remove.html:24 +msgid "Create new" +msgstr "Luo uusi" + +#: templates/infoscreen/tabs/rotations.html:5 +#: templates/infoscreen/tabs/slides.html:21 +msgid "Info items" +msgstr "Diat" + +#: templates/infoscreen/tabs/rotations.html:6 +#: templates/infoscreen/tabs/slides.html:22 +msgid "Infoitems available for rotations" +msgstr "Rotaatioon lisättävät diat" + +#: templates/infoscreen/tabs/rotations.html:9 +#: templates/infoscreen/tabs/slides.html:25 +msgid "Item" +msgstr "Dia" + +#: templates/infoscreen/tabs/rotations.html:10 +#: templates/infoscreen/tabs/slides.html:26 +msgid "Type" +msgstr "Tyyppi" + +#: templates/infoscreen/tabs/rotations.html:11 +msgid "Set duration" +msgstr "Aseta kesto" + +#: templates/infoscreen/tabs/rotations.html:12 +msgid "Add to rotation" +msgstr "Lisää rotaatioon" + +#: templates/infoscreen/tabs/rotations.html:19 +msgid "Add" +msgstr "Lisää" + +#: templates/infoscreen/tabs/rotations.html:31 +msgid "Instances in currently selected rotation" +msgstr "Nykyisen rotaation diat" + +#: templates/infoscreen/tabs/rotations.html:34 +msgid "Instance" +msgstr "Dia" + +#: templates/infoscreen/tabs/rotations.html:35 +msgid "Duration" +msgstr "Kesto" + +#: templates/infoscreen/tabs/slides.html:6 +msgid "Create new item" +msgstr "Luo uusi dia" + +#: templates/infoscreen/tabs/slides.html:7 +msgid "Create a new item by type" +msgstr "Luo uusi dia tyypin perusteella" + +#: templates/infoscreen/tabs/slides.html:10 +msgid "Item type" +msgstr "Diatyyppi" + +#: templates/kaehmy/error.html:8 templates/members/error.html:8 +msgid "Error" +msgstr "Virhe" + +#: templates/kaehmy/error.html:15 templates/members/error.html:15 +msgid "Back" +msgstr "Takaisin" + +#: templates/kaehmy/export.html:9 +msgid "All applications" +msgstr "Kaikki kaehmyt" + +#: templates/kaehmy/export.html:13 +msgid "Board applications" +msgstr "Hallituskaehmyt" + +#: templates/kaehmy/export.html:18 +msgid "Non-board applications" +msgstr "Toimarikaehmyt" + +#: templates/kaehmy/export.html:23 +msgid "Front page" +msgstr "Etusivulle" + +#: templates/kaehmy/header.html:10 +msgid "Kähmyt ovat auki!" +msgstr "Kähmyt ovat auki!" + +#: templates/kaehmy/header.html:11 +msgid "Haku hallitukseen 24.10. mennessä ja toimihenkilöksi 18.11 mennessä." +msgstr "Haku hallitukseen 24.10. mennessä ja toimihenkilöksi 18.11 mennessä." + +#: templates/kaehmy/header.html:12 +msgid "Hae nyt!" +msgstr "Hae nyt!" + +#: templates/kaehmy/kaehmy.html:16 msgid "" "Kaehmykoneella voit ilmaista kiinnostuksesi toimia killassa ensi vuonna.\n" " Listassa on vastuualueittain sekä hallitus- että " @@ -401,13 +644,13 @@ msgstr "" " tai olla yhteydessä kyseistä virkaa tänä vuonna toimittavaan " "henkilöön." -#: kaehmy/templates/kaehmy.html:23 +#: templates/kaehmy/kaehmy.html:23 msgid "" "(HUOM! Kaehmytekstin maksimipituus on 300 merkkiä. Tarvittaessa voit " "kirjoittaa lisätietoja kommenteihin.)" msgstr "" -#: kaehmy/templates/kaehmy.html:26 +#: templates/kaehmy/kaehmy.html:26 msgid "" "Muista, että kaehmyn lähettäminen on kiinnostuksen ilmaus\n" " eikä siis missään nimessä sitova ilmoittautumien mihinkään " @@ -417,381 +660,288 @@ msgstr "" " eikä siis missään nimessä sitova ilmoittautumien mihinkään " "tehtävään!" -#: kaehmy/templates/kaehmy.html:29 +#: templates/kaehmy/kaehmy.html:29 msgid "Päivämääriä & deadlineja" msgstr "Päivämääriä & deadlineja" -#: kaehmy/templates/kaehmy.html:31 +#: templates/kaehmy/kaehmy.html:31 +msgid "Toimikuntamessut @OK20" +msgstr "Toimikuntamessut @OK20" + +#: templates/kaehmy/kaehmy.html:32 +msgid "Deadline hallitusvirkoihin hakemiselle." +msgstr "Deadline hallitusvirkoihin hakemiselle." + +#: templates/kaehmy/kaehmy.html:33 msgid "Vaalikokous, osa 1 (puheenjohtajan valinta) ja hallitustyrkkypaneeli" msgstr "Vaalikokous, osa 1 (puheenjohtajan valinta) ja hallitustyrkkypaneeli" -#: kaehmy/templates/kaehmy.html:32 +#: templates/kaehmy/kaehmy.html:34 msgid "Vaalikokous, osa 2 (hallituksen valinta)" msgstr "Vaalikokous, osa 2 (hallituksen valinta)" -#: kaehmy/templates/kaehmy.html:33 -msgid "Toimikunta-appro" -msgstr "" +#: templates/kaehmy/kaehmy.html:35 +msgid "Deadline toimivirkoihin hakemiselle." +msgstr "Deadline toimivirkoihin hakemiselle." -#: kaehmy/templates/kaehmy.html:34 +#: templates/kaehmy/kaehmy.html:36 msgid "Vaalikokous, osa 3 (toimarien valinta)" msgstr "Vaalikokous, osa 3 (toimarien valinta)" -#: kaehmy/templates/kaehmy.html:77 +#: templates/kaehmy/kaehmy.html:79 #, python-format msgid "" "\n" " Hyväksyn tietosuojaselosteen ja tietojeni " "tallentamisen.\n" " " msgstr "" -#: kaehmy/templates/kaehmy.html:83 members/templates/settings.html:23 +#: templates/kaehmy/kaehmy.html:85 templates/members/settings.html:23 msgid "Submit" msgstr "Lisää" -#: kaehmy/templates/list.html:24 kaehmy/templates/list.html:59 +#: templates/kaehmy/list.html:24 templates/kaehmy/list.html:59 msgid "All kaehmys" msgstr "Kaikki kaehmyt" -#: kaehmy/templates/list.html:32 +#: templates/kaehmy/list.html:32 msgid "Commenting on post by " msgstr "Kommentoidaan viestiin lähettäjältä " -#: kaehmy/templates/list.html:44 +#: templates/kaehmy/list.html:44 msgid "Comment" msgstr "Kommentti" -#: kaehmy/templates/list.html:48 members/templates/application_index.html:15 -#: members/templates/member_add_many.html:55 -#: members/templates/member_add_many_confirm.html:22 +#: templates/kaehmy/list.html:48 templates/members/application_index.html:15 +#: templates/members/member_add_many.html:55 +#: templates/members/member_add_many_confirm.html:22 msgid "Send" msgstr "Lähetä" -#: kaehmy/templates/list.html:57 +#: templates/kaehmy/list.html:57 msgid "Filter kaehmys" msgstr "Rajaa kaehmyjä" -#: kaehmy/templates/list.html:70 kaehmy/templates/statistics.html:18 +#: templates/kaehmy/list.html:70 templates/kaehmy/statistics.html:18 msgid "Total kaehmys:" msgstr "Kaehmyjä yhteensä:" -#: kaehmy/templates/list.html:88 +#: templates/kaehmy/list.html:88 msgid "Show comments" msgstr "Näytä kommentit" -#: kaehmy/templates/list.html:94 +#: templates/kaehmy/list.html:94 msgid "Add comment" msgstr "Kommentoi" -#: kaehmy/templates/message.html:11 +#: templates/kaehmy/message.html:11 msgid "Reply" msgstr "Vastaa" -#: kaehmy/templates/navigation.html:7 +#: templates/kaehmy/navigation.html:7 msgid "List kaehmys" msgstr "Kaikki kaehmyt" -#: kaehmy/templates/navigation.html:8 +#: templates/kaehmy/navigation.html:8 msgid "New kaehmy" msgstr "Uusi kaehmy" -#: kaehmy/templates/navigation.html:9 kaehmy/templates/statistics.html:13 +#: templates/kaehmy/navigation.html:9 templates/kaehmy/statistics.html:13 msgid "Statistics" msgstr "Kaehmytilastot" -#: members/forms.py:107 members/models.py:101 members/tables.py:41 -msgid "Member" -msgstr "Jäsen" - -#: members/forms.py:123 -msgid "I'm a member of AYY" -msgstr "Olen AYY:n jäsen" - -#: members/forms.py:124 -msgid "I want to receive a weekly newsletter" -msgstr "Haluan saada viikottaisen jäsentiedotteen" - -#: members/models.py:12 -msgid "First name" -msgstr "Etunimi" - -#: members/models.py:13 -msgid "Last name" -msgstr "Sukunimi" - -#: members/models.py:15 -msgid "Place of residence" -msgstr "Asuinpaikka" - -#: members/models.py:17 members/models.py:68 -#: members/templates/member_add_many.html:39 -msgid "AYY" -msgstr "AYY" - -#: members/models.py:18 -msgid "JAS" -msgstr "JAS" - -#: members/models.py:49 -msgid "Submitted" -msgstr "Lisätty" - -#: members/models.py:66 -msgid "Date" -msgstr "Päivämäärä" - -#: members/models.py:67 -msgid "Source" -msgstr "Lähde" - -#: members/models.py:69 -msgid "Cash" -msgstr "Käteinen" - -#: members/models.py:70 members/templates/member_add_many.html:40 -msgid "Bank transfer" -msgstr "Tilisiirto" - -#: members/models.py:94 -msgid "Created" -msgstr "Lisätty" - -#: members/models.py:102 members/templates/base.html:53 -#: members/templates/member_add_many_confirm.html:12 -msgid "Members" -msgstr "Jäsenet" - -#: members/tables.py:15 -msgid "Last paid" -msgstr "Viimeksi maksettu" - -#: members/tables.py:19 members/tables.py:45 members/tables.py:60 -msgid "Edit" -msgstr "Muokkaa" - -#: members/tables.py:31 -msgid " (not paid)" -msgstr " (ei maksua)" - -#: members/templates/application_delete_confirm.html:9 +#: templates/members/application_delete_confirm.html:9 msgid "Are you sure you want to delete this application?" msgstr "Oletko varma, että haluat poistaa tämän hakemuksen?" -#: members/templates/application_delete_confirm.html:19 -#: members/templates/member_delete_confirm.html:19 -#: members/templates/payment_delete_confirm.html:19 +#: templates/members/application_delete_confirm.html:19 +#: templates/members/member_delete_confirm.html:19 +#: templates/members/payment_delete_confirm.html:19 msgid "Yes, I'm sure" msgstr "Kyllä, olen varma" -#: members/templates/application_edit.html:9 +#: templates/members/application_edit.html:9 msgid "Edit application" msgstr "Muokkaa hakemusta" -#: members/templates/application_edit.html:18 +#: templates/members/application_edit.html:18 msgid "Accept" msgstr "Hyväksy" -#: members/templates/application_edit.html:20 +#: templates/members/application_edit.html:20 msgid "Decline" msgstr "Hylkää" -#: members/templates/application_index.html:7 +#: templates/members/application_index.html:7 msgid "Killan jäseneksi liittyminen on helppoa ja hauskaa!" msgstr "Killan jäseneksi liittyminen on helppoa ja hauskaa!" -#: members/templates/application_index.html:8 +#: templates/members/application_index.html:8 msgid "Täytä vain alla oleva lomake" msgstr "Täytä vain alla oleva lomake" -#: members/templates/application_index.html:9 +#: templates/members/application_index.html:9 msgid "Muista myös maksaa jäsenmaksusi!" msgstr "Muista myös maksaa jäsenmaksusi!" -#: members/templates/application_list.html:8 +#: templates/members/application_list.html:8 msgid "Member applications" msgstr "Jäsenhakemukset" -#: members/templates/application_list.html:20 -#: members/templates/member_list.html:44 members/templates/payment_list.html:41 +#: templates/members/application_list.html:20 +#: templates/members/member_list.html:44 templates/members/payment_list.html:41 msgid "Download Excel" msgstr "Lataa Excel" -#: members/templates/application_success.html:8 +#: templates/members/application_success.html:8 msgid "Hienoa! Jäsenhakemuksesi on nyt lähetetty." msgstr "Hienoa! Jäsenhakemuksesi on nyt lähetetty." -#: members/templates/application_success.html:9 +#: templates/members/application_success.html:9 msgid "" "Vahvistusviesti on lähetetty sähköpostiisi. Ota yhteyttä " "admin@sahkoinsinoorikilta.fi jos viestiä ei näy." msgstr "" -#: members/templates/application_success.html:10 +#: templates/members/application_success.html:10 msgid "Takaisin Sähköinsinöörikillan web-sivuille" msgstr "Takaisin Sähköinsinöörikillan web-sivuille" -#: members/templates/base.html:16 members/templates/member_list.html:11 -#: webapp/templates/index.html:25 +#: templates/members/base.html:15 templates/members/member_list.html:11 msgid "Member register" msgstr "Jäsenrekisteri" -#: members/templates/base.html:34 members/templates/base.html:43 +#: templates/members/base.html:33 templates/members/base.html:42 msgid "Member register of SIK ry" msgstr "Aalto-yliopiston Sähköinsinöörikilta ry:n jäsenrekisteri" -#: members/templates/base.html:55 +#: templates/members/base.html:54 msgid "List members" msgstr "Jäsenlistaus" -#: members/templates/base.html:56 members/templates/member_add.html:8 +#: templates/members/base.html:55 templates/members/member_add.html:8 msgid "Add member" msgstr "Lisää jäsen" -#: members/templates/base.html:57 +#: templates/members/base.html:56 msgid "Add multiple" msgstr "Lisää useita" -#: members/templates/base.html:61 -#: members/templates/member_add_many_confirm.html:16 +#: templates/members/base.html:60 +#: templates/members/member_add_many_confirm.html:16 msgid "Payments" msgstr "Maksutapahtumat" -#: members/templates/base.html:63 +#: templates/members/base.html:62 msgid "List payments" msgstr "Maksulistaus" -#: members/templates/base.html:64 members/templates/payment_add.html:13 +#: templates/members/base.html:63 templates/members/payment_add.html:13 msgid "Add payment" msgstr "Lisää maksu" -#: members/templates/base.html:68 +#: templates/members/base.html:67 msgid "Applications" msgstr "Jäsenhakemukset" -#: members/templates/base.html:70 +#: templates/members/base.html:69 msgid "List applications" msgstr "Hakemuslistaus" -#: members/templates/base.html:71 +#: templates/members/base.html:70 msgid "Application form" msgstr "Jäsenhakemuslomake" -#: members/templates/base.html:76 members/templates/settings.html:11 +#: templates/members/base.html:75 templates/members/settings.html:11 msgid "Settings" msgstr "Asetukset" -#: members/templates/email_application_accept.html:2 -msgid "Moi" -msgstr "" - -#: members/templates/email_application_accept.html:4 -msgid "Onnittelut! Sinut on hyväksytty Sähköinsinöörikillan jäseneksi." -msgstr "" - -#: members/templates/email_application_accept.html:6 -msgid "Käy kurkkaamassa killan nettisivuilta" -msgstr "" - -#: members/templates/email_application_accept.html:6 -msgid "" -"tulevia tapahtumia ja piipahda kiltahuoneella tutustumassa uusiin " -"kiltatovereihisi!" -msgstr "" - -#: members/templates/email_application_accept.html:8 -msgid "Liity myös killan TG-kanaville" -msgstr "" - -#: members/templates/email_application_accept.html:9 -msgid "SIK" -msgstr "" - -#: members/templates/email_application_accept.html:10 -msgid "SIK-fuksit 2019" -msgstr "" - -#: members/templates/email_application_accept.html:11 -msgid "SIK-fuksit 2019 -tiedotuskanava" -msgstr "" - -#: members/templates/email_application_submit.html:2 -#: ohlhafv/templates/email.html:2 +#: templates/members/email_application_submit.html:2 +#: templates/ohlhafv/email.html:2 msgid "Moikka" msgstr "" -#: members/templates/email_application_submit.html:4 +#: templates/members/email_application_submit.html:4 msgid "" "Sait tämän viestin, sillä olet lähettänyt hakemuksen Aalto-yliopiston " "Sähköinsinöörikillan jäseneksi alla olevin tiedoin. Siistiä!" msgstr "" -#: members/templates/email_application_submit.html:6 +#: templates/members/email_application_submit.html:6 msgid "Etunimi" msgstr "" -#: members/templates/email_application_submit.html:7 +#: templates/members/email_application_submit.html:7 msgid "Sukunimi" msgstr "" -#: members/templates/email_application_submit.html:8 +#: templates/members/email_application_submit.html:8 msgid "Sähköposti" msgstr "" -#: members/templates/email_application_submit.html:9 +#: templates/members/email_application_submit.html:9 msgid "Kotipaikkakunta" msgstr "" -#: members/templates/email_application_submit.html:10 +#: templates/members/email_application_submit.html:10 msgid "AYY:n jäsen" msgstr "" -#: members/templates/email_application_submit.html:11 +#: templates/members/email_application_submit.html:11 msgid "Haluan jäsenmailin" msgstr "" -#: members/templates/email_application_submit.html:13 +#: templates/members/email_application_submit.html:13 msgid "" "Saat sähköpostiisi tiedon, kun sinut on hallituksen kokouksessa hyväksytty " "jäseneksi" msgstr "" -#: members/templates/email_application_submit.html:15 +#: templates/members/email_application_submit.html:15 msgid "Muistathan maksaa jäsenmaksun! Alla maksutiedot" msgstr "Muistathan maksaa jäsenmaksun! Alla maksutiedot" -#: members/templates/email_application_submit.html:17 +#: templates/members/email_application_submit.html:17 msgid "Saaja" msgstr "" -#: members/templates/email_application_submit.html:18 +#: templates/members/email_application_submit.html:18 msgid "Tilinumero" msgstr "" -#: members/templates/email_application_submit.html:20 +#: templates/members/email_application_submit.html:20 msgid "Viite" msgstr "" -#: members/templates/email_application_submit.html:21 +#: templates/members/email_application_submit.html:21 msgid "Summa" msgstr "" -#: members/templates/member_add.html:15 members/templates/member_edit.html:18 -#: members/templates/payment_add.html:20 members/templates/payment_edit.html:18 +#: templates/members/member_add.html:15 templates/members/member_edit.html:18 +#: templates/members/payment_add.html:20 templates/members/payment_edit.html:18 msgid "Save" msgstr "Tallenna" -#: members/templates/member_add_many.html:8 +#: templates/members/member_add_many.html:8 msgid "Add many members" msgstr "Lisää useita" -#: members/templates/member_add_many.html:13 +#: templates/members/member_add_many.html:13 +#, fuzzy +#| msgid "" +#| "\n" +#| " Enter member information in CSV format, separate members on " +#| "separate lines. \n" +#| " If a new member already exists in the database, a new payment " +#| "event will be created for that member instead.\n" +#| " " msgid "" "\n" " Enter member information in CSV format, separate members on " -"separate lines. \n" +"separate lines.\n" " If a new member already exists in the database, a new payment " "event will be created for that member instead.\n" " " @@ -802,11 +952,11 @@ msgstr "" " Jos jäsenen tiedot ovat jo tietokannassa, tehdään tälle " "jäsenelle uusi maksutapahtuma." -#: members/templates/member_add_many.html:21 +#: templates/members/member_add_many.html:21 msgid "Format the member table like this:" msgstr "Jäsentele taulukko seuraavasti:" -#: members/templates/member_add_many.html:25 +#: templates/members/member_add_many.html:25 msgid "" "Columns: First name, last name, email address, place of origin, AYY member, " "JAS recipient" @@ -814,23 +964,23 @@ msgstr "" "Kolumnit: Etunimi, sukunimi, sähköpostiosoite, asuinpaikka, AYY:n jäsen, " "jäsenmailin vastaanottaja" -#: members/templates/member_add_many.html:28 +#: templates/members/member_add_many.html:28 msgid "Save the file as CSV" msgstr "Tallenna tiedosto CSV-formaatissa" -#: members/templates/member_add_many.html:33 +#: templates/members/member_add_many.html:33 msgid "Upload file" msgstr "Lataa tiedosto" -#: members/templates/member_add_many.html:37 +#: templates/members/member_add_many.html:37 msgid "Payment source" msgstr "Maksutapa" -#: members/templates/member_add_many.html:41 +#: templates/members/member_add_many.html:41 msgid "Cash payment" msgstr "Käteismaksu" -#: members/templates/member_add_many.html:44 +#: templates/members/member_add_many.html:44 msgid "" "This payment source will be used to create any payments for new members that " "already exist in the database." @@ -838,250 +988,102 @@ msgstr "" "Tätä maksutapaa käytetään, kun jo tietokannassa oleville jäsenille luodaan " "maksutapahtuma." -#: members/templates/member_add_many.html:48 +#: templates/members/member_add_many.html:48 msgid "CSV delimiter" msgstr "CSV-erotin" -#: members/templates/member_add_many.html:51 +#: templates/members/member_add_many.html:51 msgid "" "The symbol that is used to separate items in one line. Defaults to " "';' (semicolon)." msgstr "" "Merkki, jota käytetään rivin osien erottamiseen. Oletuksena ';' (puolipiste)." -#: members/templates/member_add_many_confirm.html:8 +#: templates/members/member_add_many_confirm.html:8 msgid "Confirm adding these entries?" msgstr "Vahvista muutokset?" -#: members/templates/member_delete_confirm.html:9 +#: templates/members/member_delete_confirm.html:9 msgid "Are you sure you want to delete this member?" msgstr "Oletko varma, että haluat poistaa tämän jäsenen?" -#: members/templates/member_edit.html:9 +#: templates/members/member_edit.html:9 msgid "Edit member" msgstr "Muokkaa jäsentä" -#: members/templates/member_list.html:21 +#: templates/members/member_list.html:21 msgid "Members in register:" msgstr "Jäseniä:" -#: members/templates/member_list.html:28 members/templates/payment_list.html:25 +#: templates/members/member_list.html:28 templates/members/payment_list.html:25 msgid "Search" msgstr "Hae" -#: members/templates/member_list.html:36 members/templates/payment_list.html:33 +#: templates/members/member_list.html:36 templates/members/payment_list.html:33 msgid "Showing results for" msgstr "Näytetään tulokset haulle" -#: members/templates/payment_delete_confirm.html:9 +#: templates/members/payment_delete_confirm.html:9 msgid "Are you sure you want to delete this payment?" msgstr "Oletko varma, että haluat poistaa tämän maksutapahtuman?" -#: members/templates/payment_edit.html:9 +#: templates/members/payment_edit.html:9 msgid "Edit payment" msgstr "Muokkaa maksua" -#: members/templates/payment_list.html:8 +#: templates/members/payment_list.html:8 msgid "Payment events" msgstr "Maksutapahtumat" -#: members/templates/payment_list.html:18 +#: templates/members/payment_list.html:18 msgid "Payments in register:" msgstr "Maksutapahtumia:" -#: members/templates/settings.html:17 +#: templates/members/settings.html:17 msgid "Language" msgstr "Kieli" -#: members/templates/settings.html:20 sikweb/base.py:216 -msgid "Finnish" -msgstr "suomi" - -#: members/templates/settings.html:21 sikweb/base.py:217 -msgid "English" -msgstr "englanti" - -#: members/views/applications.py:53 members/views/applications.py:124 -#: members/views/applications.py:149 -msgid "No application id specified" -msgstr "Hakemuksen ID ei määritelty" - -#: members/views/applications.py:73 -msgid "Application missing 'id' field." -msgstr "Hakemuksen ID ei määritelty." - -#: members/views/applications.py:82 -msgid "Email {} is already in use by a member. Application cannot be accepted." -msgstr "Sähköpostiosoite {} on jo käytössä. Hakemusta ei hyväksytty." - -#: members/views/applications.py:93 -msgid "Successfully accepted application" -msgstr "Onnistuneesti hyväksyttiin hakemus" - -#: members/views/applications.py:96 -msgid "Jäsenhakemuksesi Sähköinsinöörikiltaan on hyväksytty!" -msgstr "" - -#: members/views/applications.py:128 -msgid "Successfully deleted application" -msgstr "Onnistuneesti poistettiin hakemus" - -#: members/views/applications.py:138 -msgid "Could not delete application object" -msgstr "Hakemusobjektia ei voitu poistaa" - -#: members/views/applications.py:176 -msgid "Jäsenhakemuksesi Sähköinsinöörikiltaan on lähetetty onnistuneesti!" -msgstr "" - -#: members/views/applications.py:181 members/views/applications.py:182 -msgid "Kyllä" -msgstr "" - -#: members/views/applications.py:181 members/views/applications.py:182 -msgid "Ei" -msgstr "" - -#: members/views/members.py:85 members/views/members.py:187 -#: members/views/members.py:211 -msgid "No member id specified" -msgstr "Jäsenen ID ei määritelty" - -#: members/views/members.py:126 -msgid "Failed to import members" -msgstr "Jäsenten tuonti epäonnistui" - -#: members/views/members.py:140 -msgid "Successfully added member" -msgstr "Onnistuneesti lisättiin jäsen" - -#: members/views/members.py:161 -msgid "Member missing 'id' field." -msgstr "Jäsenen ID ei määritelty." - -#: members/views/members.py:170 -msgid "Successfully updated member" -msgstr "Onnistuneesti päivitettiin jäsen" - -#: members/views/members.py:191 -msgid "Successfully deleted member" -msgstr "Onnistuneesti poistettiin jäsen" - -#: members/views/members.py:200 -msgid "Could not delete member object" -msgstr "Jäsenobjektia ei voitu poistaa" - -#: members/views/payments.py:70 -msgid "Successfully added payment for member" -msgstr "Onnistuneesti lisättiin maksutapahtuma jäsenelle" - -#: members/views/payments.py:87 members/views/payments.py:104 -#: members/views/payments.py:122 -msgid "No payment id specified" -msgstr "Maksutapahtuman ID ei määritelty" - -#: members/views/payments.py:127 -msgid "Successfully deleted payment" -msgstr "Onnistuneesti poistettiin maksutapahtuma" - -#: members/views/payments.py:135 -msgid "Could not delete payment object" -msgstr "Maksutapahtumaobjektia ei voitu poistaa" - -#: members/views/payments.py:155 -msgid "Successfully updated payment" -msgstr "Onnistuneesti päivitettiin maksutapahtuma" - -#: members/views/payments.py:160 -msgid "Could not update payment object" -msgstr "Maksutapahtumaobjektia ei voitu päivittää" - -#: members/views/utils.py:111 -msgid "Missing CSV file" -msgstr "Puuttuva CSV-tiedosto" - -#: ohlhafv/models.py:15 -msgid "Ohlhafv" -msgstr "Øhlhäfv" - -#: ohlhafv/models.py:22 -msgid "Ohlhafv challenge" -msgstr "Øhlhäfv-haaste" - -#: ohlhafv/models.py:23 -msgid "Ohlhafv challenges" -msgstr "Øhlhäfv-haasteet" - -#: ohlhafv/models.py:29 -msgid "Team Challenge (1 x 0.33 L, 2 x 0.5 L, 1 x 1.0 L)" -msgstr "Joukkuehaaste (1 x 0.33 L, 2 x 0.5 L, 1 x 1.0 L)" - -#: ohlhafv/models.py:32 -msgid "Challenger" -msgstr "Haastaja" - -#: ohlhafv/models.py:33 -msgid "Victim" -msgstr "Uhri" - -#: ohlhafv/models.py:34 -msgid "Victim email" -msgstr "Uhrin sähköpostiosoite" - -#: ohlhafv/models.py:35 -msgid "Series" -msgstr "Sarja" - -#: ohlhafv/models.py:40 -msgid "Ohlhafv challenge: {} vs. {}" -msgstr "Øhlhäfv-haaste: {} vs. {}" - -#: ohlhafv/templates/email.html:4 +#: templates/ohlhafv/email.html:4 msgid "on haastanut sinut oluenjuontimittelöön" msgstr "" -#: ohlhafv/templates/email.html:4 +#: templates/ohlhafv/email.html:4 msgid "-sarjassa" msgstr "" -#: ohlhafv/templates/email.html:8 -msgid "Muistattehan vahvistaa haasteen paikan päällä Smökissä torstaina 26.5." +#: templates/ohlhafv/email.html:8 +msgid "Muistattehan vahvistaa haasteen paikan päällä Smökissä torstaina 26.5" msgstr "" -#: ohlhafv/templates/email.html:10 +#: templates/ohlhafv/email.html:10 msgid "Käy kurkkaamassa muutkin haasteet osoitteessa" msgstr "" -#: ohlhafv/templates/list.html:8 +#: templates/ohlhafv/list.html:8 msgid "All challenges" msgstr "Kaikki haasteet" -#: ohlhafv/templates/list.html:12 +#: templates/ohlhafv/list.html:12 msgid "Total challenges:" msgstr "Haasteita yhteensä:" -#: ohlhafv/templates/navigation.html:5 +#: templates/ohlhafv/navigation.html:5 msgid "New challenge" msgstr "Uusi haaste" -#: ohlhafv/templates/navigation.html:6 +#: templates/ohlhafv/navigation.html:6 msgid "List challenges" msgstr "Kaikki haasteet" -#: ohlhafv/templates/new.html:12 +#: templates/ohlhafv/new.html:12 msgid "Challenge your foe(s) to combat!" msgstr "Haasta kaverisi mittelöön!" -#: ohlhafv/templates/new.html:19 +#: templates/ohlhafv/new.html:19 msgid "Challenge" msgstr "Haasta" -#: templates/admin/base_site.html:44 -msgid "Go" -msgstr "Vaihda" - -#: templates/footer.html:10 templates/project.html:16 -#: webapp/templates/index.html:9 +#: templates/project.html:15 msgid "Aalto-yliopiston Sähköinsinöörikilta ry" msgstr "Aalto-yliopiston Sähköinsinöörikilta ry" @@ -1097,159 +1099,150 @@ msgstr "Tunniste" msgid "Tags" msgstr "Tunnisteet" -#: webapp/models.py:36 +#: webapp/models.py:37 msgid "Tag: {}" msgstr "Tunniste: {}" -#: webapp/models.py:54 +#: webapp/models.py:56 msgid "Feed" msgstr "Uutinen" -#: webapp/models.py:55 +#: webapp/models.py:57 msgid "Feeds" msgstr "Uutiset" -#: webapp/models.py:63 webapp/models.py:102 webapp/models.py:162 -#: webapp/models.py:196 webapp/models.py:248 +#: webapp/models.py:65 webapp/models.py:104 webapp/models.py:166 +#: webapp/models.py:201 webapp/models.py:243 msgid "Deleted: " msgstr "Poistettu: " -#: webapp/models.py:64 +#: webapp/models.py:66 msgid "{}Feed: {}" msgstr "{}Uutinen: {}" -#: webapp/models.py:92 +#: webapp/models.py:94 msgid "Event" msgstr "Tapahtuma" -#: webapp/models.py:103 +#: webapp/models.py:105 msgid "{}Event: {}" msgstr "{}Tapahtuma: {}" -#: webapp/models.py:133 +#: webapp/models.py:135 msgid "Template question" msgstr "Vakiokysymys" -#: webapp/models.py:134 +#: webapp/models.py:136 msgid "Template questions" msgstr "Vakiokysymykset" -#: webapp/models.py:141 +#: webapp/models.py:144 msgid "Template questions: {}" msgstr "Vakiokysymykset: {}" -#: webapp/models.py:148 +#: webapp/models.py:151 msgid "Signup form" msgstr "Ilmoittautumislomake" -#: webapp/models.py:149 +#: webapp/models.py:152 msgid "Signup forms" msgstr "Ilmoittautumislomakkeet" -#: webapp/models.py:163 +#: webapp/models.py:167 msgid "#{} {}{}" msgstr "" -#: webapp/models.py:181 +#: webapp/models.py:185 msgid "Sign-up" msgstr "Ilmoittautuminen" -#: webapp/models.py:182 +#: webapp/models.py:186 msgid "Sign-ups" msgstr "Ilmoittautumiset" -#: webapp/models.py:228 -msgid "board member" -msgstr "hallituksen jäsen" - -#: webapp/models.py:235 +#: webapp/models.py:229 msgid "JobAd" msgstr "Työpaikkailmoitus" -#: webapp/models.py:236 +#: webapp/models.py:230 msgid "JobAds" msgstr "Työpaikkailmoitukset" -#: webapp/models.py:295 +#: webapp/models.py:291 msgid "Hook Kaehmys" msgstr "Lähetä Kähmyt" -#: webapp/models.py:296 +#: webapp/models.py:292 msgid "Hook Ohlhafv challenges" msgstr "Lähetä Øhlhäfv-haasteet" -#: webapp/models.py:297 +#: webapp/models.py:293 msgid "Hook published news" msgstr "Lähetä julkaistut uutiset" -#: webapp/models.py:298 +#: webapp/models.py:294 msgid "Hook published Job Ads" msgstr "Lähetä työpaikkailmoitukset" -#: webapp/models.py:299 +#: webapp/models.py:295 msgid "Hook published events" msgstr "Lähetä julkaistut tapahtumat" -#: webapp/models.py:300 +#: webapp/models.py:296 msgid "Hook opened signups" msgstr "Lähetä auenneet ilmot" -#: webapp/models.py:325 +#: webapp/models.py:321 msgid "Webhook" msgstr "Webhook" -#: webapp/models.py:326 +#: webapp/models.py:322 msgid "Webhooks" msgstr "Webhookit" -#: webapp/models.py:339 +#: webapp/models.py:335 msgid "Telegram channel" msgstr "Telegram-kanava" -#: webapp/models.py:340 +#: webapp/models.py:336 msgid "Telegram channels" msgstr "Telegram-kanavat" -#: webapp/templates/contact.html:9 webapp/templates/navigation.html:20 -msgid "Contact" -msgstr "Yhteystiedot" +#~ msgid "Elepaja" +#~ msgstr "Elepaja" -#: webapp/templates/event_calendar.html:10 webapp/templates/navigation.html:11 -msgid "Event calendar" -msgstr "Tapahtumakalenteri" +#~ msgid "Go" +#~ msgstr "Vaihda" -#: webapp/templates/guild.html:10 -msgid "Kilta" -msgstr "Kilta" +#~ msgid "Contact" +#~ msgstr "Yhteystiedot" -#: webapp/templates/index.html:14 -msgid "This site is not yet ready." -msgstr "Nämä sivut eivät ole vielä valmiit." +#~ msgid "Event calendar" +#~ msgstr "Tapahtumakalenteri" -#: webapp/templates/index.html:19 -msgid "Are you perhaps looking for one of the following?" -msgstr "Etsitkö kenties jotain näistä?" +#~ msgid "Kilta" +#~ msgstr "Kilta" -#: webapp/templates/index.html:24 -msgid "Infoscreen admin pane" -msgstr "Infonäyttöjen hallintapaneeli" +#~ msgid "This site is not yet ready." +#~ msgstr "Nämä sivut eivät ole vielä valmiit." -#: webapp/templates/index.html:26 -msgid "Kaehmy application" -msgstr "Kaehmy" +#~ msgid "Are you perhaps looking for one of the following?" +#~ msgstr "Etsitkö kenties jotain näistä?" -#: webapp/templates/jobs.html:10 webapp/templates/navigation.html:27 -msgid "Jobs" -msgstr "Työpaikat" +#~ msgid "Infoscreen admin pane" +#~ msgstr "Infonäyttöjen hallintapaneeli" -#: webapp/templates/navigation.html:5 -msgid "Guild" -msgstr "Kilta" +#~ msgid "Kaehmy application" +#~ msgstr "Kaehmy" -#: webapp/templates/navigation.html:17 webapp/templates/sosso.html:10 -msgid "Sössö" -msgstr "Sössö" +#~ msgid "Jobs" +#~ msgstr "Työpaikat" -#: webapp/templates/navigation.html:24 -msgid "Corporate" -msgstr "Yritys" +#~ msgid "Guild" +#~ msgstr "Kilta" + +#~ msgid "Sössö" +#~ msgstr "Sössö" + +#~ msgid "Corporate" +#~ msgstr "Yritys" diff --git a/poetry.lock b/poetry.lock index 3598fc0..7c19448 100644 --- a/poetry.lock +++ b/poetry.lock @@ -241,14 +241,14 @@ Django = ">=3.2" [[package]] name = "django-phonenumber-field" -version = "6.3.0" +version = "6.4.0" description = "An international phone number field for django models." category = "main" optional = false python-versions = ">=3.7" [package.dependencies] -Django = ">=2.2" +Django = ">=3.2" phonenumbers = {version = ">=7.0.2", optional = true, markers = "extra == \"phonenumbers\""} [package.extras] @@ -314,7 +314,7 @@ test = ["cryptography", "pytest-cov", "pytest-django", "pytest-xdist", "pytest", [[package]] name = "dparse" -version = "0.5.1" +version = "0.6.2" description = "A parser for Python dependency files" category = "dev" optional = false @@ -322,11 +322,11 @@ python-versions = ">=3.5" [package.dependencies] packaging = "*" -pyyaml = "*" toml = "*" [package.extras] pipenv = ["pipenv"] +conda = ["pyyaml"] [[package]] name = "et-xmlfile" @@ -1092,10 +1092,7 @@ djangorestframework = [ {file = "djangorestframework-3.13.1.tar.gz", hash = "sha256:0c33407ce23acc68eca2a6e46424b008c9c02eceb8cf18581921d0092bc1f2ee"}, ] djangorestframework-simplejwt = [] -dparse = [ - {file = "dparse-0.5.1-py3-none-any.whl", hash = "sha256:e953a25e44ebb60a5c6efc2add4420c177f1d8404509da88da9729202f306994"}, - {file = "dparse-0.5.1.tar.gz", hash = "sha256:a1b5f169102e1c894f9a7d5ccf6f9402a836a5d24be80a986c7ce9eaed78f367"}, -] +dparse = [] et-xmlfile = [ {file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"}, {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"}, diff --git a/production_entrypoint.sh b/production_entrypoint.sh index c39f2f1..0efc365 100755 --- a/production_entrypoint.sh +++ b/production_entrypoint.sh @@ -10,8 +10,23 @@ fi if test -f "$DB_PASSWD_FILE"; then export DB_PASSWD=$(cat $DB_PASSWD_FILE) fi -if test -f "$GOOGLE_CREDS_JSON"; then - export GOOGLE_CREDS_JSON=$(cat $GOOGLE_CRED_JSON_FILE) +if test -f "$G_PRIVATE_KEY_ID_FILE"; then + export G_PRIVATE_KEY_ID=$(cat $G_PRIVATE_KEY_ID_FILE) +fi +if test -f "$G_PRIVATE_KEY_FILE"; then + export G_PRIVATE_KEY="$(cat $G_PRIVATE_KEY_FILE)" +fi +if test -f "$G_CLIENT_EMAIL_FILE"; then + export G_CLIENT_EMAIL=$(cat $G_CLIENT_EMAIL_FILE) +fi +if test -f "$G_CLIENT_ID_FILE"; then + export G_CLIENT_ID=$(cat $G_CLIENT_ID_FILE) +fi +if test -f "$G_CLIENT_URL_FILE"; then + export G_CLIENT_URL=$(cat $G_CLIENT_URL_FILE) +fi +if test -f "$GROUP_KEY_FILE"; then + export GROUP_KEY=$(cat $GROUP_KEY_FILE) fi # Collect static files diff --git a/sikweb/settings.py b/sikweb/settings.py index b979c15..5580203 100644 --- a/sikweb/settings.py +++ b/sikweb/settings.py @@ -82,7 +82,19 @@ DATABASES = { # Google api settings GROUP_KEY = os.getenv("GROUP_KEY", "") -GOOGLE_SERVICE_ACCOUNT = json.loads(os.getenv("GOOGLE_CREDS_JSON", "{}")) + +GOOGLE_CREDS = { + "type": "service_account", + "project_id": "web2-backend", + "private_key_id": os.getenv("G_PRIVATE_KEY_ID", ""), + "private_key": os.getenv("G_PRIVATE_KEY", ""), + "client_email": os.getenv("G_CLIENT_EMAIL", ""), + "client_id": os.getenv("G_CLIENT_ID", ""), + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": os.getenv("G_CLIENT_URL", ""), +} # JWT authentication SIMPLE_JWT = { diff --git a/stack-compose-dev.yml b/stack-compose-dev.yml index d92b95f..ff3cc4c 100644 --- a/stack-compose-dev.yml +++ b/stack-compose-dev.yml @@ -29,15 +29,39 @@ services: - FRONTEND_URL=dev.sahkoinsinoorikilta.fi - DEBUG=True - EMAIL_API_KEY_FILE=/run/secrets/DJANGO_EMAIL_API_KEY + - G_PRIVATE_KEY_ID_FILE=/run/secrets/BACKEND_G_PRIVATE_KEY_ID + - G_PRIVATE_KEY_FILE=/run/secrets/BACKEND_G_PRIVATE_KEY + - G_CLIENT_EMAIL_FILE=/run/secrets/BACKEND_G_CLIENT_EMAIL + - G_CLIENT_ID_FILE=/run/secrets/BACKEND_G_CLIENT_ID + - G_CLIENT_URL_FILE=/run/secrets/BACKEND_G_CLIENT_URL + - GROUP_KEY_FILE=/run/secrets/BACKEND_GROUP_KEY - DB_HOST=db - DB_PORT=5432 secrets: - DJANGO_EMAIL_API_KEY + - BACKEND_G_PRIVATE_KEY_ID + - BACKEND_G_PRIVATE_KEY + - BACKEND_G_CLIENT_EMAIL + - BACKEND_G_CLIENT_ID + - BACKEND_G_CLIENT_URL + - BACKEND_GROUP_KEY secrets: DJANGO_EMAIL_API_KEY: external: true + BACKEND_G_PRIVATE_KEY_ID: + external: true + BACKEND_G_PRIVATE_KEY: + external: true + BACKEND_G_CLIENT_EMAIL: + external: true + BACKEND_G_CLIENT_ID: + external: true + BACKEND_G_CLIENT_URL: + external: true + BACKEND_GROUP_KEY: + external: true volumes: dbdata: diff --git a/stack-compose.yml b/stack-compose.yml index 15e6bdc..a336faf 100644 --- a/stack-compose.yml +++ b/stack-compose.yml @@ -34,13 +34,24 @@ services: - SECRET_KEY_FILE=/run/secrets/BACKEND_SECRET_KEY - DB_PASSWD_FILE=/run/secrets/BACKEND_DB_PASSWD - EMAIL_API_KEY_FILE=/run/secrets/BACKEND_EMAIL_API_KEY - - GOOGLE_CREDS_JSON=/run/secrets/GOOGLE_CREDS_JSON + - G_PRIVATE_KEY_ID_FILE=/run/secrets/BACKEND_G_PRIVATE_KEY_ID + - G_PRIVATE_KEY_FILE=/run/secrets/BACKEND_G_PRIVATE_KEY + - G_CLIENT_EMAIL_FILE=/run/secrets/BACKEND_G_CLIENT_EMAIL + - G_CLIENT_ID_FILE=/run/secrets/BACKEND_G_CLIENT_ID + - G_CLIENT_URL_FILE=/run/secrets/BACKEND_G_CLIENT_URL + - GROUP_KEY_FILE=/run/secrets/BACKEND_GROUP_KEY secrets: - BACKEND_SECRET_KEY - BACKEND_DB_PASSWD - BACKEND_EMAIL_API_KEY - - GOOGLE_CREDS_JSON + - BACKEND_G_PRIVATE_KEY_ID + - BACKEND_G_PRIVATE_KEY + - BACKEND_G_CLIENT_EMAIL + - BACKEND_G_CLIENT_ID + - BACKEND_G_CLIENT_URL + - BACKEND_GROUP_KEY + secrets: BACKEND_SECRET_KEY: external: true @@ -48,5 +59,15 @@ secrets: external: true BACKEND_EMAIL_API_KEY: external: true - GOOGLE_CREDS_JSON: - EXTERNAL: true + BACKEND_G_PRIVATE_KEY_ID: + external: true + BACKEND_G_PRIVATE_KEY: + external: true + BACKEND_G_CLIENT_EMAIL: + external: true + BACKEND_G_CLIENT_ID: + external: true + BACKEND_G_CLIENT_URL: + external: true + BACKEND_GROUP_KEY: + external: true diff --git a/templates/kaehmy/base.html b/templates/kaehmy/base.html index 0b56266..6af89bb 100644 --- a/templates/kaehmy/base.html +++ b/templates/kaehmy/base.html @@ -13,7 +13,7 @@ {% block body %} {% block header %} -
+
{% include "kaehmy/header.html" %}
{% endblock header %} diff --git a/templates/kaehmy/email_comment.html b/templates/kaehmy/email_comment.html new file mode 100644 index 0000000..51580ac --- /dev/null +++ b/templates/kaehmy/email_comment.html @@ -0,0 +1,10 @@ +{% load i18n %} + +

+ Hei! +

+

+ {{ name }} on vastannut kaehmyhakemukseesi tai kommenttiisi kaehmypalvelussa. + Käy lukemassa viesti + täältä. +

\ No newline at end of file diff --git a/templates/kaehmy/email_kaehmy.html b/templates/kaehmy/email_kaehmy.html new file mode 100644 index 0000000..3b7fb69 --- /dev/null +++ b/templates/kaehmy/email_kaehmy.html @@ -0,0 +1,13 @@ +{% load i18n %} + +

+ Moikka {{ name }}! +

+

+ Hienoa, että kilta kiinnostaa! Kaehmysi on vastaanotettu. + Mahdollisista kommenteista tulee ilmoitus sähköpostitse. +

+

+ Käy katsomassa kaehmytilanne + täältä. +

\ No newline at end of file diff --git a/templates/kaehmy/export.html b/templates/kaehmy/export.html index 9cc34b3..407d0dd 100644 --- a/templates/kaehmy/export.html +++ b/templates/kaehmy/export.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends "kaehmy/base.html" %} {% load static %} {% load i18n %} diff --git a/templates/kaehmy/header.html b/templates/kaehmy/header.html index cf8e165..7cbdecb 100644 --- a/templates/kaehmy/header.html +++ b/templates/kaehmy/header.html @@ -1,7 +1,14 @@ {% load i18n %} -
+
+
+

{% blocktrans %}Kähmyt ovat auki!{% endblocktrans %}

+

{% blocktrans %}Haku hallitukseen 24.10. mennessä ja toimihenkilöksi 18.11 mennessä.{% endblocktrans %}

+

{% blocktrans %}Hae nyt!{% endblocktrans %}

diff --git a/templates/kaehmy/kaehmy.html b/templates/kaehmy/kaehmy.html index 71d9c84..f18f596 100644 --- a/templates/kaehmy/kaehmy.html +++ b/templates/kaehmy/kaehmy.html @@ -28,10 +28,12 @@

{% trans "Päivämääriä & deadlineja" %}
{% csrf_token %} {% bootstrap_field form.name %} @@ -75,7 +77,7 @@ {% blocktrans %} - Hyväksyn tietosuojaselosteen ja tietojeni tallentamisen. + Hyväksyn tietosuojaselosteen ja tietojeni tallentamisen. {% endblocktrans %} {% buttons %} diff --git a/templates/kaehmy/message.html b/templates/kaehmy/message.html index 0374b96..c787931 100644 --- a/templates/kaehmy/message.html +++ b/templates/kaehmy/message.html @@ -2,7 +2,7 @@
-

{{ message.name }}

+

{{ message.name }}

{{ message.message|linebreaks|urlize }}

{{ message.timestamp }}
diff --git a/templates/kaehmy/navigation.html b/templates/kaehmy/navigation.html index b9e8919..99720b0 100644 --- a/templates/kaehmy/navigation.html +++ b/templates/kaehmy/navigation.html @@ -1,8 +1,8 @@ {% load i18n %} {% load static %} -
-