Пример #1
0
def generate_skript_view(request):
    if request.method == 'POST':
        if request.POST.get('count_pages') is not None: # reading number of pages of skript files (Cover pages not included)
            for skript in Skript.objects.all():
                skript_path = SkriptGenerator.skript_dir + "SkriptFile_" + skript.article_number + ".pdf"
                if FileSystemStorage().exists(skript_path):
                    pdf = PdfFileReader(FileSystemStorage().open(skript_path, 'rb'))
                    skript.page_numbers = pdf.getNumPages()
                    skript.save()
        if request.POST.get('upload_cover') is not None:  # uploading new template
            if "file_cover" in request.FILES:
                fs = FileSystemStorage()
                fs.delete(SkriptGenerator.template_path)
                myfile = request.FILES['file_cover']
                fs.save(SkriptGenerator.template_path, myfile)
        if request.POST.get('upload_skript') is not None:  # uploading skript
            if "file_skript" in request.FILES:
                selected_skript = request.POST.get('dropdown')
                skript = Skript.objects.get(article_number=selected_skript)
                skript_path = SkriptGenerator.skript_dir + "SkriptFile_" + skript.article_number + ".pdf"
                fs = FileSystemStorage()
                fs.delete(skript_path)
                myfile = request.FILES['file_skript']
                fs.save(skript_path, myfile)
        if request.POST.get('generate_cover') is not None:  # generating single cover
            selected_skript = request.POST.get('dropdown')
            skript = Skript.objects.filter(article_number=selected_skript)[0]
            pdf_filename = SkriptGenerator.generate_cover(skript)
            pdf = FileSystemStorage().open(SkriptGenerator.cover_dir + pdf_filename, 'rb')
            response = HttpResponse(pdf.read(), content_type='application/pdf')
            response['Content-Disposition'] = 'attachment; filename=' + pdf_filename;
            return response
        if request.POST.get('generate_skript') is not None:  # generating single skript
            selected_skript = request.POST.get('dropdown')
            skript = Skript.objects.filter(article_number=selected_skript)[0]
            pdf_filename = SkriptGenerator.generate_skript(skript)

            if pdf_filename == -1:
                skript_list = Skript.objects.all()
                context = {
                    'skript_list': skript_list,
                    'exists': FileSystemStorage().exists(SkriptGenerator.template_path),
                    'error_text': "Fehler beim Generieren von Skript " + skript.article_number
                                  + ". Drucke Skript als PDF und lade die neu Datei hoch",
                }
                return render(request, "skripten_shop/skriptenadmin/skript_generator_view.html", context)
            elif pdf_filename == None:
                skript_list = Skript.objects.all()
                context = {
                    'skript_list': skript_list,
                    'exists': FileSystemStorage().exists(SkriptGenerator.template_path),
                    'error_text': "Keine Skript-Datei zu " + skript.article_number
                                  + ". Lade eine Skript-Datei hoch",
                }
                return render(request, "skripten_shop/skriptenadmin/skript_generator_view.html", context)
            else:
                pdf = FileSystemStorage().open(SkriptGenerator.finish_dir + pdf_filename, 'rb')
                response = HttpResponse(pdf.read(), content_type='application/pdf')
                response['Content-Disposition'] = 'attachment; filename=' + pdf_filename;
                return response
        if request.POST.get('generate_skripts') is not None:  # generating all skripts
            skript = SkriptGenerator.generate_all_skripts()
            if skript == None:
                zipfile = FileSystemStorage().open(SkriptGenerator.finish_dir + "skripte.zip", 'rb')
                response = HttpResponse(zipfile.read(), content_type='application/zip')
                response['Content-Disposition'] = 'attachment; filename=skripte.zip';
                return response
            else:
                skript_list = Skript.objects.all()
                context = {
                    'skript_list': skript_list,
                    'exists': FileSystemStorage().exists(SkriptGenerator.template_path),
                    'error_text': "Fehler beim Generieren von Skript " + skript.article_number
                                  + ". Drucke Skript als PDF und lade die neu Datei hoch",
                }
            return render(request, "skripten_shop/skriptenadmin/skript_generator_view.html", context)

    # if no response returned in POST return GET
    skript_list = Skript.objects.all()
    context = {
        'skript_list': skript_list,
        'exists': FileSystemStorage().exists(SkriptGenerator.template_path),
    }
    return render(request, "skripten_shop/skriptenadmin/skript_generator_view.html", context)