예제 #1
0
파일: views.py 프로젝트: NSkelsey/research
def save_filter(request, filter_name=None):
    if request.method == "POST":
        OutFormSet = formset_factory(OutForm)
        outformset = OutFormSet(request.POST)
        filterform = FilterForm(request.POST)

        if not outformset.is_valid() or not filterform.is_valid():
            return HttpResponse("invalid form")
        filter_name=filterform.cleaned_data["name"]
        form_li = [i.cleaned_data for i in outformset.forms]
        if len(form_li) > 0:
            form_li[-1]["logical_operation"] = "none"
        dname = {"name" : filter_name}
        if filterform.cleaned_data.get("comment") is "":
            dname["comment"] = filterform.cleaned_data["comment"]
        _filter = make_filter_with_forms(form_li, dname)

        s = make_dbdb_session()
        ret = s.query(Filter).filter_by(name=filter_name).scalar()
        if ret is not None:
            s.delete(ret)
            s.commit()
        s.add(_filter)
        s.commit()
        s.close()

        return HttpResponse("%(name)s has been saved<br>======it looks like======<br> %(expr)s" % {'name' : filter_name, 'expr': _filter.expression})
예제 #2
0
def mailer_add_view(request):
    if request.user.is_superuser:
        template = "mailer_add.html"
        data=dict()
        if request.method == 'POST':
            mailer_form = MailerForm(request.POST)
            filter_form = FilterForm(request.POST)
            if mailer_form.is_valid() and filter_form.is_valid():
                filt = filter_form.save()
                mailer = mailer_form.save(commit=False)
                mailer.filters = filt
                mailer.save()
                return HttpResponseRedirect(reverse('mailer_all'))
            else:
                data['mailer_form'] = MailerForm(request.POST)
                data['filter_form'] = FilterForm(request.POST)
                t = loader.get_template(template)
                c = RequestContext(request, data, processors=[custom_proc])
                return HttpResponse(t.render(c))
        else:
            data['mailer_form'] = MailerForm()
            data['filter_form'] = FilterForm()
            t = loader.get_template(template)
            c = RequestContext(request, data, processors=[custom_proc])
            return HttpResponse(t.render(c))
    else:
        raise Http404
예제 #3
0
파일: views.py 프로젝트: mfrlin/TPO
def myservices(request):
    services = request.user.service_provider.services.all()
    durations = set(service.duration for service in services)
    # discounts = set(service.get_discount().discount for service in services if service.get_discount())
    discounts = set(
        discount.discount
        for discount in Discount.objects.filter(service__in=services))
    filter_form = FilterForm(request.GET,
                             durations=sorted(list(durations)),
                             discounts=discounts)
    if filter_form.is_valid():
        if filter_form.cleaned_data['duration'] != 'all':
            services = services.filter(
                duration=filter_form.cleaned_data['duration'])
        if filter_form.cleaned_data['discount'] != 'all':
            services = services.filter(discounts__discount=filter_form.
                                       cleaned_data['discount']).distinct()
        if filter_form.cleaned_data['active'] == 'active':
            services = [service for service in services if service.is_active()]
        elif filter_form.cleaned_data['active'] == 'inactive':
            services = [
                service for service in services if not service.is_active()
            ]
            # locals() returns a dictionary of variables in the local scope (request and services in this case)
    return render_to_response('service/myservices.html',
                              locals(),
                              context_instance=RequestContext(request))
예제 #4
0
파일: views.py 프로젝트: fitoria/maonic
def formulario(request):
    if request.method == 'POST':
        form = FilterForm(request.POST)
        if form.is_valid():
            lista_modelos = [] #ojala fueran chavalas y no tablas :-(
            for key in model_dict.keys():
                if form.cleaned_data[key] == 'on':
                    lista_modelos.append(key)
            
            request.session['lista_modelos'] = lista_modelos
            #validar aca!

            #aburriiiiiiiiiido 
            for coso in ('semillas', 'materia_procesada', 'buenas_practicas', 
                    'arboles', 'cultivos', 'animales',
                    'tipo_organizacion', 'certificacion', 'area_trabajo'):
                request.session[coso] = form.cleaned_data[coso]
            #TODO:hacer un flash al estilo rails redigirir a mapita
            request.session['activo'] = True
            return HttpResponseRedirect('/mapeo/mapa') 
    else:
        form = FilterForm()

    return render_to_response('mapeo/formulario.html', 
            {'form': form},
            context_instance=RequestContext(request))
예제 #5
0
def add_filter(request, list_filters):
    filters = []
    filter_dict = dict([(f['name'], f) for f in list_filters])
    if request.method == 'GET':
        filter_form = FilterForm(list_filters, request.GET)
        if filter_form.is_valid():
            for name, data in filter_form.cleaned_data.items():
                if data:
                    filters.append(Q(**{filter_dict[name]['destination']:data}))

    else:			
        filter_form = FilterForm(list_filters)
            
    return filter_form, filters
예제 #6
0
파일: views.py 프로젝트: qalit/DAMS
def add_filter(request, list_filters):
    filters = []
    filter_dict = dict([(f['name'], f) for f in list_filters])
    if request.method == 'GET':
        filter_form = FilterForm(list_filters, request.GET)
        if filter_form.is_valid():
            for name, data in filter_form.cleaned_data.items():
                if data:
                    filters.append(Q(**{filter_dict[name]['destination']:data}))

    else:			
        filter_form = FilterForm(list_filters)
            
    return filter_form, filters
예제 #7
0
파일: views.py 프로젝트: fulloflove/engine
def filter_issues(request):
    filter_form = FilterForm(request.GET)
    context = {'filter_form': filter_form}
    key_filters = ('project',
                   'service_type',
                   'status',
                   'priority',
                   'region',
                   'source',
                   'assignee',
                   'creator',
                   'component',
                   )

    date_filters = ('opened_start', 'opened_end', 'control_start', 'control_end')

    m2m_filters = ('contracts',)

    context['filtered'] = False
    if 'search' in request.GET:
        if filter_form.is_valid():
            context['queries'] = get_queries(request)
            context['filtered'] = True
            filtered_issues = Issue.objects.all()
            date_filters_dict = {}
            params = [v for v in request.GET.keys() if request.GET.get(v) != '' and v != 'page']
            for p in params:
                if p in key_filters:
                    qs_str = p + '__in'
                    filtered_issues = filtered_issues.filter(**{qs_str: request.GET.getlist(p)})
                elif p in m2m_filters:
                    qs_str = p + '__in'
                    filtered_issues = filtered_issues.filter(**{qs_str: request.GET.getlist(p)}).distinct()
                elif p in date_filters:
                    date_filters_dict[p] = filter_form.cleaned_data.get(p)
            filtered_issues = issues_dates_filter(filtered_issues, **date_filters_dict)

            if 'export' in request.GET:
                return export_issues(request, request.GET.get('export'), filtered_issues)

            context['issues'] = pagination(request, filtered_issues)
            context.update(get_pagination_range(list_for_pagination=context['issues']))
            context['title'] = _('Found issues')

            if 'view' in request.GET:
                context['extended_view'] = True

    return render(request, 'helpdesk/filter.html', context)
예제 #8
0
파일: views.py 프로젝트: km4054/eNarocanje
def myservices(request):
    services = request.user.service_provider.services.all()
    durations = set(service.duration for service in services)
    # discounts = set(service.get_discount().discount for service in services if service.get_discount())
    discounts = set(discount.discount for discount in Discount.objects.filter(service__in=services))
    filter_form = FilterForm(request.GET, durations=sorted(list(durations)), discounts=discounts)
    if filter_form.is_valid():
        if filter_form.cleaned_data['duration'] != 'all':
            services = services.filter(duration=filter_form.cleaned_data['duration'])
        if filter_form.cleaned_data['discount'] != 'all':
            services = services.filter(discounts__discount=filter_form.cleaned_data['discount']).distinct()
        if filter_form.cleaned_data['active'] == 'active':
            services = [service for service in services if service.is_active()]
        elif filter_form.cleaned_data['active'] == 'inactive':
            services = [service for service in services if not service.is_active()]
    # locals() returns a dictionary of variables in the local scope (request and services in this case)
    return render_to_response('service/myservices.html', locals(), context_instance=RequestContext(request))
예제 #9
0
파일: views.py 프로젝트: tovmeod/anaf
def index(request, response_format='html'):
    "Index page: display all events"

    if request.GET:
        filters = FilterForm(request.GET)
        if filters.is_valid():
            query = _get_filter_query(request.GET)
        else:
            query = Q()
    else:
        query = Q()
        filters = FilterForm()

    events = Object.filter_by_request(request, Event.objects.filter(query))

    context = _get_default_context(request)
    context.update({'events': events,
                    'filters': filters})

    return render_to_response('events/index', context,
                              context_instance=RequestContext(request), response_format=response_format)
예제 #10
0
def index(request):
    if request.method == 'POST':
        form = FilterForm(request.POST)
        if form.is_valid():
            raw_tags = form.cleaned_data['tags'].rstrip(' ').lstrip(' ')
            try:
                after_date = int(time.mktime(form.cleaned_data['after'].timetuple()))
            except:
                after_date = None
            try:
                before_date = int(time.mktime(form.cleaned_data['before'].timetuple()))
            except:
                before_date = None


            if len(raw_tags):
                tagsa = raw_tags.split(',')
                posts = Post.objects.filter(tags__in=Tag.objects.filter(text__in=tagsa).all()).all()

                if before_date:
                    posts = posts.filter(date__lt=before_date)
                if after_date:
                    posts = posts.filter(date__gt=after_date)
            else:
                posts = Post.objects.all()
                if before_date:
                    posts = posts.filter(date__lt=before_date)
                if after_date:
                    posts = posts.filter(date__gt=after_date)
        else:
            posts = Post.objects.all()
    elif request.method == 'GET':
        if 'tags' in request.GET:
            tagsa = request.GET['tags'].split(',')
            posts = Post.objects.filter(tags__in=Tag.objects.filter(text__in=tagsa).all()).all()
        else:
            posts = Post.objects.all()
    form = FilterForm()
    tags = Tag.objects.all()
    return  render(request, "index.html", {'posts': posts, 'tags': tags, 'form': form})
예제 #11
0
def index(request, response_format='html'):
    "Index page: display all events"

    if request.GET:
        filters = FilterForm(request.GET)
        if filters.is_valid():
            query = _get_filter_query(request.GET)
        else:
            query = Q()
    else:
        query = Q()
        filters = FilterForm()

    events = Object.filter_by_request(request, Event.objects.filter(query))

    context = _get_default_context(request)
    context.update({'events': events, 'filters': filters})

    return render_to_response('events/index',
                              context,
                              context_instance=RequestContext(request),
                              response_format=response_format)
예제 #12
0
파일: views.py 프로젝트: abhishek97/arena
    def post(self, request):

        if not request.user.is_authenticated():
            return render(request, 'unauthorised.html')

        form = FilterForm(request.POST)

        if not form.is_valid():
            return render(request, 'show_challenge.html', {
                'form': form,
                'error': 'Invalid Form Data'
            })

        this = form.cleaned_data
        q_set = Challenge.objects.filter(
            to=request.user.username,
            resolved=this.get('resolved')).order_by('-time')

        if this.get('frm') != '':
            q_set = q_set.filter(frm=this.get('frm'))

        if this.get('contest') != '':
            q_set = q_set.filter(contest=this.get('contest'))

        if len(q_set):
            return render(request, 'show_challenge.html', {
                'form': form,
                'results': q_set
            })

        else:
            return render(
                request, 'show_challenge.html', {
                    'form': form,
                    'error':
                    'No search items found matching the required filters'
                })
예제 #13
0
def index(request):
	context = {}
	output = Program.objects.all()
	if request.method == 'POST':
		form = FilterForm(request.POST)
		if form.is_valid():
			form_output = {"evaluation" : request.POST['evaluation'], "target_audience" : request.POST['target_audience'], "type_of_exercise" : request.POST['type_of_exercise']}	
			evaluation, target_audience, type_of_exercise = request.POST['evaluation'], request.POST['target_audience'], request.POST['type_of_exercise']
			if type_of_exercise == "Any Activity" and target_audience == "Any" and evaluation == "Any":
				context = { 'output' : output, 'form' : form, 'form_output' : form_output }
			else:
				result = []
				for item in output:
					# if (evaluation == item["evaluation"] or evaluation == 'Any') and (target_audience == item['target'] or target_audience == 'Any') and (type_of_exercise in item['type'] or type_of_exercise == 'Any Activity'):
					if (evaluation == item.evaluation or evaluation == 'Any') and (target_audience == item.target_audience or target_audience == 'Any') and (type_of_exercise in item.type_of_exercise or type_of_exercise == 'Any Activity'):
						result.append(item)
				if result:
					context = { 'output' : result, 'form' : form, 'form_output' : form_output }
				else:
					context = { 'output' : output, 'form' : form, 'form_output' : form_output }
	else:
		form = FilterForm()
		context = { 'output' : output, 'form' : form }
	return render(request, 'programs/index.html', context)
예제 #14
0
def ajax_report(request, report_id):
    start_time = datetime.datetime.now()

    report = get_object_or_404(Report, pk=report_id)

    if report not in _get_allowed_object_for_user(request.user)['reports']:
        return render_to_response('messagebox-error.html',
         {'title': _(u'Permission error'),
          'message': _(u"Insufficient permissions to access this area.")})

    output_type = request.GET.get('output_type', 'chart')
    params = {}
    special_params = {}

    if report.filtersets.all():
        filtersets = report.filtersets
        if request.method == 'GET':
            filter_form = FilterForm(filtersets, request.user, request.GET)
        else:
            filter_form = FilterForm(filtersets, request.user)

        for set in filtersets.all():
            for filter in set.filters.all():

                if filter_form.is_valid():
                    value = filter_form.cleaned_data[filter.name]
                    if not value:
                        filter.execute_function()
                        value = filter.default

                else:
                    filter.execute_function()
                    value = filter.default

                if filter.type == FILTER_TYPE_DATE:
                    params[filter.name] = value.strftime("%Y%m%d")
                elif filter.type == FILTER_TYPE_COMBO:
                    special_params[filter.name] = '(' + ((''.join(['%s'] * len(value)) % tuple(value))) + ')'
                else:
                    params[filter.name] = value

    series_results = []
    labels = []
    for s in report.serietype_set.all():
        query = s.serie.query
        if re.compile("[^%]%[^%(]").search(query):
            return render_to_response('messagebox-error.html', {'title': _(u'Query error'), 'message': _(u"Single '%' found, replace with double '%%' to properly escape the SQL wildcard caracter '%'.")})

        cursor = connections['data_source'].cursor()

        if special_params:
            for sp in special_params.keys():
                query = re.compile('%\(' + sp + '\)s').sub(special_params[sp], query)
            try:
                serie_start_time = datetime.datetime.now()
                cursor.execute(query, params)
            except:
                import sys
                (exc_type, exc_info, tb) = sys.exc_info()
                return render_to_response('messagebox-error.html', {'title': exc_type, 'message': exc_info})

        else:
            cursor.execute(query, params)
            serie_start_time = datetime.datetime.now()

        labels.append(re.compile('aS\s(\S*)', re.IGNORECASE).findall(query))

        if output_type == 'chart':
            series_results.append(data_to_js_chart(cursor.fetchall(), s.serie.tick_format, report.orientation))
        elif output_type == 'grid':
            series_results.append(data_to_js_grid(cursor.fetchall(), s.serie.tick_format))

        s.serie.last_execution_time = (datetime.datetime.now() - serie_start_time).seconds
        s.serie.avg_execution_time = (s.serie.avg_execution_time or 0 + s.serie.last_execution_time) / 2
        s.serie.save()

        try:
            serie_statistics = SeriesStatistic()
            serie_statistics.serie = s.serie
            serie_statistics.user = request.user
            serie_statistics.execution_time = (datetime.datetime.now() - serie_start_time).seconds
            serie_statistics.params = ', '.join(["%s = %s" % (k, v) for k, v in filter_form.cleaned_data.items()])
            serie_statistics.save()
        except:
            pass

    try:
        report_statistics = ReportStatistic()
        report_statistics.report = report
        report_statistics.user = request.user
        report_statistics.execution_time = (datetime.datetime.now() - start_time).seconds
        report_statistics.params = "%s" % (', '.join(["%s = %s" % (k, v) for k, v in filter_form.cleaned_data.items()]))
        report_statistics.save()
    except:
        pass

    if report.orientation == 'v':
        h_axis = "x"
        v_axis = "y"
    else:
        h_axis = "y"
        v_axis = "x"

    data = {
        'chart_data': ','.join(series_results),
        'series_results': series_results,
        'chart_series': report.serietype_set.all(),
        'chart': report,
        'h_axis': h_axis,
        'v_axis': v_axis,
        'ajax': True,
        'query': query,
        'params': params,
        'series_labels': labels,
        'time_delta': datetime.datetime.now() - start_time,
    }

    if output_type == 'chart':
        return render_to_response('single_chart.html', data,
            context_instance=RequestContext(request))
    elif output_type == 'grid':
        return render_to_response('single_grid.html', data,
            context_instance=RequestContext(request))
    else:
        return render_to_response('messagebox-error.html', {'title': _(u'Error'), 'message': _(u"Unknown output type (chart, table, etc).")})
예제 #15
0
def ajax_report(request, report_id):
    start_time = datetime.datetime.now()

    report = get_object_or_404(Report, pk=report_id)

    if report not in _get_allowed_object_for_user(request.user)['reports']:
        return render_to_response(
            'messagebox-error.html', {
                'title': _(u'Permission error'),
                'message': _(u"Insufficient permissions to access this area.")
            })

    output_type = request.GET.get('output_type', 'chart')
    params = {}
    special_params = {}

    if report.filtersets.all():
        filtersets = report.filtersets
        if request.method == 'GET':
            filter_form = FilterForm(filtersets, request.user, request.GET)
        else:
            filter_form = FilterForm(filtersets, request.user)

        valid_form = filter_form.is_valid()

        for set in filtersets.all():
            for filter in set.filters.all():

                if filter_form.is_valid():
                    value = filter_form.cleaned_data[filter.name]
                    if not value:
                        filter.execute_function()
                        value = filter.default

                else:
                    filter.execute_function()
                    value = filter.default

                if filter.type == FILTER_TYPE_DATE:
                    params[filter.name] = value.strftime("%Y%m%d")
                elif filter.type == FILTER_TYPE_COMBO:
                    special_params[filter.name] = '(' + (
                        (''.join(['%s'] * len(value)) % tuple(value))) + ')'
                else:
                    params[filter.name] = value

    series_results = []
    labels = []
    for s in report.serietype_set.all():
        query = s.serie.query
        if re.compile("[^%]%[^%(]").search(query):
            return render_to_response(
                'messagebox-error.html', {
                    'title':
                    _(u'Query error'),
                    'message':
                    _(u"Single '%' found, replace with double '%%' to properly escape the SQL wildcard caracter '%'."
                      )
                })

        cursor = connection_source.cursor()

        if special_params:
            for sp in special_params.keys():
                query = re.compile('%\(' + sp + '\)s').sub(
                    special_params[sp], query)
            try:
                serie_start_time = datetime.datetime.now()
                cursor.execute(query, params)
            except:
                import sys
                (exc_type, exc_info, tb) = sys.exc_info()
                return render_to_response('messagebox-error.html', {
                    'title': exc_type,
                    'message': exc_info
                })

        else:
            cursor.execute(query, params)
            serie_start_time = datetime.datetime.now()

        labels.append(re.compile('aS\s(\S*)', re.IGNORECASE).findall(query))

        if output_type == 'chart':
            series_results.append(
                data_to_js_chart(cursor.fetchall(), s.serie.tick_format,
                                 report.orientation))
        elif output_type == 'grid':
            series_results.append(
                data_to_js_grid(cursor.fetchall(), s.serie.tick_format))

        s.serie.last_execution_time = (datetime.datetime.now() -
                                       serie_start_time).seconds
        s.serie.avg_execution_time = (s.serie.avg_execution_time
                                      or 0 + s.serie.last_execution_time) / 2
        s.serie.save()

        try:
            serie_statistics = SeriesStatistic()
            serie_statistics.serie = s.serie
            serie_statistics.user = request.user
            serie_statistics.execution_time = (datetime.datetime.now() -
                                               serie_start_time).seconds
            serie_statistics.params = ', '.join([
                "%s = %s" % (k, v)
                for k, v in filter_form.cleaned_data.items()
            ])
            serie_statistics.save()
        except:
            pass

    try:
        report_statistics = ReportStatistic()
        report_statistics.report = report
        report_statistics.user = request.user
        report_statistics.execution_time = (datetime.datetime.now() -
                                            start_time).seconds
        report_statistics.params = "%s" % (', '.join(
            ["%s = %s" % (k, v) for k, v in filter_form.cleaned_data.items()]))
        report_statistics.save()
    except:
        pass

    if report.orientation == 'v':
        h_axis = "x"
        v_axis = "y"
    else:
        h_axis = "y"
        v_axis = "x"

    data = {
        'chart_data': ','.join(series_results),
        'series_results': series_results,
        'chart_series': report.serietype_set.all(),
        'chart': report,
        'h_axis': h_axis,
        'v_axis': v_axis,
        'ajax': True,
        'query': query,
        'params': params,
        'series_labels': labels,
        'time_delta': datetime.datetime.now() - start_time,
    }

    if output_type == 'chart':
        return render_to_response('single_chart.html',
                                  data,
                                  context_instance=RequestContext(request))
    elif output_type == 'grid':
        return render_to_response('single_grid.html',
                                  data,
                                  context_instance=RequestContext(request))
    else:
        return render_to_response(
            'messagebox-error.html', {
                'title': _(u'Error'),
                'message': _(u"Unknown output type (chart, table, etc).")
            })
예제 #16
0
def tiered_stocks(request):

	tiered_stocks = []

	for t in Ticker.objects.all():
		if t.tier:
			tiered_stocks.append(t)
		else:
			print 'newp'

	services_to_filter_by = None
	service_filter_description = None
	tickers_to_filter_by = None
	ticker_filter_description = None
	service_options = Service.objects.all()
	tiers_to_filter_by = None
	tier_filter_description = None

	if request.POST:
		tiered_filter_form = FilterForm(request.POST)

		if tiered_filter_form.is_valid():
			if 'services' in tiered_filter_form.cleaned_data:
				if len(tiered_filter_form.cleaned_data['services']) > 0:
					services_to_filter_by = tiered_filter_form.cleaned_data['services']

			if 'tier_status' in tiered_filter_form.cleaned_data:
				tiers_user_input = tiered_filter_form.cleaned_data['tier_status']
				if len(tiers_user_input) > 0:
					tickers_to_filter_by = _get_ticker_objects_for_tier_status(tiers_user_input)

		ticker_note_name_prefix = 'ticker_notes_'

		keys_of_ticker_note_data = [key_in_post_dict for key_in_post_dict in request.POST.keys() if key_in_post_dict.startswith(ticker_note_name_prefix)]

		for key_of_ticker_note_data in keys_of_ticker_note_data:

			ticker_id = key_of_ticker_note_data[len(ticker_note_name_prefix):]
			print ticker_id
			ticker_to_update = Ticker.objects.get(ticker_symbol=ticker_id)

			ticker_to_update.notes = request.POST[key_of_ticker_note_data]
			ticker_to_update.save()

			print 'updated Ticker %s (id: %s). notes value: %s' % (ticker_to_update.ticker_symbol, ticker_id, ticker_to_update.notes)


	elif request.GET:
		initial_form_values = {}

		if 'tickers' in request.GET:
			tickers_user_input = request.GET.get('tickers')
			tickers_to_filter_by = _get_ticker_objects_for_ticker_symbols(tickers_user_input)
			initial_form_values['tickers'] = tickers_user_input
		if 'service_ids' in request.GET:
			services_to_filter_by = _get_service_objects_for_service_ids(request.GET.get('service_ids'))
			initial_form_values['services'] = services_to_filter_by
		if 'tier_status' in request.GET:
			tiers_user_input = request.GET.get('tier_status')
			tiers_to_filter_by = _get_ticker_objects_for_tier_status(tiers_user_input)
			initial_form_values['tier_status'] = tiers_to_filter_by
			print tiers_user_input

		tiered_filter_form = FilterForm(initial=initial_form_values)

	else:
		tiered_filter_form = FilterForm()


	if services_to_filter_by:
		pretty_names_of_services_we_matched = [s.pretty_name for s in services_to_filter_by]
		pretty_names_of_services_we_matched.sort()
		service_filter_description = ', '.join(pretty_names_of_services_we_matched)

	if tickers_to_filter_by:
		tier_status_names = [t.tier_status for t in tickers_to_filter_by]
		tier_status_names.sort()
		tier_status_names = set(tier_status_names)
		tier_filter_description = ', '.join(tier_status_names)

	else:
		pass

	if tickers_to_filter_by is not None and services_to_filter_by is not None:
		tiered_stocks = []
		for t in tickers_to_filter_by:
			for service in services_to_filter_by:
				if service.pretty_name in t.services_for_ticker and t.tier is not 0:
					tiered_stocks.append(t)
					break

	elif services_to_filter_by is not None:
		tiered_stocks = []
		for t in Ticker.objects.all():
			if t.services_for_ticker is None:
				continue
			for service in services_to_filter_by:
				if service.pretty_name in t.services_for_ticker and t.tier is not 0:
					tiered_stocks.append(t)
				break

	elif tickers_to_filter_by is not None:
		tiered_stocks = tickers_to_filter_by

	else:
		tiered_stocks = []
		for t in Ticker.objects.all():
			if t.tier_status:
				tiered_stocks.append(t)


	dictionary_of_values = {
		'tiered_stocks': tiered_stocks,
		'tiered_filter_form': FilterForm,
		'ticker_filter_description': ticker_filter_description,
		'service_filter_description': service_filter_description,
		'tier_filter_description': tier_filter_description,
	}

	return render(request, 'satellite/tiered_stocks.html', dictionary_of_values)
예제 #17
0
파일: views.py 프로젝트: v-komarov/kis
def	List(request):


    try:
	if CheckAccess(request,'5') != 'OK':
	    return render_to_response("notaccess.html")
    except:
	return HttpResponseRedirect('/')


    ### --- Получение номера страницы ---
    try:
	page = int(request.GET.get('page',1))
	request.session['page'] = page
    except:
	pass
	
    try:
	page = int(request.session['page'])
    except:
	page = 1




    if request.method == 'POST':
	
	form = FilterForm(request.POST)
	if form.is_valid():
	    search = form.cleaned_data['search']
	    status = form.cleaned_data['status']
	    request.session['search'] = search
	    request.session['status'] = status
    else:
	form = FilterForm()

    try:
	search = request.session['search']
	status = request.session['status']
    except:
	search = ''
	status = 'ACTIVE'


    form.fields['search'].initial = search
    if search !='' :
	form.fields['status'].initial = 'ALL'
#	form.fields['status'].widget.attrs['disabled'] = True
    else:
	form.fields['status'].initial = status

    data = GetDList(search,status)
    
    paginator = Paginator(data,50)
    try:
	data_page = paginator.page(page)
    except (EmptyPage, InvalidPage):
	data_page = paginator.page(paginator.num_pages)



    c = RequestContext(request,{'data':data_page,'form':form})
    c.update(csrf(request))
    return render_to_response("contract/list.html",c)
예제 #18
0
def ajax_report(request, report_id):
    start_time = datetime.datetime.now()

    report = get_object_or_404(Report, pk=report_id)

    if report not in _get_allowed_object_for_user(request.user)["reports"]:
        return render_to_response(
            "messagebox-error.html",
            {"title": _(u"Permission error"), "message": _(u"Insufficient permissions to access this area.")},
        )

    output_type = request.GET.get("output_type", "chart")
    params = {}
    special_params = {}

    if report.filtersets.all():
        filtersets = report.filtersets
        if request.method == "GET":
            filter_form = FilterForm(filtersets, request.user, request.GET)
        else:
            filter_form = FilterForm(filtersets, request.user)

        valid_form = filter_form.is_valid()

        for set in filtersets.all():
            for filter in set.filters.all():

                if filter_form.is_valid():
                    value = filter_form.cleaned_data[filter.name]
                    if not value:
                        filter.execute_function()
                        value = filter.default

                else:
                    filter.execute_function()
                    value = filter.default

                if filter.type == FILTER_TYPE_DATE:
                    params[filter.name] = value.strftime("%Y%m%d")
                elif filter.type == FILTER_TYPE_COMBO:
                    special_params[filter.name] = "(" + (("".join(["%s"] * len(value)) % tuple(value))) + ")"
                else:
                    params[filter.name] = value

    series_results = []
    labels = []
    for s in report.serietype_set.all():
        query = s.serie.query
        if re.compile("[^%]%[^%(]").search(query):
            return render_to_response(
                "messagebox-error.html",
                {
                    "title": _(u"Query error"),
                    "message": _(
                        u"Single '%' found, replace with double '%%' to properly escape the SQL wildcard caracter '%'."
                    ),
                },
            )

        cursor = connection_source.cursor()

        if special_params:
            for sp in special_params.keys():
                query = re.compile("%\(" + sp + "\)s").sub(special_params[sp], query)
            try:
                serie_start_time = datetime.datetime.now()
                cursor.execute(query, params)
            except:
                import sys

                (exc_type, exc_info, tb) = sys.exc_info()
                return render_to_response("messagebox-error.html", {"title": exc_type, "message": exc_info})

        else:
            cursor.execute(query, params)
            serie_start_time = datetime.datetime.now()

        labels.append(re.compile("aS\s(\S*)", re.IGNORECASE).findall(query))

        if output_type == "chart":
            series_results.append(data_to_js_chart(cursor.fetchall(), s.serie.tick_format, report.orientation))
        elif output_type == "grid":
            series_results.append(data_to_js_grid(cursor.fetchall(), s.serie.tick_format))

        s.serie.last_execution_time = (datetime.datetime.now() - serie_start_time).seconds
        s.serie.avg_execution_time = (s.serie.avg_execution_time or 0 + s.serie.last_execution_time) / 2
        s.serie.save()

        try:
            serie_statistics = SeriesStatistic()
            serie_statistics.serie = s.serie
            serie_statistics.user = request.user
            serie_statistics.execution_time = (datetime.datetime.now() - serie_start_time).seconds
            serie_statistics.params = ", ".join(["%s = %s" % (k, v) for k, v in filter_form.cleaned_data.items()])
            serie_statistics.save()
        except:
            pass

    try:
        report_statistics = ReportStatistic()
        report_statistics.report = report
        report_statistics.user = request.user
        report_statistics.execution_time = (datetime.datetime.now() - start_time).seconds
        report_statistics.params = "%s" % (", ".join(["%s = %s" % (k, v) for k, v in filter_form.cleaned_data.items()]))
        report_statistics.save()
    except:
        pass

    if report.orientation == "v":
        h_axis = "x"
        v_axis = "y"
    else:
        h_axis = "y"
        v_axis = "x"

    data = {
        "chart_data": ",".join(series_results),
        "series_results": series_results,
        "chart_series": report.serietype_set.all(),
        "chart": report,
        "h_axis": h_axis,
        "v_axis": v_axis,
        "ajax": True,
        "query": query,
        "params": params,
        "series_labels": labels,
        "time_delta": datetime.datetime.now() - start_time,
    }

    if output_type == "chart":
        return render_to_response("single_chart.html", data, context_instance=RequestContext(request))
    elif output_type == "grid":
        return render_to_response("single_grid.html", data, context_instance=RequestContext(request))
    else:
        return render_to_response(
            "messagebox-error.html", {"title": _(u"Error"), "message": _(u"Unknown output type (chart, table, etc).")}
        )
예제 #19
0
def coverage_detail(request, ticker_symbol):

	try:
		ticker = Ticker.objects.get(ticker_symbol=ticker_symbol)
	except:
		# if the ticker isn't found, redirect to the listing of all tickers
		return redirect('coverage_index')

	services_to_filter_by = None
	service_filter_description = None
	tickers_to_filter_by = None
	single_authors = get_authors_from_article_set()
	audit_filter_form = None

	if request.POST:

		if 'coverage' in request.POST:
			audit_filter_form = FilterForm(request.POST)

			# delete records that are already there
			coverage_type_objects = CoverageType.objects.filter(ticker=ticker)
			print 'deleting existing CoverageType records for %s (%d)' % (ticker.ticker_symbol, len(coverage_type_objects))
			coverage_type_objects.delete()

			# replace them with the records passed along in POST
			# we expect the keys per selection to have this format: "cid_x__sid_y", where x is a content choice integer value, y is a service id
			selected_keys = [k for k in request.POST if k.startswith('author_')]
			for k in selected_keys:

				k = k.replace('author_','')
				print k, '----pants----'
				choice_id, service_id = k.replace("cid_","").replace("sid_","").split('__')

				ct = CoverageType()
				ct.coverage_type = int(choice_id)
				ct.ticker = ticker
				ct.service = Service.objects.get(id=service_id)

				author_key = 'author_'+k

				print author_key

				if author_key in request.POST:
					ct.author = request.POST[author_key]

				ct.save()
				print 'added CoverageType record: %s %s %d %s' % (ct.service.pretty_name, ct.ticker.ticker_symbol, ct.coverage_type, ct.author)
		else:
			audit_filter_form = FilterForm(request.POST)


		if audit_filter_form.is_valid():
			if 'services' in audit_filter_form.cleaned_data:
				if len(audit_filter_form.cleaned_data['services']) > 0:
					services_to_filter_by = audit_filter_form.cleaned_data['services']

	elif request.GET:
		initial_form_values = {}
		if 'tickers' in request.GET:
			initial_form_values['tickers'] = ticker
		if 'service_ids' in request.GET:
			services_to_filter_by = _get_service_objects_for_service_ids(request.GET.get('service_ids'))
			initial_form_values['services'] = services_to_filter_by

		audit_filter_form = FilterForm(initial=initial_form_values)

	else:
		audit_filter_form = FilterForm()

	if services_to_filter_by:
			pretty_names_of_services_we_matched = [s.pretty_name for s in services_to_filter_by]
			pretty_names_of_services_we_matched.sort()
			service_filter_description = ', '.join(pretty_names_of_services_we_matched)
	else:
		pass

	services = Service.objects.all()
	
	today = datetime.now()
	date_today = today.date()
	ninety_days_ago = (date_today - timedelta(days=90))

	articles = [a for a in Article.objects.filter(ticker=ticker).exclude(tags=None).exclude(tags='') if a.date_pub is not None and a.date_pub.date() >= ninety_days_ago]

	relevant_articles = set()
	ten_percent_promises = set()
	everlasting = set()
	analysis = set()
	featured = set()
	earnings = set()
	mission_log = set()
	buy_recommendations = set()
	five_and_three = set()
	best_buys_now = set()
	two_minute_drills = set()
	commentary = set()
	news = set()

	for a in articles:
		if '10 promise' in a.tags:
			ten_percent_promises.add(a)
		if 'everlasting' in a.tags:
			everlasting.add(a)
		if 'analysis' in a.tags:
			analysis.add(a)
		if 'featured' in a.tags:
			featured.add(a)
		if 'earnings' in a.tags:
			earnings.add(a)
		if 'mission_log' in a.tags:
			mission_log.add(a)
		if 'buy recommendation' in a.tags:
			buy_recommendations.add(a)
		if '5 and 3' in a.tags:
			five_and_three.add(a)
		if 'best buys now' in a.tags:
			best_buys_now.add(a)
		if '2 minute drill' in a.tags:
			two_minute_drills.add(a)
		if 'commentary' in a.tags:
			commentary.add(a)
		if 'news' in a.tags:
			news.add(a)

	print request.POST

	dictionary_of_values = {
		'ticker': ticker,
		'form': audit_filter_form,
		'service_filter_description': service_filter_description,
		'coverage_type_choices': COVERAGE_CHOICES,
		'services': services,
		'single_authors': single_authors,
		'title_value': '%s (%s)' % (ticker.company_name, ticker.ticker_symbol),
		'relevant_articles': relevant_articles,
		'ten_percent_promises': ten_percent_promises,
		'everlasting': everlasting,
		'featured': featured,
		'earnings': earnings,
		'mission_log': mission_log,
		'buy_recommendations': buy_recommendations,
		'five_and_three': five_and_three,
		'best_buys_now': best_buys_now,
		'two_minute_drills': two_minute_drills,
		'commentary': commentary,
		'news': news,
	}

	return render(request, 'satellite/coverage_detail.html', dictionary_of_values)
예제 #20
0
def articles_index(request):

	tickers_to_filter_by = None
	services_to_filter_by = None
	ticker_filter_description = None
 	service_filter_description = None

	page_num = 1

	if request.POST:
		if 'page_number' in request.POST:
			page_num = int(request.POST['page_number'])

		article_filter_form = FilterForm(request.POST)

		if article_filter_form.is_valid():
			if 'tickers' in article_filter_form.cleaned_data:
				tickers_user_input = article_filter_form.cleaned_data['tickers'].strip()
				if tickers_user_input != '':
					tickers_to_filter_by = _get_ticker_objects_for_ticker_symbols(tickers_user_input)

			if 'services' in article_filter_form.cleaned_data:
				if len(article_filter_form.cleaned_data['services']) > 0:
					services_to_filter_by = article_filter_form.cleaned_data['services']

	elif request.GET:
		initial_form_values = {}

		if 'tickers' in request.GET:
			tickers_user_input = request.GET.get('tickers')
			tickers_to_filter_by = _get_ticker_objects_for_ticker_symbols(tickers_user_input)

			initial_form_values['tickers'] = tickers_user_input
		if 'service_ids' in request.GET:
			services_to_filter_by = _get_service_objects_for_service_ids(request.GET.get('service_ids'))
			initial_form_values['services'] = services_to_filter_by

		article_filter_form = FilterForm(initial=initial_form_values)

	else:
		article_filter_form = FilterForm()


	if tickers_to_filter_by:
		ticker_filter_description = ', '.join([t.strip() for t in tickers_user_input.split(",")])
	if services_to_filter_by:
		pretty_names_of_services_we_matched = [s.pretty_name for s in services_to_filter_by]
		pretty_names_of_services_we_matched.sort()
		service_filter_description = ', '.join(pretty_names_of_services_we_matched)


	if tickers_to_filter_by is not None and services_to_filter_by is not None:
		articles = Article.objects.filter(ticker__in=tickers_to_filter_by, service__in=services_to_filter_by).order_by('-date_pub')
	elif tickers_to_filter_by is not None:
		articles = Article.objects.filter(ticker__in=tickers_to_filter_by).order_by('-date_pub')
	elif services_to_filter_by is not None:
		articles = Article.objects.filter(service__in=services_to_filter_by).order_by('-date_pub')
	else:
		articles = Article.objects.all().order_by('-date_pub')


	paginator = Paginator(articles, 100)

	try:
		articles_subset = paginator.page(page_num)
	except PageNotAnInteger:
		# page is not an integer; let's show the first page of results
		articles_subset = paginator.page(1)
	except EmptyPage:
		# the user asked for a page way beyond what we have available;
		# let's show the last page of articles, which we can calculate
		# with paginator.num_pages
		articles_subset = paginator.page(paginator.num_pages)


	if len(articles):
		article_most_recent_date = articles[0].date_pub
		article_oldest_date = articles[len(articles)-1].date_pub
	else:
		article_most_recent_date = "n/a"
		article_oldest_date = "n/a"

	authors = [art.author for art in articles]
	authors_set = set(authors)
	num_authors = len(authors_set)

	num_articles = len(articles)

	article_defns = []
	for article in articles_subset:
		byline_meta_data = ''
		byline_match = BylineMetaData.objects.filter(byline=article.author)
		if byline_match:
			byline_meta_data = byline_match[0].services
		article_defns.append({
			'article':article,
			'author_service_associations': byline_meta_data,
			})

	dictionary_of_values = {
		'form': article_filter_form,
		'articles': articles_subset,
		'article_defns': article_defns,
		'pub_date_newest': article_most_recent_date,
		'pub_date_oldest': article_oldest_date,
		'num_authors' : num_authors,
		'num_articles' : num_articles,
		'service_filter_description': service_filter_description,
		'ticker_filter_description': ticker_filter_description
	}

	return render(request, 'satellite/articles_index.html', dictionary_of_values)
예제 #21
0
def user_map(request):
    #os.chdir(os.path.dirname(__file__))
    #pageMessage = None
    pageMessage = None

    if request.method == 'POST':
        #arr = json.loads(request.body)
        form = FilterForm(request.POST)
        form1 = CoordForm(request.POST)
        print("Hello")
        if form.is_valid() or form1.is_valid():

            rend = request.POST['myRender']
            coords = request.POST['myCoords']

            print(rend)
            print(coords)

            x1 = float(coords.split(",")[0])
            print(str(x1))
            y1 = float(coords.split(",")[1])

            #arr = json.loads(request.body)
            #for key in request.POST:
            #    print(key)
            #   value = request.POST[key]
            #    print(value)
            #test = request.POST['csrfmiddlewaretoken']
            #print("This - " + test)

            #rend = request.POST['myRender']

            #print("Attay[0] - " + str(arr[0]))
            #print(rend)
            #arr = [1,2,3,4]
            x1, y1 = transform(inProj, outProj, x1, y1)
            #print(str(x1) + ", " + str(y1))
            #temporary test are for 3d model
            #threshold is 10 km
            thold = 10000.
            data_av = False
            lakes_xo = 322173.0
            lakes_yo = 515831.0
            walton_xo = 620000.0
            walton_yo = 220000.0

            #test if it is near the lakes model
            dist = ((x1 - lakes_xo)**2 + (y1 - lakes_yo)**2)**0.5
            if dist <= thold:
                data_av = True
        #test if it is near the lakes model
            dist = ((x1 - walton_xo)**2 + (y1 - walton_yo)**2)**0.5
            if dist <= thold:
                data_av = True

            if data_av:
                pageMessage = "3D Terrain model available"
                return render(request, 'terrainviewer/north_lakes_render.html')
            else:
                pageMessage = "No 3D Terrain model available"

            print(pageMessage)
        #return HttpResponseRedirect("http://127.0.0.1:8000/terrainviewer/tester")
    else:
        form = FilterForm()
        form1 = CoordForm()
    return render(request, 'terrainviewer/selectionMessage.html', {
        'form1': form1,
        'form': form,
        'pageMessage': pageMessage,
    })
예제 #22
0
파일: views.py 프로젝트: swasher/pdfupload
def grid(request, mode=''):

    # This code will create 'shelve.db' if it absent. You need uncoment code and
    # reload page. So 'shelve.db' will be created
    # d = shelve.open('shelve.db')
    # d['IMPORT_MODE'] = False
    # d.close()

    d = shelve.open('shelve.db')
    import_mode = d['IMPORT_MODE']
    d.close()

    context = RequestContext(request)

    myquery = Q()
    # Фильтр по умолчанию - за последние n дней.
    n = 60
    start = datetime.datetime.now() - datetime.timedelta(days=n)
    end = datetime.datetime.now()
    defaultfilter = Q(datetime__range=(start, end))

    # Если не указано иное, то по умолчанию используется темплайт grid
    shablon = 'grid.html'

    if request.method == 'GET':
        # В эту ветку мы можем попасть, если нажато Filter или Print или Clear
        form = FilterForm(request.GET)
        if form.is_valid():
            """
            DEPRECATED
            # Логика по датам: первый if - введены обе даты, elif - если введена только начальная дата -
            # с нее по сегодня, иначе - за последние n дней.
            if form.cleaned_data['from_date'] and form.cleaned_data['to_date']:
                start = form.cleaned_data['from_date']
                end = form.cleaned_data['to_date'] + datetime.timedelta(days=1)
                myquery &= Q(datetime__range=(start, end))
            elif form.cleaned_data['from_date']:
                start = form.cleaned_data['from_date']
                end = datetime.datetime.now() + datetime.timedelta(days=1)
                myquery &= Q(datetime__range=(start, end))
            else:
                myquery &= defaultfilter

            if form.cleaned_data['contractor']:
                myquery &= Q(contractor__exact=form.cleaned_data['contractor'])
            if form.cleaned_data['machine']:
                myquery &= Q(machine__exact=form.cleaned_data['machine'])
            if form.cleaned_data['filename']:
                if form.cleaned_data['filename'][0] == '-':
                    myquery &= ~Q(pdfname__icontains=form.cleaned_data['filename'][1:])
                else:
                    myquery &= Q(pdfname__icontains=form.cleaned_data['filename'])
            """

            #### НОЫВАЯ ЛОГИКА ####

            # Если пользователь задал хотя бы один фильтр, то применяем только явно заданные фильтры. Иначе применяем фильтр "за последние два месяца".
            if form.cleaned_data['from_date'] or form.cleaned_data['to_date'] or form.cleaned_data['contractor'] or form.cleaned_data['machine'] or form.cleaned_data['filename']:

                # Если заданы обе даты, то делаем выборку между ними, иначе проверяем, задана ли начальная дата, и делаем выборку от нее по today
                if form.cleaned_data['from_date'] and form.cleaned_data['to_date']:
                    start = form.cleaned_data['from_date']
                    end = form.cleaned_data['to_date'] + datetime.timedelta(days=1)
                    myquery &= Q(datetime__range=(start, end))
                elif form.cleaned_data['from_date']:
                    start = form.cleaned_data['from_date']
                    end = datetime.datetime.now() + datetime.timedelta(days=1)
                    myquery &= Q(datetime__range=(start, end))

                if form.cleaned_data['contractor']:
                    myquery &= Q(contractor__exact=form.cleaned_data['contractor'])
                if form.cleaned_data['machine']:
                    myquery &= Q(machine__exact=form.cleaned_data['machine'])

                # Если предварить фильтр по имени файла дефисом, то это исключит имена, вместо добавления
                if form.cleaned_data['filename']:
                    if form.cleaned_data['filename'][0] == '-':
                        myquery &= ~Q(pdfname__icontains=form.cleaned_data['filename'][1:])
                    else:
                        myquery &= Q(pdfname__icontains=form.cleaned_data['filename'])
            else:
                myquery &= defaultfilter

            if mode == 'clear':
                myquery = defaultfilter
                form = FilterForm()

            table = Grid.objects.filter(myquery).order_by('datetime').reverse()

            if mode == 'printing':
                table = table.reverse()
                shablon = 'printing.html'
            if mode == 'filter':
                pass
    else:
        # В эту ветку попадаем, если пользователем перед этим не был применен фильтр.
        # Например, после Delete или первый заход на страницу
        table = Grid.objects.filter(defaultfilter).order_by('datetime').reverse()
        form = FilterForm()

    sum_plates = {}
    for m in PrintingPress.objects.all():
        total = table.filter(machine__name=m.name).aggregate(Sum('total_plates'))
        if total['total_plates__sum']:
            sum_plates[m.name] = total['total_plates__sum']

    return render_to_response(shablon, {'table': table, 'form': form, 'sum_plate': sum_plates, 'import_mode': import_mode}, context)