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)
Exemple #3
0
    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)
Exemple #4
0
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)
Exemple #5
0
    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)
Exemple #6
0
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)
Exemple #7
0
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)