def month_overview_CD(request, year = None, month = None): if year and month: year = int(year) month = int(month) monthdate = datetime.datetime(year = year, month = month, day = 1) else: ref = datetime.datetime.today() - datetime.timedelta(days = 14) return redirect(reverse('month_overview_CD', kwargs = {'year': str(ref.year), 'month': str(ref.month)})) if not request.user.is_staff: return notification(request, 'Alleen beheerders mogen gegevens voor iedereen als CSV downloaden. Je kan wel je eigen gegevens inzien.') form = KostenplaatsForm(request.POST or None) if not form.is_valid(): totals = {} for user in get_user_model().objects.filter(is_active = True): context = overview_context(user, year, month) totals[user.get_full_name()] = context['totalnr'] return render(request, 'get_kostenplaats.html', { 'form': form, 'monthdate': monthdate, 'totals': totals, 'overall_total': sum(totals.values()), }) response = HttpResponse(content_type = 'text/csv') response['Content-Disposition'] = 'attachment; filename="overview_%s.csv"' % monthdate.strftime('%b_%Y').lower() fh = writer(response) totals = {} fh.writerow(['Naam', 'Datum', 'Uur gewerkt', 'Looncomponent', 'Kostenplaats']) for user in get_user_model().objects.filter(is_active = True): context = overview_context(user, year, month) totals[user.get_full_name()] = context['totalnr'] for dayinfo in context['hourlist'].values(): if dayinfo['hournr'] > 0: looncomponent = form.cleaned_data['type_werk'] if dayinfo['percentage'] == "100" else "Loon onregelmatige uren " + dayinfo['percentage'] + "%" fh.writerow([ user.get_full_name(), dayinfo['date'], dayinfo['hournr'], looncomponent, form.cleaned_data['kostenplaatsnummer'], ]) return response
def month_overview(request, user, year = None, month = None): try: user = get_user_model().objects.get(username = user) except User.DoesNotExist: return notification(request, 'Gebruiker met gebruikersnaam \'%s\' niet gevonden' % user) day = datetime.timedelta(days = 1) if year and month: year = int(year) month = int(month) else: refday = datetime.datetime.today() if refday.day < 20: refday -= day * 21 year = refday.year month = refday.month return redirect(reverse('month_overview', kwargs = {'user': user.username, 'year': str(year), 'month': str(month)})) return render(request, 'shift_overview.html', overview_context(user, year, month))
def month_overview_CD(request, year = None, month = None): if year and month: year = int(year) month = int(month) monthdate = datetime.datetime(year = year, month = month, day = 1) else: ref = datetime.datetime.today() - datetime.timedelta(days = 14) return redirect(reverse('month_overview_CD', kwargs = {'year': str(ref.year), 'month': str(ref.month)})) if not request.user.is_staff: return notification(request, 'Alleen beheerders mogen gegevens voor iedereen als CSV downloaden. Je kan wel je eigen gegevens inzien.') form = KostenplaatsForm(request.POST or None) if not form.is_valid(): totals = {} for user in get_user_model().objects.filter(is_active = True): context = overview_context(user, year, month) totals[user.get_full_name()] = context['totalnr'] return render(request, 'get_kostenplaats.html', { 'form': form, 'monthdate': monthdate, 'totals': totals, 'overall_total': sum(totals.values()), }) response = HttpResponse(content_type = 'text/csv') response['Content-Disposition'] = 'attachment; filename="overview_%s.csv"' % monthdate.strftime('%b_%Y').lower() fh = writer(response, delimiter=';') totals = {} fh.writerow(['Naam', 'Datum', 'Uur gewerkt', 'Looncomponent', 'Kostenplaats']) for user in get_user_model().objects.filter(is_active = True): context = overview_context(user, year, month) totals[user.get_full_name()] = context['totalnr'] for dayinfo in context['hourlist'].values(): if dayinfo['hournr'] > 0: if dayinfo['specialhours'] > 0 and dayinfo['normalhours'] > 0: fh.writerow([ user.get_full_name(), dayinfo['date'], str(dayinfo['normalhours']).replace(':',','), form.cleaned_data['type_werk'], form.cleaned_data['kostenplaatsnummer'], ]) fh.writerow([ user.get_full_name(), dayinfo['date'], str(dayinfo['specialhours']).replace(':',','), "Loon onregelmatige uren "+str(dayinfo['percentage'])+"%", form.cleaned_data['kostenplaatsnummer'], ]) elif dayinfo['specialhours'] <= 0: fh.writerow([ user.get_full_name(), dayinfo['date'], str(dayinfo['normalhours']).replace(':',','), form.cleaned_data['type_werk'], form.cleaned_data['kostenplaatsnummer'], ]) else: fh.writerow([ user.get_full_name(), dayinfo['date'], str(dayinfo['specialhours']).replace(':',','), "Loon onregelmatige uren "+str(dayinfo['percentage'])+"%", form.cleaned_data['kostenplaatsnummer'], ]) return response