def get_navigate_data(request, obj_type, obj_ref, obj_revi): obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi) FilterForm = get_navigate_form(obj) has_session = any(field in request.session for field in FilterForm.base_fields) initial = dict((k, v.initial) for k, v in FilterForm.base_fields.items()) if request.method == 'POST' and request.POST: form = FilterForm(request.POST) if form.is_valid(): request.session.update(form.cleaned_data) elif has_session: request.session.update(dict(doc_parts = "")) initial.update(request.session) form = FilterForm(initial) else: form = FilterForm(initial) request.session.update(initial) if not form.is_valid(): raise ValueError("Invalid form") graph = NavigationGraph(obj, [r.object for r in ctx.get("results", [])]) options = form.cleaned_data if options["update"]: options["doc_parts"] = [int(o) for o in options["doc_parts"].split("#") if o.isnumeric()] else: options["doc_parts"] = [] request.session.update(dict(doc_parts = "")) graph.set_options(options) graph.create_edges() map_string, url, path = graph.render() top, left, w, h = map(int, re.search(coords_rx, map_string).groups()) x_part_node_position = (2 * left + w) // 2 y_part_node_position = (2 * top + h) // 2 x_img_position_corrected = 1172 // 2 - x_part_node_position y_img_position_corrected = 500 // 2 - y_part_node_position img = Image.open(path) width, height = img.size ctx.update({ 'filter_object_form': form, 'map_areas': map_string, 'picture_path': "/"+url, 'x_img_position': x_img_position_corrected, 'y_img_position': y_img_position_corrected, 'img_width' : width, 'img_height' : height, 'center_x' : left + w // 2, 'center_y' : top + h //2, 'navigate_bool': True, }) return ctx
def get_navigate_data(request, obj_type, obj_ref, obj_revi): obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi) FilterForm = get_navigate_form(obj) has_session = any(field in request.session for field in FilterForm.base_fields) initial = dict((k, v.initial) for k, v in FilterForm.base_fields.items()) if request.method == 'POST' and request.POST: form = FilterForm(request.POST) if form.is_valid(): request.session.update(form.cleaned_data) elif has_session: request.session.update(dict(doc_parts="")) initial.update(request.session) form = FilterForm(initial) else: form = FilterForm(initial) request.session.update(initial) if not form.is_valid(): options = initial else: options = form.cleaned_data if options[OSR]: results = [r.object for r in ctx.get("results", [])] else: results = [] graph = NavigationGraph(obj, results) if options["update"]: options["doc_parts"] = [ int(o) for o in options["doc_parts"].split("#") if o.isnumeric() ] else: options["doc_parts"] = [] request.session.update(dict(doc_parts="")) graph.set_options(options) graph.create_edges() map_string, edges = graph.render() width, height = edges["width"], edges["height"] past = graph.time and timezone.now() - graph.time > datetime.timedelta( minutes=5) ctx.update({ 'filter_object_form': form, 'map_areas': map_string, 'img_width': width, 'img_height': height, 'navigate_bool': True, 'edges': edges, 'past': past, }) return ctx
def get_navigate_data(request, obj_type, obj_ref, obj_revi): obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi) FilterForm = get_navigate_form(obj) has_session = any(field in request.session for field in FilterForm.base_fields) initial = dict((k, v.initial) for k, v in FilterForm.base_fields.items()) if request.method == 'POST' and request.POST: form = FilterForm(request.POST) if form.is_valid(): request.session.update(form.cleaned_data) elif has_session: request.session.update(dict(doc_parts = "")) initial.update(request.session) form = FilterForm(initial) else: form = FilterForm(initial) request.session.update(initial) if not form.is_valid(): options = initial else: options = form.cleaned_data if options[OSR]: results = [r.object for r in ctx.get("results", [])] else: results = [] graph = NavigationGraph(obj, results) if options["update"]: options["doc_parts"] = [int(o) for o in options["doc_parts"].split("#") if o.isnumeric()] else: options["doc_parts"] = [] request.session.update(dict(doc_parts = "")) graph.set_options(options) graph.create_edges() map_string, edges = graph.render() width, height = edges["width"], edges["height"] past = graph.time and timezone.now() - graph.time > datetime.timedelta(minutes=5) ctx.update({ 'filter_object_form': form, 'map_areas': map_string, 'img_width' : width, 'img_height' : height, 'navigate_bool': True, 'edges' : edges, 'past' : past, }) return ctx