1313from dbaas .middleware import UserMiddleware
1414from django .conf import settings
1515from account .models import Team , Role
16+ from datetime import datetime
1617
1718import models
1819import csv
1920import logging
20- import datetime
2121
2222
2323class SubUsedResourceReport (ListView ):
@@ -55,34 +55,55 @@ def get(self, request, *args, **kwargs):
5555 def post (self , request , * args , ** kwargs ):
5656 self .has_perm (request )
5757
58- header = ['Name' , 'VM' , 'Env' , 'Team' , 'Created At' , 'In Quarantine' , 'Apps Bind Name' ]
59- databases = Database .objects .all ()
6058 database_report = request .POST .get ("database_report" , "" )
6159
60+ if database_report == 'database_report' :
61+ return self .default_database_report ()
62+ else :
63+ return self .vm_by_line_database_report ()
64+
65+
66+ def vm_by_line_database_report (self ):
67+
68+ header = ['Name' , 'VM' , 'Env' , 'Team' , 'Created At' , 'In Quarantine' , 'Apps Bind Name' ]
69+ databases = Database .objects .all ()
6270 response = HttpResponse (content_type = 'text/csv' )
63- response ['Content-Disposition' ] = 'attachment; filename="report.csv"'
71+
72+ filename = 'dbaas_databases_vm_by_line-' + datetime .now ().strftime ("%Y-%m-%m" ) + ".csv"
73+
74+ response ['Content-Disposition' ] = 'attachment; filename="' + filename + '"'
6475 writer = csv .writer (response , csv .excel )
6576 response .write (u'\ufeff ' .encode ('utf8' ))
6677 writer .writerow (header )
6778
6879 for database in databases :
69- database_history = DatabaseHistory .objects .filter (database_id = database .id ).last ()
70- try :
71- apps_bind_name = database_history .apps_bind_name
72- except :
73- apps_bind_name = ''
74- if database_report == 'database_report' :
75- hostname = [instance .hostname .hostname .encode ("utf-8" ) for instance in
76- database .infra .instances .all ()]
77- data = [database .name , hostname , database .environment , database .team ,
78- database .created_at , database .is_in_quarantine , apps_bind_name ]
80+ for instance in database .infra .instances .all ():
81+ data = [database .name , instance .hostname .hostname .encode ("utf-8" ), database .environment ,
82+ database .team ,
83+ database .created_at , database .is_in_quarantine , database .apps_bind_name ]
7984 writer .writerow (data )
80- else :
81- for instance in database .infra .instances .all ():
82- data = [database .name , instance .hostname .hostname .encode ("utf-8" ), database .environment ,
83- database .team ,
84- database .created_at , database .is_in_quarantine , apps_bind_name ]
85- writer .writerow (data )
86-
85+
86+
8787 return response
8888
89+ def default_database_report (self ):
90+
91+ header = ['Name' , 'VM' , 'Env' , 'Team' , 'Created At' , 'In Quarantine' , 'Apps Bind Name' ]
92+ databases = Database .objects .all ()
93+ response = HttpResponse (content_type = 'text/csv' )
94+
95+ filename = 'dbaas_databases-' + datetime .now ().strftime ("%Y-%m-%m" ) + ".csv"
96+ response ['Content-Disposition' ] = 'attachment; filename="' + filename + '"'
97+
98+ writer = csv .writer (response , csv .excel )
99+ response .write (u'\ufeff ' .encode ('utf8' ))
100+ writer .writerow (header )
101+
102+ for database in databases :
103+ hostname = [instance .hostname .hostname .encode ("utf-8" ) for instance in
104+ database .infra .instances .all ()]
105+ data = [database .name , hostname , database .environment , database .team ,
106+ database .created_at , database .is_in_quarantine , database .apps_bind_name ]
107+ writer .writerow (data )
108+
109+ return response
0 commit comments