Advertisement
lengthy_preamble

views.py

Nov 18th, 2022
1,164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.85 KB | None | 0 0
  1. from django.shortcuts import render, HttpResponse
  2. from django.views.generic import View
  3. from tablib import Dataset
  4. import pandas as pd
  5. import xlsxwriter
  6. import io
  7. from .utils import (
  8.     accounts_checker,
  9.     contacts_checker,
  10.     member_ship_checker,
  11.     cg_checker,
  12.     cgm_checker,
  13.     so_checker,
  14.     item_checker,
  15.     event_checker,
  16.     tt_checker,
  17.     si_checker,
  18.     att_checker
  19. )
  20.  
  21.  
  22. class HomeView(View):
  23.     def get(self, request, *args, **kwargs):
  24.         return render(request, "myapp/file-form.html")
  25.  
  26.     def post(self, request, *args, **kwargs):
  27.         type = request.POST["type"]
  28.         file = request.FILES['file'].name
  29.         # file = request.FILES["file"].read().decode("utf-8")
  30.         name = request.POST["name"]
  31.         # dataset = Dataset().load(file, format="csv")
  32.         dataset = pd.read_csv(request.FILES['file'], encoding = "ISO-8859-1")
  33.  
  34.         if type == "accounts":
  35.             errors = accounts_checker(dataset)
  36.         elif type == "contacts":
  37.             errors = contacts_checker(dataset)
  38.         elif type == "membership":
  39.             errors = member_ship_checker(dataset)
  40.         elif type == "cg":
  41.             errors = cg_checker(dataset)
  42.         elif type == "cgm":
  43.             errors = cgm_checker(dataset)
  44.         elif type == "so":
  45.             errors = so_checker(dataset)
  46.         elif type == "item":
  47.             errors = item_checker(dataset)
  48.         elif type == "event":
  49.             errors = event_checker(dataset)
  50.         elif type == "tt":
  51.             errors = tt_checker(dataset)
  52.         elif type == "si":
  53.             errors = si_checker(dataset)
  54.         elif type == "attendee":
  55.             errors = att_checker(dataset)
  56.         context = {
  57.             "results": errors,
  58.             "name": name,
  59.         }
  60.         return render(request, "myapp/results.html", context=context)
  61.  
  62.  
  63. class CsvView(View):
  64.     def post(self, request, *args, **kwargs):
  65.         output = io.BytesIO()
  66.         workbook = xlsxwriter.Workbook(output)
  67.         worksheet = workbook.add_worksheet()
  68.         data = request.POST["raees"]
  69.         name = request.POST["name"]
  70.         d_type = request.POST["type"]
  71.         data = list(data.split(","))
  72.         last = data[-1]
  73.         first = data[0]
  74.         data[0] = first.replace("[", "")
  75.         data[-1] = last.replace("]", "")
  76.         row = 0
  77.         col = 0
  78.         for i in data:
  79.             i = i.replace("'", "")
  80.             worksheet.write(row, col, i)
  81.             row = row + 1
  82.         workbook.close()
  83.         output.seek(0)
  84.         filename = f"{name} {d_type} Issue Tracker.xlsx"
  85.         response = HttpResponse(
  86.             output,
  87.             content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
  88.         )
  89.         response["Content-Disposition"] = "attachment; filename=%s" % filename
  90.         return response
  91.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement