more work on LIT and VIS, some restructuring

This commit is contained in:
Benni Baermann 2020-10-27 13:47:46 +01:00
parent afa0f6b55a
commit 33387f7648
5 changed files with 103 additions and 15 deletions

View file

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

View file

@ -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()

View 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),
),
]

View file

@ -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)

View file

@ -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: