White label #382

This commit is contained in:
Daniel Grams 2023-03-17 23:26:04 +01:00
parent 37fd76691e
commit eb87c89ae6
24 changed files with 387 additions and 1508 deletions

View File

@ -22,6 +22,7 @@ ENV SECURITY_PASSWORD_HASH=""
ENV SERVER_NAME=""
ENV STATIC_FILES_MIRROR=""
ENV REDIS_URL=""
ENV DOCS_URL=""
# Install pip requirements
COPY requirements.txt .

View File

@ -23,7 +23,8 @@ MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_DEFAULT_SENDER=
MAIL_USE_TLS=True
GOOGLE_MAPS_API_KEY=AIzaDummy
GOOGLE_MAPS_API_KEY=
SEO_SITEMAP_PING_GOOGLE=False
JWT_PRIVATE_KEY=""
JWT_PUBLIC_JWKS=''
DOCS_URL=''

View File

@ -23,6 +23,7 @@ x-web-env:
CACHE_PATH: tmp
JWT_PRIVATE_KEY: ${JWT_PRIVATE_KEY}
JWT_PUBLIC_JWKS: ${JWT_PUBLIC_JWKS}
DOCS_URL: ${DOCS_URL}
x-web:
&default-web

View File

@ -1,3 +1,11 @@
events {}
http {
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/vhosts/gsevpt.de;
server_name _;
location ^~ /image/ {
root "/var/www/vhosts/gsevpt.de/cache/img";
expires 1h;
@ -17,8 +25,11 @@ location ^~ /image/ {
}
}
location ^~ /static/ {
alias "/var/www/vhosts/gsevpt.de/static/";
expires 1h;
root "/var/www/vhosts/gsevpt.de/";
location ~ ^/static/(.*)$ {
try_files /static-custom/$1 /static/$1 @docker;
}
}
location ^~ /dump/ {
alias "/var/www/vhosts/gsevpt.de/cache/dump/";
@ -40,3 +51,5 @@ location @docker {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-03-15 19:10+0100\n"
"POT-Creation-Date: 2023-03-16 19:11+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -198,85 +198,89 @@ msgstr ""
msgid "You have received an invitation"
msgstr ""
#: project/forms/admin.py:10 project/templates/layout.html:317
#: project/views/root.py:55
#: project/forms/admin.py:10 project/templates/layout.html:294
#: project/views/root.py:57
msgid "Terms of service"
msgstr ""
#: project/forms/admin.py:11 project/templates/layout.html:321
#: project/views/root.py:63
#: project/forms/admin.py:11 project/templates/layout.html:298
#: project/views/root.py:65
msgid "Legal notice"
msgstr ""
#: project/forms/admin.py:12 project/templates/_macros.html:1395
#: project/templates/layout.html:325
#: project/templates/layout.html:302
#: project/templates/widget/event_suggestion/create.html:204
#: project/views/admin_unit.py:73 project/views/root.py:71
#: project/views/admin_unit.py:73 project/views/root.py:73
msgid "Contact"
msgstr ""
#: project/forms/admin.py:13 project/templates/layout.html:329
#: project/views/root.py:79
#: project/forms/admin.py:13 project/templates/layout.html:306
#: project/views/root.py:81
msgid "Privacy"
msgstr ""
#: project/forms/admin.py:15 project/forms/oauth2_client.py:24
#: project/forms/admin.py:14
msgid "Start page"
msgstr ""
#: project/forms/admin.py:16 project/forms/oauth2_client.py:24
msgid "Save"
msgstr ""
#: project/forms/admin.py:19 project/forms/admin_unit_member.py:12
#: project/forms/admin.py:20 project/forms/admin_unit_member.py:12
#: project/forms/admin_unit_member.py:32
msgid "Roles"
msgstr ""
#: project/forms/admin.py:20 project/templates/admin/update_user.html:4
#: project/forms/admin.py:21 project/templates/admin/update_user.html:4
#: project/templates/admin/update_user.html:8
msgid "Update user"
msgstr ""
#: project/forms/admin.py:25
#: project/forms/admin.py:26
msgid "Incoming reference requests allowed"
msgstr ""
#: project/forms/admin.py:26
#: project/forms/admin.py:27
msgid ""
"If set, other organizations can ask this organization to reference their "
"event."
msgstr ""
#: project/forms/admin.py:32
#: project/forms/admin.py:33
msgid "Suggestions enabled"
msgstr ""
#: project/forms/admin.py:33
#: project/forms/admin.py:34
msgid "If set, the organization can work with suggestions."
msgstr ""
#: project/forms/admin.py:37
#: project/forms/admin.py:38
msgid "Create other organizations"
msgstr ""
#: project/forms/admin.py:38
#: project/forms/admin.py:39
msgid "If set, members of the organization can create other organizations."
msgstr ""
#: project/forms/admin.py:44
#: project/forms/admin.py:45
msgid "Invite other organizations"
msgstr ""
#: project/forms/admin.py:45
#: project/forms/admin.py:46
msgid "If set, members of the organization can invite other organizations."
msgstr ""
#: project/forms/admin.py:51
#: project/forms/admin.py:52
msgid "Verify other organizations"
msgstr ""
#: project/forms/admin.py:52
#: project/forms/admin.py:53
msgid "If set, members of the organization can verify other organizations."
msgstr ""
#: project/forms/admin.py:57 project/templates/admin/update_admin_unit.html:4
#: project/forms/admin.py:58 project/templates/admin/update_admin_unit.html:4
#: project/templates/admin/update_admin_unit.html:8
msgid "Update organization"
msgstr ""
@ -647,7 +651,7 @@ msgid "If the participants needs to register for the event."
msgstr ""
#: project/forms/event.py:170 project/templates/_macros.html:249
#: project/templates/layout.html:128
#: project/templates/layout.html:110
msgid "Booked up"
msgstr ""
@ -703,11 +707,11 @@ msgstr ""
msgid "EventAttendanceMode.offline"
msgstr ""
#: project/forms/event.py:217 project/templates/layout.html:116
#: project/forms/event.py:217 project/templates/layout.html:98
msgid "EventAttendanceMode.online"
msgstr ""
#: project/forms/event.py:219 project/templates/layout.html:119
#: project/forms/event.py:219 project/templates/layout.html:101
msgid "EventAttendanceMode.mixed"
msgstr ""
@ -846,23 +850,23 @@ msgstr ""
msgid "EventStatus.scheduled"
msgstr ""
#: project/forms/event.py:389 project/templates/layout.html:82
#: project/templates/layout.html:97
#: project/forms/event.py:389 project/templates/layout.html:64
#: project/templates/layout.html:79
msgid "EventStatus.cancelled"
msgstr ""
#: project/forms/event.py:390 project/templates/layout.html:85
#: project/templates/layout.html:100
#: project/forms/event.py:390 project/templates/layout.html:67
#: project/templates/layout.html:82
msgid "EventStatus.movedOnline"
msgstr ""
#: project/forms/event.py:391 project/templates/layout.html:88
#: project/templates/layout.html:103
#: project/forms/event.py:391 project/templates/layout.html:70
#: project/templates/layout.html:85
msgid "EventStatus.postponed"
msgstr ""
#: project/forms/event.py:392 project/templates/layout.html:91
#: project/templates/layout.html:106
#: project/forms/event.py:392 project/templates/layout.html:73
#: project/templates/layout.html:88
msgid "EventStatus.rescheduled"
msgstr ""
@ -1067,7 +1071,7 @@ msgstr ""
#: project/templates/_macros.html:489 project/templates/_macros.html:652
#: project/templates/admin_unit/create.html:28
#: project/templates/admin_unit/update.html:29
#: project/templates/layout.html:265
#: project/templates/layout.html:242
msgid "Organization"
msgstr ""
@ -1225,7 +1229,7 @@ msgstr ""
msgid "The event takes place both offline and online."
msgstr ""
#: project/templates/_macros.html:585 project/templates/layout.html:191
#: project/templates/_macros.html:585 project/templates/layout.html:168
#: project/templates/user/favorite_events.html:4
msgid "Favorite events"
msgstr ""
@ -1370,7 +1374,7 @@ msgstr ""
msgid "Register for free"
msgstr ""
#: project/templates/layout.html:175 project/templates/layout.html:223
#: project/templates/layout.html:152 project/templates/layout.html:200
#: project/templates/manage/events.html:6
#: project/templates/manage/events.html:42
#: project/templates/manage/events_vue.html:4
@ -1380,22 +1384,22 @@ msgstr ""
#: project/templates/admin/admin.html:19
#: project/templates/admin/admin_units.html:4
#: project/templates/admin/admin_units.html:11
#: project/templates/layout.html:176 project/templates/layout.html:189
#: project/templates/layout.html:153 project/templates/layout.html:166
#: project/templates/manage/admin_units.html:3
#: project/templates/manage/admin_units.html:25
#: project/templates/organization/main.html:4
msgid "Organizations"
msgstr ""
#: project/templates/layout.html:177
#: project/templates/layout.html:154
msgid "Planing"
msgstr ""
#: project/templates/layout.html:181
#: project/templates/layout.html:158
msgid "Docs"
msgstr ""
#: project/templates/layout.html:190 project/templates/layout.html:279
#: project/templates/layout.html:167 project/templates/layout.html:256
#: project/templates/oauth2_client/list.html:10
#: project/templates/oauth2_client/read.html:10
#: project/templates/oauth2_token/list.html:10 project/templates/profile.html:4
@ -1405,86 +1409,86 @@ msgstr ""
#: project/templates/admin/admin.html:3 project/templates/admin/admin.html:9
#: project/templates/admin/admin_units.html:10
#: project/templates/admin/users.html:10 project/templates/layout.html:194
#: project/templates/admin/users.html:10 project/templates/layout.html:171
msgid "Admin"
msgstr ""
#: project/templates/layout.html:198
#: project/templates/layout.html:175
msgid "Logout"
msgstr ""
#: project/templates/layout.html:229
#: project/templates/layout.html:206
msgid "Show events"
msgstr ""
#: project/templates/event/create.html:5
#: project/templates/event/create.html:221 project/templates/layout.html:230
#: project/templates/event/create.html:221 project/templates/layout.html:207
#: project/templates/manage/events.html:45
#: project/templates/manage/organizers.html:21
msgid "Create event"
msgstr ""
#: project/templates/layout.html:231
#: project/templates/layout.html:208
msgid "Import event"
msgstr ""
#: project/templates/layout.html:233
#: project/templates/layout.html:210
#: project/templates/manage/event_lists.html:4
msgid "Event lists"
msgstr ""
#: project/templates/layout.html:236
#: project/templates/layout.html:213
msgid "Review suggestions"
msgstr ""
#: project/templates/layout.html:246
#: project/templates/layout.html:223
#: project/templates/manage/references_incoming.html:5
#: project/templates/manage/references_outgoing.html:5
msgid "References"
msgstr ""
#: project/templates/layout.html:252
#: project/templates/layout.html:229
#: project/templates/manage/references_incoming.html:9
msgid "Incoming references"
msgstr ""
#: project/templates/layout.html:253
#: project/templates/layout.html:230
#: project/templates/manage/references_outgoing.html:9
msgid "Outgoing references"
msgstr ""
#: project/templates/layout.html:255
#: project/templates/layout.html:232
#: project/templates/manage/reference_requests_incoming.html:9
msgid "Incoming reference requests"
msgstr ""
#: project/templates/layout.html:260
#: project/templates/layout.html:237
#: project/templates/manage/reference_requests_outgoing.html:9
msgid "Outgoing reference requests"
msgstr ""
#: project/templates/layout.html:268 project/templates/manage/organizers.html:5
#: project/templates/layout.html:245 project/templates/manage/organizers.html:5
#: project/templates/manage/organizers.html:9
msgid "Organizers"
msgstr ""
#: project/templates/event_place/list.html:3
#: project/templates/event_place/list.html:7 project/templates/layout.html:269
#: project/templates/event_place/list.html:7 project/templates/layout.html:246
#: project/templates/manage/places.html:5
#: project/templates/manage/places.html:9
msgid "Places"
msgstr ""
#: project/templates/layout.html:271 project/templates/manage/members.html:5
#: project/templates/layout.html:248 project/templates/manage/members.html:5
#: project/templates/manage/members.html:28
msgid "Members"
msgstr ""
#: project/templates/layout.html:272 project/templates/manage/relations.html:4
#: project/templates/layout.html:249 project/templates/manage/relations.html:4
msgid "Relations"
msgstr ""
#: project/templates/layout.html:274
#: project/templates/layout.html:251
#: project/templates/manage/admin_units.html:17
#: project/templates/manage/organization_invitations.html:4
#: project/templates/user/organization_invitations.html:4
@ -1496,27 +1500,27 @@ msgstr ""
#: project/templates/admin/settings.html:8
#: project/templates/admin_unit/update.html:6
#: project/templates/admin_unit/update.html:23
#: project/templates/layout.html:276 project/templates/manage/widgets.html:11
#: project/templates/layout.html:253 project/templates/manage/widgets.html:11
#: project/templates/manage/widgets.html:15 project/templates/profile.html:19
msgid "Settings"
msgstr ""
#: project/templates/layout.html:277
#: project/templates/layout.html:254
#: project/templates/manage/custom_widgets.html:13
msgid "Custom widgets"
msgstr ""
#: project/templates/layout.html:278 project/templates/manage/reviews.html:10
#: project/templates/layout.html:255 project/templates/manage/reviews.html:10
#: project/templates/manage/widgets.html:5
#: project/templates/manage/widgets.html:9
msgid "Widgets"
msgstr ""
#: project/templates/layout.html:289
#: project/templates/layout.html:266
msgid "Switch organization"
msgstr ""
#: project/templates/developer/read.html:4 project/templates/layout.html:339
#: project/templates/developer/read.html:4 project/templates/layout.html:310
#: project/templates/profile.html:29
msgid "Developer"
msgstr ""
@ -2213,26 +2217,26 @@ msgid ""
"verified automatically."
msgstr ""
#: project/views/utils.py:77
#: project/views/utils.py:65
msgid ""
"An entry with the entered values already exists. Duplicate entries are "
"not allowed."
msgstr ""
#: project/views/utils.py:128
#: project/views/utils.py:116
#, python-format
msgid "Error in the %s field - %s"
msgstr ""
#: project/views/utils.py:135
#: project/views/utils.py:123
msgid "Show"
msgstr ""
#: project/views/utils.py:143
#: project/views/utils.py:131
msgid "You do not have permission for this action"
msgstr ""
#: project/views/utils.py:258
#: project/views/utils.py:246
msgid ""
"The invitation was issued to another user. Sign in with the email address"
" the invitation was sent to."

View File

@ -0,0 +1,43 @@
"""empty message
Revision ID: 3f77c8693ae3
Revises: ec7a6b157860
Create Date: 2023-03-16 19:08:17.051573
"""
import sqlalchemy as sa
import sqlalchemy_utils
from alembic import op
from sqlalchemy.dialects import postgresql
from project import dbtypes
# revision identifiers, used by Alembic.
revision = "3f77c8693ae3"
down_revision = "ec7a6b157860"
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table("analytics")
op.add_column("settings", sa.Column("start_page", sa.UnicodeText(), nullable=True))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column("settings", "start_page")
op.create_table(
"analytics",
sa.Column("id", sa.INTEGER(), autoincrement=True, nullable=False),
sa.Column("key", sa.VARCHAR(length=255), autoincrement=False, nullable=True),
sa.Column("value1", sa.VARCHAR(length=255), autoincrement=False, nullable=True),
sa.Column("value2", sa.VARCHAR(length=255), autoincrement=False, nullable=True),
sa.Column(
"created_at", postgresql.TIMESTAMP(), autoincrement=False, nullable=True
),
sa.PrimaryKeyConstraint("id", name="analytics_pkey"),
)
# ### end Alembic commands ###

View File

@ -36,10 +36,12 @@ app.config["SECURITY_EMAIL_SENDER"] = os.getenv("MAIL_DEFAULT_SENDER")
app.config["LANGUAGES"] = ["en", "de"]
app.config["SITE_NAME"] = os.getenv("SITE_NAME", "gsevpt")
app.config["SERVER_NAME"] = os.getenv("SERVER_NAME")
app.config["DOCS_URL"] = os.getenv("DOCS_URL")
app.config["ADMIN_UNIT_CREATE_REQUIRES_ADMIN"] = os.getenv(
"ADMIN_UNIT_CREATE_REQUIRES_ADMIN", False
)
app.config["SEO_SITEMAP_PING_GOOGLE"] = getenv_bool("SEO_SITEMAP_PING_GOOGLE", "False")
app.config["GOOGLE_MAPS_API_KEY"] = os.getenv("GOOGLE_MAPS_API_KEY")
# Proxy handling
if os.getenv("PREFERRED_URL_SCHEME"): # pragma: no cover

View File

@ -11,6 +11,7 @@ class AdminSettingsForm(FlaskForm):
legal_notice = TextAreaField(lazy_gettext("Legal notice"), validators=[Optional()])
contact = TextAreaField(lazy_gettext("Contact"), validators=[Optional()])
privacy = TextAreaField(lazy_gettext("Privacy"), validators=[Optional()])
start_page = TextAreaField(lazy_gettext("Start page"), validators=[Optional()])
submit = SubmitField(lazy_gettext("Save"))

View File

@ -1,10 +1,8 @@
import os
import googlemaps
from project import app
google_maps_api_key = os.getenv("GOOGLE_MAPS_API_KEY")
google_maps_api_key = app.config["GOOGLE_MAPS_API_KEY"]
gmaps = googlemaps.Client(key=google_maps_api_key) if google_maps_api_key else None

View File

@ -134,6 +134,7 @@ class Settings(db.Model, TrackableMixin):
legal_notice = Column(UnicodeText())
contact = Column(UnicodeText())
privacy = Column(UnicodeText())
start_page = Column(UnicodeText())
# Multi purpose
@ -1173,15 +1174,6 @@ class UserFavoriteEvents(db.Model):
event_id = db.Column(db.Integer, db.ForeignKey("event.id"), nullable=False)
class Analytics(db.Model):
__tablename__ = "analytics"
id = Column(Integer(), primary_key=True)
key = Column(Unicode(255))
value1 = Column(Unicode(255))
value2 = Column(Unicode(255))
created_at = Column(DateTime, default=datetime.datetime.utcnow)
class CustomWidget(db.Model, TrackableMixin):
__tablename__ = "customwidget"
id = Column(Integer(), primary_key=True)

View File

@ -1,66 +0,0 @@
var klaroConfig = {
version: 1,
styling: {
theme: ['top', 'wide'],
},
noticeAsModal: true,
acceptAll: true,
hideDeclineAll: true,
services: [
{
name: 'google-tag-manager',
title: 'Google Tag Manager',
purposes: ['analytics'],
},
{
name: 'google-analytics',
title: 'Google Analytics',
purposes: ['analytics'],
cookies: [
/^_ga(_.*)?/
],
callback: function(consent, app) {
if(consent !== false) {
window.dataLayer.push({'event' : 'consent-google-analytics'});
}
},
required: false,
optOut: false,
onlyOnce: true,
},
{
name: 'hotjar',
title: 'Hotjar',
purposes: ['analytics'],
cookies: [
/^_hj.*/
],
callback: function(consent, app) {
if(consent !== false) {
window.dataLayer.push({'event' : 'consent-hotjar'});
}
},
required: false,
optOut: false,
onlyOnce: true,
},
],
translations: {
de: {
privacyPolicyUrl: '/privacy',
consentNotice: {
description: 'Hallo! Könnten wir bitte einige zusätzliche Dienste für die Verbesserung der Benutzererfahrung aktivieren? Sie können Ihre Zustimmung später jederzeit ändern oder zurückziehen.',
learnMore: 'Einstellen',
},
purposes: {
analytics: 'Verbesserung der Benutzererfahrung',
},
},
en: {
privacyPolicyUrl: '/privacy',
purposes: {
analytics: 'Improvement of the user experience',
},
},
}
};

File diff suppressed because it is too large Load Diff

View File

@ -1,41 +1,54 @@
/* lato-300 - latin */
@font-face {
font-family: 'Lato';
font-family: "Lato";
font-style: normal;
font-weight: 300;
src: url('/static/fonts/lato-v23-latin-300.eot'); /* IE9 Compat Modes */
src: local(''),
url('/static/fonts/lato-v23-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/static/fonts/lato-v23-latin-300.woff2') format('woff2'), /* Super Modern Browsers */
url('/static/fonts/lato-v23-latin-300.woff') format('woff'), /* Modern Browsers */
url('/static/fonts/lato-v23-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */
url('/static/fonts/lato-v23-latin-300.svg#Lato') format('svg'); /* Legacy iOS */
src: url("/static/fonts/lato-v23-latin-300.eot"); /* IE9 Compat Modes */
src: local(""),
url("/static/fonts/lato-v23-latin-300.eot?#iefix")
format("embedded-opentype"),
/* IE6-IE8 */ url("/static/fonts/lato-v23-latin-300.woff2") format("woff2"),
/* Super Modern Browsers */ url("/static/fonts/lato-v23-latin-300.woff")
format("woff"),
/* Modern Browsers */ url("/static/fonts/lato-v23-latin-300.ttf")
format("truetype"),
/* Safari, Android, iOS */ url("/static/fonts/lato-v23-latin-300.svg#Lato")
format("svg"); /* Legacy iOS */
}
/* lato-regular - latin */
@font-face {
font-family: 'Lato';
font-family: "Lato";
font-style: normal;
font-weight: 400;
src: url('/static/fonts/lato-v23-latin-regular.eot'); /* IE9 Compat Modes */
src: local(''),
url('/static/fonts/lato-v23-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/static/fonts/lato-v23-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
url('/static/fonts/lato-v23-latin-regular.woff') format('woff'), /* Modern Browsers */
url('/static/fonts/lato-v23-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
url('/static/fonts/lato-v23-latin-regular.svg#Lato') format('svg'); /* Legacy iOS */
src: url("/static/fonts/lato-v23-latin-regular.eot"); /* IE9 Compat Modes */
src: local(""),
url("/static/fonts/lato-v23-latin-regular.eot?#iefix")
format("embedded-opentype"),
/* IE6-IE8 */ url("/static/fonts/lato-v23-latin-regular.woff2")
format("woff2"),
/* Super Modern Browsers */ url("/static/fonts/lato-v23-latin-regular.woff")
format("woff"),
/* Modern Browsers */ url("/static/fonts/lato-v23-latin-regular.ttf")
format("truetype"),
/* Safari, Android, iOS */
url("/static/fonts/lato-v23-latin-regular.svg#Lato") format("svg"); /* Legacy iOS */
}
/* lato-700 - latin */
@font-face {
font-family: 'Lato';
font-family: "Lato";
font-style: normal;
font-weight: 700;
src: url('/static/fonts/lato-v23-latin-700.eot'); /* IE9 Compat Modes */
src: local(''),
url('/static/fonts/lato-v23-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/static/fonts/lato-v23-latin-700.woff2') format('woff2'), /* Super Modern Browsers */
url('/static/fonts/lato-v23-latin-700.woff') format('woff'), /* Modern Browsers */
url('/static/fonts/lato-v23-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */
url('/static/fonts/lato-v23-latin-700.svg#Lato') format('svg'); /* Legacy iOS */
src: url("/static/fonts/lato-v23-latin-700.eot"); /* IE9 Compat Modes */
src: local(""),
url("/static/fonts/lato-v23-latin-700.eot?#iefix")
format("embedded-opentype"),
/* IE6-IE8 */ url("/static/fonts/lato-v23-latin-700.woff2") format("woff2"),
/* Super Modern Browsers */ url("/static/fonts/lato-v23-latin-700.woff")
format("woff"),
/* Modern Browsers */ url("/static/fonts/lato-v23-latin-700.ttf")
format("truetype"),
/* Safari, Android, iOS */ url("/static/fonts/lato-v23-latin-700.svg#Lato")
format("svg"); /* Legacy iOS */
}
/*!
@ -141,28 +154,3 @@ header.masthead h1 {
max-width: 12rem;
box-shadow: 0px 5px 5px 0px #adb5bd;
}
.call-to-action {
position: relative;
background-color: #343a40;
background: url("../static/img/landing-page//bg-masthead.jpg") no-repeat
center center;
background-size: cover;
padding-top: 7rem;
padding-bottom: 7rem;
}
.call-to-action .overlay {
position: absolute;
background-color: #212529;
height: 100%;
width: 100%;
top: 0;
left: 0;
opacity: 0.3;
}
footer.footer {
padding-top: 1rem;
padding-bottom: 1rem;
}

View File

@ -10,6 +10,7 @@
<form action="" method="POST">
{{ form.hidden_tag() }}
{{ render_field_with_errors(form.start_page) }}
{{ render_field_with_errors(form.tos) }}
{{ render_field_with_errors(form.legal_notice) }}
{{ render_field_with_errors(form.contact) }}

View File

@ -1,5 +1,4 @@
{% extends "layout.html" %}
{% from "_macros.html" import render_place, render_events_sub_menu %}
{%- block title -%}
{{ config["SITE_NAME"] }}
{%- endblock -%}
@ -9,45 +8,33 @@
{% block body_content__attribs %} style="padding:0;"{% endblock %}
{% block content_container_attribs %}{% endblock %}
{% block content %}
{% if content %}
{{ content }}
{% else %}
<!-- Masthead -->
<header class="masthead text-white text-center">
<div class="overlay"></div>
<header class="text-center">
<div class="container">
<div class="row">
<div class="col-xl-9 mx-auto">
<h1><span class="text-dark">O</span>ffene <span class="text-dark">Ve</span>ranstaltungs-<span class="text-dark">Da</span>tenbank</h1>
<p class="mb-5">Events einfach bekannt machen!</p>
<h1>{{ config["SITE_NAME"] }}</h1>
</div>
<div class="col-md-10 col-lg-8 col-xl-7 mx-auto">
<form>
<div class="form-row">
<div class="col-12">
{% if current_user.is_authenticated %}
<a class="btn btn-primary btn-lg" href="{{ url_for('manage') }}">{{ _('Manage') }}</a>
{% elif not admin_unit_create_requires_admin %}
<a class="btn btn-primary btn-lg" href="{{ url_for('security.register') }}" role="button">{{ _('Register for free') }}</a>
<div>
<a class="btn btn-primary btn" href="{{ url_for('manage') }}">{{ _('Manage') }}</a>
</div>
{% elif not config["ADMIN_UNIT_CREATE_REQUIRES_ADMIN"] %}
<div class="mb-2">
<a class="btn btn-primary" href="{{ url_for('security.register') }}" role="button">{{ _fsdomain('Register') }}</a>
</div>
<div>
<a class="btn btn-outline-secondary" href="{{ url_for('security.login') }}" role="button">{{ _fsdomain('Login') }}</a>
</div>
{% endif %}
</div>
</div>
</form>
</div>
</div>
</div>
</header>
<section class="testimonials text-center bg-light">
<div class="container">
<div class="row">
<div class="col-lg">
<div class="testimonial-item mx-auto mb-5 mb-lg-0">
<img class="img-fluid rounded-circle mb-3" style="width:120px; height:120px;" src="{{ url_for('static', filename='img/landing-page/machmit.png')}}" alt="Logo machmit!">
<h5>MachMit! Goslar</h5>
<p class="font-weight-light">Die offene Veranstaltungsdatenbank ist eine Idee der <a href="https://machmit.goslar.de/">MachMit!-Initiative der Stadt Goslar</a>.</p>
</div>
</div>
</div>
</div>
</section>
{% endif %}
{% endblock %}

View File

@ -50,24 +50,6 @@
{%- block styles %}
{%- endblock styles %}
{%- block gtm_header %}
{% set gtm_id = None | env_override('GTM_ID') %}
{% if gtm_id %}
<script>
window.dataLayer = window.dataLayer || [];
</script>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','{{ gtm_id }}');</script>
<script defer type="application/javascript"src="{{ url_for('static', filename='klaro-config.js')}}"></script>
<script defer type="application/javascript" src="https://cdn.kiprotect.com/klaro/v0.7/klaro-no-css.js"></script>
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='klaro.css')}}" />
{% endif %}
{%- endblock gtm_header %}
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment-with-locales.min.js" integrity="sha256-AdQN98MVZs44Eq2yTwtoKufhnU+uZ7v2kXnD5vqzZVo=" crossorigin="anonymous"></script>
@ -157,15 +139,10 @@
</head>
<body{% block body_attribs %}{% endblock body_attribs %}>
{% block body -%}
{%- block gtm_body %}
{% if gtm_id %}
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id={{ gtm_id }}" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
{% endif %}
{%- endblock gtm_body %}
{% block navbar %}
<nav class="navbar navbar-expand-md navbar-dark bg-dark">
<a class="navbar-brand" href="{{ url_for('home') }}">
<img src="{{ url_for('static', filename='calendar_icon_90.png')}}" width="30" height="30" class="d-inline-block align-top rounded" alt="Logo"> {{ config["SITE_NAME"] }}
<img src="{{ url_for('static', filename='calendar_icon_90.png')}}" width="30" height="30" class="d-inline-block align-top rounded" alt="Logo">
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
@ -177,8 +154,8 @@
<a class="nav-item nav-link" href="{{ url_for('planing') }}">{{ _('Planing') }}</a>
</div>
<div class="navbar-nav navbar-right">
{% if False %}
<a class="nav-item nav-link" href="https://docs.gsevpt.de/" target="_blank" rel="noopener noreferrer">{{ _('Docs') }}</a>
{% if config["DOCS_URL"] %}
<a class="nav-item nav-link" href="{{ config["DOCS_URL"] }}" target="_blank" rel="noopener noreferrer">{{ _('Docs') }}</a>
{% endif %}
{% if current_user.is_authenticated %}
<li class="nav-item dropdown">
@ -328,18 +305,11 @@
<li class="list-inline-item">
<a href="{{ url_for('privacy') }}" class="text-muted">{{ _('Privacy') }}</a>
</li>
{% if None | env_override('GTM_ID') %}
<li class="list-inline-item">&sdot;</li>
<li class="list-inline-item">
<a href="#" onclick="return klaro.show();" class="text-muted">Cookies</a>
</li>
{% endif %}
<li class="list-inline-item">&sdot;</li>
<li class="list-inline-item">
<a href="{{ url_for('developer') }}" class="text-muted">{{ _('Developer') }}</a>
</li>
</ul>
<p class="text-muted small mb-4 mb-lg-0">Mit <i class="fa fa-heart"></i> in Goslar entwickelt.</p>
</div>
</div>
</div>

View File

@ -12,11 +12,5 @@
{% block managebar %}
{% endblock %}
{%- block gtm_header %}
{%- endblock gtm_header %}
{%- block gtm_body %}
{%- endblock gtm_body %}
{% block footer %}
{% endblock %}

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-03-15 19:10+0100\n"
"POT-Creation-Date: 2023-03-16 19:11+0100\n"
"PO-Revision-Date: 2020-06-07 18:51+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: de\n"
@ -199,47 +199,51 @@ msgstr "message"
msgid "You have received an invitation"
msgstr "Du hast eine Einladung erhalten"
#: project/forms/admin.py:10 project/templates/layout.html:317
#: project/views/root.py:55
#: project/forms/admin.py:10 project/templates/layout.html:294
#: project/views/root.py:57
msgid "Terms of service"
msgstr "Nutzungsbedingungen"
#: project/forms/admin.py:11 project/templates/layout.html:321
#: project/views/root.py:63
#: project/forms/admin.py:11 project/templates/layout.html:298
#: project/views/root.py:65
msgid "Legal notice"
msgstr "Impressum"
#: project/forms/admin.py:12 project/templates/_macros.html:1395
#: project/templates/layout.html:325
#: project/templates/layout.html:302
#: project/templates/widget/event_suggestion/create.html:204
#: project/views/admin_unit.py:73 project/views/root.py:71
#: project/views/admin_unit.py:73 project/views/root.py:73
msgid "Contact"
msgstr "Kontakt"
#: project/forms/admin.py:13 project/templates/layout.html:329
#: project/views/root.py:79
#: project/forms/admin.py:13 project/templates/layout.html:306
#: project/views/root.py:81
msgid "Privacy"
msgstr "Datenschutz"
#: project/forms/admin.py:15 project/forms/oauth2_client.py:24
#: project/forms/admin.py:14
msgid "Start page"
msgstr "Startseite"
#: project/forms/admin.py:16 project/forms/oauth2_client.py:24
msgid "Save"
msgstr "Speichern"
#: project/forms/admin.py:19 project/forms/admin_unit_member.py:12
#: project/forms/admin.py:20 project/forms/admin_unit_member.py:12
#: project/forms/admin_unit_member.py:32
msgid "Roles"
msgstr "Rollen"
#: project/forms/admin.py:20 project/templates/admin/update_user.html:4
#: project/forms/admin.py:21 project/templates/admin/update_user.html:4
#: project/templates/admin/update_user.html:8
msgid "Update user"
msgstr "Nutzer aktualisieren"
#: project/forms/admin.py:25
#: project/forms/admin.py:26
msgid "Incoming reference requests allowed"
msgstr "Eingehende Empfehlungsanfragen erlauben"
#: project/forms/admin.py:26
#: project/forms/admin.py:27
msgid ""
"If set, other organizations can ask this organization to reference their "
"event."
@ -247,45 +251,45 @@ msgstr ""
"Wenn gesetzt, können andere Organisationen diese Organisation bitten, "
"deren Veranstaltungen zu empfehlen."
#: project/forms/admin.py:32
#: project/forms/admin.py:33
msgid "Suggestions enabled"
msgstr "Vorschläge aktiv"
#: project/forms/admin.py:33
#: project/forms/admin.py:34
msgid "If set, the organization can work with suggestions."
msgstr "Wenn gesetzt, kann die Organisation mit Vorschlägen arbeiten."
#: project/forms/admin.py:37
#: project/forms/admin.py:38
msgid "Create other organizations"
msgstr "Andere Organisationen erstellen"
#: project/forms/admin.py:38
#: project/forms/admin.py:39
msgid "If set, members of the organization can create other organizations."
msgstr ""
"Wenn gesetzt, können Mitglieder der Organisation andere Organisationen "
"erstellen."
#: project/forms/admin.py:44
#: project/forms/admin.py:45
msgid "Invite other organizations"
msgstr "Andere Organisationen einladen"
#: project/forms/admin.py:45
#: project/forms/admin.py:46
msgid "If set, members of the organization can invite other organizations."
msgstr ""
"Wenn gesetzt, können Mitglieder der Organisation andere Organisationen "
"einladen."
#: project/forms/admin.py:51
#: project/forms/admin.py:52
msgid "Verify other organizations"
msgstr "Andere Organisationen verifizieren"
#: project/forms/admin.py:52
#: project/forms/admin.py:53
msgid "If set, members of the organization can verify other organizations."
msgstr ""
"Wenn gesetzt, können Mitglieder der Organisation andere Organisationen "
"verifizieren."
#: project/forms/admin.py:57 project/templates/admin/update_admin_unit.html:4
#: project/forms/admin.py:58 project/templates/admin/update_admin_unit.html:4
#: project/templates/admin/update_admin_unit.html:8
msgid "Update organization"
msgstr "Organisation aktualisieren"
@ -675,7 +679,7 @@ msgid "If the participants needs to register for the event."
msgstr "Wenn sich die Teilnehmer für die Veranstaltung anmelden müssen."
#: project/forms/event.py:170 project/templates/_macros.html:249
#: project/templates/layout.html:128
#: project/templates/layout.html:110
msgid "Booked up"
msgstr "Ausgebucht"
@ -735,11 +739,11 @@ msgstr "Teilnahme"
msgid "EventAttendanceMode.offline"
msgstr "Präsenzveranstaltung"
#: project/forms/event.py:217 project/templates/layout.html:116
#: project/forms/event.py:217 project/templates/layout.html:98
msgid "EventAttendanceMode.online"
msgstr "Online"
#: project/forms/event.py:219 project/templates/layout.html:119
#: project/forms/event.py:219 project/templates/layout.html:101
msgid "EventAttendanceMode.mixed"
msgstr "Präsenzveranstaltung und online"
@ -890,23 +894,23 @@ msgstr "Status"
msgid "EventStatus.scheduled"
msgstr "Geplant"
#: project/forms/event.py:389 project/templates/layout.html:82
#: project/templates/layout.html:97
#: project/forms/event.py:389 project/templates/layout.html:64
#: project/templates/layout.html:79
msgid "EventStatus.cancelled"
msgstr "Abgesagt"
#: project/forms/event.py:390 project/templates/layout.html:85
#: project/templates/layout.html:100
#: project/forms/event.py:390 project/templates/layout.html:67
#: project/templates/layout.html:82
msgid "EventStatus.movedOnline"
msgstr "Online verschoben"
#: project/forms/event.py:391 project/templates/layout.html:88
#: project/templates/layout.html:103
#: project/forms/event.py:391 project/templates/layout.html:70
#: project/templates/layout.html:85
msgid "EventStatus.postponed"
msgstr "Verschoben"
#: project/forms/event.py:392 project/templates/layout.html:91
#: project/templates/layout.html:106
#: project/forms/event.py:392 project/templates/layout.html:73
#: project/templates/layout.html:88
msgid "EventStatus.rescheduled"
msgstr "Neu angesetzt"
@ -1115,7 +1119,7 @@ msgstr "Wochentage"
#: project/templates/_macros.html:489 project/templates/_macros.html:652
#: project/templates/admin_unit/create.html:28
#: project/templates/admin_unit/update.html:29
#: project/templates/layout.html:265
#: project/templates/layout.html:242
msgid "Organization"
msgstr "Organisation"
@ -1275,7 +1279,7 @@ msgstr ""
"Die Veranstaltung findet sowohl als Präsenzveranstaltung als auch online "
"statt."
#: project/templates/_macros.html:585 project/templates/layout.html:191
#: project/templates/_macros.html:585 project/templates/layout.html:168
#: project/templates/user/favorite_events.html:4
msgid "Favorite events"
msgstr "Merkzettel"
@ -1420,7 +1424,7 @@ msgstr "Verwaltung"
msgid "Register for free"
msgstr "Kostenlos registrieren"
#: project/templates/layout.html:175 project/templates/layout.html:223
#: project/templates/layout.html:152 project/templates/layout.html:200
#: project/templates/manage/events.html:6
#: project/templates/manage/events.html:42
#: project/templates/manage/events_vue.html:4
@ -1430,22 +1434,22 @@ msgstr "Veranstaltungen"
#: project/templates/admin/admin.html:19
#: project/templates/admin/admin_units.html:4
#: project/templates/admin/admin_units.html:11
#: project/templates/layout.html:176 project/templates/layout.html:189
#: project/templates/layout.html:153 project/templates/layout.html:166
#: project/templates/manage/admin_units.html:3
#: project/templates/manage/admin_units.html:25
#: project/templates/organization/main.html:4
msgid "Organizations"
msgstr "Organisationen"
#: project/templates/layout.html:177
#: project/templates/layout.html:154
msgid "Planing"
msgstr "Planung"
#: project/templates/layout.html:181
#: project/templates/layout.html:158
msgid "Docs"
msgstr "Doku"
#: project/templates/layout.html:190 project/templates/layout.html:279
#: project/templates/layout.html:167 project/templates/layout.html:256
#: project/templates/oauth2_client/list.html:10
#: project/templates/oauth2_client/read.html:10
#: project/templates/oauth2_token/list.html:10 project/templates/profile.html:4
@ -1455,86 +1459,86 @@ msgstr "Profil"
#: project/templates/admin/admin.html:3 project/templates/admin/admin.html:9
#: project/templates/admin/admin_units.html:10
#: project/templates/admin/users.html:10 project/templates/layout.html:194
#: project/templates/admin/users.html:10 project/templates/layout.html:171
msgid "Admin"
msgstr "Administration"
#: project/templates/layout.html:198
#: project/templates/layout.html:175
msgid "Logout"
msgstr "Ausloggen"
#: project/templates/layout.html:229
#: project/templates/layout.html:206
msgid "Show events"
msgstr "Veranstaltungen anzeigen"
#: project/templates/event/create.html:5
#: project/templates/event/create.html:221 project/templates/layout.html:230
#: project/templates/event/create.html:221 project/templates/layout.html:207
#: project/templates/manage/events.html:45
#: project/templates/manage/organizers.html:21
msgid "Create event"
msgstr "Veranstaltung erstellen"
#: project/templates/layout.html:231
#: project/templates/layout.html:208
msgid "Import event"
msgstr "Veranstaltung imporierten"
#: project/templates/layout.html:233
#: project/templates/layout.html:210
#: project/templates/manage/event_lists.html:4
msgid "Event lists"
msgstr "Veranstaltungslisten"
#: project/templates/layout.html:236
#: project/templates/layout.html:213
msgid "Review suggestions"
msgstr "Vorschläge prüfen"
#: project/templates/layout.html:246
#: project/templates/layout.html:223
#: project/templates/manage/references_incoming.html:5
#: project/templates/manage/references_outgoing.html:5
msgid "References"
msgstr "Empfehlungen"
#: project/templates/layout.html:252
#: project/templates/layout.html:229
#: project/templates/manage/references_incoming.html:9
msgid "Incoming references"
msgstr "Eingehende Empfehlungen"
#: project/templates/layout.html:253
#: project/templates/layout.html:230
#: project/templates/manage/references_outgoing.html:9
msgid "Outgoing references"
msgstr "Ausgehende Empfehlungen"
#: project/templates/layout.html:255
#: project/templates/layout.html:232
#: project/templates/manage/reference_requests_incoming.html:9
msgid "Incoming reference requests"
msgstr "Eingehende Empfehlungsanfragen"
#: project/templates/layout.html:260
#: project/templates/layout.html:237
#: project/templates/manage/reference_requests_outgoing.html:9
msgid "Outgoing reference requests"
msgstr "Ausgehende Empfehlungsanfragen"
#: project/templates/layout.html:268 project/templates/manage/organizers.html:5
#: project/templates/layout.html:245 project/templates/manage/organizers.html:5
#: project/templates/manage/organizers.html:9
msgid "Organizers"
msgstr "Veranstalter"
#: project/templates/event_place/list.html:3
#: project/templates/event_place/list.html:7 project/templates/layout.html:269
#: project/templates/event_place/list.html:7 project/templates/layout.html:246
#: project/templates/manage/places.html:5
#: project/templates/manage/places.html:9
msgid "Places"
msgstr "Orte"
#: project/templates/layout.html:271 project/templates/manage/members.html:5
#: project/templates/layout.html:248 project/templates/manage/members.html:5
#: project/templates/manage/members.html:28
msgid "Members"
msgstr "Mitglieder"
#: project/templates/layout.html:272 project/templates/manage/relations.html:4
#: project/templates/layout.html:249 project/templates/manage/relations.html:4
msgid "Relations"
msgstr "Beziehungen"
#: project/templates/layout.html:274
#: project/templates/layout.html:251
#: project/templates/manage/admin_units.html:17
#: project/templates/manage/organization_invitations.html:4
#: project/templates/user/organization_invitations.html:4
@ -1546,27 +1550,27 @@ msgstr "Organisationseinladungen"
#: project/templates/admin/settings.html:8
#: project/templates/admin_unit/update.html:6
#: project/templates/admin_unit/update.html:23
#: project/templates/layout.html:276 project/templates/manage/widgets.html:11
#: project/templates/layout.html:253 project/templates/manage/widgets.html:11
#: project/templates/manage/widgets.html:15 project/templates/profile.html:19
msgid "Settings"
msgstr "Einstellungen"
#: project/templates/layout.html:277
#: project/templates/layout.html:254
#: project/templates/manage/custom_widgets.html:13
msgid "Custom widgets"
msgstr "Custom widgets"
#: project/templates/layout.html:278 project/templates/manage/reviews.html:10
#: project/templates/layout.html:255 project/templates/manage/reviews.html:10
#: project/templates/manage/widgets.html:5
#: project/templates/manage/widgets.html:9
msgid "Widgets"
msgstr "Widgets"
#: project/templates/layout.html:289
#: project/templates/layout.html:266
msgid "Switch organization"
msgstr "Organisation wechseln"
#: project/templates/developer/read.html:4 project/templates/layout.html:339
#: project/templates/developer/read.html:4 project/templates/layout.html:310
#: project/templates/profile.html:29
msgid "Developer"
msgstr "Entwickler"
@ -2281,7 +2285,7 @@ msgstr ""
"Ob alle zukünftigen Empfehlungsanfragen von %(admin_unit_name)s "
"automatisch verifiziert werden sollen."
#: project/views/utils.py:77
#: project/views/utils.py:65
msgid ""
"An entry with the entered values already exists. Duplicate entries are "
"not allowed."
@ -2289,20 +2293,20 @@ msgstr ""
"Ein Eintrag mit den eingegebenen Werten existiert bereits. Doppelte "
"Einträge sind nicht erlaubt."
#: project/views/utils.py:128
#: project/views/utils.py:116
#, python-format
msgid "Error in the %s field - %s"
msgstr "Fehler im Feld %s: %s"
#: project/views/utils.py:135
#: project/views/utils.py:123
msgid "Show"
msgstr "Anzeigen"
#: project/views/utils.py:143
#: project/views/utils.py:131
msgid "You do not have permission for this action"
msgstr "Du hast keine Berechtigung für diese Aktion"
#: project/views/utils.py:258
#: project/views/utils.py:246
msgid ""
"The invitation was issued to another user. Sign in with the email address"
" the invitation was sent to."
@ -2392,3 +2396,4 @@ msgstr "Neue Veranstaltung zu prüfen"
#~ msgid "Veranstaltungen als iFrame einbetten"
#~ msgstr "Veranstaltungen als iFrame einbetten"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-03-15 19:10+0100\n"
"POT-Creation-Date: 2023-03-16 19:11+0100\n"
"PO-Revision-Date: 2021-04-30 15:04+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n"
@ -199,85 +199,89 @@ msgstr ""
msgid "You have received an invitation"
msgstr ""
#: project/forms/admin.py:10 project/templates/layout.html:317
#: project/views/root.py:55
#: project/forms/admin.py:10 project/templates/layout.html:294
#: project/views/root.py:57
msgid "Terms of service"
msgstr ""
#: project/forms/admin.py:11 project/templates/layout.html:321
#: project/views/root.py:63
#: project/forms/admin.py:11 project/templates/layout.html:298
#: project/views/root.py:65
msgid "Legal notice"
msgstr ""
#: project/forms/admin.py:12 project/templates/_macros.html:1395
#: project/templates/layout.html:325
#: project/templates/layout.html:302
#: project/templates/widget/event_suggestion/create.html:204
#: project/views/admin_unit.py:73 project/views/root.py:71
#: project/views/admin_unit.py:73 project/views/root.py:73
msgid "Contact"
msgstr ""
#: project/forms/admin.py:13 project/templates/layout.html:329
#: project/views/root.py:79
#: project/forms/admin.py:13 project/templates/layout.html:306
#: project/views/root.py:81
msgid "Privacy"
msgstr ""
#: project/forms/admin.py:15 project/forms/oauth2_client.py:24
#: project/forms/admin.py:14
msgid "Start page"
msgstr ""
#: project/forms/admin.py:16 project/forms/oauth2_client.py:24
msgid "Save"
msgstr ""
#: project/forms/admin.py:19 project/forms/admin_unit_member.py:12
#: project/forms/admin.py:20 project/forms/admin_unit_member.py:12
#: project/forms/admin_unit_member.py:32
msgid "Roles"
msgstr ""
#: project/forms/admin.py:20 project/templates/admin/update_user.html:4
#: project/forms/admin.py:21 project/templates/admin/update_user.html:4
#: project/templates/admin/update_user.html:8
msgid "Update user"
msgstr ""
#: project/forms/admin.py:25
#: project/forms/admin.py:26
msgid "Incoming reference requests allowed"
msgstr ""
#: project/forms/admin.py:26
#: project/forms/admin.py:27
msgid ""
"If set, other organizations can ask this organization to reference their "
"event."
msgstr ""
#: project/forms/admin.py:32
#: project/forms/admin.py:33
msgid "Suggestions enabled"
msgstr ""
#: project/forms/admin.py:33
#: project/forms/admin.py:34
msgid "If set, the organization can work with suggestions."
msgstr ""
#: project/forms/admin.py:37
#: project/forms/admin.py:38
msgid "Create other organizations"
msgstr ""
#: project/forms/admin.py:38
#: project/forms/admin.py:39
msgid "If set, members of the organization can create other organizations."
msgstr ""
#: project/forms/admin.py:44
#: project/forms/admin.py:45
msgid "Invite other organizations"
msgstr ""
#: project/forms/admin.py:45
#: project/forms/admin.py:46
msgid "If set, members of the organization can invite other organizations."
msgstr ""
#: project/forms/admin.py:51
#: project/forms/admin.py:52
msgid "Verify other organizations"
msgstr ""
#: project/forms/admin.py:52
#: project/forms/admin.py:53
msgid "If set, members of the organization can verify other organizations."
msgstr ""
#: project/forms/admin.py:57 project/templates/admin/update_admin_unit.html:4
#: project/forms/admin.py:58 project/templates/admin/update_admin_unit.html:4
#: project/templates/admin/update_admin_unit.html:8
msgid "Update organization"
msgstr ""
@ -648,7 +652,7 @@ msgid "If the participants needs to register for the event."
msgstr ""
#: project/forms/event.py:170 project/templates/_macros.html:249
#: project/templates/layout.html:128
#: project/templates/layout.html:110
msgid "Booked up"
msgstr ""
@ -704,11 +708,11 @@ msgstr ""
msgid "EventAttendanceMode.offline"
msgstr "Normal (Offline)"
#: project/forms/event.py:217 project/templates/layout.html:116
#: project/forms/event.py:217 project/templates/layout.html:98
msgid "EventAttendanceMode.online"
msgstr "Online"
#: project/forms/event.py:219 project/templates/layout.html:119
#: project/forms/event.py:219 project/templates/layout.html:101
msgid "EventAttendanceMode.mixed"
msgstr "Online and offline"
@ -847,23 +851,23 @@ msgstr ""
msgid "EventStatus.scheduled"
msgstr "Scheduled"
#: project/forms/event.py:389 project/templates/layout.html:82
#: project/templates/layout.html:97
#: project/forms/event.py:389 project/templates/layout.html:64
#: project/templates/layout.html:79
msgid "EventStatus.cancelled"
msgstr "Cancelled"
#: project/forms/event.py:390 project/templates/layout.html:85
#: project/templates/layout.html:100
#: project/forms/event.py:390 project/templates/layout.html:67
#: project/templates/layout.html:82
msgid "EventStatus.movedOnline"
msgstr "Moved online"
#: project/forms/event.py:391 project/templates/layout.html:88
#: project/templates/layout.html:103
#: project/forms/event.py:391 project/templates/layout.html:70
#: project/templates/layout.html:85
msgid "EventStatus.postponed"
msgstr "Postponed"
#: project/forms/event.py:392 project/templates/layout.html:91
#: project/templates/layout.html:106
#: project/forms/event.py:392 project/templates/layout.html:73
#: project/templates/layout.html:88
msgid "EventStatus.rescheduled"
msgstr "Rescheduled"
@ -1068,7 +1072,7 @@ msgstr ""
#: project/templates/_macros.html:489 project/templates/_macros.html:652
#: project/templates/admin_unit/create.html:28
#: project/templates/admin_unit/update.html:29
#: project/templates/layout.html:265
#: project/templates/layout.html:242
msgid "Organization"
msgstr ""
@ -1226,7 +1230,7 @@ msgstr ""
msgid "The event takes place both offline and online."
msgstr ""
#: project/templates/_macros.html:585 project/templates/layout.html:191
#: project/templates/_macros.html:585 project/templates/layout.html:168
#: project/templates/user/favorite_events.html:4
msgid "Favorite events"
msgstr ""
@ -1371,7 +1375,7 @@ msgstr ""
msgid "Register for free"
msgstr ""
#: project/templates/layout.html:175 project/templates/layout.html:223
#: project/templates/layout.html:152 project/templates/layout.html:200
#: project/templates/manage/events.html:6
#: project/templates/manage/events.html:42
#: project/templates/manage/events_vue.html:4
@ -1381,22 +1385,22 @@ msgstr ""
#: project/templates/admin/admin.html:19
#: project/templates/admin/admin_units.html:4
#: project/templates/admin/admin_units.html:11
#: project/templates/layout.html:176 project/templates/layout.html:189
#: project/templates/layout.html:153 project/templates/layout.html:166
#: project/templates/manage/admin_units.html:3
#: project/templates/manage/admin_units.html:25
#: project/templates/organization/main.html:4
msgid "Organizations"
msgstr ""
#: project/templates/layout.html:177
#: project/templates/layout.html:154
msgid "Planing"
msgstr ""
#: project/templates/layout.html:181
#: project/templates/layout.html:158
msgid "Docs"
msgstr ""
#: project/templates/layout.html:190 project/templates/layout.html:279
#: project/templates/layout.html:167 project/templates/layout.html:256
#: project/templates/oauth2_client/list.html:10
#: project/templates/oauth2_client/read.html:10
#: project/templates/oauth2_token/list.html:10 project/templates/profile.html:4
@ -1406,86 +1410,86 @@ msgstr ""
#: project/templates/admin/admin.html:3 project/templates/admin/admin.html:9
#: project/templates/admin/admin_units.html:10
#: project/templates/admin/users.html:10 project/templates/layout.html:194
#: project/templates/admin/users.html:10 project/templates/layout.html:171
msgid "Admin"
msgstr ""
#: project/templates/layout.html:198
#: project/templates/layout.html:175
msgid "Logout"
msgstr ""
#: project/templates/layout.html:229
#: project/templates/layout.html:206
msgid "Show events"
msgstr ""
#: project/templates/event/create.html:5
#: project/templates/event/create.html:221 project/templates/layout.html:230
#: project/templates/event/create.html:221 project/templates/layout.html:207
#: project/templates/manage/events.html:45
#: project/templates/manage/organizers.html:21
msgid "Create event"
msgstr ""
#: project/templates/layout.html:231
#: project/templates/layout.html:208
msgid "Import event"
msgstr ""
#: project/templates/layout.html:233
#: project/templates/layout.html:210
#: project/templates/manage/event_lists.html:4
msgid "Event lists"
msgstr ""
#: project/templates/layout.html:236
#: project/templates/layout.html:213
msgid "Review suggestions"
msgstr ""
#: project/templates/layout.html:246
#: project/templates/layout.html:223
#: project/templates/manage/references_incoming.html:5
#: project/templates/manage/references_outgoing.html:5
msgid "References"
msgstr ""
#: project/templates/layout.html:252
#: project/templates/layout.html:229
#: project/templates/manage/references_incoming.html:9
msgid "Incoming references"
msgstr ""
#: project/templates/layout.html:253
#: project/templates/layout.html:230
#: project/templates/manage/references_outgoing.html:9
msgid "Outgoing references"
msgstr ""
#: project/templates/layout.html:255
#: project/templates/layout.html:232
#: project/templates/manage/reference_requests_incoming.html:9
msgid "Incoming reference requests"
msgstr ""
#: project/templates/layout.html:260
#: project/templates/layout.html:237
#: project/templates/manage/reference_requests_outgoing.html:9
msgid "Outgoing reference requests"
msgstr ""
#: project/templates/layout.html:268 project/templates/manage/organizers.html:5
#: project/templates/layout.html:245 project/templates/manage/organizers.html:5
#: project/templates/manage/organizers.html:9
msgid "Organizers"
msgstr ""
#: project/templates/event_place/list.html:3
#: project/templates/event_place/list.html:7 project/templates/layout.html:269
#: project/templates/event_place/list.html:7 project/templates/layout.html:246
#: project/templates/manage/places.html:5
#: project/templates/manage/places.html:9
msgid "Places"
msgstr ""
#: project/templates/layout.html:271 project/templates/manage/members.html:5
#: project/templates/layout.html:248 project/templates/manage/members.html:5
#: project/templates/manage/members.html:28
msgid "Members"
msgstr ""
#: project/templates/layout.html:272 project/templates/manage/relations.html:4
#: project/templates/layout.html:249 project/templates/manage/relations.html:4
msgid "Relations"
msgstr ""
#: project/templates/layout.html:274
#: project/templates/layout.html:251
#: project/templates/manage/admin_units.html:17
#: project/templates/manage/organization_invitations.html:4
#: project/templates/user/organization_invitations.html:4
@ -1497,27 +1501,27 @@ msgstr ""
#: project/templates/admin/settings.html:8
#: project/templates/admin_unit/update.html:6
#: project/templates/admin_unit/update.html:23
#: project/templates/layout.html:276 project/templates/manage/widgets.html:11
#: project/templates/layout.html:253 project/templates/manage/widgets.html:11
#: project/templates/manage/widgets.html:15 project/templates/profile.html:19
msgid "Settings"
msgstr ""
#: project/templates/layout.html:277
#: project/templates/layout.html:254
#: project/templates/manage/custom_widgets.html:13
msgid "Custom widgets"
msgstr ""
#: project/templates/layout.html:278 project/templates/manage/reviews.html:10
#: project/templates/layout.html:255 project/templates/manage/reviews.html:10
#: project/templates/manage/widgets.html:5
#: project/templates/manage/widgets.html:9
msgid "Widgets"
msgstr ""
#: project/templates/layout.html:289
#: project/templates/layout.html:266
msgid "Switch organization"
msgstr ""
#: project/templates/developer/read.html:4 project/templates/layout.html:339
#: project/templates/developer/read.html:4 project/templates/layout.html:310
#: project/templates/profile.html:29
msgid "Developer"
msgstr ""
@ -2214,26 +2218,26 @@ msgid ""
"verified automatically."
msgstr ""
#: project/views/utils.py:77
#: project/views/utils.py:65
msgid ""
"An entry with the entered values already exists. Duplicate entries are "
"not allowed."
msgstr ""
#: project/views/utils.py:128
#: project/views/utils.py:116
#, python-format
msgid "Error in the %s field - %s"
msgstr ""
#: project/views/utils.py:135
#: project/views/utils.py:123
msgid "Show"
msgstr ""
#: project/views/utils.py:143
#: project/views/utils.py:131
msgid "You do not have permission for this action"
msgstr ""
#: project/views/utils.py:258
#: project/views/utils.py:246
msgid ""
"The invitation was issued to another user. Sign in with the email address"
" the invitation was sent to."

View File

@ -1,6 +1,6 @@
import json
from flask import redirect, render_template, request, url_for
from flask import render_template, request, url_for
from flask.wrappers import Response
from project import app
@ -16,12 +16,7 @@ from project.services.event import (
)
from project.services.event_search import EventSearchParams
from project.views.event import get_event_category_choices, get_menu_user_rights
from project.views.utils import (
flash_errors,
get_calendar_links,
get_share_links,
track_analytics,
)
from project.views.utils import flash_errors, get_calendar_links, get_share_links
def prepare_event_date_form(form):
@ -50,10 +45,6 @@ def event_date(id):
event_date = get_event_date_with_details_or_404(id)
can_read_event_or_401(event_date.event)
if "src" in request.args:
track_analytics("event_date", str(id), request.args["src"])
return redirect(url_for("event_date", id=id))
structured_data = json.dumps(
get_sd_for_event_date(event_date), indent=2, cls=DateTimeEncoder
)

View File

@ -1,7 +1,7 @@
import json
import os.path
from flask import redirect, render_template, request, send_from_directory, url_for
from flask import render_template, request, send_from_directory, url_for
from flask_babelex import gettext
from markupsafe import Markup
@ -15,15 +15,10 @@ from project import (
sitemap_file,
)
from project.services.admin import upsert_settings
from project.views.utils import track_analytics
@app.route("/")
def home():
if "src" in request.args:
track_analytics("home", "", request.args["src"])
return redirect(url_for("home"))
structured_data = json.dumps(
{
"@context": "http://schema.org",
@ -33,10 +28,13 @@ def home():
}
)
settings = upsert_settings()
content = Markup(settings.start_page) if settings.start_page else None
return render_template(
"home.html",
structured_data=structured_data,
admin_unit_create_requires_admin=app.config["ADMIN_UNIT_CREATE_REQUIRES_ADMIN"],
content=content,
)

View File

@ -9,10 +9,10 @@ from psycopg2.errorcodes import UNIQUE_VIOLATION
from sqlalchemy.exc import SQLAlchemyError
from wtforms import FormField
from project import app, db, mail
from project import app, mail
from project.access import get_admin_unit_for_manage, get_admin_units_for_manage
from project.dateutils import berlin_tz, round_to_next_day
from project.models import Analytics, EventAttendanceMode, EventDate
from project.models import EventAttendanceMode, EventDate
from project.utils import get_place_str, strings_are_equal_ignoring_case
@ -54,18 +54,6 @@ def get_current_admin_unit_from_cookies():
return None
def track_analytics(key, value1, value2):
result = Analytics(key=key, value1=value1)
if value2 is not None:
result.value2 = value2
db.session.add(result)
db.session.commit()
return result
def handleSqlError(e: SQLAlchemyError) -> str:
if not e.orig:
return str(e)