more work on LIT and VIS, some restructuring
This commit is contained in:
parent
afa0f6b55a
commit
33387f7648
5 changed files with 103 additions and 15 deletions
|
@ -4,7 +4,8 @@ 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, Extern, IFG, Library, TYPE_CHOICES,\
|
from .models import Project, Volunteer, Extern, IFG, Library, TYPE_CHOICES,\
|
||||||
HonoraryCertificate, Travel, Email
|
HonoraryCertificate, Travel, Email, Literature, List,\
|
||||||
|
BusinessCard
|
||||||
from .settings import DATAPROTECTION, FOERDERRICHTLINIEN, NUTZUNGSBEDINGUNGEN
|
from .settings import DATAPROTECTION, FOERDERRICHTLINIEN, NUTZUNGSBEDINGUNGEN
|
||||||
|
|
||||||
|
|
||||||
|
@ -66,6 +67,11 @@ class HonoraryCertificateForm(ModelForm):
|
||||||
fields = ['request_url', 'project']
|
fields = ['request_url', 'project']
|
||||||
# exclude = ('realname', 'email', 'username', 'granted', 'granted_date', 'survey_mail_send')
|
# exclude = ('realname', 'email', 'username', 'granted', 'granted_date', 'survey_mail_send')
|
||||||
|
|
||||||
|
class LiteratureForm(ModelForm):
|
||||||
|
class Meta:
|
||||||
|
model = Literature
|
||||||
|
fields = ['cost', 'notes', 'info', 'source']
|
||||||
|
|
||||||
class EmailForm(ModelForm):
|
class EmailForm(ModelForm):
|
||||||
# TODO: add some javascript to show/hide other-field
|
# TODO: add some javascript to show/hide other-field
|
||||||
check = BooleanField(required=True,
|
check = BooleanField(required=True,
|
||||||
|
@ -76,3 +82,13 @@ class EmailForm(ModelForm):
|
||||||
model = Email
|
model = Email
|
||||||
fields = ['domain', 'address', 'other']
|
fields = ['domain', 'address', 'other']
|
||||||
# exclude = ('realname', 'email', 'username', 'granted', 'granted_date', 'survey_mail_send')
|
# exclude = ('realname', 'email', 'username', 'granted', 'granted_date', 'survey_mail_send')
|
||||||
|
|
||||||
|
class BusinessCardForm(ModelForm):
|
||||||
|
class Meta:
|
||||||
|
model = BusinessCard
|
||||||
|
fields = ['project', 'data', 'variant', 'sent_to']
|
||||||
|
|
||||||
|
class ListForm(ModelForm):
|
||||||
|
class Meta:
|
||||||
|
model = List
|
||||||
|
fields = ['domain', 'address']
|
||||||
|
|
|
@ -6,7 +6,7 @@ from django.template.loader import get_template
|
||||||
from django.core.mail import send_mail, BadHeaderError
|
from django.core.mail import send_mail, BadHeaderError
|
||||||
|
|
||||||
from input.models import Project, Library, HonoraryCertificate, Travel, Email,\
|
from input.models import Project, Library, HonoraryCertificate, Travel, Email,\
|
||||||
BusinessCard, List, IFG
|
BusinessCard, List, IFG, Literature
|
||||||
from input.settings import URLPREFIX, IF_EMAIL, SURVEYPREFIX
|
from input.settings import URLPREFIX, IF_EMAIL, SURVEYPREFIX
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
|
@ -112,6 +112,14 @@ class Command(BaseCommand):
|
||||||
.exclude(survey_mail_send=True)
|
.exclude(survey_mail_send=True)
|
||||||
self.surveymails_to_object(supported, type='IFG', name='url')
|
self.surveymails_to_object(supported, type='IFG', name='url')
|
||||||
|
|
||||||
|
def surveymails_to_lit(self):
|
||||||
|
'''get all Litearure objects which where granted two weeks ago'''
|
||||||
|
|
||||||
|
supported = Literature.objects.filter(granted=True)\
|
||||||
|
.filter(granted_date__lt = date.today() - timedelta(days=14))\
|
||||||
|
.exclude(survey_mail_send=True)
|
||||||
|
self.surveymails_to_object(supported, type='LIT', name='info')
|
||||||
|
|
||||||
def surveymails_to_project(self):
|
def surveymails_to_project(self):
|
||||||
'''send survey link 4 weeks after end of project reached'''
|
'''send survey link 4 weeks after end of project reached'''
|
||||||
supported = Project.objects.filter(granted=True)\
|
supported = Project.objects.filter(granted=True)\
|
||||||
|
@ -149,6 +157,7 @@ class Command(BaseCommand):
|
||||||
self.surveymails_to_lib()
|
self.surveymails_to_lib()
|
||||||
self.surveymails_to_hon()
|
self.surveymails_to_hon()
|
||||||
self.surveymails_to_ifg()
|
self.surveymails_to_ifg()
|
||||||
|
self.surveymails_to_lit()
|
||||||
self.surveymails_to_project()
|
self.surveymails_to_project()
|
||||||
self.surveymails_to_travel()
|
self.surveymails_to_travel()
|
||||||
self.surveymails_to_mail_vis_lis()
|
self.surveymails_to_mail_vis_lis()
|
||||||
|
|
42
input/migrations/0029_auto_20201027_1247.py
Normal file
42
input/migrations/0029_auto_20201027_1247.py
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
# Generated by Django 3.1.1 on 2020-10-27 12:47
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('input', '0028_auto_20201027_1131'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Literature',
|
||||||
|
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(blank=True, max_length=500)),
|
||||||
|
('info', models.CharField(max_length=500)),
|
||||||
|
('source', models.CharField(max_length=200)),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='ifg',
|
||||||
|
name='notes',
|
||||||
|
field=models.CharField(blank=True, max_length=500),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='library',
|
||||||
|
name='notes',
|
||||||
|
field=models.CharField(blank=True, max_length=500),
|
||||||
|
),
|
||||||
|
]
|
|
@ -80,7 +80,7 @@ class Travel(Intern):
|
||||||
#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)
|
||||||
notes = models.CharField(max_length=500)
|
notes = models.CharField(max_length=500, blank=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
@ -110,6 +110,9 @@ class Library(Grant):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.library
|
return self.library
|
||||||
|
|
||||||
|
class Literature(Grant):
|
||||||
|
info = models.CharField(max_length=500)
|
||||||
|
source = models.CharField(max_length=200)
|
||||||
|
|
||||||
class IFG(Grant):
|
class IFG(Grant):
|
||||||
url = models.CharField(max_length=2000)
|
url = models.CharField(max_length=2000)
|
||||||
|
|
|
@ -9,33 +9,45 @@ 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, ExternForm, LibraryForm, IFGForm,\
|
from .forms import ProjectForm, ExternForm, LibraryForm, IFGForm, LiteratureForm,\
|
||||||
HonoraryCertificateForm, InternForm, TravelForm, EmailForm
|
HonoraryCertificateForm, InternForm, TravelForm, EmailForm,\
|
||||||
from .models import Project, TYPE_CHOICES, Library
|
ListForm, BusinessCardForm
|
||||||
|
from .models import Project, TYPE_CHOICES, Library, Literature
|
||||||
from .settings import URLPREFIX, IF_EMAIL
|
from .settings import URLPREFIX, IF_EMAIL
|
||||||
|
|
||||||
|
|
||||||
|
def auth_deny(choice,pk,auth):
|
||||||
|
if choice in ('BIB', 'ELIT', 'SOFT'):
|
||||||
|
Library.set_granted(pk,auth)
|
||||||
|
if choice == 'LIT':
|
||||||
|
Literature.set_granted(pk,auth)
|
||||||
|
if choice == 'IFG':
|
||||||
|
IFG.set_granted(pk,auth)
|
||||||
|
else:
|
||||||
|
return HttpResponse(f'ERROR! UNKNWON CHOICE TYPE! {choice}')
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
def authorize(request, choice, pk):
|
def authorize(request, choice, pk):
|
||||||
'''If IF grant a support they click a link in a mail which leads here.
|
'''If IF grant a support they click a link in a mail which leads here.
|
||||||
We write the granted field in the database here and set a timestamp.'''
|
We write the granted field in the database here and set a timestamp.'''
|
||||||
# TODO: write a timestamp which is needed to determine time of next mail
|
|
||||||
|
|
||||||
if choice in ('BIB', 'ELIT', 'SOFT'):
|
ret = auth_deny(choice, pk, True)
|
||||||
Library.set_granted(pk,True)
|
if ret:
|
||||||
return HttpResponse(f"AUTHORIZED! choice: {choice}, pk: {pk}")
|
return ret
|
||||||
else:
|
else:
|
||||||
return HttpResponse(f'ERROR! UNKNWON CHOICE TYPE! {choice}')
|
return HttpResponse(f"AUTHORIZED! choice: {choice}, pk: {pk}")
|
||||||
|
|
||||||
|
|
||||||
def deny(request, choice, pk):
|
def deny(request, choice, pk):
|
||||||
'''If IF denies a support they click a link in a mail which leads here
|
'''If IF denies a support they click a link in a mail which leads here
|
||||||
We write the granted field in the database here.'''
|
We write the granted field in the database here.'''
|
||||||
|
|
||||||
if choice in ('BIB', 'ELIT', 'SOFT'):
|
ret = auth_deny(choice, pk, False)
|
||||||
Library.set_granted(pk,False)
|
if ret:
|
||||||
return HttpResponse(f"DENIED! choice: {choice}, pk: {pk}")
|
return ret
|
||||||
else:
|
else:
|
||||||
return HttpResponse(f'ERROR! UNKNWON CHOICE TYPE {choice}!')
|
return HttpResponse(f"DENIED! choice: {choice}, pk: {pk}")
|
||||||
|
|
||||||
|
|
||||||
def done(request):
|
def done(request):
|
||||||
|
@ -119,6 +131,12 @@ class ExternView(CookieWizardView):
|
||||||
form.fields['library'].label = TYPE_CHOICES[choice]
|
form.fields['library'].label = TYPE_CHOICES[choice]
|
||||||
elif choice == 'MAIL':
|
elif choice == 'MAIL':
|
||||||
form = EmailForm(data)
|
form = EmailForm(data)
|
||||||
|
elif choice == 'LIT':
|
||||||
|
form = LiteratureForm(data)
|
||||||
|
elif choice == 'VIS':
|
||||||
|
form = BusinessCardForm(data)
|
||||||
|
elif choice == 'LIST':
|
||||||
|
form = ListForm(data)
|
||||||
else:
|
else:
|
||||||
raise RuntimeError(f'ERROR! UNKNOWN FORMTYPE {choice} in ExternView')
|
raise RuntimeError(f'ERROR! UNKNOWN FORMTYPE {choice} in ExternView')
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in a new issue