diff --git a/input/admin.py b/input/admin.py
index dc83ea1..f617d8e 100644
--- a/input/admin.py
+++ b/input/admin.py
@@ -34,6 +34,7 @@ class ProjectAdmin(admin.ModelAdmin):
# action = ['export_as_csv']
date_hierarchy = 'start'
+
@admin.register(BusinessCard)
class BusinessCardAdmin(admin.ModelAdmin):
save_as = True
@@ -45,6 +46,11 @@ class BusinessCardAdmin(admin.ModelAdmin):
class Media:
js = ('dropdown/js/base.js',)
+@admin.register(Literature)
+class LiteratureAdmin(admin.ModelAdmin):
+
+ class Media:
+ js = ('dropdown/js/base.js',)
@@ -56,5 +62,4 @@ admin.site.register([
Travel,
Email,
List,
- Literature,
])
diff --git a/input/forms.py b/input/forms.py
index 9f12c31..20b0746 100644
--- a/input/forms.py
+++ b/input/forms.py
@@ -83,21 +83,37 @@ class CheckForm(FdbForm):
NUTZUNGSBEDINGUNGEN))
class LiteratureForm(CheckForm):
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.fields['selfbuy_give_data'].required = True
class Meta:
model = Literature
- fields = ['cost', 'info', 'source', 'notes']
+ fields = ['cost', 'info', 'source', 'notes', 'selfbuy', 'selfbuy_give_data']
+ class Media:
+ js = ('dropdown/js/base.js',)
class EmailForm(CheckForm):
# TODO: add some javascript to show/hide other-field
class Meta:
model = Email
fields = ['domain', 'address', 'other']
+ class Media:
+ js = ('dropdown/js/base.js',)
+
+
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
+
+ class Meta:
model = BusinessCard
fields = ['project', 'data', 'variant', 'url_of_pic', 'sent_to']
+ class Media:
+ js = ('dropdown/js/base.js',)
class ListForm(CheckForm):
class Meta:
diff --git a/input/management/commands/sendmails.py b/input/management/commands/sendmails.py
index 4e3e2ae..917fc74 100644
--- a/input/management/commands/sendmails.py
+++ b/input/management/commands/sendmails.py
@@ -50,9 +50,11 @@ class Command(BaseCommand):
def end_of_projects_reached(self):
''' end of project reached '''
# get all projects which ended
+
+ print(Project.objects.filter(end__lt = date.today()))
old = Project.objects.filter(end__lt = date.today())\
.exclude(end_mail_send = True)
-
+
mail_template = get_template('input/if_end_of_project.txt')
for project in old:
context = {'project': project}
@@ -70,6 +72,31 @@ class Command(BaseCommand):
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 = False)
+ print(approved_end)
+ mail_template = get_template('input/if_end_of_project.txt')
+ for project in approved_end:
+ context = {'project': project}
+ context['URLPREFIX'] = settings.URLPREFIX
+ try:
+ send_mail('Projektende erreicht',
+ mail_template.render(context),
+ IF_EMAIL,
+ [IF_EMAIL],
+ fail_silently=False)
+ project.end_mail_send = True
+ project.save()
+ except BadHeaderError:
+ self.stdout.write(self.style.ERROR('Invalid header found.'))
+
+ self.stdout.write(self.style.SUCCESS('end_of_projects_reached() executed.'))
+
+
def surveymails_to_object(self, supported, name='', type='LIB'):
mytype=type
myname = name
@@ -158,6 +185,7 @@ class Command(BaseCommand):
'''the main function which is called by the custom command'''
self.end_of_projects_reached()
+ self.end_of_projects_approved()
self.surveymails_to_lib()
self.surveymails_to_hon()
self.surveymails_to_ifg()
diff --git a/input/migrations/0064_businesscard_send_data_to_print_literature_selfbuy_and_more.py b/input/migrations/0064_businesscard_send_data_to_print_literature_selfbuy_and_more.py
new file mode 100644
index 0000000..2875fec
--- /dev/null
+++ b/input/migrations/0064_businesscard_send_data_to_print_literature_selfbuy_and_more.py
@@ -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. wir-machen-druck.de) 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'),
+ ),
+ ]
diff --git a/input/migrations/0065_alter_literature_selfbuy_and_more.py b/input/migrations/0065_alter_literature_selfbuy_and_more.py
new file mode 100644
index 0000000..d081397
--- /dev/null
+++ b/input/migrations/0065_alter_literature_selfbuy_and_more.py
@@ -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'),
+ ),
+ ]
diff --git a/input/models.py b/input/models.py
index 341561c..d1f6589 100644
--- a/input/models.py
+++ b/input/models.py
@@ -190,17 +190,27 @@ class Library(Grant):
def __str__(self):
return self.library
+
+SELFBUY_CHOICES = {'TRUE': format_html('Ich möchte das Werk selbst kaufen und per Kostenerstattung bei Wikimedia Deutschland abrechnen.'),
+ 'FALSE': format_html('Ich möchte, dass Wikimedia Deutschland das Werk für mich kauft'),
+ 'NONE': format_html('Nichts ausgewählt')
+ }
+
+
class Literature(Grant):
info = models.CharField(max_length=500, verbose_name='Informationen zum Werk',
help_text=format_html("Bitte gib alle Informationen zum benötigten Werk an,
\
die eine eindeutige Identifizierung ermöglichen (Autor, Titel, Verlag, ISBN, ...)"))
source = models.CharField(max_length=200, verbose_name='Bezugsquelle',
help_text="Bitte gib an, wo du das Werk kaufen möchtest.")
+ selfbuy = models.CharField( max_length=10, verbose_name='Selbstkauf?', choices=SELFBUY_CHOICES.items(), default='TRUE')
+ selfbuy_give_data = models.BooleanField(default='NONE', verbose_name=format_html('Datenweitergabe erlauben'), help_text=format_html('Weitergabe meiner Daten (Name, Postadresse) an den von mir angegebenen Anbieter/Dienstleister.'))
class IFG(Grant):
url = models.URLField(max_length=2000, verbose_name="URL",
help_text="Bitte gib den Link zu deiner Anfrage bei Frag den Staat an.")
+
def __str__(self):
return "IFG-Anfrage von " + self.realname
@@ -270,4 +280,4 @@ class BusinessCard(Extern):
sent_to = models.TextField(max_length=1000, verbose_name='Versandadresse',
default='', help_text="Bitte gib den Namen und die vollständige Adresse ein, an welche die Visitenkarten geschickt werden sollen.")
- send_data_to_print = models.BooleanField(null=False, verbose_name=format_html('Datenweitergabe erlauben'), help_text=format_html('Hiermit erlaube ich die Weitergabe meiner Daten (Name, Postadresse) an den von Wikimedia Deutschland ausgewählten Dienstleister (z. B. wir-machen-druck.de) zum Zwecke des direkten Versands der Druckerzeugnisse an mich.'))
+ send_data_to_print = models.BooleanField(default=False, verbose_name=format_html('Datenweitergabe erlauben'), help_text=format_html('Hiermit erlaube ich die Weitergabe meiner Daten (Name, Postadresse) an den von Wikimedia Deutschland ausgewählten Dienstleister (z. B. wir-machen-druck.de) zum Zwecke des direkten Versands der Druckerzeugnisse an mich.'))
diff --git a/input/settings.py b/input/settings.py
index eacac3f..8b01de1 100644
--- a/input/settings.py
+++ b/input/settings.py
@@ -1,6 +1,8 @@
# mail for IF-OTRS
-IF_EMAIL = 'community@wikimedia.de'
-SURVEY_EMAIL = 'christof.pins@wikimedia.de'
+#IF_EMAIL = 'community@wikimedia.de'
+IF_EMAIL = 'luca@cannabinieri.de'
+#SURVEY_EMAIL = 'christof.pins@wikimedia.de'
+SURVEY_EMAIL = 'luca.wulf@cannabinieri.de'
# prefix for urls
SURVEYPREFIX = 'https://wikimedia.sslsurvey.de/Foerderbarometer/?'