report.py 2.31 KB
Newer Older
Mario Chirinos Colunga's avatar
Mario Chirinos Colunga committed
1
from django.core.management.base import BaseCommand, CommandError
Mario Chirinos Colunga's avatar
Mario Chirinos Colunga committed
2
from catalog.models import User, News, Publisher, Topic, audioTime, Search
Mario Chirinos Colunga's avatar
Mario Chirinos Colunga committed
3 4 5 6 7 8 9 10
from django.db.models import Q
import os
import json

class Command(BaseCommand):
	help = 'Report database'


Mario Chirinos Colunga's avatar
Mario Chirinos Colunga committed
11 12
	def add_arguments(self, parser):
		parser.add_argument('json', nargs=1, type=str) #(options['basedir'][0]
Mario Chirinos Colunga's avatar
Mario Chirinos Colunga committed
13 14

	def handle(self, *args, **options):
Mario Chirinos Colunga's avatar
Mario Chirinos Colunga committed
15 16 17 18 19 20 21 22
		data = dict()
		data['users'] = User.objects.all().count()
		data['publishers'] = Publisher.objects.all().count()
		data['text'] = Publisher.objects.all().filter(type="texto").count()
		data['audio'] = Publisher.objects.all().filter(type="audio").count()
		data['documents'] = News.objects.all().count()
		data['searches'] = Search.objects.all().count()

Mario Chirinos Colunga's avatar
Mario Chirinos Colunga committed
23 24 25 26 27
		print ( "Users: " + str(User.objects.all().count()) )
		print ( "Publishers: " + str(Publisher.objects.all().count()) )
		print ( "\tText: " + str(Publisher.objects.all().filter(type="texto").count()) )
		print ( "\t\tDocuments: " + "{:,}".format(News.objects.all().count()) )
		print ( "\tAudio: " + str(Publisher.objects.all().filter(type="audio").count()) )
Mario Chirinos Colunga's avatar
Mario Chirinos Colunga committed
28
		print ( "Busquedas: " + str(Search.objects.all().count()) )
Mario Chirinos Colunga's avatar
Mario Chirinos Colunga committed
29 30 31 32 33 34 35 36


		minutes = sum([a.minutes for a in audioTime.objects.all()])
		print ( "\t\tRecorders hours: " + "{:,}".format(minutes/60.) )

		print("=======================================================")
		textSources = Publisher.objects.all().filter(type="texto")
		for t in textSources:
Mario Chirinos Colunga's avatar
Mario Chirinos Colunga committed
37 38 39 40 41 42
			if News.objects.all().filter(publisher=t).count() <= 0:
				continue
			newsP=News.objects.all().filter(publisher=t).order_by("date")
			count = str(newsP.count()) 
			date =  newsP[0].date.date().strftime('%m/%d/%Y')
			print(t.name + ", " + t.url + ", " + str(newsP.count()) +", "+ newsP[0].date.date().strftime('%d/%m/%Y') ) 
Mario Chirinos Colunga's avatar
Mario Chirinos Colunga committed
43 44
		print("=======================================================")
		audioSources = Publisher.objects.all().filter(type="audio")
Mario Chirinos Colunga's avatar
Mario Chirinos Colunga committed
45
		data["audioTime"]=0
Mario Chirinos Colunga's avatar
Mario Chirinos Colunga committed
46
		for a in audioSources:
Mario Chirinos Colunga's avatar
Mario Chirinos Colunga committed
47 48 49 50 51 52
			if audioTime.objects.all().filter(publisher=a).count() <=0:
				print ("No adutioTime for: ", a)
			else:
				minutes = audioTime.objects.all().filter(publisher=a)[0].minutes
				print(a.name + ", " + a.url + ", " + str(minutes))  
				data["audioTime"]+=minutes
Mario Chirinos Colunga's avatar
Mario Chirinos Colunga committed
53 54
		print(data)
		with open(options['json'][0], 'w') as outfile:
Mario Chirinos Colunga's avatar
Mario Chirinos Colunga committed
55 56
			outfile.write("m3Data="+json.dumps(data)+";")
			outfile.close()