def qbe_form(request, query_hash=None): query_key = "qbe_query_%s" % query_hash db_alias = request.session.get("qbe_database", "default") formset = QueryByExampleFormSet(using=db_alias) json_data = None if query_key in request.session: data = request.session[query_key] db_alias = data.get("database_alias", "default") formset = QueryByExampleFormSet(data=data, using=db_alias) if not formset.is_valid(): formset = QueryByExampleFormSet(using=db_alias) else: json_data = simplejson.dumps(data) apps = get_apps() models = qbe_models(admin_site=admin_site, only_admin_models=False) json_models = qbe_models(admin_site=admin_site, json=True) context = { 'apps': apps, 'models': models, 'formset': formset, 'databases': DATABASES, 'database_alias': db_alias, 'title': _(u"Query by Example"), 'json_models': json_models, 'json_data': json_data, 'query_hash': query_hash, 'savedqueries_installed': 'django_qbe.savedqueries' in settings.INSTALLED_APPS, 'aliases_enabled': getattr(settings, 'QBE_ALIASES', False), 'group_by_enabled': getattr(settings, 'QBE_GROUP_BY', False), } return render(request, 'qbe.html', context)
def qbe_form(request): query_hash = request.GET.get("hash", "") query_key = "qbe_query_%s" % query_hash db_alias = request.session.get("qbe_database", "default") formset = QueryByExampleFormSet(using=db_alias) json_data = None if query_key in request.session: data = request.session[query_key] db_alias = data.get("database_alias", "default") formset = QueryByExampleFormSet(data=data, using=db_alias) if not formset.is_valid(): formset = QueryByExampleFormSet(using=db_alias) else: json_data = simplejson.dumps(data) apps = get_apps() models = qbe_models(admin_site=admin_site, only_admin_models=False) json_models = qbe_models(admin_site=admin_site, json=True) admin_media_prefix = settings.ADMIN_MEDIA_PREFIX return render_to_response('qbe.html', {'apps': apps, 'models': models, 'formset': formset, 'databases': DATABASES, 'database_alias': db_alias, 'title': _(u"Query by Example"), 'json_models': json_models, 'json_data': json_data, 'ADMIN_MEDIA_PREFIX': admin_media_prefix}, context_instance=RequestContext(request))
def qbe_proxy(request): if request.POST: data = request.POST.copy() db_alias = request.session.get("qbe_database", "default") formset = QueryByExampleFormSet(data=data, using=db_alias) if formset.is_valid(): pickled = pickle_encode(data) query_hash = get_query_hash(pickled) query_key = "qbe_query_%s" % query_hash request.session[query_key] = data return redirect("qbe_results", query_hash=query_hash) return redirect("qbe_form")
def qbe_export(request, query_hash, format): query_key = "qbe_query_%s" % query_hash if format in formats and query_key in request.session: data = request.session[query_key] db_alias = request.session.get("qbe_database", "default") formset = QueryByExampleFormSet(data=data, using=db_alias) if formset.is_valid(): labels = formset.get_labels() query = formset.get_raw_query() results = formset.get_results(query) return formats[format](labels, results) return redirect("qbe_form")
def qbe_proxy(request): if request.POST: data = request.POST.copy() formset = QueryByExampleFormSet(data=data) if formset.is_valid(): pickled = pickle_encode(data) query_hash = md5(pickled + settings.SECRET_KEY).hexdigest() query_key = "qbe_query_%s" % query_hash request.session[query_key] = data reverse_url = reverse("qbe_results", args=(query_hash, )) return HttpResponseRedirect(reverse_url) return HttpResponseRedirect(reverse("qbe_form"))
def qbe_export(request, format=None): query_hash = request.GET.get("hash", "") query_key = "qbe_query_%s" % query_hash if format and format in formats and query_key in request.session: data = request.session[query_key] formset = QueryByExampleFormSet(data=data) if formset.is_valid(): labels = formset.get_labels() query = formset.get_raw_query() results = formset.get_results(query) return formats[format](labels, results) return HttpResponseRedirect(reverse("qbe_form"))
def qbe_proxy(request): if request.POST: data = request.POST.copy() db_alias = request.session.get("qbe_database", "default") formset = QueryByExampleFormSet(data=data, using=db_alias) if formset.is_valid(): pickled = pickle_encode(data) query_hash = md5(pickled + settings.SECRET_KEY).hexdigest() query_key = "qbe_query_%s" % query_hash request.session[query_key] = data reverse_url = reverse("qbe_results", args=(query_hash, )) return HttpResponseRedirect(reverse_url) return HttpResponseRedirect(reverse("qbe_form"))
def qbe_results(request, query_hash): query_key = "qbe_query_%s" % (query_hash or "") if query_key in request.session: query_key = "qbe_query_%s" % query_hash data = request.session[query_key] else: return redirect("qbe_form") db_alias = data.get("database_alias", "default") if db_alias in DATABASES: request.session["qbe_database"] = db_alias else: db_alias = request.session.get("qbe_database", "default") formset = QueryByExampleFormSet(data=data, using=db_alias) if formset.is_valid(): row_number = getattr(settings, 'QBE_SHOW_ROW_NUMBER', True) admin_name = getattr(settings, "QBE_ADMIN", "admin") aliases = getattr(settings, 'QBE_ALIASES', False) labels = formset.get_labels(row_number=row_number, aliases=aliases) count = formset.get_count() limit = count try: page = int(request.GET.get("p", 0)) except ValueError: page = 0 if not request.GET.get("show", None): try: limit = int(data.get("limit", 100)) except ValueError: limit = 100 offset = limit * page results = formset.get_results(limit=limit, offset=offset, admin_name=admin_name, row_number=row_number) query = formset.get_raw_query(add_params=True) pickled = pickle_encode(data) context = { 'formset': formset, 'title': _(u"Query by Example"), 'results': results, 'labels': labels, #'query': query, 'count': count, 'limit': limit, 'page': page, 'offset': offset + 1, 'offset_limit': offset + limit, 'pickled': pickled, 'query_hash': query_hash, 'admin_urls': (admin_name != None and formset.has_admin_urls()), 'formats': formats, 'savedqueries_installed': 'django_qbe.savedqueries' in settings.INSTALLED_APPS, 'QBE_MENU_EDIT': getattr(settings, 'QBE_MENU_EDIT', False), 'QBE_SHOW_BREADCRUMBS': getattr(settings, 'QBE_SHOW_BREADCRUMBS', True) } return render(request, 'qbe_results.html', context) return redirect("qbe_form")
def qbe_form(request): query_hash = request.GET.get("hash", "") query_key = "qbe_query_%s" % query_hash db_alias = request.session.get("qbe_database", "default") formset = QueryByExampleFormSet(using=db_alias) json_data = None if query_key in request.session: data = request.session[query_key] db_alias = data.get("database_alias", "default") formset = QueryByExampleFormSet(data=data, using=db_alias) if not formset.is_valid(): formset = QueryByExampleFormSet(using=db_alias) else: json_data = simplejson.dumps(data) apps = get_apps() models = qbe_models(admin_site=admin_site, only_admin_models=False) json_models = qbe_models(admin_site=admin_site, json=True) admin_media_prefix = settings.ADMIN_MEDIA_PREFIX return render_to_response('qbe.html', { 'apps': apps, 'models': models, 'formset': formset, 'databases': DATABASES, 'database_alias': db_alias, 'title': _(u"Query by Example"), 'json_models': json_models, 'json_data': json_data, 'ADMIN_MEDIA_PREFIX': admin_media_prefix }, context_instance=RequestContext(request))
def handle(self, **options): # Checking options query_hash = options.get("query_hash", None) if not query_hash: self.stderr.write(u"Wrong or missing hash code\n") return None output = options.get("output", None) file_name = None file_descr = None if output: file_name = output try: file_descr = open(file_name, "w") except IOError: self.stderr.write("Unable to create a file: \"%s\"\n" \ % file_name) export_format = options.get("export_format", "csv") if export_format not in formats: self.stderr.write(u"Wrong format to export: %s\n" % export_format) return None db_alias = options.get("db_alias", "default") saved_queries = SavedQuery.objects.filter(query_hash=query_hash) saved_queries_length = len(saved_queries) # Making the query if saved_queries_length == 1: data = saved_queries[0].query_data formset = QueryByExampleFormSet(data=data, using=db_alias) if formset.is_valid(): labels = formset.get_labels() query = formset.get_raw_query() results = formset.get_results(query) response = formats[export_format](labels, results) if file_descr: file_descr.writelines(response.streaming_content) else: self.stdout.writelines(response.streaming_content) else: self.stderr.write(u"Malformed query: %s\n" % query_hash) else: self.stderr.write(u"Invalid query_hash, returned %s queries\n" \ % saved_queries_length) if output: file_descr.close()
def qbe_form(request, query_hash=None): query_key = "qbe_query_%s" % query_hash db_alias = request.session.get("qbe_database", "default") formset = QueryByExampleFormSet(using=db_alias) json_data = None if query_key in request.session: data = request.session[query_key] db_alias = data.get("database_alias", "default") formset = QueryByExampleFormSet(data=data, using=db_alias) if not formset.is_valid(): formset = QueryByExampleFormSet(using=db_alias) else: json_data = json.dumps(data) apps = get_apps() models = qbe_models(admin_site=admin_site, only_admin_models=False) json_models = qbe_models(admin_site=admin_site, json=True) title_url = reverse("qbe_form") saved_query = None if QBE_SAVED_QUERIES: title_url = reverse("admin:app_list", args=["savedqueries"]) from django_qbe.savedqueries.models import SavedQuery saved_queries = SavedQuery.objects.filter(query_hash=query_hash) saved_query = saved_queries.first() context = { 'apps': apps, 'models': models, 'formset': formset, 'databases': DATABASES, 'database_alias': db_alias, 'title': _(u"Query by Example"), 'title_url': title_url, 'saved_query': saved_query, 'json_models': json_models, 'json_data': json_data, 'query_hash': query_hash, 'savedqueries_installed': QBE_SAVED_QUERIES, 'aliases_enabled': QBE_ALIASES, 'group_by_enabled': QBE_GROUP_BY } return render(request, 'qbe.html', context)
def qbe_results(request, query_hash): query_key = "qbe_query_%s" % (query_hash or "") if query_key in request.session: query_key = "qbe_query_%s" % query_hash data = request.session[query_key] else: return HttpResponseRedirect(reverse("qbe_form")) db_alias = data.get("database_alias", "default") if db_alias in DATABASES: request.session["qbe_database"] = db_alias else: db_alias = request.session.get("qbe_database", "default") formset = QueryByExampleFormSet(data=data, using=db_alias) if formset.is_valid(): row_number = True admin_name = getattr(settings, "QBE_ADMIN", "admin") labels = formset.get_labels(row_number=row_number) count = formset.get_count() limit = count try: page = int(request.GET.get("p", 0)) except ValueError: page = 0 if not request.GET.get("show", None): try: limit = int(data.get("limit", 100)) except ValueError: limit = 100 offset = limit * page results = formset.get_results(limit=limit, offset=offset, admin_name=admin_name, row_number=row_number) query = formset.get_raw_query(add_params=True) pickled = pickle_encode(data) admin_media_prefix = settings.ADMIN_MEDIA_PREFIX return render_to_response('qbe_results.html', { 'formset': formset, 'title': _(u"Query by Example"), 'results': results, 'labels': labels, 'query': query, 'count': count, 'limit': limit, 'page': page, 'offset': offset + 1, 'offset_limit': offset + limit, 'pickled': pickled, 'query_hash': query_hash, 'admin_urls': (admin_name != None), 'formats': formats, 'ADMIN_MEDIA_PREFIX': admin_media_prefix }, context_instance=RequestContext(request))
def qbe_results(request, query_hash): query_key = "qbe_query_%s" % (query_hash or "") if query_key in request.session: query_key = "qbe_query_%s" % query_hash data = request.session[query_key] else: return HttpResponseRedirect(reverse("qbe_form")) db_alias = data.get("database_alias", "default") if db_alias in DATABASES: request.session["qbe_database"] = db_alias else: db_alias = request.session.get("qbe_database", "default") formset = QueryByExampleFormSet(data=data, using=db_alias) if formset.is_valid(): row_number = True admin_name = getattr(settings, "QBE_ADMIN", "admin") labels = formset.get_labels(row_number=row_number) count = formset.get_count() limit = count try: page = int(request.GET.get("p", 0)) except ValueError: page = 0 if not request.GET.get("show", None): try: limit = int(data.get("limit", 100)) except ValueError: limit = 100 offset = limit * page results = formset.get_results(limit=limit, offset=offset, admin_name=admin_name, row_number=row_number) query = formset.get_raw_query(add_params=True) pickled = pickle_encode(data) admin_media_prefix = settings.ADMIN_MEDIA_PREFIX return render_to_response('qbe_results.html', {'formset': formset, 'title': _(u"Query by Example"), 'results': results, 'labels': labels, 'query': query, 'count': count, 'limit': limit, 'page': page, 'offset': offset + 1, 'offset_limit': offset + limit, 'pickled': pickled, 'query_hash': query_hash, 'admin_urls': (admin_name != None), 'formats': formats, 'ADMIN_MEDIA_PREFIX': admin_media_prefix}, context_instance=RequestContext(request))
def qbe_form(request, query_hash=None): query_key = "qbe_query_%s" % query_hash db_alias = request.session.get("qbe_database", "default") formset = QueryByExampleFormSet(using=db_alias) json_data = None if query_key in request.session: data = request.session[query_key] db_alias = data.get("database_alias", "default") formset = QueryByExampleFormSet(data=data, using=db_alias) if not formset.is_valid(): formset = QueryByExampleFormSet(using=db_alias) else: json_data = json.dumps(data) apps = django_apps.get_models() models = qbe_models(admin_site=admin_site, only_admin_models=False) json_models = qbe_models(admin_site=admin_site, json=True) title_url = reverse("qbe_form") saved_query = None if QBE_SAVED_QUERIES: title_url = reverse("admin:app_list", args=["savedqueries"]) from django_qbe.savedqueries.models import SavedQuery saved_queries = SavedQuery.objects.filter(query_hash=query_hash) saved_query = saved_queries.first() context = { 'apps': apps, 'models': models, 'formset': formset, 'databases': DATABASES, 'database_alias': db_alias, 'title': _(u"Query by Example"), 'title_url': title_url, 'saved_query': saved_query, 'json_models': json_models, 'json_data': json_data, 'query_hash': query_hash, 'savedqueries_installed': QBE_SAVED_QUERIES, 'aliases_enabled': QBE_ALIASES, 'group_by_enabled': QBE_GROUP_BY } return render(request, 'qbe.html', context)
def qbe_form(request, query_hash=None): query_key = "qbe_query_%s" % query_hash db_alias = request.session.get("qbe_database", "default") formset = QueryByExampleFormSet(using=db_alias) json_data = None if query_key in request.session: data = request.session[query_key] db_alias = data.get("database_alias", "default") formset = QueryByExampleFormSet(data=data, using=db_alias) if not formset.is_valid(): formset = QueryByExampleFormSet(using=db_alias) else: json_data = simplejson.dumps(data) apps = get_apps() models = qbe_models(admin_site=admin_site, only_admin_models=False) json_models = qbe_models(admin_site=admin_site, json=True) context = { 'apps': apps, 'models': models, 'formset': formset, 'databases': DATABASES, 'database_alias': db_alias, 'title': _(u"Query by Example"), 'json_models': json_models, 'json_data': json_data, 'query_hash': query_hash, 'savedqueries_installed': 'django_qbe.savedqueries' in settings.INSTALLED_APPS, } return render(request, 'qbe.html', context)
def handle(self, *args, **options): # Checking args and options if args: query_hash = args[0] else: self.stderr.write(u"Wrong or missing hash code\n") return None output = options.get("output", None) file_name = None file_descr = None if output: file_name = output try: file_descr = open(file_name, "w") except IOError: self.stderr.write("Unable to create a file: \"%s\"\n" \ % file_name) export_format = options.get("export_format", "csv") if export_format not in formats: self.stderr.write(u"Wrong format to export: %s\n" % export_format) return None db_alias = options.get("db_alias", "default") saved_queries = SavedQuery.objects.filter(query_hash=query_hash) saved_queries_length = len(saved_queries) # Making the query if saved_queries_length == 1: data = saved_queries[0].query_data formset = QueryByExampleFormSet(data=data, using=db_alias) if formset.is_valid(): labels = formset.get_labels() query = formset.get_raw_query() results = formset.get_results(query) response = formats[export_format](labels, results) if file_descr: file_descr.write(response.content) else: self.stdout.write(response.content) else: self.stderr.write(u"Malformed query: %s\n" % query_hash) else: self.stderr.write(u"Invalid query_hash, returned %s queries\n" \ % saved_queries_length) if output: file_descr.close()
def qbe_form(request, query_hash=None): disable_models = getattr(settings, 'QBE_DISABLE_MODELS', []) query_key = "qbe_query_%s" % query_hash db_alias = request.session.get("qbe_database", "default") formset = QueryByExampleFormSet(using=db_alias) json_data = None if query_key in request.session: data = request.session[query_key] db_alias = data.get("database_alias", "default") formset = QueryByExampleFormSet(data=data, using=db_alias) if not formset.is_valid(): formset = QueryByExampleFormSet(using=db_alias) else: json_data = simplejson.dumps(data) apps = get_apps() models = qbe_models(admin_site=admin_site, only_admin_models=False, disable_models=disable_models) json_models = qbe_models(admin_site=admin_site, json=True) context = { 'apps': apps, 'models': models, 'formset': formset, 'database_alias': db_alias, 'title': _(u"Query by Example"), 'json_models': json_models, 'json_data': json_data, 'query_hash': query_hash, 'savedqueries_installed': 'django_qbe.savedqueries' in settings.INSTALLED_APPS, 'aliases_enabled': getattr(settings, 'QBE_ALIASES', False), 'group_by_enabled': getattr(settings, 'QBE_GROUP_BY', False), 'QBE_MENU_EDIT': getattr(settings, 'QBE_MENU_EDIT', False), 'QBE_SHOW_BREADCRUMBS': getattr(settings, 'QBE_SHOW_BREADCRUMBS', True) } return render(request, 'qbe.html', context)
def qbe_results(request, query_hash): query_key = "qbe_query_%s" % (query_hash or "") if query_key in request.session: query_key = "qbe_query_%s" % query_hash data = request.session[query_key] else: return redirect("qbe_form") db_alias = data.get("database_alias", "default") if db_alias in DATABASES: request.session["qbe_database"] = db_alias else: db_alias = request.session.get("qbe_database", "default") formset = QueryByExampleFormSet(data=data, using=db_alias) if formset.is_valid(): row_number = QBE_SHOW_ROW_NUMBER admin_name = QBE_ADMIN aliases = QBE_ALIASES labels = formset.get_labels(row_number=row_number, aliases=aliases) count = formset.get_count() limit = count try: page = int(request.GET.get("p", 0)) except ValueError: page = 0 if not request.GET.get("show", None): try: limit = int(data.get("limit", 100)) except ValueError: limit = 100 offset = limit * page results = formset.get_results(limit=limit, offset=offset, admin_name=admin_name, row_number=row_number) query = formset.get_raw_query(add_params=True) pickled = pickle_encode(data) title_url = reverse("qbe_form") saved_query = None if QBE_SAVED_QUERIES: title_url = reverse("admin:app_list", args=["savedqueries"]) from django_qbe.savedqueries.models import SavedQuery saved_queries = SavedQuery.objects.filter(query_hash=query_hash) saved_query = saved_queries.first() context = { 'formset': formset, 'title': _(u"Query by Example"), 'title_url': title_url, 'saved_query': saved_query, 'results': results, 'labels': labels, 'query': query, 'count': count, 'limit': limit, 'page': page, 'offset': offset + 1, 'offset_limit': offset + limit, 'pickled': pickled, 'query_hash': query_hash, 'admin_urls': admin_name is not None and formset.has_admin_urls(), 'formats': formats, 'savedqueries_installed': QBE_SAVED_QUERIES, 'aliases_enabled': QBE_ALIASES, 'group_by_enabled': QBE_GROUP_BY } return render(request, 'qbe_results.html', context) return redirect("qbe_form")