From 33ed7c1e2d874fbbe4131a17cc65da00a4007f0a Mon Sep 17 00:00:00 2001 From: mahesh Date: Fri, 1 Apr 2016 01:55:19 +0530 Subject: displays errors on tbc notebooks, broken notebook paths/urls --- tbc_error_page/models.py | 107 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 tbc_error_page/models.py (limited to 'tbc_error_page/models.py') diff --git a/tbc_error_page/models.py b/tbc_error_page/models.py new file mode 100644 index 0000000..ceab789 --- /dev/null +++ b/tbc_error_page/models.py @@ -0,0 +1,107 @@ +from django.db import models +import os +import cPickle + +def get_json_from_file(filename): + path = os.path.join(os.path.dirname(os.path.abspath(__file__)), filename) + if os.path.isfile(path): + with open(path) as json_dump: + json_data =cPickle.load(json_dump) + return json_data + else: + return False + + + +class Error(models.Model): + + chapter_url = models.URLField(max_length = 255) + number_of_errors = models.IntegerField() + chapter_name = models.CharField(max_length = 200,) + is_deliberate = models.IntegerField(default = False) + + def create_new_error_data(self, error_json_data): + # Populates an empty table + for error_details in error_json_data: + Error.objects.create(chapter_url = error_details["chapter_urls"], + chapter_name = error_details["chapter_name"], + number_of_errors = int(error_details["number_of_errors"]), + is_deliberate = 0 + ) + + def delete_redundant_error_data(self, error_json_data): + # delete errors which have been solved + for error_details in error_json_data: + db_url_list = Error.objects.values_list("chapter_url", flat=True) + json_url_list = [url_list["chapter_urls"] for url_list in error_json_data] + c = set(db_url_list)-set(json_url_list) #change variable name. + for somelist in c: + Error.objects.filter(chapter_url = somelist).delete() + + def update_error_data(self, error_json_data): + + # Agreeably hacky at the moment. Will refine it. + + for error_details in error_json_data: + # if number of errors have increased + if Error.objects.filter(chapter_url = error_details["chapter_urls"], + number_of_errors__lt = error_details["number_of_errors"]): + + Error.objects.filter(chapter_url = error_details["chapter_urls"])\ + .update(number_of_errors = error_details["number_of_errors"], + is_deliberate = 0 + ) + # if number of errors have decreased + elif Error.objects.filter(chapter_url = error_details["chapter_urls"], + number_of_errors__gt = error_details["number_of_errors"]): + + Error.objects.filter(chapter_url = error_details["chapter_urls"])\ + .update(number_of_errors = error_details["number_of_errors"], is_deliberate = 0) + else: + # if new errors have been added. + Error.objects.get_or_create(chapter_url = error_details["chapter_urls"], + number_of_errors = error_details["number_of_errors"] + ) + + Error.objects.filter(chapter_url = error_details["chapter_urls"])\ + .update(chapter_url = error_details["chapter_urls"], + number_of_errors = error_details["number_of_errors"], + chapter_name = error_details["chapter_name"] + ) + + + + def update_deliberate_error(self, deliberate_error_list): + + for deliberate_urls in deliberate_error_list: + a = Error.objects.filter(chapter_url = deliberate_urls).update(is_deliberate = 1) + + + + +class Broken(models.Model): + + broken_url = models.URLField(max_length = 255) + error_status = models.IntegerField() + + def create_new_broken_data(self, broken_data): + for broken_details in broken_data: + + Broken.objects.create(broken_url = broken_details["broken_url"], + error_status = broken_details["broken_status"]) + + def delete_redundant_broken_data(self, broken_data): + for broken_details in broken_data: + db_url_list = Broken.objects.values_list("broken_url", flat=True) + json_url_list = [url_list["broken_url"] for url_list in broken_data] + redundant_url = set(db_url_list)-set(json_url_list) #change variable name. + for delete_url in redundant_url: + Broken.objects.filter(broken_url = delete_url).delete() + + + def update_broken_data(self, broken_data): + for broken_details in broken_data: + + Broken.objects.get_or_create(broken_url = broken_details["broken_url"], + error_status = broken_details["broken_status"] + ) -- cgit From cfb82095fd3ff8329c567d5bae3d0d07775ef044 Mon Sep 17 00:00:00 2001 From: mahesh Date: Fri, 15 Apr 2016 12:25:00 +0530 Subject: refined a hacky function --- tbc_error_page/models.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'tbc_error_page/models.py') diff --git a/tbc_error_page/models.py b/tbc_error_page/models.py index ceab789..82c4da6 100644 --- a/tbc_error_page/models.py +++ b/tbc_error_page/models.py @@ -40,36 +40,36 @@ class Error(models.Model): def update_error_data(self, error_json_data): - # Agreeably hacky at the moment. Will refine it. + # a little more refined. for error_details in error_json_data: + original_value = Error.objects.get(chapter_url = error_details["chapter_urls"]).number_of_errors # if number of errors have increased - if Error.objects.filter(chapter_url = error_details["chapter_urls"], - number_of_errors__lt = error_details["number_of_errors"]): - + if original_value < error_details["number_of_errors"]: + Error.objects.filter(chapter_url = error_details["chapter_urls"])\ - .update(number_of_errors = error_details["number_of_errors"], + .update(number_of_errors = error_details["number_of_errors"], is_deliberate = 0 ) # if number of errors have decreased - elif Error.objects.filter(chapter_url = error_details["chapter_urls"], - number_of_errors__gt = error_details["number_of_errors"]): - + elif original_value > error_details["number_of_errors"]: Error.objects.filter(chapter_url = error_details["chapter_urls"])\ .update(number_of_errors = error_details["number_of_errors"], is_deliberate = 0) else: # if new errors have been added. - Error.objects.get_or_create(chapter_url = error_details["chapter_urls"], + Error.objects.get_or_create(chapter_url = error_details["chapter_urls"], number_of_errors = error_details["number_of_errors"] ) - Error.objects.filter(chapter_url = error_details["chapter_urls"])\ + Error.objects.filter(chapter_url = error_details["chapter_urls"])\ .update(chapter_url = error_details["chapter_urls"], number_of_errors = error_details["number_of_errors"], chapter_name = error_details["chapter_name"] ) + + def update_deliberate_error(self, deliberate_error_list): -- cgit