Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
524 changes: 524 additions & 0 deletions FusionIIIT/applications/academic_procedures/api/demand_letter.py

Large diffs are not rendered by default.

35 changes: 34 additions & 1 deletion FusionIIIT/applications/academic_procedures/api/fee_structure.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response

from applications.academic_procedures.models import FeeStructure
from applications.academic_procedures.models import DemandLetterBankAccounts, FeeStructure
from applications.globals.decorators import role_required

SECTIONS = ('one_time_heads', 'semester_heads', 'tuition_hostel_heads')
Expand Down Expand Up @@ -58,6 +58,16 @@ def _clean_amount(value):
raise ValueError(f'{value!r} is not an amount.') from exc


BANK_FIELDS = ('name', 'number', 'ifsc', 'bank_branch', 'account_type')
BANK_FIELD_LIMITS = {'name': 120, 'number': 30, 'ifsc': 11, 'bank_branch': 120,
'account_type': 40}


def _clean_bank_account(account):
return {field: str((account or {}).get(field) or '').strip()[:BANK_FIELD_LIMITS[field]]
for field in BANK_FIELDS}


def _clean_heads(rows, label):
cleaned = []
for row in rows or []:
Expand Down Expand Up @@ -263,3 +273,26 @@ def fee_structure_template(request):
],
**{section: _blank_heads(section) for section in SECTIONS},
})


def _serialise_bank_accounts(accounts):
return {
'academic_fee_account': accounts.academic_fee_account,
'mess_fee_account': accounts.mess_fee_account,
'updated_at': accounts.updated_at.strftime('%d.%m.%Y'),
}


@api_view(['GET', 'PUT'])
@authentication_classes([TokenAuthentication])
@permission_classes([IsAuthenticated])
@role_required(['acadadmin'])
def demand_letter_bank_accounts(request):
accounts = DemandLetterBankAccounts.load()
if request.method == 'PUT':
accounts.academic_fee_account = _clean_bank_account(
request.data.get('academic_fee_account'))
accounts.mess_fee_account = _clean_bank_account(
request.data.get('mess_fee_account'))
accounts.save()
return Response(_serialise_bank_accounts(accounts))
Loading
Loading