| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- # Licensed to Cloudera, Inc. under one
- # or more contributor license agreements. See the NOTICE file
- # distributed with this work for additional information
- # regarding copyright ownership. Cloudera, Inc. licenses this file
- # to you under the Apache License, Version 2.0 (the
- # "License"); you may not use this file except in compliance
- # with the License. You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- import json
- import logging
- import time
- import re
- import sys
- from django.db import transaction
- from desktop.models import Document, DocumentPermission, DocumentTag, Document2, Directory, Document2Permission
- LOG = logging.getLogger(__name__)
- class DocumentCounts(object):
- """
- Given a user, prints the count of doc1 and doc2 documents
- """
- def __init__(self, user, differ=False):
- LOG.info("Sai")
- self.user = user
- self.differ = differ
- self.home_dir = Document2.objects.create_user_directories(self.user)
- sys.stdout = open('counts.txt', 'a')
-
- def printCounts(self):
- LOG.info("HI")
- # Convert SavedQuery documents
- try:
- from beeswax.models import SavedQuery, HQL, IMPALA, RDBMS
- docs = self._get_unconverted_docs(SavedQuery).filter(extra__in=[HQL, IMPALA, RDBMS])
- self.saved_query_doc1 = len(docs)
- docs = Document2.objects.filter(owner=self.user, type__startswith='query-').filter(is_history=False)
- self.saved_query_doc2 = len(docs)
- except:
- LOG.info('Cannot convert Saved Query documents: beeswax app is not installed')
- pass
- # Convert SQL Query history documents
- try:
- from beeswax.models import SavedQuery, HQL, IMPALA, RDBMS
- docs = self._get_unconverted_docs(SavedQuery, with_history=True).filter(extra__in=[HQL, IMPALA, RDBMS]).order_by('-last_modified')
- self.query_history_doc1 = len(docs)
- docs = Document2.objects.filter(owner=self.user,type__startswith='query-').filter(is_history=True)
- self.query_history_doc2 = len(docs)
- except:
- LOG.info('Cannot convert Saved Query documents: beeswax app is not installed')
- pass
-
- if self.differ:
- if self.saved_query_doc2 != self.saved_query_doc1 or self.query_history_doc2 != self.query_history_doc1:
- print("%-20s %s/%s \t %s/%s" %(self.user.username, self.saved_query_doc2, self.saved_query_doc1, self.query_history_doc2, self.query_history_doc1))
- else:
- print("%-20s %s/%s \t %s/%s" %(self.user.username, self.saved_query_doc2, self.saved_query_doc1, self.query_history_doc2, self.query_history_doc1))
- sys.stdout.close()
- def _get_unconverted_docs(self, content_type, with_history=False):
- docs = Document.objects.get_docs(self.user, content_type).filter(owner=self.user)
- tags = [
- DocumentTag.objects.get_trash_tag(user=self.user), # No trashed docs
- DocumentTag.objects.get_example_tag(user=self.user), # No examples
- # self.imported_tag # No already imported docs
- ]
- if not with_history:
- tags.append(DocumentTag.objects.get_history_tag(user=self.user)) # No history yet
- return docs.exclude(tags__in=tags)
- def _get_parent_directory(self, document):
- """
- Returns the parent directory object that should be used for a given document. If the document is tagged with a
- project name (non-RESERVED DocumentTag), a Directory object with the first project tag found is returned.
- Otherwise, the owner's home directory is returned.
- """
- parent_dir = self.home_dir
- project_tags = document.tags.exclude(tag__in=DocumentTag.RESERVED)
- if project_tags.exists():
- first_tag = project_tags[0]
- parent_dir, created = Directory.objects.get_or_create(
- owner=self.user,
- name=first_tag.tag,
- parent_directory=self.home_dir
- )
- return parent_dir
|