def participants(request): user_ids = Student.objects.filter(status=Student.STATUS.participants) \ .distinct('user_id').values_list('user_id', flat=True) user_list = User.objects.exclude(is_superuser=True).exclude(is_staff=True) \ .filter(id__in=user_ids) user_count = user_list.count() download = request.GET.get('download', '') form = ParticipantsFilterForm(request.GET or None) if form.is_valid(): user_list = form.get_data() if download: csv_buffer = form.generate_to_csv() response = HttpResponse(csv_buffer.getvalue(), content_type="text/csv") response['Content-Disposition'] = 'attachment; filename=daftar-peserta.csv' return response page = request.GET.get('page', 1) users, page_range = pagination(user_list, page) context = { 'title': 'Peserta', 'page_active': 'participants', 'users': users, 'form': form, 'user_count': user_count, 'filter_count': user_list.count(), 'query_params':'name=%s&start_date=%s&end_date=%s&status=%s&batch=%s' % (request.GET.get('name', ''), request.GET.get('start_date', ''), request.GET.get('end_date', ''), request.GET.get('status', 2), request.GET.get('batch', '')), 'page_range': page_range } return render(request, 'backoffice/users/index.html', context)
def index(request): graduates = Graduate.objects.select_related('user') download = request.GET.get('download', '') if download: csv_buffer = StringIO() writer = csv.writer(csv_buffer) writer.writerow( ['No.', 'Nama', 'No.Sertifikat', 'Email', 'No. Ponsel']) for index, graduate in enumerate(graduates, 1): writer.writerow([ index, graduate.user.name, graduate.certificate_number, graduate.user.email, graduate.user.phone ]) response = HttpResponse(csv_buffer.getvalue(), content_type="text/csv") response[ 'Content-Disposition'] = 'attachment; filename=daftar-lulusan.csv' return response page = request.GET.get('page', 1) data_graduates, page_range = pagination(graduates, page) context = { 'graduates': graduates, 'title': "Daftar Lulusan", 'data_graduates': data_graduates, 'page_range': page_range } return render(request, 'backoffice/graduates/index.html', context)
def get(self, request, *args, **kwargs): graduates = Graduate.objects.select_related('user').order_by('id') graduates_count = graduates.count() download = request.GET.get('download', '') form = self.form_class(request.GET or None) if form.is_valid(): graduates = form.get_data() if download: csv_buffer = form.generate_to_csv() response = HttpResponse(csv_buffer.getvalue(), content_type="text/csv") response[ 'Content-Disposition'] = f'attachment; filename={self.file_title}' return response page = request.GET.get('page', 1) data_graduates, page_range = pagination(graduates, page) context = { 'graduates': graduates, 'title': self.title, 'menu_active': 'graduates', 'data_graduates': data_graduates, 'page_range': page_range, 'form': form, 'channeled_form': GraduateHasChanneledForm(), 'graduates_count': graduates_count, 'filter_count': graduates.count(), } return render(request, self.template_name, context)
def inbox(request): if request.POST: data = request.POST page = data['page'] if data['action'] == "unread": for id in data.getlist('checkMark'): inbox = Inbox.objects.get(id=id) inbox.is_read = False inbox.save() elif data['action'] == "read": for id in data.getlist('checkMark'): inbox = Inbox.objects.get(id=id) inbox.is_read = True inbox.save() elif data['action'] == "delete": for id in data.getlist('checkMark'): inbox = Inbox.objects.get(id=id) inbox.delete() messages.success(request, 'Pesan berhasil dihapus') return redirect(f'/accounts/inbox/?page={ page }') user = request.user inbox_list = Inbox.objects.filter(user=user).order_by('-sent_date') # pagination length = 50 try: page = int(request.GET.get('page', 1)) except ValueError: page = 1 inboxs, page_range = pagination(inbox_list, page, length) detail_page = { 'page': page, 'next': page + 1, 'prev': page - 1, 'start': length * page - length + 1, 'end': length * page, 'total': inbox_list.count() } context = { 'title': 'Inbox', 'menu_active': 'inbox', 'inboxs': inboxs, 'page_range': page_range, 'detail_page': detail_page } return render(request, 'dashboard/inbox.html', context)
def get(self, request, *args, **kwargs): user_list = User.objects.exclude(is_superuser=True).exclude(is_staff=True) \ .filter(id__in=self.user_ids) user_count = user_list.count() download = request.GET.get('download', '') form = self.form_class(request.GET or None) if form.is_valid(): user_list = form.get_data() if download: csv_buffer = form.generate_to_csv() response = HttpResponse(csv_buffer.getvalue(), content_type="text/csv") response[ 'Content-Disposition'] = f'attachment; filename={self.file_title}' return response page = request.GET.get('page', 1) users, page_range = pagination(user_list, page) context = { 'title': self.title, 'menu_active': 'campus', 'users': users, 'form': form, 'user_count': user_count, 'filter_count': user_list.count(), 'query_params': 'name=%s&start_date=%s&end_date=%s&status=%s&batch=%s' % (request.GET.get('name', ''), request.GET.get('start_date', ''), request.GET.get('end_date', ''), request.GET.get( 'status', 2), request.GET.get('batch', '')), 'page_range': page_range } return render(request, self.template_name, context)
def index(request): survey_list = Survey.objects.filter(user__students__isnull=False).all() survey_count = survey_list.count() download = request.GET.get('download', '') form = SurveyFilterForm(request.GET or None) if form.is_valid(): survey_list = form.get_data() if download: csv_buffer = form.generate_to_csv() response = HttpResponse(csv_buffer.getvalue(), content_type="text/csv") response['Content-Disposition'] = 'attachment; filename=survey.csv' return response page = request.GET.get('page', 1) survey, page_range = pagination(survey_list, page) context = { 'title': 'Survey', 'menu_active': 'surveys', 'surveys': survey, 'form': form, 'survey_count': survey_count, 'filter_count': survey_list.count(), 'query_params': 'name=%s&work_status=%s&channeled=%s&channeled_when=%s&status=%s&channeled_location%s' % (request.GET.get('name', ''), request.GET.get( 'work_status', ''), request.GET.get('channeled', ''), request.GET.get('channeled_when', ''), request.GET.get( 'status', ''), request.GET.get('channeled_location', '')), 'page_range': page_range } return render(request, 'backoffice/surveys/index.html', context)
def last_login(request): user_list = User.objects.exclude(is_superuser=True).exclude(is_staff=True) user_count = user_list.count() download = request.GET.get('download', '') form = LastLoginForm(request.GET or None) if form.is_valid(): user_list = form.get_data() if download: csv_buffer = form.generate_to_csv() response = HttpResponse(csv_buffer.getvalue(), content_type="text/csv") response[ 'Content-Disposition'] = 'attachment; filename=daftar-pengguna.csv' return response page = request.GET.get('page', 1) users, page_range = pagination(user_list, page) context = { 'title': 'Pengguna Masuk Terakhir', 'menu_active': 'user', 'users': users, 'form': form, 'user_count': user_count, 'filter_count': user_list.count(), 'query_params': 'start_date=%s&end_date=%s' % (request.GET.get('start_date', ''), request.GET.get('end_date', '')), 'page_range': page_range } return render(request, 'backoffice/users/last-login.html', context)
def candidates(request): training_count = TrainingMaterial.objects.all().count() user_ids = Student.objects.filter(status=Student.STATUS.participants) \ .order_by('user_id').distinct('user_id').values_list('user_id', flat=True) users = User.objects.filter(id__in=user_ids) cantidate_graduates = [] cantidate_repeats = [] for user in users: status = user.get_count_training_status() if status['graduate'] >= settings.INDICATOR_GRADUATED: if user.indicator_reached(status): user.is_graduate = True else: user.is_graduate = False cantidate_graduates.append(user) elif status['repeat'] >= settings.INDICATOR_REPEATED: cantidate_repeats.append(user) download_graduates = request.GET.get('download-calon-lulusan', '') if download_graduates: csv_buffer = StringIO() writer = csv.writer(csv_buffer) writer.writerow(['No.', 'Nama', 'Email', 'No. Ponsel']) for index, candidate_graduate in enumerate(cantidate_graduates, 1): writer.writerow([ index, candidate_graduate.name, candidate_graduate.email, candidate_graduate.phone ]) response = HttpResponse(csv_buffer.getvalue(), content_type="text/csv") response[ 'Content-Disposition'] = 'attachment; filename=daftar-calon-lulusan.csv' return response download_repeats = request.GET.get('download-calon-mengulang', '') if download_repeats: csv_buffer = StringIO() writer = csv.writer(csv_buffer) writer.writerow(['No.', 'Nama', 'Email', 'No. Ponsel']) for index, candidate_repeats in enumerate(cantidate_repeats, 1): writer.writerow([ index, candidate_repeats.name, candidate_repeats.email, candidate_repeats.phone ]) response = HttpResponse(csv_buffer.getvalue(), content_type="text/csv") response[ 'Content-Disposition'] = 'attachment; filename=daftar-calon-mengulang.csv' return response page_graduates = request.GET.get('page_graduates', 1) data_candidate_graduates, page_range_graduates = pagination( cantidate_graduates, page_graduates) page_repeats = request.GET.get('page_repeats', 1) data_candidate_repeats, page_range_repeats = pagination( cantidate_repeats, page_repeats) context = { 'title': 'Kandidat', 'cantidate_graduates': cantidate_graduates, 'cantidate_repeats': cantidate_repeats, 'indicator': settings.INDICATOR_GRADUATED, 'repeat_indicator': settings.INDICATOR_REPEATED, 'training_count': training_count, 'page_range_graduates': page_range_graduates, 'page_range_repeats': page_range_repeats, 'data_candidate_graduates': data_candidate_graduates, 'data_candidate_repeats': data_candidate_repeats, } return render(request, 'backoffice/graduates/candidates.html', context)