From 95d268dd0cc133717d40766c27df977aa5b3f424 Mon Sep 17 00:00:00 2001 From: Amar Kamthe Date: Thu, 9 Nov 2017 16:42:54 +0530 Subject: [PATCH] Added code for new models --- sponsor/admin.py | 57 ++++++++++++++++++++++----------------- sponsor/birt_ff_report.py | 37 +++++++++++++++---------- 2 files changed, 55 insertions(+), 39 deletions(-) diff --git a/sponsor/admin.py b/sponsor/admin.py index a33b0098..faa95a30 100755 --- a/sponsor/admin.py +++ b/sponsor/admin.py @@ -10,12 +10,19 @@ class SponsorAdmin(admin.ModelAdmin): admin.site.register(Sponsor, SponsorAdmin) #admin.site.register(SponsorContact) +class SponsorProjectDetailsSubFieldsInline(admin.TabularInline): + model = SponsorProjectDetailsSubFields + min_num = 1 + extra = 0 class SponsorProjectDetailsAdmin(admin.ModelAdmin): - list_display = ('sponsor', 'slum', 'sponsor_project', 'quarter', 'status', 'household_code') + list_display = ('sponsor', 'slum', 'sponsor_project', 'household_code') + #readonly_fields = ['household_code'] raw_id_fields = ['slum', 'sponsor_project'] search_fields = ['slum__name', 'sponsor__organization_name', 'sponsor_project__name'] ordering = ['sponsor', 'slum', 'sponsor_project'] + list_filter = ['sponsor_project__sponsor'] + inlines = [ SponsorProjectDetailsSubFieldsInline ] class Media: js = ['js/collapse_household_code.js'] @@ -26,30 +33,30 @@ def slum(self, obj): def sponsor_project(self, obj): return obj.sponsor_project.name - def quarter(self, obj): - return obj.get_quarter_display() - - def status(self, obj): - return obj.get_status_display() - - def get_search_results(self, request, queryset, search_term): - ''' - :param request: - :param queryset: - :param search_term: - :return: queryset - - Function for adding custom filters for choice field options - ''' - queryset, use_distinct = super(SponsorProjectDetailsAdmin, self).get_search_results(request, queryset, search_term) - - quarter_options = filter(lambda x: search_term.lower() in x[1].lower(), QUARTER_CHOICES) - quarter_options = map(lambda x: x[0], quarter_options) - status_options = filter(lambda x: search_term.lower() in x[1].lower(), SPONSORSTATUS_CHOICES) - status_options = map(lambda x: x[0], status_options) - queryset |= self.model.objects.filter(quarter__in=quarter_options) - queryset |= self.model.objects.filter(status__in=status_options) - return queryset, use_distinct + # def quarter(self, obj): + # return obj.get_quarter_display() + # + # def status(self, obj): + # return obj.get_status_display() + # + # def get_search_results(self, request, queryset, search_term): + # ''' + # :param request: + # :param queryset: + # :param search_term: + # :return: queryset + # + # Function for adding custom filters for choice field options + # ''' + # queryset, use_distinct = super(SponsorProjectDetailsAdmin, self).get_search_results(request, queryset, search_term) + # + # quarter_options = filter(lambda x: search_term.lower() in x[1].lower(), QUARTER_CHOICES) + # quarter_options = map(lambda x: x[0], quarter_options) + # status_options = filter(lambda x: search_term.lower() in x[1].lower(), SPONSORSTATUS_CHOICES) + # status_options = map(lambda x: x[0], status_options) + # queryset |= self.model.objects.filter(quarter__in=quarter_options) + # queryset |= self.model.objects.filter(status__in=status_options) + # return queryset, use_distinct admin.site.register(SponsorProjectDetails, SponsorProjectDetailsAdmin) diff --git a/sponsor/birt_ff_report.py b/sponsor/birt_ff_report.py index 7087a053..2244c5f3 100644 --- a/sponsor/birt_ff_report.py +++ b/sponsor/birt_ff_report.py @@ -1,4 +1,3 @@ -from .models import * from component.cipher import * from django.conf import settings from datetime import datetime @@ -15,12 +14,12 @@ def __init__(self, record_id): def generate(self): cipher = AESCipher() - obj_slum = self.project_detail.slum - logged_sponsor = self.project_detail.sponsor_project.sponsor + obj_slum = self.project_detail.sponsor_project_details.slum + logged_sponsor = self.project_detail.sponsor_project_details.sponsor_project.sponsor sponsored_household = self.project_detail.household_code rp_slum_code = str(obj_slum.shelter_slum_code) - sub_folder = str(rp_slum_code)+str(len(sponsored_household)) + str(datetime.now()) - folder_name = os.path.join(settings.BASE_DIR, 'media', ZIP_PATH, str(logged_sponsor.organization_name)) + sub_folder = (str(rp_slum_code)+str(len(sponsored_household)) + str(datetime.now())).replace(' ','_') + folder_name = os.path.join(settings.BASE_DIR, 'media', ZIP_PATH, str(logged_sponsor.organization_name).replace(' ', '_')) if not os.path.exists(folder_name): os.mkdir(folder_name) folder_name = os.path.join(folder_name, sub_folder) @@ -30,16 +29,26 @@ def generate(self): execute_command = [] for household_code in sponsored_household: key = cipher.encrypt(str(rp_slum_code) + '|' + str(household_code) + '|' + str(logged_sponsor.user.id)) - file = os.path.join(folder_name, "/household_code_" + str(household_code) + ".pdf") + file = os.path.join(folder_name, "household_code_" + str(household_code) + ".pdf") com = settings.BIRT_REPORT_CMD.format(file , key) - execute_command.append(com) - p = subprocess.Popen(com,#[sys.executable, os.path.join(settings.BASE_DIR, 'sponsor', 'birt_ff_report.py')], - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - p.communicate() - print p.stderr.read() - shutil.make_archive(folder_name, 'zip', os.path.join(folder_name,'..')) + print com + #execute_command.append(com) + p = subprocess.Popen(com, shell = True,#[sys.executable, os.path.join(settings.BASE_DIR, 'sponsor', 'birt_ff_report.py')], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + #x,y = p.communicate() + + #print x,y + os.system(com) + + shutil.make_archive(folder_name, 'zip',folder_name) delete_command = "rm -rf " + folder_name os.system(delete_command) - self.project_detail.objects.update(zip_file=folder_name+'.zip', zip_created_on=datetime.now()) + if self.project_detail.zip_file: + storage, path = self.project_detail.zip_file.storage, self.project_detail.zip_file.path + storage.delete(path) + + #self.project_detail.zip_file=os.path.join('media', ZIP_PATH, str(logged_sponsor.organization_name).replace(' ','_'),sub_folder+'.zip') + #self.project_detail.zip_created_on=datetime.now() + self.project_detail.__class__.objects.filter(pk=self.project_detail.id).update(zip_created_on=datetime.now(),zip_file=os.path.join( ZIP_PATH, str(logged_sponsor.organization_name).replace(' ','_'),sub_folder+'.zip')) \ No newline at end of file