From 5a014d46961479c8a290a4ada7d9ed75eedc37e2 Mon Sep 17 00:00:00 2001 From: Benni Baermann Date: Mon, 26 Oct 2020 11:38:56 +0100 Subject: [PATCH] Travel model and form added --- input/admin.py | 14 ++------------ input/forms.py | 7 ++++++- input/migrations/0024_travel.py | 31 +++++++++++++++++++++++++++++++ input/models.py | 19 ++++++++++++++++--- input/views.py | 5 ++++- 5 files changed, 59 insertions(+), 17 deletions(-) create mode 100644 input/migrations/0024_travel.py diff --git a/input/admin.py b/input/admin.py index d9282b1..937c427 100644 --- a/input/admin.py +++ b/input/admin.py @@ -1,17 +1,6 @@ from django.contrib import admin -# Register your models here. -from .models import Project, HonoraryCertificate, Library, IFG #, ELitStip - -# @admin.register(Project) -# class ProjectAdmin(admin.ModelAdmin): -# #fields = ('pid',) -# readonly_fields = ('pid',) -# # list_display =('pid',) -# def __init__(self, *args, **kwargs): -# super().__init__(*args, **kwargs) -# self.fields = super().get_all_field_names() + 'pid' -# return self +from .models import Project, HonoraryCertificate, Library, IFG, Travel @admin.register(Project) class ProjectAdmin(admin.ModelAdmin): @@ -21,4 +10,5 @@ admin.site.register([ HonoraryCertificate, Library, IFG, + Travel, ]) diff --git a/input/forms.py b/input/forms.py index 95a6fbc..7467ebf 100644 --- a/input/forms.py +++ b/input/forms.py @@ -3,7 +3,7 @@ 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, IFG, Library, TYPE_CHOICES, HonoraryCertificate +from .models import Project, Volunteer, IFG, Library, TYPE_CHOICES, HonoraryCertificate, Travel from .settings import DATAPROTECTION, FOERDERRICHTLINIEN @@ -42,6 +42,11 @@ class InternForm(ModelForm): model = Volunteer exclude = ('granted', 'granted_date', 'survey_mail_send') +class TravelForm(ModelForm): + + class Meta: + model = Travel + exclude = ('granted', 'granted_date', 'survey_mail_send', 'realname', 'email',) class LibraryForm(ModelForm): diff --git a/input/migrations/0024_travel.py b/input/migrations/0024_travel.py new file mode 100644 index 0000000..2373039 --- /dev/null +++ b/input/migrations/0024_travel.py @@ -0,0 +1,31 @@ +# Generated by Django 3.1.1 on 2020-10-26 10:35 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('input', '0023_auto_20201022_1400'), + ] + + operations = [ + migrations.CreateModel( + name='Travel', + 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)), + ('username', 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)), + ('request_url', models.CharField(max_length=2000)), + ('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='input.project')), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/input/models.py b/input/models.py index 1a4da2c..b96091a 100644 --- a/input/models.py +++ b/input/models.py @@ -54,16 +54,29 @@ class Project(Volunteer): return f"{self.pid} {self.name}" -class HonoraryCertificate(Volunteer): - ''' this class is also used for accreditations ''' - +class Intern(Volunteer): + '''abstrat base class for data entry from /intern (except Project)''' request_url = models.CharField(max_length=2000) + + class Meta: + abstract = True + + +class HonoraryCertificate(Intern): + ''' this class is also used for accreditations ''' + + # request_url = models.CharField(max_length=2000) project = models.ForeignKey(Project, null = True, on_delete = models.SET_NULL) def __str__(self): return "Certificate for " + self.realname +class Travel(Intern): + project = models.ForeignKey(Project, on_delete = models.CASCADE) + + + #abstract base class for Library and IFG class Grant(Extern): cost = models.CharField(max_length=10) diff --git a/input/views.py b/input/views.py index c85e669..05b085f 100644 --- a/input/views.py +++ b/input/views.py @@ -8,7 +8,7 @@ from django.template.loader import get_template from django.template import Context from .forms import ProjectForm, VolunteerForm, LibraryForm, IFGForm,\ - HonoraryCertificateForm, InternForm + HonoraryCertificateForm, InternForm, TravelForm from .models import Project, TYPE_CHOICES, Library from .settings import URLPREFIX, IF_EMAIL @@ -62,6 +62,9 @@ class InternView(CookieWizardView): 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}') else: