Browse Source

conditional hiding of address textfield in literature form added

master
corsaronero 2 years ago
parent
commit
9b9209f2b5
5 changed files with 44 additions and 5 deletions
  1. +1
    -1
      input/forms.py
  2. +18
    -0
      input/migrations/0075_literature_selfbuy_data.py
  3. +8
    -1
      input/models.py
  4. +9
    -2
      input/static/dropdown/js/base.js
  5. +8
    -1
      input/views.py

+ 1
- 1
input/forms.py View File

@ -107,7 +107,7 @@ class LiteratureForm(CheckForm):
self.fields['selfbuy_give_data'].required = True self.fields['selfbuy_give_data'].required = True
class Meta: class Meta:
model = Literature model = Literature
fields = ['cost', 'info', 'source', 'notes', 'selfbuy', 'selfbuy_give_data']
fields = ['cost', 'info', 'source', 'notes', 'selfbuy', 'selfbuy_data', 'selfbuy_give_data']
exclude = ['intern_notes'] exclude = ['intern_notes']
class Media: class Media:
js = ('dropdown/js/base.js',) js = ('dropdown/js/base.js',)

+ 18
- 0
input/migrations/0075_literature_selfbuy_data.py View File

@ -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'),
),
]

+ 8
- 1
input/models.py View File

@ -209,7 +209,14 @@ class Literature(Grant):
source = models.CharField(max_length=200, verbose_name='Bezugsquelle', source = models.CharField(max_length=200, verbose_name='Bezugsquelle',
help_text="Bitte gib an, wo du das Werk kaufen möchtest.") 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 = 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.'))
selfbuy_give_data = models.BooleanField(verbose_name=format_html('Datenweitergabe erlauben'), help_text=format_html('Weitergabe meiner Daten (Name, Postadresse) an den von mir angegebenen Anbieter/Dienstleister.'))
selfbuy_data = models.TextField(max_length=1000, verbose_name='Persönliche Daten sowie Adresse', default='',
help_text=format_html("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."))
intern_notes = models.TextField(max_length=1000, blank=True) intern_notes = models.TextField(max_length=1000, blank=True)
class IFG(Grant): class IFG(Grant):

+ 9
- 2
input/static/dropdown/js/base.js View File

@ -7,16 +7,23 @@ window.addEventListener("load", function() {
var selectField_selfbuy = $('#id_selfbuy'), var selectField_selfbuy = $('#id_selfbuy'),
verified_selfbuy_div = $('#id_selfbuy_give_data').parent().parent(), verified_selfbuy_div = $('#id_selfbuy_give_data').parent().parent(),
verified_selfbuy = $('#id_selfbuy_give_data');
verified_selfbuy = $('#id_selfbuy_give_data'),
data_selfbuy_div = $('#id_selfbuy_data').parent().parent(),
data_selfbuy = $('#id_selfbuy_data');
// make checked to get through the required // make checked to get through the required
function toggleVerified_selfbuy(value) { function toggleVerified_selfbuy(value) {
if (value === "FALSE") { if (value === "FALSE") {
verified_selfbuy_div.show(); verified_selfbuy_div.show();
data_selfbuy_div.show();
data_selfbuy.val("");
verified_selfbuy.prop("checked", false); verified_selfbuy.prop("checked", false);
} else { } else {
verified_selfbuy_div.hide(); verified_selfbuy_div.hide();
data_selfbuy_div.hide();
data_selfbuy.val("NONE");
verified_selfbuy.prop("checked", true); verified_selfbuy.prop("checked", true);
} }
} }

+ 8
- 1
input/views.py View File

@ -124,6 +124,10 @@ class InternView(LoginRequiredMixin, CookieWizardView):
form.email = data['email'] form.email = data['email']
form.granted = True form.granted = True
form.granted_date = date.today() form.granted_date = date.today()
if data['choice'] == 'LIT':
form.selfbuy_give_data = data['selfbuy_give_data']
form.save() form.save()
return done(self.request) return done(self.request)
@ -204,7 +208,6 @@ class ExternView(CookieWizardView):
data = {} data = {}
for form in form_list: for form in form_list:
data = {**data, **form.cleaned_data} data = {**data, **form.cleaned_data}
if data['selfbuy'] == 'TRUE': if data['selfbuy'] == 'TRUE':
data['selfbuy_give_data'] = 'False' data['selfbuy_give_data'] = 'False'
print(data) print(data)
@ -213,6 +216,10 @@ class ExternView(CookieWizardView):
modell = form.save(commit=False) modell = form.save(commit=False)
# we have to copy the data from the first form here # we have to copy the data from the first form here
# this is a bit ugly code. can we copy this without explicit writing? # this is a bit ugly code. can we copy this without explicit writing?
if data['choice'] == 'LIT':
modell.selfbuy_give_data = data['selfbuy_give_data']
modell.realname = data['realname'] modell.realname = data['realname']
modell.username = data['username'] modell.username = data['username']
modell.email = data['email'] modell.email = data['email']

Loading…
Cancel
Save