Compare commits

...

2 Commits

6 changed files with 93 additions and 26 deletions

View File

@ -1,17 +1,6 @@
from django.contrib import admin from django.contrib import admin
# Register your models here. from .models import Project, HonoraryCertificate, Library, IFG, Travel
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
@admin.register(Project) @admin.register(Project)
class ProjectAdmin(admin.ModelAdmin): class ProjectAdmin(admin.ModelAdmin):
@ -21,4 +10,5 @@ admin.site.register([
HonoraryCertificate, HonoraryCertificate,
Library, Library,
IFG, IFG,
Travel,
]) ])

View File

@ -3,7 +3,7 @@ from django.forms import ModelForm, DateField, ChoiceField, RadioSelect, Boolean
from django.contrib.admin.widgets import AdminDateWidget from django.contrib.admin.widgets import AdminDateWidget
from django.utils.html import format_html from django.utils.html import format_html
from .models import Project, Volunteer, IFG, Library, TYPE_CHOICES, HonoraryCertificate from .models import Project, Volunteer, Extern, IFG, Library, TYPE_CHOICES, HonoraryCertificate, Travel
from .settings import DATAPROTECTION, FOERDERRICHTLINIEN from .settings import DATAPROTECTION, FOERDERRICHTLINIEN
@ -13,11 +13,11 @@ class ProjectForm(ModelForm):
class Meta: class Meta:
model = Project model = Project
exclude = ('pid', 'granted', 'granted_date', 'username', 'realname', 'email', 'project_end_mail', 'survey_mail_send') exclude = ('pid', 'granted', 'granted_date', 'realname', 'email', 'project_end_mail', 'survey_mail_send')
widgets = {'start': AdminDateWidget(), widgets = {'start': AdminDateWidget(),
'end': AdminDateWidget(),} 'end': AdminDateWidget(),}
class VolunteerForm(ModelForm): class ExternForm(ModelForm):
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?')
@ -27,7 +27,7 @@ class VolunteerForm(ModelForm):
DATAPROTECTION, FOERDERRICHTLINIEN)) DATAPROTECTION, FOERDERRICHTLINIEN))
class Meta: class Meta:
model = Volunteer model = Extern
exclude = ('granted', 'granted_date', 'survey_mail_send') exclude = ('granted', 'granted_date', 'survey_mail_send')
INTERN_CHOICES = [('PRO', 'Projektsteckbrief'), INTERN_CHOICES = [('PRO', 'Projektsteckbrief'),
@ -42,6 +42,11 @@ class InternForm(ModelForm):
model = Volunteer model = Volunteer
exclude = ('granted', 'granted_date', 'survey_mail_send') 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): class LibraryForm(ModelForm):

View File

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

View File

@ -0,0 +1,25 @@
# Generated by Django 3.1.1 on 2020-10-26 10:48
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('input', '0024_travel'),
]
operations = [
migrations.RemoveField(
model_name='honorarycertificate',
name='username',
),
migrations.RemoveField(
model_name='project',
name='username',
),
migrations.RemoveField(
model_name='travel',
name='username',
),
]

View File

@ -8,7 +8,7 @@ from .settings import ACCOUNTS
class Volunteer(models.Model): class Volunteer(models.Model):
realname = models.CharField(max_length=200, null=True) realname = models.CharField(max_length=200, null=True)
email = models.CharField(max_length=200, null=True) email = models.CharField(max_length=200, null=True)
username = models.CharField(max_length=200, null=True) # username = models.CharField(max_length=200, null=True)
# the following Fields are not supposed to be edited by users # the following Fields are not supposed to be edited by users
granted = models.BooleanField(null=True) granted = models.BooleanField(null=True)
@ -54,16 +54,29 @@ class Project(Volunteer):
return f"{self.pid} {self.name}" return f"{self.pid} {self.name}"
class HonoraryCertificate(Volunteer): 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 ''' ''' this class is also used for accreditations '''
request_url = models.CharField(max_length=2000) # request_url = models.CharField(max_length=2000)
project = models.ForeignKey(Project, null = True, on_delete = models.SET_NULL) project = models.ForeignKey(Project, null = True, on_delete = models.SET_NULL)
def __str__(self): def __str__(self):
return "Certificate for " + self.realname return "Certificate for " + self.realname
class Travel(Intern):
project = models.ForeignKey(Project, on_delete = models.CASCADE)
#abstract base class for Library and IFG #abstract base class for Library and IFG
class Grant(Extern): class Grant(Extern):
cost = models.CharField(max_length=10) cost = models.CharField(max_length=10)

View File

@ -7,8 +7,8 @@ from django.conf import settings
from django.template.loader import get_template from django.template.loader import get_template
from django.template import Context from django.template import Context
from .forms import ProjectForm, VolunteerForm, LibraryForm, IFGForm,\ from .forms import ProjectForm, ExternForm, LibraryForm, IFGForm,\
HonoraryCertificateForm, InternForm HonoraryCertificateForm, InternForm, TravelForm
from .models import Project, TYPE_CHOICES, Library from .models import Project, TYPE_CHOICES, Library
from .settings import URLPREFIX, IF_EMAIL from .settings import URLPREFIX, IF_EMAIL
@ -62,6 +62,9 @@ class InternView(CookieWizardView):
elif choice == 'PRO': elif choice == 'PRO':
print ('Projektsteckbrief erreicht!') print ('Projektsteckbrief erreicht!')
form = ProjectForm(data) form = ProjectForm(data)
elif choice == 'TRAV':
print('Reisekosten erreicht')
form = TravelForm(data)
else: else:
raise RuntimeError(f'ERROR! UNKNOWN FORMTYPE {choice}') raise RuntimeError(f'ERROR! UNKNOWN FORMTYPE {choice}')
else: else:
@ -69,7 +72,7 @@ class InternView(CookieWizardView):
return form return form
def done(self, form_list, **kwargs): def done(self, form_list, **kwargs):
print('ExternView.done() reached') print('InternView.done() reached')
# gather data from all forms # gather data from all forms
data = {} data = {}
for form in form_list: for form in form_list:
@ -82,7 +85,7 @@ class InternView(CookieWizardView):
# this is ugly code. how can we copy this without explicit writing? # this is ugly code. how can we copy this without explicit writing?
# i found no way to access the ModelForm.Meta.exclude-tupel # i found no way to access the ModelForm.Meta.exclude-tupel
form.realname = data['realname'] form.realname = data['realname']
form.username = data['username'] # form.username = data['username']
form.email = data['email'] form.email = data['email']
form.save() form.save()
@ -93,7 +96,7 @@ class ExternView(CookieWizardView):
'''This View is for Volunteers''' '''This View is for Volunteers'''
template_name = "input/extern.html" template_name = "input/extern.html"
form_list = [VolunteerForm, LibraryForm] form_list = [ExternForm, LibraryForm]
def get_form(self, step=None, data=None, files=None): def get_form(self, step=None, data=None, files=None):
'''this function determines which part of the multipart form is '''this function determines which part of the multipart form is
@ -132,7 +135,7 @@ class ExternView(CookieWizardView):
# 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. how can we copy this without explicit writing? # this is a bit ugly code. how can we copy this without explicit writing?
form.realname = data['realname'] form.realname = data['realname']
form.username = data['username'] # form.username = data['username']
form.email = data['email'] form.email = data['email']
# write type of form in some cases # write type of form in some cases
if data['choice'] in ('BIB', 'ELIT', 'SOFT'): if data['choice'] in ('BIB', 'ELIT', 'SOFT'):