Merge branch 'main' into MK/finance_qr_codes

pull/94/head
mariusrklein 12 months ago
commit d5ba0499fe

@ -1,5 +1,6 @@
from django.contrib import admin, messages
from django.forms import Textarea
from django import forms
from django.forms import Textarea, ClearableFileInput
from django.http import HttpResponse, HttpResponseRedirect
from django.db.models import TextField, Q
from django.urls import path, reverse
@ -9,7 +10,7 @@ from django.shortcuts import render
from django.conf import settings
from contrib.admin import CommonAdminInlineMixin, CommonAdminMixin
from utils import get_member
from utils import get_member, RestrictedFileField
from rules.contrib.admin import ObjectPermissionsModelAdmin
@ -22,14 +23,21 @@ class LedgerAdmin(admin.ModelAdmin):
search_fields = ('name', )
class BillOnStatementInlineForm(forms.ModelForm):
class Meta:
model = BillOnStatementProxy
fields = ['short_description', 'explanation', 'amount', 'paid_by', 'proof']
widgets = {
'proof': ClearableFileInput(attrs={'accept': 'application/pdf,image/jpeg,image/png'}),
'explanation': Textarea(attrs={'rows': 1, 'cols': 40})
}
class BillOnStatementInline(CommonAdminInlineMixin, admin.TabularInline):
model = BillOnStatementProxy
extra = 0
sortable_options = []
fields = ['short_description', 'explanation', 'amount', 'paid_by', 'proof']
formfield_overrides = {
TextField: {'widget': Textarea(attrs={'rows': 1, 'cols': 40})}
}
form = BillOnStatementInlineForm
@admin.register(StatementUnSubmitted)

@ -0,0 +1,19 @@
# Generated by Django 4.0.1 on 2024-12-26 09:45
from django.db import migrations
import utils
class Migration(migrations.Migration):
dependencies = [
('finance', '0004_alter_bill_amount'),
]
operations = [
migrations.AlterField(
model_name='bill',
name='proof',
field=utils.RestrictedFileField(blank=True, upload_to='bill_images', verbose_name='Proof'),
),
]

@ -13,7 +13,7 @@ from django.conf import settings
import rules
from contrib.models import CommonModel
from contrib.rules import has_global_perm
from utils import cvt_to_decimal
from utils import cvt_to_decimal, RestrictedFileField
from schwifty import IBAN
import re
@ -426,7 +426,14 @@ class Bill(CommonModel):
costs_covered = models.BooleanField(verbose_name=_('Covered'), default=False)
refunded = models.BooleanField(verbose_name=_('Refunded'), default=False)
proof = models.ImageField(_('Proof'), upload_to='bill_images', blank=True)
proof = RestrictedFileField(verbose_name=_('Proof'),
upload_to='bill_images',
blank=True,
max_upload_size=5,
content_types=['application/pdf',
'image/jpeg',
'image/png',
'image/gif'])
def __str__(self):
return "{} ({}€)".format(self.short_description, self.amount)

@ -54,9 +54,9 @@ JET_SIDE_MENU_ITEMS = [
{'name': 'post', 'permissions': ['startpage.view_post']},
]},
{'label': 'Externe Links', 'items' : [
{ 'label': 'Nextcloud', 'url': CLOUD_LINK },
{ 'label': 'DAV 360', 'url': DAV_360_LINK },
{ 'label': 'Julei-Wiki', 'url': WIKI_LINK },
{ 'label': 'Kompass Dokumentation', 'url': DOCS_LINK },
{ 'label': 'Nextcloud', 'url': CLOUD_LINK, 'url_blank': True },
{ 'label': 'DAV 360', 'url': DAV_360_LINK, 'url_blank': True },
{ 'label': 'Julei-Wiki', 'url': WIKI_LINK, 'url_blank': True },
{ 'label': 'Kompass Dokumentation', 'url': DOCS_LINK, 'url_blank': True },
]},
]

@ -42,8 +42,9 @@ from .models import (Member, Group, Freizeit, MemberNoteList, NewMemberOnList, K
from finance.models import Statement, BillOnExcursionProxy
from mailer.mailutils import send as send_mail, get_echo_link
from django.conf import settings
from utils import get_member
from utils import get_member, RestrictedFileField
from schwifty import IBAN
#from easy_select2 import apply_select2
@ -230,10 +231,9 @@ class MemberAdmin(CommonAdminMixin, admin.ModelAdmin):
list_display_links = None
readonly_fields = ['echoed', 'good_conduct_certificate_valid']
inlines = [EmergencyContactInline, TrainingOnMemberInline, PermissionOnMemberInline]
#formfield_overrides = {
# ManyToManyField: {'widget': forms.CheckboxSelectMultiple},
# ForeignKey: {'widget': apply_select2(forms.Select)}
#}
formfield_overrides = {
RestrictedFileField: {'widget': forms.ClearableFileInput(attrs={'accept': 'application/pdf,image/jpeg,image/png'})},
}
change_form_template = "members/change_member.html"
ordering = ('lastname',)
actions = ['request_echo', 'invite_as_user_action']
@ -788,7 +788,8 @@ class BillOnExcursionInline(CommonAdminInlineMixin, admin.TabularInline):
sortable_options = []
fields = ['short_description', 'explanation', 'amount', 'paid_by', 'proof']
formfield_overrides = {
TextField: {'widget': Textarea(attrs={'rows': 1, 'cols': 40})}
TextField: {'widget': Textarea(attrs={'rows': 1, 'cols': 40})},
RestrictedFileField: {'widget': forms.ClearableFileInput(attrs={'accept': 'application/pdf,image/jpeg,image/png'})},
}

Loading…
Cancel
Save