forked from beba/foerderbarometer
Compare commits
58 Commits
5286b54441
...
6ecc5e985f
Author | SHA1 | Date |
---|---|---|
corsaronero | 6ecc5e985f | |
corsaronero | a72d9de3dd | |
corsaronero | 689da90083 | |
corsaronero | c06b7f39b1 | |
Benni Bärmann | e41ba42e1e | |
Benni Bärmann | f8e8d093c1 | |
Benni Bärmann | f2d65e5934 | |
Benni Bärmann | fcb906c193 | |
Benni Bärmann | cb930eceda | |
Benni Bärmann | d2d9149a62 | |
Benni Bärmann | a6defcb627 | |
Benni Bärmann | 3d591a39f7 | |
Benni Bärmann | 0b044692d6 | |
Benni Bärmann | d09b97f72f | |
Benni Bärmann | fbad8873ba | |
Benni Bärmann | e814b7fa41 | |
Benni Bärmann | f35a788fd0 | |
Benni Bärmann | 2cd2d9f110 | |
Benni Bärmann | b5062dcc28 | |
Benni Bärmann | 2fe292fda0 | |
Benni Bärmann | 35f0dd84ab | |
Benni Bärmann | b153b78048 | |
Benni Bärmann | 40ec564815 | |
Benni Bärmann | 76f8df70ee | |
Benni Bärmann | 5335865fcd | |
Benni Bärmann | b662011618 | |
Benni Bärmann | 97525ad564 | |
Benni Bärmann | a50c8efd60 | |
Benni Bärmann | 0085c5ff02 | |
Benni Bärmann | 4d7b48f8b8 | |
Benni Bärmann | 4aa8d15f74 | |
Benni Bärmann | d2d48c1a82 | |
corsaronero | 9b9209f2b5 | |
corsaronero | b28c145454 | |
corsaronero | 2501bb0866 | |
corsaronero | 7a99176b23 | |
corsaronero | 21cfd50972 | |
corsaronero | 43df9bd353 | |
corsaronero | 5d436f9294 | |
corsaronero | c3c5a44be5 | |
corsaronero | 687fdddb8e | |
corsaronero | ca7fbf6af7 | |
corsaronero | 4603dddb69 | |
corsaronero | 08406d97d1 | |
corsaronero | 372bd32395 | |
corsaronero | 8d6be910f3 | |
corsaronero | 8356460242 | |
corsaronero | fba8178d48 | |
corsaronero | 4c016a4a5a | |
corsaronero | 0d51dae174 | |
corsaronero | 9167adeab5 | |
corsaronero | 54eca0197c | |
corsaronero | 29d20e040e | |
corsaronero | 792f8df588 | |
corsaronero | a5b7d92ec2 | |
corsaronero | ace7fde295 | |
corsaronero | 1bb189bcc4 | |
corsaronero | 018d6bbc1b |
|
@ -1,7 +1,9 @@
|
||||||
# secret passwords and so
|
# secret passwords and so
|
||||||
/secrets.json
|
/secrets.json
|
||||||
/staticfiles
|
/staticfiles
|
||||||
/foerderbarometer/settings.py
|
# /foerderbarometer/settings.py
|
||||||
|
/foerderbarometer/*settings*
|
||||||
|
/foerderbarometer/input/settings.py
|
||||||
/nohup.out
|
/nohup.out
|
||||||
/logfile
|
/logfile
|
||||||
*~
|
*~
|
||||||
|
|
|
@ -0,0 +1,151 @@
|
||||||
|
"""
|
||||||
|
Django settings for foerderbarometer project.
|
||||||
|
|
||||||
|
Generated by 'django-admin startproject' using Django 3.1.1.
|
||||||
|
|
||||||
|
For more information on this file, see
|
||||||
|
https://docs.djangoproject.com/en/3.1/topics/settings/
|
||||||
|
|
||||||
|
For the full list of settings and their values, see
|
||||||
|
https://docs.djangoproject.com/en/3.1/ref/settings/
|
||||||
|
"""
|
||||||
|
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
|
|
||||||
|
# prefix for urls in mails
|
||||||
|
URLPREFIX = 'http://localhost:8000'
|
||||||
|
|
||||||
|
# mails in development go to stdout
|
||||||
|
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
|
||||||
|
|
||||||
|
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||||
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
|
|
||||||
|
# get secrets
|
||||||
|
with open(os.path.join(BASE_DIR, 'secrets.json')) as secrets_file:
|
||||||
|
secrets = json.load(secrets_file)
|
||||||
|
|
||||||
|
def get_secret(setting, secrets=secrets):
|
||||||
|
"""Get secret setting or fail with ImproperlyConfigured"""
|
||||||
|
try:
|
||||||
|
return secrets[setting]
|
||||||
|
except KeyError:
|
||||||
|
raise ImproperlyConfigured("Set the {} setting".format(setting))
|
||||||
|
|
||||||
|
|
||||||
|
# Quick-start development settings - unsuitable for production
|
||||||
|
# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/
|
||||||
|
|
||||||
|
# SECURITY WARNING: keep the secret key used in production secret!
|
||||||
|
SECRET_KEY = '*&7p9#_n$@^%0z49s+7jpy@+j1rw_hqh05knyd6y2*!0)r&b6h'
|
||||||
|
|
||||||
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
|
DEBUG = True
|
||||||
|
|
||||||
|
STATIC_ROOT = BASE_DIR / 'staticfiles'
|
||||||
|
|
||||||
|
ALLOWED_HOSTS = ['*']
|
||||||
|
|
||||||
|
|
||||||
|
# Application definition
|
||||||
|
|
||||||
|
INSTALLED_APPS = [
|
||||||
|
'input.apps.InputConfig',
|
||||||
|
'django.contrib.admin',
|
||||||
|
'django.contrib.auth',
|
||||||
|
'django.contrib.contenttypes',
|
||||||
|
'django.contrib.sessions',
|
||||||
|
'django.contrib.messages',
|
||||||
|
'django.contrib.staticfiles',
|
||||||
|
'formtools',
|
||||||
|
]
|
||||||
|
|
||||||
|
MIDDLEWARE = [
|
||||||
|
'django.middleware.security.SecurityMiddleware',
|
||||||
|
'whitenoise.middleware.WhiteNoiseMiddleware',
|
||||||
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
|
'django.middleware.locale.LocaleMiddleware',
|
||||||
|
'django.middleware.common.CommonMiddleware',
|
||||||
|
'django.middleware.csrf.CsrfViewMiddleware',
|
||||||
|
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||||
|
'django.contrib.messages.middleware.MessageMiddleware',
|
||||||
|
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||||
|
]
|
||||||
|
|
||||||
|
ROOT_URLCONF = 'foerderbarometer.urls'
|
||||||
|
|
||||||
|
TEMPLATES = [
|
||||||
|
{
|
||||||
|
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||||
|
'DIRS': [],
|
||||||
|
'APP_DIRS': True,
|
||||||
|
'OPTIONS': {
|
||||||
|
'context_processors': [
|
||||||
|
'django.template.context_processors.debug',
|
||||||
|
'django.template.context_processors.request',
|
||||||
|
'django.contrib.auth.context_processors.auth',
|
||||||
|
'django.contrib.messages.context_processors.messages',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
WSGI_APPLICATION = 'foerderbarometer.wsgi.application'
|
||||||
|
|
||||||
|
|
||||||
|
# Database
|
||||||
|
# https://docs.djangoproject.com/en/3.1/ref/settings/#databases
|
||||||
|
|
||||||
|
DATABASES = {
|
||||||
|
'default': {
|
||||||
|
'ENGINE': 'django.db.backends.sqlite3',
|
||||||
|
'NAME': BASE_DIR / 'db.sqlite3',
|
||||||
|
'PASSWORD': get_secret('DATABASE_PASSWORD')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Password validation
|
||||||
|
# https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators
|
||||||
|
|
||||||
|
AUTH_PASSWORD_VALIDATORS = [
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
# Internationalization
|
||||||
|
# https://docs.djangoproject.com/en/3.1/topics/i18n/
|
||||||
|
|
||||||
|
LANGUAGE_CODE = 'en-us'
|
||||||
|
|
||||||
|
TIME_ZONE = 'UTC'
|
||||||
|
|
||||||
|
USE_I18N = True
|
||||||
|
|
||||||
|
USE_L10N = True
|
||||||
|
|
||||||
|
USE_TZ = True
|
||||||
|
|
||||||
|
|
||||||
|
# Static files (CSS, JavaScript, Images)
|
||||||
|
# https://docs.djangoproject.com/en/3.1/howto/static-files/
|
||||||
|
|
||||||
|
STATIC_URL = '/static/'
|
||||||
|
|
||||||
|
# needed since django 3.2
|
||||||
|
DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
|
|
@ -20,7 +20,14 @@ from django.core.exceptions import ImproperlyConfigured
|
||||||
URLPREFIX = 'http://localhost:8000'
|
URLPREFIX = 'http://localhost:8000'
|
||||||
|
|
||||||
# mails in development go to stdout
|
# mails in development go to stdout
|
||||||
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
|
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||||
|
|
||||||
|
EMAIL_HOST = 'email.wikimedia.de'
|
||||||
|
EMAIL_PORT = '587'
|
||||||
|
EMAIL_USE_TLS = True
|
||||||
|
EMAIL_HOST_USER = '636ea784dd6ec43'
|
||||||
|
EMAIL_HOST_PASSWORD = 'wsgqp4ZaVRZZEpRJ'
|
||||||
|
|
||||||
|
|
||||||
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
|
|
|
@ -19,8 +19,11 @@ from django.core.exceptions import ImproperlyConfigured
|
||||||
# mails in development go to stdout
|
# mails in development go to stdout
|
||||||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||||
|
|
||||||
EMAIL_HOST = '10.0.6.25'
|
EMAIL_HOST = 'email.wikimedia.de'
|
||||||
EMAIL_PORT = '25'
|
EMAIL_PORT = '587'
|
||||||
|
EMAIL_USE_TLS = True
|
||||||
|
EMAIL_HOST_USER = '636ea784dd6ec43'
|
||||||
|
EMAIL_HOST_PASSWORD = 'wsgqp4ZaVRZZEpRJ'
|
||||||
|
|
||||||
# prefix for urls in mails
|
# prefix for urls in mails
|
||||||
URLPREFIX = 'http://foerderung.wikimedia.de'
|
URLPREFIX = 'http://foerderung.wikimedia.de'
|
||||||
|
@ -108,8 +111,8 @@ WSGI_APPLICATION = 'foerderbarometer.wsgi.application'
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
||||||
'ENGINE': 'django.db.backends.mysql',
|
'ENGINE': 'django.db.backends.mysql',
|
||||||
'NAME': 'fdb',
|
'NAME': 'fdbdevel',
|
||||||
'USER': 'fdb',
|
'USER': 'fdbdevel',
|
||||||
'PASSWORD': get_secret('DATABASE_PASSWORD'),
|
'PASSWORD': get_secret('DATABASE_PASSWORD'),
|
||||||
'HOST': '10.0.6.7', # Or an IP Address that your database is hosted on
|
'HOST': '10.0.6.7', # Or an IP Address that your database is hosted on
|
||||||
# 'PORT': '3306',
|
# 'PORT': '3306',
|
||||||
|
|
|
@ -15,9 +15,17 @@ Including another URLconf
|
||||||
"""
|
"""
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
|
from django.conf.urls.i18n import i18n_patterns
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', include("input.urls")),
|
path('', include("input.urls")),
|
||||||
path('admin/', admin.site.urls),
|
path('admin/', admin.site.urls),
|
||||||
path('accounts/', include('django.contrib.auth.urls')),
|
path('accounts/', include('django.contrib.auth.urls')),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
#urlpatterns = i18n_patterns('',
|
||||||
|
# path('', include("input.urls")),
|
||||||
|
# path('admin/', admin.site.urls),
|
||||||
|
# path('accounts/', include('django.contrib.auth.urls')),
|
||||||
|
# #your urls
|
||||||
|
#)
|
||||||
|
|
|
@ -22,26 +22,114 @@ def export_as_csv(self, request, queryset):
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
export_as_csv.short_description = "Export Selected"
|
export_as_csv.short_description = "Ausgewähltes zu CSV exportieren"
|
||||||
|
|
||||||
admin.site.add_action(export_as_csv)
|
admin.site.add_action(export_as_csv)
|
||||||
|
|
||||||
@admin.register(Project)
|
@admin.register(Project)
|
||||||
class ProjectAdmin(admin.ModelAdmin):
|
class ProjectAdmin(admin.ModelAdmin):
|
||||||
save_as = True
|
save_as = True
|
||||||
readonly_fields = ('pid','finance_id','project_of_year')
|
search_fields = ('name', 'pid','finance_id', 'realname', 'start', 'end', 'participants_estimated', 'participants_real', 'cost', 'status', 'end_quartal')
|
||||||
|
list_display = ('name', 'pid','finance_id', 'realname', 'start', 'end', 'participants_estimated', 'participants_real', 'cost', 'status', 'end_quartal')
|
||||||
|
fields = ('realname', 'email', 'granted', 'granted_date', 'mail_state', 'end_mail_send', 'survey_mail_send', 'survey_mail_date', 'name', 'description', 'pid', 'finance_id', 'start', 'end', 'otrs', 'plan', 'page', 'urls', 'group', 'location', 'participants_estimated', 'participants_real', 'insurance', 'insurance_technic', 'support', 'cost', 'account', 'granted_from', 'notes', 'intern_notes', 'status', 'project_of_year', 'end_quartal')
|
||||||
# action = ['export_as_csv']
|
# action = ['export_as_csv']
|
||||||
|
date_hierarchy = 'end'
|
||||||
|
readonly_fields = ('end_quartal', 'project_of_year', 'pid', 'finance_id')
|
||||||
|
|
||||||
|
@admin.register(BusinessCard)
|
||||||
|
class BusinessCardAdmin(admin.ModelAdmin):
|
||||||
|
save_as = True
|
||||||
|
search_fields = ('realname', 'service_id', 'granted', 'granted_date', 'project')
|
||||||
|
list_display = ('realname', 'service_id', 'granted', 'granted_date', 'project')
|
||||||
|
list_display_links = ('realname', 'service_id')
|
||||||
|
# action = ['export_as_csv']
|
||||||
|
date_hierarchy = 'granted_date'
|
||||||
|
readonly_fields = ['service_id']
|
||||||
|
class Media:
|
||||||
|
js = ('dropdown/js/base.js',)
|
||||||
|
|
||||||
|
@admin.register(Literature)
|
||||||
|
class LiteratureAdmin(admin.ModelAdmin):
|
||||||
|
save_as = True
|
||||||
|
search_fields = ('realname', 'service_id', 'granted', 'granted_date')
|
||||||
|
list_display = ('realname', 'service_id', 'granted', 'granted_date')
|
||||||
|
list_display_links = ('realname', 'service_id')
|
||||||
|
date_hierarchy = 'granted_date'
|
||||||
|
readonly_fields = ['service_id']
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(Account)
|
||||||
|
class AccountAdmin(admin.ModelAdmin):
|
||||||
|
save_as = True
|
||||||
|
|
||||||
admin.site.register([
|
|
||||||
Account,
|
@admin.register(HonoraryCertificate)
|
||||||
HonoraryCertificate,
|
class HonoraryCertificateAdmin(admin.ModelAdmin):
|
||||||
Library,
|
save_as = True
|
||||||
IFG,
|
search_fields = ['realname', 'granted', 'project__name', 'project__pid']
|
||||||
Travel,
|
list_display = ('realname', 'granted','project')
|
||||||
Email,
|
date_hierarchy = 'granted_date'
|
||||||
BusinessCard,
|
autocomplete_fields = ['project']
|
||||||
List,
|
|
||||||
Literature,
|
@admin.register(Library)
|
||||||
])
|
class LibraryAdmin(admin.ModelAdmin):
|
||||||
|
save_as = True
|
||||||
|
search_fields = ('realname', 'service_id', 'granted', 'granted_date')
|
||||||
|
list_display = ('realname', 'service_id', 'granted', 'granted_date')
|
||||||
|
list_display_links = ('realname', 'service_id')
|
||||||
|
date_hierarchy = 'granted_date'
|
||||||
|
readonly_fields = ['service_id']
|
||||||
|
|
||||||
|
@admin.register(IFG)
|
||||||
|
class IFGAdmin(admin.ModelAdmin):
|
||||||
|
save_as = True
|
||||||
|
search_fields = ('realname', 'service_id', 'granted', 'granted_date')
|
||||||
|
list_display = ('realname', 'service_id', 'granted', 'granted_date')
|
||||||
|
list_display_links = ('realname', 'service_id')
|
||||||
|
date_hierarchy = 'granted_date'
|
||||||
|
readonly_fields = ['service_id']
|
||||||
|
|
||||||
|
@admin.register(Travel)
|
||||||
|
class TravelAdmin(admin.ModelAdmin):
|
||||||
|
save_as = True
|
||||||
|
search_fields = ['realname', 'service_id', 'granted_date', 'project__name', 'project__pid']
|
||||||
|
list_display = ('realname', 'service_id', 'granted', 'granted_date', 'project_end', 'project', 'project_end_quartal')
|
||||||
|
list_display_links = ('realname', 'project')
|
||||||
|
date_hierarchy = 'project_end'
|
||||||
|
readonly_fields = ('project_end_quartal', 'project_end')
|
||||||
|
autocomplete_fields = ['project']
|
||||||
|
readonly_fields = ['service_id']
|
||||||
|
|
||||||
|
@admin.register(Email)
|
||||||
|
class EmailAdmin(admin.ModelAdmin):
|
||||||
|
save_as = True
|
||||||
|
search_fields = ('realname', 'service_id', 'granted', 'granted_date')
|
||||||
|
list_display = ('realname', 'service_id', 'granted', 'granted_date')
|
||||||
|
list_display_links = ('realname', 'service_id')
|
||||||
|
date_hierarchy = 'granted_date'
|
||||||
|
radio_fields = {'adult': admin.VERTICAL}
|
||||||
|
readonly_fields = ['service_id']
|
||||||
|
class Media:
|
||||||
|
js = ('dropdown/js/base.js',)
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(List)
|
||||||
|
class ListAdmin(admin.ModelAdmin):
|
||||||
|
save_as = True
|
||||||
|
search_fields = ('realname', 'service_id', 'granted', 'granted_date')
|
||||||
|
list_display = ('realname', 'service_id', 'granted', 'granted_date')
|
||||||
|
list_display_links = ('realname', 'service_id')
|
||||||
|
date_hierarchy = 'granted_date'
|
||||||
|
readonly_fields = ['service_id']
|
||||||
|
|
||||||
|
# commented out because of the individual registering to control displays in admin panel
|
||||||
|
|
||||||
|
#admin.site.register([
|
||||||
|
# Account,
|
||||||
|
# HonoraryCertificate,
|
||||||
|
# Library,
|
||||||
|
# IFG,
|
||||||
|
# Travel,
|
||||||
|
# Email,
|
||||||
|
# List,
|
||||||
|
# ])
|
||||||
|
|
|
@ -22,22 +22,24 @@ class ProjectForm(FdbForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Project
|
model = Project
|
||||||
exclude = ('pid', 'project_of_year', 'finance_id','granted', 'granted_date', 'realname', 'email',\
|
exclude = ('pid', 'project_of_year', 'finance_id','granted', 'granted_date', 'realname', 'email',\
|
||||||
'end_mail_send', 'status', 'persons', 'survey_mail_date')
|
'end_mail_send', 'status', 'persons', 'survey_mail_date', 'mail_state')
|
||||||
widgets = {'start': AdminDateWidget(),
|
widgets = {'start': AdminDateWidget(),
|
||||||
'end': AdminDateWidget(),}
|
'end': AdminDateWidget(),}
|
||||||
|
|
||||||
|
|
||||||
class ExternForm(FdbForm):
|
class ExternForm(FdbForm):
|
||||||
|
|
||||||
choice = ChoiceField(choices=TYPE_CHOICES.items(), widget=RadioSelect,
|
choice = ChoiceField(choices=TYPE_CHOICES.items(), widget=RadioSelect,
|
||||||
label='Was möchtest Du beantragen?')
|
label='Was möchtest Du beantragen?')
|
||||||
|
|
||||||
check = BooleanField(required=True,
|
check = BooleanField(required=True,
|
||||||
label=format_html("Ich stimme den <a href='{}'>Datenschutzbestimmungen</a> und den <a href='{}'>Förderrichtlinen</a> zu",
|
label=format_html("Ich stimme den <a href='{}' target='_blank' rel='noopener'>Datenschutzbestimmungen</a> und den <a href='{}' target='_blank' rel='noopener'>Förderrichtlinen</a> zu",
|
||||||
DATAPROTECTION, FOERDERRICHTLINIEN))
|
DATAPROTECTION, FOERDERRICHTLINIEN))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ConcreteExtern
|
model = ConcreteExtern
|
||||||
exclude = ('granted', 'granted_date', 'survey_mail_send', 'service_id', 'survey_mail_date')
|
exclude = ('granted', 'granted_date', 'survey_mail_send', 'service_id', 'survey_mail_date', 'mail_state')
|
||||||
|
|
||||||
|
|
||||||
INTERN_CHOICES = {'PRO': 'Projektsteckbrief',
|
INTERN_CHOICES = {'PRO': 'Projektsteckbrief',
|
||||||
'HON': 'Ehrenamtsbescheinigung, Akkreditierung oder Redaktionsbestätigung',
|
'HON': 'Ehrenamtsbescheinigung, Akkreditierung oder Redaktionsbestätigung',
|
||||||
|
@ -49,31 +51,60 @@ class InternForm(FdbForm):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ConcreteVolunteer
|
model = ConcreteVolunteer
|
||||||
exclude = ('granted', 'granted_date', 'survey_mail_send', 'survey_mail_date')
|
exclude = ('granted', 'granted_date', 'survey_mail_send', 'survey_mail_date', 'mail_state')
|
||||||
|
|
||||||
|
|
||||||
|
HOTEL_CHOICES = {'TRUE': format_html('Hotelzimmer benötigt'),
|
||||||
|
'FALSE': format_html('Kein Hotelzimmer benötigt')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class TravelForm(FdbForm):
|
class TravelForm(FdbForm):
|
||||||
# TODO: add some javascript to show/hide other-field
|
# TODO: add some javascript to show/hide other-field
|
||||||
|
|
||||||
|
# this is the code, to change required to false if needed
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.fields['project_name'].required = True
|
||||||
|
self.fields['transport'].required = True
|
||||||
|
self.fields['travelcost'].required = True
|
||||||
|
self.fields['checkin'].required = True
|
||||||
|
self.fields['checkout'].required = True
|
||||||
|
self.fields['hotel'].required = True
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Travel
|
model = Travel
|
||||||
exclude = ('granted', 'granted_date', 'survey_mail_send', 'realname', 'email', 'survey_mail_date')
|
exclude = ('granted', 'granted_date', 'survey_mail_send', 'realname', 'email', 'survey_mail_date', 'project', 'request_url', 'payed_for_hotel_by', 'payed_for_travel_by', 'intern_notes', 'mail_state' )
|
||||||
widgets = {'checkin': AdminDateWidget(),
|
widgets = {'checkin': AdminDateWidget(),
|
||||||
'checkout': AdminDateWidget(),}
|
'checkout': AdminDateWidget(),}
|
||||||
|
fields = ['project_name', 'transport', 'travelcost', 'checkin', 'checkout', 'hotel', 'notes']
|
||||||
|
hotel = ChoiceField(label='Hotelzimmer benötigt:', choices=HOTEL_CHOICES.items(), widget=RadioSelect())
|
||||||
|
|
||||||
|
class Media:
|
||||||
|
css = {
|
||||||
|
'all': ('css/dateFieldNoNowShortcutInTravels.css',)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class LibraryForm(FdbForm):
|
class LibraryForm(FdbForm):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Library
|
model = Library
|
||||||
fields = ['cost', 'library', 'duration', 'notes']
|
fields = ['cost', 'library', 'duration', 'notes', 'survey_mail_send']
|
||||||
|
exclude = ['intern_notes', 'survey_mail_send', 'mail_state']
|
||||||
|
|
||||||
class HonoraryCertificateForm(FdbForm):
|
class HonoraryCertificateForm(FdbForm):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = HonoraryCertificate
|
model = HonoraryCertificate
|
||||||
fields = ['request_url', 'project']
|
fields = ['request_url', 'project']
|
||||||
|
exclude = ['intern_notes']
|
||||||
|
|
||||||
class IFGForm(FdbForm):
|
class IFGForm(FdbForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = IFG
|
model = IFG
|
||||||
fields = ['cost', 'url', 'notes']
|
fields = ['cost', 'url', 'notes']
|
||||||
|
exclude = ['intern_notes', 'survey_mail_send', 'mail_state']
|
||||||
|
|
||||||
|
|
||||||
class CheckForm(FdbForm):
|
class CheckForm(FdbForm):
|
||||||
|
@ -82,23 +113,63 @@ class CheckForm(FdbForm):
|
||||||
label=format_html("Ich stimme den <a href='{}'>Nutzungsbedingungen</a> zu",
|
label=format_html("Ich stimme den <a href='{}'>Nutzungsbedingungen</a> zu",
|
||||||
NUTZUNGSBEDINGUNGEN))
|
NUTZUNGSBEDINGUNGEN))
|
||||||
|
|
||||||
|
|
||||||
class LiteratureForm(CheckForm):
|
class LiteratureForm(CheckForm):
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.fields['selfbuy_give_data'].required = True
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Literature
|
model = Literature
|
||||||
fields = ['cost', 'info', 'source', 'notes']
|
fields = ['cost', 'info', 'source', 'notes', 'selfbuy', 'selfbuy_data', 'selfbuy_give_data']
|
||||||
|
exclude = ['intern_notes', 'survey_mail_send', 'mail_state']
|
||||||
|
class Media:
|
||||||
|
js = ('dropdown/js/literature.js',)
|
||||||
|
|
||||||
|
ADULT_CHOICES = {'TRUE': format_html('Ich bin volljährig.'),
|
||||||
|
'FALSE': format_html('Ich bin noch nicht volljährig.')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class EmailForm(CheckForm):
|
class EmailForm(CheckForm):
|
||||||
|
|
||||||
|
# this is the code, to change required to false if needed
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.fields['adult'].required = True
|
||||||
|
self.fields['other'].required = True
|
||||||
|
|
||||||
|
adult = ChoiceField(label='Volljährigkeit', choices=ADULT_CHOICES.items(), widget=RadioSelect())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# TODO: add some javascript to show/hide other-field
|
# TODO: add some javascript to show/hide other-field
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Email
|
model = Email
|
||||||
fields = ['domain', 'address', 'other']
|
fields = ['domain', 'address', 'other', 'adult']
|
||||||
|
exclude = ['intern_notes', 'survey_mail_send', 'mail_state']
|
||||||
|
class Media:
|
||||||
|
js = ('dropdown/js/mail.js',)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class BusinessCardForm(CheckForm):
|
class BusinessCardForm(CheckForm):
|
||||||
class Meta:
|
# this is the code, to change required to false if needed
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.fields['url_of_pic'].required = True
|
||||||
|
self.fields['send_data_to_print'].required = True
|
||||||
|
|
||||||
|
class Meta:
|
||||||
model = BusinessCard
|
model = BusinessCard
|
||||||
fields = ['project', 'data', 'variant', 'sent_to']
|
exclude = ['intern_notes', 'survey_mail_send', 'mail_state']
|
||||||
|
fields = ['project', 'data', 'variant', 'url_of_pic', 'send_data_to_print', 'sent_to']
|
||||||
|
class Media:
|
||||||
|
js = ('dropdown/js/businessCard.js',)
|
||||||
|
|
||||||
|
|
||||||
class ListForm(CheckForm):
|
class ListForm(CheckForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = List
|
model = List
|
||||||
fields = ['domain', 'address']
|
fields = ['domain', 'address']
|
||||||
|
exclude = ['intern_notes', 'survey_mail_send','mail_state']
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import sys
|
||||||
from django.core.management.base import BaseCommand, CommandError
|
from django.core.management.base import BaseCommand, CommandError
|
||||||
from django.template.loader import get_template
|
from django.template.loader import get_template
|
||||||
from django.core.mail import send_mail, BadHeaderError, EmailMessage
|
from django.core.mail import send_mail, BadHeaderError, EmailMessage
|
||||||
|
from django.core.mail import EmailMultiAlternatives
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
from input.models import Project, Library, HonoraryCertificate, Travel, Email,\
|
from input.models import Project, Library, HonoraryCertificate, Travel, Email,\
|
||||||
|
@ -34,42 +35,188 @@ class Command(BaseCommand):
|
||||||
'name': name,
|
'name': name,
|
||||||
'pid': pid,
|
'pid': pid,
|
||||||
'SURVEYPREFIX': SURVEYPREFIX, }
|
'SURVEYPREFIX': SURVEYPREFIX, }
|
||||||
mail_template = get_template('input/survey_mail.txt')
|
txt_mail_template = get_template('input/survey_mail.txt')
|
||||||
|
html_mail_template = get_template('input/survey_mail.html')
|
||||||
try:
|
try:
|
||||||
survey_mail = EmailMessage('Dein Feedback zur Förderung durch Wikimedia Deutschland',
|
subject, from_email, to = 'Dein Feedback zur Förderung durch Wikimedia Deutschland', IF_EMAIL, email
|
||||||
mail_template.render(context),
|
text_content = txt_mail_template.render(context)
|
||||||
IF_EMAIL,
|
html_content = html_mail_template.render(context)
|
||||||
[email],
|
msg = EmailMultiAlternatives(subject, text_content, from_email, [to], bcc=[SURVEY_EMAIL])
|
||||||
bcc=[SURVEY_EMAIL])
|
msg.attach_alternative(html_content, "text/html")
|
||||||
survey_mail.send(fail_silently=False)
|
msg.send()
|
||||||
|
#print('survey mail would have been send')
|
||||||
|
|
||||||
|
#survey_mail = EmailMessage('Dein Feedback zur Förderung durch Wikimedia Deutschland',
|
||||||
|
# mail_template.render(context),
|
||||||
|
# IF_EMAIL,
|
||||||
|
# [email],
|
||||||
|
# bcc=[SURVEY_EMAIL])
|
||||||
|
#survey_mail.send(fail_silently=False)
|
||||||
except BadHeaderError:
|
except BadHeaderError:
|
||||||
return HttpResponse('Invalid header found.')
|
return HttpResponse('Invalid header found.')
|
||||||
|
|
||||||
print(f'send surveylinkemail to {email}...')
|
print(f'send surveylinkemail to {email}...')
|
||||||
|
|
||||||
|
''' the db entry mail_state was added. Useful when migrating databases. first delete the entry, then makemigrations
|
||||||
|
then migrate.. after that, recreate the entry with default END, after that makemigrations and migrate.
|
||||||
|
now all entries have the value END. after that rewrite the default to NONE in models.py, then makemigrations
|
||||||
|
and migrate again, to have NONE as default for all new queries. '''
|
||||||
|
|
||||||
|
|
||||||
def end_of_projects_reached(self):
|
def end_of_projects_reached(self):
|
||||||
''' end of project reached '''
|
''' end of project reached '''
|
||||||
# get all projects which ended
|
# get all projects which ended
|
||||||
|
|
||||||
old = Project.objects.filter(end__lt = date.today())\
|
old = Project.objects.filter(end__lt = date.today())\
|
||||||
.exclude(end_mail_send = True)
|
.exclude(end_mail_send = True)\
|
||||||
|
.filter(mail_state = 'NONE')
|
||||||
|
|
||||||
|
txt_mail_template = get_template('input/if_end_of_project.txt')
|
||||||
|
html_mail_template = get_template('input/if_end_of_project.html')
|
||||||
|
|
||||||
|
|
||||||
mail_template = get_template('input/if_end_of_project.txt')
|
|
||||||
for project in old:
|
for project in old:
|
||||||
context = {'project': project}
|
context = {'project': project}
|
||||||
context['URLPREFIX'] = settings.URLPREFIX
|
context['URLPREFIX'] = settings.URLPREFIX
|
||||||
|
|
||||||
try:
|
try:
|
||||||
send_mail('Projektende erreicht',
|
subject, from_email, to = 'Projektende erreicht', IF_EMAIL, IF_EMAIL
|
||||||
mail_template.render(context),
|
text_content = txt_mail_template.render(context)
|
||||||
IF_EMAIL,
|
html_content = html_mail_template.render(context)
|
||||||
[IF_EMAIL],
|
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
|
||||||
fail_silently=False)
|
msg.attach_alternative(html_content, "text/html")
|
||||||
|
msg.send()
|
||||||
|
#print('end of project mail would have been sent')
|
||||||
|
|
||||||
|
#send_mail('Projektende erreicht',
|
||||||
|
# mail_template.render(context),
|
||||||
|
# IF_EMAIL,
|
||||||
|
# [IF_EMAIL],
|
||||||
|
# fail_silently=False)
|
||||||
project.end_mail_send = True
|
project.end_mail_send = True
|
||||||
project.save()
|
project.mail_state = 'INF'
|
||||||
|
try:
|
||||||
|
project.save()
|
||||||
|
except:
|
||||||
|
print( 'For project', project, 'there is possibly no project.start (', project.start, ') class')
|
||||||
except BadHeaderError:
|
except BadHeaderError:
|
||||||
self.stdout.write(self.style.ERROR('Invalid header found.'))
|
self.stdout.write(self.style.ERROR('Invalid header found.'))
|
||||||
|
|
||||||
self.stdout.write(self.style.SUCCESS('end_of_projects_reached() executed.'))
|
self.stdout.write(self.style.SUCCESS('end_of_projects_reached() executed.'))
|
||||||
|
|
||||||
|
def end_of_projects_approved(self):
|
||||||
|
''' end of project approved '''
|
||||||
|
# get all projects where end was reached already, and send mails for the ones already set to status "ended" by the admins
|
||||||
|
|
||||||
|
approved_end = Project.objects.filter(status = 'END')\
|
||||||
|
.exclude(end_mail_send = True)\
|
||||||
|
.filter(mail_state = 'INF')
|
||||||
|
txt_mail_template = get_template('input/if_end_of_project_approved.txt')
|
||||||
|
html_mail_template = get_template('input/if_end_of_project_approved.html')
|
||||||
|
|
||||||
|
txt_informMail_template = get_template('input/if_end_of_project_orginformed.txt')
|
||||||
|
html_informMail_template = get_template('input/if_end_of_project_orginformed.html')
|
||||||
|
# send the mail to project.email, which would be the mail of the volunteer filling out the form
|
||||||
|
|
||||||
|
for project in approved_end:
|
||||||
|
context = {'project': project}
|
||||||
|
context['URLPREFIX'] = settings.URLPREFIX
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
subject, from_email, to = 'Projektende erreicht', IF_EMAIL, project.email
|
||||||
|
text_content = txt_mail_template.render(context)
|
||||||
|
html_content = html_mail_template.render(context)
|
||||||
|
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
|
||||||
|
msg.attach_alternative(html_content, "text/html")
|
||||||
|
msg.send()
|
||||||
|
#print('if and of project approved mail would have been sent')
|
||||||
|
|
||||||
|
inform_subject, inform_from_email, inform_to = 'Projektorganisator*in wurde informiert', IF_EMAIL, IF_EMAIL
|
||||||
|
inform_text_content = txt_informMail_template.render(context)
|
||||||
|
inform_html_content = html_informMail_template.render(context)
|
||||||
|
inform_msg = EmailMultiAlternatives(inform_subject, inform_text_content, inform_from_email, [inform_to])
|
||||||
|
inform_msg.attach_alternative(html_content, "text/html")
|
||||||
|
inform_msg.send()
|
||||||
|
#print('if end of project orginformed mail would have been sent')
|
||||||
|
|
||||||
|
#send_mail('Projektende erreicht',
|
||||||
|
# mail_template.render(context),
|
||||||
|
# IF_EMAIL,
|
||||||
|
# [project.email],
|
||||||
|
# fail_silently=False)
|
||||||
|
#send_mail('Projektorganisator*in wurde informiert',
|
||||||
|
# informMail_template.render(context),
|
||||||
|
# IF_EMAIL,
|
||||||
|
# [IF_EMAIL],
|
||||||
|
# fail_silently=False)
|
||||||
|
project.end_mail_send = True
|
||||||
|
project.mail_state = 'CLOSE'
|
||||||
|
try:
|
||||||
|
project.save()
|
||||||
|
except:
|
||||||
|
print( 'For project', project, 'there is possibly no project.start (', project.start, ') class')
|
||||||
|
except BadHeaderError:
|
||||||
|
self.stdout.write(self.style.ERROR('Invalid header found.'))
|
||||||
|
|
||||||
|
self.stdout.write(self.style.SUCCESS('end_of_projects_approved() executed.'))
|
||||||
|
|
||||||
|
def notHappened_of_projects_approved(self):
|
||||||
|
''' notHappened of project approved '''
|
||||||
|
# get all projects where end was reached already, and send mails for the ones where status was put to NOT by admins
|
||||||
|
|
||||||
|
approved_notHappened = Project.objects.filter(status = 'NOT')\
|
||||||
|
.exclude(end_mail_send = True)\
|
||||||
|
.filter(mail_state = 'INF')
|
||||||
|
|
||||||
|
html_mail_template = get_template('input/if_not_of_project_approved.html')
|
||||||
|
txt_mail_template = get_template('input/if_not_of_project_approved.txt')
|
||||||
|
|
||||||
|
txt_informMail_template = get_template('input/if_end_of_project_orginformed.txt')
|
||||||
|
html_informMail_template = get_template('input/if_end_of_project_orginformed.html')
|
||||||
|
# send the mail to project.email, which would be the mail of the volunteer that filled out the form
|
||||||
|
|
||||||
|
for project in approved_notHappened:
|
||||||
|
context = {'project': project}
|
||||||
|
context['URLPREFIX'] = settings.URLPREFIX
|
||||||
|
try:
|
||||||
|
subject, from_email, to = 'Projektende erreicht', IF_EMAIL, project.email
|
||||||
|
text_content = txt_mail_template.render(context)
|
||||||
|
html_content = html_mail_template.render(context)
|
||||||
|
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
|
||||||
|
msg.attach_alternative(html_content, "text/html")
|
||||||
|
msg.send()
|
||||||
|
#print('if not of project approved end mail would have been sent')
|
||||||
|
|
||||||
|
|
||||||
|
#send_mail('Projektende erreicht',
|
||||||
|
# mail_template.render(context),
|
||||||
|
# IF_EMAIL,
|
||||||
|
# [project.email],
|
||||||
|
# fail_silently=False)
|
||||||
|
|
||||||
|
inform_subject, inform_from_email, inform_to = 'Projektorganisator*in wurde informiert', IF_EMAIL, IF_EMAIL
|
||||||
|
inform_text_content = txt_informMail_template.render(context)
|
||||||
|
inform_html_content = html_informMail_template.render(context)
|
||||||
|
inform_msg = EmailMultiAlternatives(inform_subject, inform_text_content, inform_from_email, [inform_to])
|
||||||
|
inform_msg.attach_alternative(html_content, "text/html")
|
||||||
|
inform_msg.send()
|
||||||
|
#print('if not of project approved end mail orginformed would have been sent')
|
||||||
|
|
||||||
|
#send_mail('Projektorganisator*in wurde informiert',
|
||||||
|
# informMail_template.render(context),
|
||||||
|
# IF_EMAIL,
|
||||||
|
# [IF_EMAIL],
|
||||||
|
# fail_silently=False)
|
||||||
|
project.end_mail_send = True
|
||||||
|
project.mail_state = 'CLOSE'
|
||||||
|
project.save()
|
||||||
|
except BadHeaderError:
|
||||||
|
self.stdout.write(self.style.ERROR('Invalid header found.'))
|
||||||
|
|
||||||
|
self.stdout.write(self.style.SUCCESS('notHappened_of_projects_approved() executed.'))
|
||||||
|
|
||||||
|
|
||||||
def surveymails_to_object(self, supported, name='', type='LIB'):
|
def surveymails_to_object(self, supported, name='', type='LIB'):
|
||||||
mytype=type
|
mytype=type
|
||||||
myname = name
|
myname = name
|
||||||
|
@ -85,6 +232,7 @@ class Command(BaseCommand):
|
||||||
name=myname,
|
name=myname,
|
||||||
realname=item.realname)
|
realname=item.realname)
|
||||||
item.survey_mail_send = True
|
item.survey_mail_send = True
|
||||||
|
item.mail_state = 'END'
|
||||||
item.survey_mail_date = date.today()
|
item.survey_mail_date = date.today()
|
||||||
item.save()
|
item.save()
|
||||||
self.stdout.write(self.style.SUCCESS(f'surveymails for object type {type} sent'))
|
self.stdout.write(self.style.SUCCESS(f'surveymails for object type {type} sent'))
|
||||||
|
@ -97,7 +245,8 @@ class Command(BaseCommand):
|
||||||
|
|
||||||
supported = Library.objects.filter(granted=True)\
|
supported = Library.objects.filter(granted=True)\
|
||||||
.filter(granted_date__lt = date.today() - timedelta(days=14))\
|
.filter(granted_date__lt = date.today() - timedelta(days=14))\
|
||||||
.exclude(survey_mail_send=True)
|
.exclude(survey_mail_send=True)\
|
||||||
|
.exclude(mail_state = 'END')
|
||||||
self.surveymails_to_object(supported,name='library')
|
self.surveymails_to_object(supported,name='library')
|
||||||
|
|
||||||
def surveymails_to_hon(self):
|
def surveymails_to_hon(self):
|
||||||
|
@ -105,7 +254,8 @@ class Command(BaseCommand):
|
||||||
|
|
||||||
supported = HonoraryCertificate.objects.filter(granted=True)\
|
supported = HonoraryCertificate.objects.filter(granted=True)\
|
||||||
.filter(granted_date__lt = date.today() - timedelta(days=14))\
|
.filter(granted_date__lt = date.today() - timedelta(days=14))\
|
||||||
.exclude(survey_mail_send=True)
|
.exclude(survey_mail_send=True)\
|
||||||
|
.exclude(mail_state = 'END')
|
||||||
self.surveymails_to_object(supported, type='HON', name='project')
|
self.surveymails_to_object(supported, type='HON', name='project')
|
||||||
|
|
||||||
def surveymails_to_ifg(self):
|
def surveymails_to_ifg(self):
|
||||||
|
@ -113,7 +263,8 @@ class Command(BaseCommand):
|
||||||
|
|
||||||
supported = IFG.objects.filter(granted=True)\
|
supported = IFG.objects.filter(granted=True)\
|
||||||
.filter(granted_date__lt = date.today() - timedelta(days=14))\
|
.filter(granted_date__lt = date.today() - timedelta(days=14))\
|
||||||
.exclude(survey_mail_send=True)
|
.exclude(survey_mail_send=True)\
|
||||||
|
.exclude(mail_state = 'END')
|
||||||
self.surveymails_to_object(supported, type='IFG', name='url')
|
self.surveymails_to_object(supported, type='IFG', name='url')
|
||||||
|
|
||||||
def surveymails_to_lit(self):
|
def surveymails_to_lit(self):
|
||||||
|
@ -121,14 +272,16 @@ class Command(BaseCommand):
|
||||||
|
|
||||||
supported = Literature.objects.filter(granted=True)\
|
supported = Literature.objects.filter(granted=True)\
|
||||||
.filter(granted_date__lt = date.today() - timedelta(days=14))\
|
.filter(granted_date__lt = date.today() - timedelta(days=14))\
|
||||||
.exclude(survey_mail_send=True)
|
.exclude(survey_mail_send=True)\
|
||||||
|
.exclude(mail_state = 'END')
|
||||||
self.surveymails_to_object(supported, type='LIT', name='info')
|
self.surveymails_to_object(supported, type='LIT', name='info')
|
||||||
|
|
||||||
def surveymails_to_project(self):
|
def surveymails_to_project(self):
|
||||||
'''send survey link 4 weeks after end of project reached'''
|
'''send survey link 4 weeks after end of project reached'''
|
||||||
supported = Project.objects.filter(granted=True)\
|
supported = Project.objects.filter(granted=True)\
|
||||||
.filter(end__lt = date.today() - timedelta(days=28))\
|
.filter(end__lt = date.today() - timedelta(days=28))\
|
||||||
.exclude(survey_mail_send=True)
|
.exclude(survey_mail_send=True)\
|
||||||
|
.exclude(mail_state = 'END')
|
||||||
self.surveymails_to_object(supported, type='PRO', name='name')
|
self.surveymails_to_object(supported, type='PRO', name='name')
|
||||||
|
|
||||||
def surveymails_to_travel(self):
|
def surveymails_to_travel(self):
|
||||||
|
@ -136,7 +289,8 @@ class Command(BaseCommand):
|
||||||
|
|
||||||
supported = Travel.objects.filter(project__granted=True)\
|
supported = Travel.objects.filter(project__granted=True)\
|
||||||
.filter(project__end__lt = date.today() - timedelta(days=21))\
|
.filter(project__end__lt = date.today() - timedelta(days=21))\
|
||||||
.exclude(survey_mail_send=True)
|
.exclude(survey_mail_send=True)\
|
||||||
|
.exclude(mail_state = 'END')
|
||||||
self.surveymails_to_object(supported, type='TRAV', name='project')
|
self.surveymails_to_object(supported, type='TRAV', name='project')
|
||||||
|
|
||||||
def surveymails_to_mail_vis_lis(self):
|
def surveymails_to_mail_vis_lis(self):
|
||||||
|
@ -149,7 +303,8 @@ class Command(BaseCommand):
|
||||||
# get class via string
|
# get class via string
|
||||||
supported = getattr(sys.modules[__name__], c).objects.filter(granted=True)\
|
supported = getattr(sys.modules[__name__], c).objects.filter(granted=True)\
|
||||||
.filter(granted_date__lt = lastdate)\
|
.filter(granted_date__lt = lastdate)\
|
||||||
.exclude(survey_mail_send=True)
|
.exclude(survey_mail_send=True)\
|
||||||
|
.exclude(mail_state = 'END')
|
||||||
self.surveymails_to_object(supported, type=typefield[count])
|
self.surveymails_to_object(supported, type=typefield[count])
|
||||||
count += 1
|
count += 1
|
||||||
|
|
||||||
|
@ -158,6 +313,8 @@ class Command(BaseCommand):
|
||||||
'''the main function which is called by the custom command'''
|
'''the main function which is called by the custom command'''
|
||||||
|
|
||||||
self.end_of_projects_reached()
|
self.end_of_projects_reached()
|
||||||
|
self.end_of_projects_approved()
|
||||||
|
self.notHappened_of_projects_approved()
|
||||||
self.surveymails_to_lib()
|
self.surveymails_to_lib()
|
||||||
self.surveymails_to_hon()
|
self.surveymails_to_hon()
|
||||||
self.surveymails_to_ifg()
|
self.surveymails_to_ifg()
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
# Generated by Django 4.1.2 on 2022-11-11 07:28
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0062_auto_20211103_1155'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='businesscard',
|
||||||
|
name='url_of_pic',
|
||||||
|
field=models.TextField(default='', help_text='Bitte gib die Wikimedia-Commons-URL des Bildes an.', max_length=200, verbose_name='Url des Bildes'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='ifg',
|
||||||
|
name='notes',
|
||||||
|
field=models.TextField(blank=True, help_text='Bitte gib an wofür Du das Stipendium verwenden willst.', max_length=1000, verbose_name='Anmerkungen'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='library',
|
||||||
|
name='notes',
|
||||||
|
field=models.TextField(blank=True, help_text='Bitte gib an wofür Du das Stipendium verwenden willst.', max_length=1000, verbose_name='Anmerkungen'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='library',
|
||||||
|
name='type',
|
||||||
|
field=models.CharField(choices=[('BIB', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/Zugang_zu_Fachliteratur#Bibliotheksstipendium" target="_blank" rel="noopener">Bibliotheksstipendium</a>'), ('ELIT', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/Zugang_zu_Fachliteratur#eLiteraturstipendium" target="_blank" rel="noopener">eLiteraturstipendium</a>'), ('MAIL', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/E-Mail-Adressen_und_Visitenkarten#E-Mail-Adressen" target="_blank" rel="noopener">E-Mail-Adresse</a>'), ('IFG', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/Gebührenerstattungen_für_Behördenanfragen" target="_blank" rel="noopener">Kostenübernahme IFG-Anfrage</a>'), ('LIT', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/Zugang_zu_Fachliteratur#Literaturstipendium" target="_blank" rel="noopener">Literaturstipendium</a>'), ('LIST', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/E-Mail-Adressen_und_Visitenkarten#Mailinglisten" target="_blank" rel="noopener">Mailingliste</a>'), ('SOFT', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/Software-Stipendien" target="_blank" rel="noopener">Softwarestipendium</a>'), ('VIS', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/E-Mail-Adressen_und_Visitenkarten#Visitenkarten" target="_blank" rel="noopener">Visitenkarten</a>')], default='BIB', max_length=4),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='literature',
|
||||||
|
name='notes',
|
||||||
|
field=models.TextField(blank=True, help_text='Bitte gib an wofür Du das Stipendium verwenden willst.', max_length=1000, verbose_name='Anmerkungen'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='project',
|
||||||
|
name='notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000, null=True, verbose_name='Anmerkungen'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='project',
|
||||||
|
name='start',
|
||||||
|
field=models.DateField(null=True, verbose_name='Startdatum'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='project',
|
||||||
|
name='status',
|
||||||
|
field=models.CharField(choices=[('RUN', 'läuft'), ('END', 'beendet'), ('NOT', 'nicht stattgefunden')], default='RUN', max_length=3),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='travel',
|
||||||
|
name='notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,33 @@
|
||||||
|
# Generated by Django 4.1.2 on 2022-11-11 10:28
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0063_businesscard_url_of_pic_alter_ifg_notes_and_more'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='businesscard',
|
||||||
|
name='send_data_to_print',
|
||||||
|
field=models.BooleanField(default=False, help_text='Hiermit erlaube ich die Weitergabe meiner Daten (Name, Postadresse) an den von Wikimedia Deutschland ausgewählten Dienstleister (z. B. <a href="wir-machen-druck.de">wir-machen-druck.de</a>) zum Zwecke des direkten Versands der Druckerzeugnisse an mich.', verbose_name='Datenweitergabe erlauben'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='literature',
|
||||||
|
name='selfbuy',
|
||||||
|
field=models.CharField(choices=[('TRUE', 'Ich möchte das Werk selbst kaufen und per Kostenerstattung bei Wikimedia Deutschland abrechnen.'), ('FALSE', 'Ich möchte, dass Wikimedia Deutschland das Werk für mich kauft')], default='TRUE', max_length=10, verbose_name='Selbstkauf?'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='literature',
|
||||||
|
name='selfbuy_give_data',
|
||||||
|
field=models.BooleanField(default=False, help_text='Weitergabe meiner Daten (Name, Postadresse) an den von mir angegebenen Anbieter/Dienstleister.', verbose_name='Datenweitergabe erlauben'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='businesscard',
|
||||||
|
name='url_of_pic',
|
||||||
|
field=models.CharField(default='', help_text='Bitte gib die Wikimedia-Commons-URL des Bildes an.', max_length=200, verbose_name='Url des Bildes'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Generated by Django 4.1.2 on 2022-11-11 11:20
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0064_businesscard_send_data_to_print_literature_selfbuy_and_more'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='literature',
|
||||||
|
name='selfbuy',
|
||||||
|
field=models.CharField(choices=[('TRUE', 'Ich möchte das Werk selbst kaufen und per Kostenerstattung bei Wikimedia Deutschland abrechnen.'), ('FALSE', 'Ich möchte, dass Wikimedia Deutschland das Werk für mich kauft'), ('NONE', 'Nichts ausgewählt')], default='TRUE', max_length=10, verbose_name='Selbstkauf?'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='literature',
|
||||||
|
name='selfbuy_give_data',
|
||||||
|
field=models.BooleanField(default='NONE', help_text='Weitergabe meiner Daten (Name, Postadresse) an den von mir angegebenen Anbieter/Dienstleister.', verbose_name='Datenweitergabe erlauben'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 4.1.2 on 2022-11-17 11:12
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0065_alter_literature_selfbuy_and_more'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='email',
|
||||||
|
name='adult',
|
||||||
|
field=models.CharField(choices=[('TRUE', 'Ich bin volljährig.'), ('FALSE', 'Ich bin noch nicht volljährig.'), ('NONE', 'Nichts ausgewählt')], default='NONE', max_length=10, verbose_name='Volljährigkeit'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Generated by Django 4.1.2 on 2022-11-17 15:41
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0066_email_adult'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='travel',
|
||||||
|
name='project_name',
|
||||||
|
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='Projektname:'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='library',
|
||||||
|
name='type',
|
||||||
|
field=models.CharField(choices=[('BIB', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/Zugang_zu_Fachliteratur#Bibliotheksstipendium" target="_blank" rel="noopener">Bibliotheksstipendium</a>'), ('ELIT', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/Zugang_zu_Fachliteratur#eLiteraturstipendium" target="_blank" rel="noopener">eLiteraturstipendium</a>'), ('MAIL', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/E-Mail-Adressen_und_Visitenkarten#E-Mail-Adressen" target="_blank" rel="noopener">E-Mail-Adresse</a>'), ('IFG', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/Gebührenerstattungen_für_Behördenanfragen" target="_blank" rel="noopener">Kostenübernahme IFG-Anfrage</a>'), ('LIT', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/Zugang_zu_Fachliteratur#Literaturstipendium" target="_blank" rel="noopener">Literaturstipendium</a>'), ('LIST', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/E-Mail-Adressen_und_Visitenkarten#Mailinglisten" target="_blank" rel="noopener">Mailingliste</a>'), ('SOFT', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/Software-Stipendien" target="_blank" rel="noopener">Softwarestipendium</a>'), ('VIS', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/E-Mail-Adressen_und_Visitenkarten#Visitenkarten" target="_blank" rel="noopener">Visitenkarten</a>'), ('TRAV', 'Reisekosten')], default='BIB', max_length=4),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 4.1.2 on 2022-11-17 15:48
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0067_travel_project_name_alter_library_type'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='travel',
|
||||||
|
name='hotel',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='Hotelzimmer benötigt:'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 4.1.2 on 2022-11-17 15:58
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0068_travel_hotel'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='travel',
|
||||||
|
name='transport',
|
||||||
|
field=models.CharField(choices=[('BAHN', 'Bahn'), ('NONE', 'Keine Fahrtkosten'), ('OTHER', 'Sonstiges (mit Begründung)')], default='BAHN', max_length=5, verbose_name='Transportmittel:'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Generated by Django 4.1.2 on 2022-11-17 16:13
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0069_alter_travel_transport'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='travel',
|
||||||
|
name='project',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='input.project'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Generated by Django 4.1.2 on 2022-11-17 17:37
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0070_alter_travel_project'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='honorarycertificate',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='travel',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,43 @@
|
||||||
|
# Generated by Django 4.1.2 on 2022-11-17 18:13
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0071_honorarycertificate_intern_notes_travel_intern_notes'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='businesscard',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='email',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='ifg',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='library',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='list',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='literature',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 4.1.2 on 2022-11-17 18:14
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0072_businesscard_intern_notes_email_intern_notes_and_more'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='account',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 4.1.2 on 2022-11-17 18:15
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0073_account_intern_notes'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='project',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 4.1.2 on 2022-11-21 13:49
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0074_project_intern_notes'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='literature',
|
||||||
|
name='selfbuy_data',
|
||||||
|
field=models.TextField(default='', help_text='Bitte gib hier alle persönlichen Daten an, und zwar genau so,<br> wie sie (auch in der entsprechenden Reihenfolge) auf den Visitenkarten stehen sollen<br> (z.B. Vorname Nachname, Benutzer:/Benutzerin:, Benutzer-/-innenname, Anschrift,<br> Telefonnummer, E-Mail-Adresse usw.). Trenne die einzelnen Angaben durch Zeilenumbrüche.<br> Hinweis: Telefonnummern bilden wir üblicherweise im internationalen Format gemäß<br> DIN 5008 ab. Als anzugebende E-Mail-Adresse empfehlen wir dir eine Wikimedia-Projekt-<br> Adresse, die du ebenfalls beantragen kannst, sofern du nicht bereits eine besitzt.', max_length=1000, verbose_name='Persönliche Daten für die Visitenkarten'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,78 @@
|
||||||
|
# Generated by Django 3.1.2 on 2022-11-29 16:01
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0075_literature_selfbuy_data'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='businesscard',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=True, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='concreteextern',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=True, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='concretevolunteer',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=True, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='email',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=True, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='honorarycertificate',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=True, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='ifg',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=True, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='library',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=True, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='list',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=True, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='literature',
|
||||||
|
name='selfbuy_data',
|
||||||
|
field=models.TextField(default='', help_text='Bitte gib hier alle persönlichen Daten an, die wir benötigen, um das Werk<br> für dich zu kaufen und es dir anschließend zu schicken (z.B. Vorname Nachname, Anschrift, <br> Telefonnummer, E-Mail-Adresse usw.). Trenne die einzelnen Angaben durch Zeilenumbrüche. <br> Hinweis: Telefonnummern bilden wir üblicherweise im internationalen Format gemäß<br> DIN 5008 ab. Als anzugebende E-Mail-Adresse empfehlen wir dir eine Wikimedia-Projekt-<br> Adresse, die du ebenfalls beantragen kannst, sofern du nicht bereits eine besitzt.', max_length=1000, verbose_name='Persönliche Daten sowie Adresse'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='literature',
|
||||||
|
name='selfbuy_give_data',
|
||||||
|
field=models.BooleanField(help_text='Weitergabe meiner Daten (Name, Postadresse) an den von mir angegebenen Anbieter/Dienstleister.', verbose_name='Datenweitergabe erlauben'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='literature',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=True, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='project',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=True, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='travel',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=True, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,123 @@
|
||||||
|
# Generated by Django 3.1.2 on 2022-11-29 17:06
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0076_auto_20221129_1601'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='businesscard',
|
||||||
|
name='mailState',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('SURVEY', 'die Survey Mail wurde bereits versendet'), ('END', 'alle automatischen Mails wurden bereits versendet')], default='END', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='concreteextern',
|
||||||
|
name='mailState',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('SURVEY', 'die Survey Mail wurde bereits versendet'), ('END', 'alle automatischen Mails wurden bereits versendet')], default='END', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='concretevolunteer',
|
||||||
|
name='mailState',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('SURVEY', 'die Survey Mail wurde bereits versendet'), ('END', 'alle automatischen Mails wurden bereits versendet')], default='END', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='email',
|
||||||
|
name='mailState',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('SURVEY', 'die Survey Mail wurde bereits versendet'), ('END', 'alle automatischen Mails wurden bereits versendet')], default='END', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='honorarycertificate',
|
||||||
|
name='mailState',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('SURVEY', 'die Survey Mail wurde bereits versendet'), ('END', 'alle automatischen Mails wurden bereits versendet')], default='END', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='ifg',
|
||||||
|
name='mailState',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('SURVEY', 'die Survey Mail wurde bereits versendet'), ('END', 'alle automatischen Mails wurden bereits versendet')], default='END', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='library',
|
||||||
|
name='mailState',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('SURVEY', 'die Survey Mail wurde bereits versendet'), ('END', 'alle automatischen Mails wurden bereits versendet')], default='END', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='list',
|
||||||
|
name='mailState',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('SURVEY', 'die Survey Mail wurde bereits versendet'), ('END', 'alle automatischen Mails wurden bereits versendet')], default='END', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='literature',
|
||||||
|
name='mailState',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('SURVEY', 'die Survey Mail wurde bereits versendet'), ('END', 'alle automatischen Mails wurden bereits versendet')], default='END', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='project',
|
||||||
|
name='mailState',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('SURVEY', 'die Survey Mail wurde bereits versendet'), ('END', 'alle automatischen Mails wurden bereits versendet')], default='END', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='travel',
|
||||||
|
name='mailState',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('SURVEY', 'die Survey Mail wurde bereits versendet'), ('END', 'alle automatischen Mails wurden bereits versendet')], default='END', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='businesscard',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='concreteextern',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='concretevolunteer',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='email',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='honorarycertificate',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='ifg',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='library',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='list',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='literature',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='project',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='travel',
|
||||||
|
name='survey_mail_send',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='Keine Umfragemail schicken'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,68 @@
|
||||||
|
# Generated by Django 3.1.2 on 2022-11-29 17:12
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0077_auto_20221129_1706'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='businesscard',
|
||||||
|
old_name='mailState',
|
||||||
|
new_name='mail_state',
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='concreteextern',
|
||||||
|
old_name='mailState',
|
||||||
|
new_name='mail_state',
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='concretevolunteer',
|
||||||
|
old_name='mailState',
|
||||||
|
new_name='mail_state',
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='email',
|
||||||
|
old_name='mailState',
|
||||||
|
new_name='mail_state',
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='honorarycertificate',
|
||||||
|
old_name='mailState',
|
||||||
|
new_name='mail_state',
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='ifg',
|
||||||
|
old_name='mailState',
|
||||||
|
new_name='mail_state',
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='library',
|
||||||
|
old_name='mailState',
|
||||||
|
new_name='mail_state',
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='list',
|
||||||
|
old_name='mailState',
|
||||||
|
new_name='mail_state',
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='literature',
|
||||||
|
old_name='mailState',
|
||||||
|
new_name='mail_state',
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='project',
|
||||||
|
old_name='mailState',
|
||||||
|
new_name='mail_state',
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='travel',
|
||||||
|
old_name='mailState',
|
||||||
|
new_name='mail_state',
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,68 @@
|
||||||
|
# Generated by Django 3.1.2 on 2022-11-29 23:10
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0078_auto_20221129_1712'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='businesscard',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('END', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('APPR', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='APPR', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='concreteextern',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('END', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('APPR', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='APPR', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='concretevolunteer',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('END', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('APPR', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='APPR', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='email',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('END', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('APPR', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='APPR', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='honorarycertificate',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('END', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('APPR', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='APPR', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='ifg',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('END', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('APPR', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='APPR', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='library',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('END', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('APPR', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='APPR', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='list',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('END', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('APPR', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='APPR', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='literature',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('END', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('APPR', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='APPR', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='project',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('END', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('APPR', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='APPR', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='travel',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('END', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('APPR', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='APPR', max_length=6),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,68 @@
|
||||||
|
# Generated by Django 3.1.2 on 2022-11-29 23:23
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0079_auto_20221129_2310'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='businesscard',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('INF', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('END', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='NONE', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='concreteextern',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('INF', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('END', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='NONE', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='concretevolunteer',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('INF', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('END', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='NONE', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='email',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('INF', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('END', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='NONE', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='honorarycertificate',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('INF', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('END', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='NONE', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='ifg',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('INF', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('END', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='NONE', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='library',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('INF', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('END', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='NONE', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='list',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('INF', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('END', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='NONE', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='literature',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('INF', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('END', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='NONE', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='project',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('INF', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('END', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='NONE', max_length=6),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='travel',
|
||||||
|
name='mail_state',
|
||||||
|
field=models.CharField(choices=[('NONE', 'noch keine Mail versendet'), ('INF', 'die Benachrichtigung End-Mail wurde bereits versendet'), ('END', 'alle automatischen Mails, auch surveyMail, wurden bereits versendet')], default='NONE', max_length=6),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,213 @@
|
||||||
|
# Generated by Django 3.1.2 on 2022-12-04 17:33
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0080_auto_20221129_2323'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='account',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000, verbose_name='interne Anmerkungen'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='businesscard',
|
||||||
|
name='granted',
|
||||||
|
field=models.BooleanField(null=True, verbose_name='bewilligt'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='businesscard',
|
||||||
|
name='granted_date',
|
||||||
|
field=models.DateField(null=True, verbose_name='bewilligt am'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='businesscard',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000, verbose_name='interne Anmerkungen'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='businesscard',
|
||||||
|
name='send_data_to_print',
|
||||||
|
field=models.BooleanField(default=False, help_text='Hiermit erlaube ich die Weitergabe meiner Daten (Name, Postadresse) an den von Wikimedia<br> Deutschland ausgewählten Dienstleister (z. B. <a href="wir-machen-druck.de">wir-machen-druck.de</a>) zum Zwecke des direkten <br> Versands der Druckerzeugnisse an mich.', verbose_name='Datenweitergabe erlauben'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='concreteextern',
|
||||||
|
name='granted',
|
||||||
|
field=models.BooleanField(null=True, verbose_name='bewilligt'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='concreteextern',
|
||||||
|
name='granted_date',
|
||||||
|
field=models.DateField(null=True, verbose_name='bewilligt am'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='concretevolunteer',
|
||||||
|
name='granted',
|
||||||
|
field=models.BooleanField(null=True, verbose_name='bewilligt'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='concretevolunteer',
|
||||||
|
name='granted_date',
|
||||||
|
field=models.DateField(null=True, verbose_name='bewilligt am'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='email',
|
||||||
|
name='granted',
|
||||||
|
field=models.BooleanField(null=True, verbose_name='bewilligt'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='email',
|
||||||
|
name='granted_date',
|
||||||
|
field=models.DateField(null=True, verbose_name='bewilligt am'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='email',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000, verbose_name='interne Anmerkungen'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='honorarycertificate',
|
||||||
|
name='granted',
|
||||||
|
field=models.BooleanField(null=True, verbose_name='bewilligt'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='honorarycertificate',
|
||||||
|
name='granted_date',
|
||||||
|
field=models.DateField(null=True, verbose_name='bewilligt am'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='honorarycertificate',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000, verbose_name='interne Anmerkungen'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='ifg',
|
||||||
|
name='granted',
|
||||||
|
field=models.BooleanField(null=True, verbose_name='bewilligt'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='ifg',
|
||||||
|
name='granted_date',
|
||||||
|
field=models.DateField(null=True, verbose_name='bewilligt am'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='ifg',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000, verbose_name='interne Anmerkungen'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='library',
|
||||||
|
name='granted',
|
||||||
|
field=models.BooleanField(null=True, verbose_name='bewilligt'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='library',
|
||||||
|
name='granted_date',
|
||||||
|
field=models.DateField(null=True, verbose_name='bewilligt am'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='library',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000, verbose_name='interne Anmerkungen'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='library',
|
||||||
|
name='type',
|
||||||
|
field=models.CharField(choices=[('BIB', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/Zugang_zu_Fachliteratur#Bibliotheksstipendium" target="_blank" rel="noopener">Bibliotheksstipendium</a>'), ('ELIT', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/Zugang_zu_Fachliteratur#eLiteraturstipendium" target="_blank" rel="noopener">eLiteraturstipendium</a>'), ('MAIL', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/E-Mail-Adressen_und_Visitenkarten#E-Mail-Adressen" target="_blank" rel="noopener">E-Mail-Adresse</a>'), ('IFG', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/Gebührenerstattungen_für_Behördenanfragen" target="_blank" rel="noopener">Kostenübernahme IFG-Anfrage</a>'), ('LIT', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/Zugang_zu_Fachliteratur#Literaturstipendium" target="_blank" rel="noopener">Literaturstipendium</a>'), ('LIST', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/E-Mail-Adressen_und_Visitenkarten#Mailinglisten" target="_blank" rel="noopener">Mailingliste</a>'), ('TRAV', '<a href="https://de.wikipedia.org/wiki/Wikipedia:F%C3%B6rderung/Reisekostenerstattungen" target="_blank" rel="noopener">Reisekosten</a>'), ('SOFT', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/Software-Stipendien" target="_blank" rel="noopener">Softwarestipendium</a>'), ('VIS', '<a href="https://de.wikipedia.org/wiki/Wikipedia:Förderung/E-Mail-Adressen_und_Visitenkarten#Visitenkarten" target="_blank" rel="noopener">Visitenkarten</a>')], default='BIB', max_length=4),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='list',
|
||||||
|
name='granted',
|
||||||
|
field=models.BooleanField(null=True, verbose_name='bewilligt'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='list',
|
||||||
|
name='granted_date',
|
||||||
|
field=models.DateField(null=True, verbose_name='bewilligt am'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='list',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000, verbose_name='interne Anmerkungen'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='literature',
|
||||||
|
name='granted',
|
||||||
|
field=models.BooleanField(null=True, verbose_name='bewilligt'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='literature',
|
||||||
|
name='granted_date',
|
||||||
|
field=models.DateField(null=True, verbose_name='bewilligt am'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='literature',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000, verbose_name='interne Anmerkungen'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='literature',
|
||||||
|
name='selfbuy',
|
||||||
|
field=models.CharField(choices=[('TRUE', 'Ich möchte das Werk selbst kaufen und per Kostenerstattung bei Wikimedia Deutschland abrechnen.'), ('FALSE', 'Ich möchte, dass Wikimedia Deutschland das Werk für mich kauft')], default='TRUE', max_length=10, verbose_name='Selbstkauf?'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='project',
|
||||||
|
name='cost',
|
||||||
|
field=models.IntegerField(blank=True, null=True, verbose_name='Kosten'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='project',
|
||||||
|
name='end_mail_send',
|
||||||
|
field=models.BooleanField(null=True, verbose_name='Endmail versenden'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='project',
|
||||||
|
name='granted',
|
||||||
|
field=models.BooleanField(null=True, verbose_name='bewilligt'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='project',
|
||||||
|
name='granted_date',
|
||||||
|
field=models.DateField(null=True, verbose_name='bewilligt am'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='project',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000, verbose_name='interne Anmerkungen'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='travel',
|
||||||
|
name='checkin',
|
||||||
|
field=models.DateTimeField(blank=True, null=True, verbose_name='Anreise'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='travel',
|
||||||
|
name='checkout',
|
||||||
|
field=models.DateTimeField(blank=True, null=True, verbose_name='Abreise'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='travel',
|
||||||
|
name='granted',
|
||||||
|
field=models.BooleanField(null=True, verbose_name='bewilligt'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='travel',
|
||||||
|
name='granted_date',
|
||||||
|
field=models.DateField(null=True, verbose_name='bewilligt am'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='travel',
|
||||||
|
name='intern_notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000, verbose_name='interne Anmerkungen'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='travel',
|
||||||
|
name='notes',
|
||||||
|
field=models.TextField(blank=True, max_length=1000, verbose_name='Anmerkungen'),
|
||||||
|
),
|
||||||
|
]
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue