deleting the file in database if it exists in report

This commit is contained in:
Rupika 2019-02-10 19:23:12 -08:00
parent 16dbd04ef4
commit 7b2c58cb2d
3 changed files with 32 additions and 4 deletions

View file

@ -2,6 +2,7 @@ from django.db import models
from django.conf import settings from django.conf import settings
import datetime import datetime
import ntpath import ntpath
import os
class Report(models.Model): class Report(models.Model):
user_id = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) user_id = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
@ -81,7 +82,21 @@ class Field(models.Model):
# function that accommodates if # function that accommodates if
# path has slash at end # path has slash at end
def path_leaf(self, path): def path_leaf(self, path, flag=1):
head, tail = ntpath.split(path) dir_path, name = ntpath.split(path)
return tail or ntpath.basename(head) if flag == 1:
return name or ntpath.basename(dir_path)
else:
return dir_path, name
# def delete_data_file(self, file_path):
# # delete file name in uploads
# # os.remove(file_name)
# os.remove(file_path)
#
# # check if directory is empty
# # if yes, delete directory
# # if [f for f in os.listdir("back/uploads") if not f.startswith('.')] == []:
# # os.removedirs("")

View file

@ -2,6 +2,7 @@ from rest_framework.decorators import api_view
from django.http import JsonResponse from django.http import JsonResponse
from .models import * from .models import *
from .policy import pol from .policy import pol
import os
# function that prints all the reports # function that prints all the reports
@ -133,7 +134,19 @@ def report_detail(request, report_pk):
# Delete the report # Delete the report
elif request.method == 'DELETE': elif request.method == 'DELETE':
Report.objects.filter(id=report_pk).delete() # get corresponding sections
section_set = Section.objects.filter(report_id=report_pk)
for i in section_set:
# gets the fields that have a field in them
field_set = Field.objects.filter(section_id=i.id).exclude(data_file__exact='')
if field_set.exists():
for j in field_set:
# delete the file if exists
path_name = str(j.data_file)
os.remove(path_name)
# Field.delete_data_file(j, path_name)
# delete the full report
Report.objects.get(id=report_pk).delete()
return JsonResponse({"message": "Deleted report {0}.".format(report_pk)}) return JsonResponse({"message": "Deleted report {0}.".format(report_pk)})

Binary file not shown.