added Email modell and form
This commit is contained in:
		
							parent
							
								
									b0e268df75
								
							
						
					
					
						commit
						275741ab47
					
				| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
from django.contrib import admin
 | 
			
		||||
 | 
			
		||||
from .models import Project, HonoraryCertificate, Library, IFG, Travel
 | 
			
		||||
from .models import Project, HonoraryCertificate, Library, IFG, Travel,\
 | 
			
		||||
                    Email, BusinessCard, List
 | 
			
		||||
 | 
			
		||||
@admin.register(Project)
 | 
			
		||||
class ProjectAdmin(admin.ModelAdmin):
 | 
			
		||||
| 
						 | 
				
			
			@ -11,4 +12,7 @@ admin.site.register([
 | 
			
		|||
                     Library,
 | 
			
		||||
                     IFG,
 | 
			
		||||
                     Travel,
 | 
			
		||||
                     Email,
 | 
			
		||||
                     BusinessCard,
 | 
			
		||||
                     List
 | 
			
		||||
                     ])
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,8 +3,9 @@ from django.forms import ModelForm, DateField, ChoiceField, RadioSelect, Boolean
 | 
			
		|||
from django.contrib.admin.widgets import AdminDateWidget
 | 
			
		||||
from django.utils.html import format_html
 | 
			
		||||
 | 
			
		||||
from .models import Project, Volunteer, Extern, IFG, Library, TYPE_CHOICES, HonoraryCertificate, Travel
 | 
			
		||||
from .settings import DATAPROTECTION, FOERDERRICHTLINIEN
 | 
			
		||||
from .models import Project, Volunteer, Extern, IFG, Library, TYPE_CHOICES,\
 | 
			
		||||
                    HonoraryCertificate, Travel, Email
 | 
			
		||||
from .settings import DATAPROTECTION, FOERDERRICHTLINIEN, NUTZUNGSBEDINGUNGEN
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ProjectForm(ModelForm):
 | 
			
		||||
| 
						 | 
				
			
			@ -63,3 +64,13 @@ class HonoraryCertificateForm(ModelForm):
 | 
			
		|||
    class Meta:
 | 
			
		||||
        model = HonoraryCertificate
 | 
			
		||||
        exclude = ('realname', 'email', 'username', 'granted', 'granted_date', 'survey_mail_send')
 | 
			
		||||
 | 
			
		||||
class EmailForm(ModelForm):
 | 
			
		||||
    # TODO: add some javascript to show/hide other-field
 | 
			
		||||
    check = BooleanField(required=True,
 | 
			
		||||
                         label=format_html("Ich stimme den <a href='{}'>Nutzungsbedingungen</a> zu",
 | 
			
		||||
                         NUTZUNGSBEDINGUNGEN))
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
        model = Email
 | 
			
		||||
        exclude = ('realname', 'email', 'username', 'granted', 'granted_date', 'survey_mail_send')
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,64 @@
 | 
			
		|||
# Generated by Django 3.1.1 on 2020-10-27 09:58
 | 
			
		||||
 | 
			
		||||
from django.db import migrations, models
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(migrations.Migration):
 | 
			
		||||
 | 
			
		||||
    dependencies = [
 | 
			
		||||
        ('input', '0026_auto_20201026_1214'),
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    operations = [
 | 
			
		||||
        migrations.CreateModel(
 | 
			
		||||
            name='BusinessCard',
 | 
			
		||||
            fields=[
 | 
			
		||||
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 | 
			
		||||
                ('realname', models.CharField(max_length=200, null=True)),
 | 
			
		||||
                ('email', models.CharField(max_length=200, null=True)),
 | 
			
		||||
                ('granted', models.BooleanField(null=True)),
 | 
			
		||||
                ('granted_date', models.DateField(null=True)),
 | 
			
		||||
                ('survey_mail_send', models.BooleanField(null=True)),
 | 
			
		||||
                ('username', models.CharField(max_length=200, null=True)),
 | 
			
		||||
                ('cost', models.CharField(max_length=10)),
 | 
			
		||||
                ('notes', models.CharField(max_length=500)),
 | 
			
		||||
            ],
 | 
			
		||||
            options={
 | 
			
		||||
                'abstract': False,
 | 
			
		||||
            },
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.CreateModel(
 | 
			
		||||
            name='Email',
 | 
			
		||||
            fields=[
 | 
			
		||||
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 | 
			
		||||
                ('realname', models.CharField(max_length=200, null=True)),
 | 
			
		||||
                ('email', models.CharField(max_length=200, null=True)),
 | 
			
		||||
                ('granted', models.BooleanField(null=True)),
 | 
			
		||||
                ('granted_date', models.DateField(null=True)),
 | 
			
		||||
                ('survey_mail_send', models.BooleanField(null=True)),
 | 
			
		||||
                ('username', models.CharField(max_length=200, null=True)),
 | 
			
		||||
                ('domain', models.CharField(choices=[('PEDIA', '@wikipedia.de'), ('BOOKS', '@wikibooks.de'), ('QUOTE', '@wikiquote.de'), ('SOURCE', '@wikisource.de'), ('VERSITY', '@wikiversity.de')], default='PEDIA', max_length=10)),
 | 
			
		||||
                ('adress', models.CharField(choices=[('REALNAME', 'Vorname.Nachname'), ('USERNAME', 'Username'), ('OTHER', 'Sonstiges:')], default='USERNAME', max_length=50)),
 | 
			
		||||
                ('other', models.CharField(blank=True, max_length=50, null=True)),
 | 
			
		||||
            ],
 | 
			
		||||
            options={
 | 
			
		||||
                'abstract': False,
 | 
			
		||||
            },
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.CreateModel(
 | 
			
		||||
            name='List',
 | 
			
		||||
            fields=[
 | 
			
		||||
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 | 
			
		||||
                ('realname', models.CharField(max_length=200, null=True)),
 | 
			
		||||
                ('email', models.CharField(max_length=200, null=True)),
 | 
			
		||||
                ('granted', models.BooleanField(null=True)),
 | 
			
		||||
                ('granted_date', models.DateField(null=True)),
 | 
			
		||||
                ('survey_mail_send', models.BooleanField(null=True)),
 | 
			
		||||
                ('username', models.CharField(max_length=200, null=True)),
 | 
			
		||||
                ('domain', models.CharField(choices=[('PEDIA', '@wikipedia.de'), ('BOOKS', '@wikibooks.de'), ('QUOTE', '@wikiquote.de'), ('SOURCE', '@wikisource.de'), ('VERSITY', '@wikiversity.de')], default='PEDIA', max_length=10)),
 | 
			
		||||
            ],
 | 
			
		||||
            options={
 | 
			
		||||
                'abstract': False,
 | 
			
		||||
            },
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
| 
						 | 
				
			
			@ -116,3 +116,33 @@ class IFG(Grant):
 | 
			
		|||
 | 
			
		||||
    def __str__(self):
 | 
			
		||||
        return "IFG-Anfrage von " + self.realname
 | 
			
		||||
 | 
			
		||||
DOMAIN_CHOICES = {'PEDIA': '@wikipedia.de',
 | 
			
		||||
                  'BOOKS': '@wikibooks.de',
 | 
			
		||||
                  'QUOTE': '@wikiquote.de',
 | 
			
		||||
                  'SOURCE': '@wikisource.de',
 | 
			
		||||
                  'VERSITY': '@wikiversity.de',}
 | 
			
		||||
 | 
			
		||||
class Domain(Extern):
 | 
			
		||||
    domain = models.CharField(max_length=10,
 | 
			
		||||
                              choices=DOMAIN_CHOICES.items(),
 | 
			
		||||
                              default='PEDIA')
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
        abstract = True
 | 
			
		||||
 | 
			
		||||
MAIL_CHOICES = {'REALNAME': 'Vorname.Nachname',
 | 
			
		||||
                'USERNAME': 'Username',
 | 
			
		||||
                'OTHER': 'Sonstiges:'}
 | 
			
		||||
 | 
			
		||||
class Email(Domain):
 | 
			
		||||
    adress = models.CharField(max_length=50,
 | 
			
		||||
                              choices=MAIL_CHOICES.items(),
 | 
			
		||||
                              default='USERNAME')
 | 
			
		||||
    other = models.CharField(max_length=50,blank=True,null=True)
 | 
			
		||||
 | 
			
		||||
class List(Domain):
 | 
			
		||||
    pass
 | 
			
		||||
 | 
			
		||||
class BusinessCard(Grant):
 | 
			
		||||
    pass
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,7 +10,7 @@ from django.template.loader import get_template
 | 
			
		|||
from django.template import Context
 | 
			
		||||
 | 
			
		||||
from .forms import ProjectForm, ExternForm, LibraryForm, IFGForm,\
 | 
			
		||||
                   HonoraryCertificateForm, InternForm, TravelForm
 | 
			
		||||
                   HonoraryCertificateForm, InternForm, TravelForm, EmailForm
 | 
			
		||||
from .models import Project, TYPE_CHOICES, Library
 | 
			
		||||
from .settings import URLPREFIX, IF_EMAIL
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -58,17 +58,15 @@ class InternView(CookieWizardView):
 | 
			
		|||
        if step == '1':
 | 
			
		||||
            prev_data = self.get_cleaned_data_for_step('0')
 | 
			
		||||
            choice = prev_data.get('choice')
 | 
			
		||||
            print(f'choice detection: {TYPE_CHOICES[choice]}')
 | 
			
		||||
            if choice == 'HON':
 | 
			
		||||
                print ('Ehrenamtsbescheinigung detected!')
 | 
			
		||||
                form = HonoraryCertificateForm(data)
 | 
			
		||||
            elif choice == 'PRO':
 | 
			
		||||
                print ('Projektsteckbrief erreicht!')
 | 
			
		||||
                form = ProjectForm(data)
 | 
			
		||||
            elif choice == 'TRAV':
 | 
			
		||||
                print('Reisekosten erreicht')
 | 
			
		||||
                form = TravelForm(data)
 | 
			
		||||
            else:
 | 
			
		||||
                raise RuntimeError(f'ERROR! UNKNOWN FORMTYPE {choice}')
 | 
			
		||||
                raise RuntimeError(f'ERROR! UNKNOWN FORMTYPE {choice} in InternView')
 | 
			
		||||
        else:
 | 
			
		||||
            form = super().get_form(step, data, files)
 | 
			
		||||
        return form
 | 
			
		||||
| 
						 | 
				
			
			@ -113,15 +111,16 @@ class ExternView(CookieWizardView):
 | 
			
		|||
        if step == '1':
 | 
			
		||||
            prev_data = self.get_cleaned_data_for_step('0')
 | 
			
		||||
            choice = prev_data.get('choice')
 | 
			
		||||
            print(f'choice detection in ExternView: {TYPE_CHOICES[choice]}')
 | 
			
		||||
            if choice == 'IFG':
 | 
			
		||||
                print ('IFG detected!')
 | 
			
		||||
                form = IFGForm(data)
 | 
			
		||||
            elif choice in ('BIB', 'SOFT', 'ELIT'):
 | 
			
		||||
                print ('one of the famous three detected!')
 | 
			
		||||
                form = LibraryForm(data)
 | 
			
		||||
                form.fields['library'].label = TYPE_CHOICES[choice]
 | 
			
		||||
            elif choice == 'MAIL':
 | 
			
		||||
                form = EmailForm(data)
 | 
			
		||||
            else:
 | 
			
		||||
                raise RuntimeError(f'ERROR! UNKNOWN FORMTYPE {choice}')
 | 
			
		||||
                raise RuntimeError(f'ERROR! UNKNOWN FORMTYPE {choice} in ExternView')
 | 
			
		||||
        else:
 | 
			
		||||
            form = super().get_form(step, data, files)
 | 
			
		||||
        return form
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue