def edit(request, cid=None): if cid: chart = get_object_or_404(Chart, pk=cid) else: chart = Chart(name='blank_chart', data='1,2,3,4,5', chart_instructions=""" chart Line dataset1 encoding=text size 300 300 scale 0 5 endchart""") chart.save() data = '' scale = '' ns = {} if 'save_chart' in request.POST: ds, chartimg = interp(request.POST['data'], request.POST['inst']) ns['inst'] = request.POST['inst'] ns['data'] = '\r\n'.join([','.join(map(str, d)) for d in ds.values()]) ns['chartimg'] = chartimg chart.data = request.POST['data'] chart.chart_instructions = ns['inst'] chart.save() return HttpResponse('<a href="/view/%d/">%s</a>' % (chart.id, ns['chartimg'])) else: ns['data'] = chart.data ns['inst'] = chart.chart_instructions ds, ns['chartimg'] = interp(chart.data, chart.chart_instructions) ns['chart'] = chart return render_to_response('charts/edit.html', ns)
def setUpTestData(cls): super().setUpTestData() cls.game = Game(name="F-Zero") cls.game.save() ct1 = ChartType(name="CT1", game=cls.game, format_spec=[], order_ascending=True) ct1.save() cls.cg_kl = ChartGroup(name="Knight League", order_in_parent=1, game=cls.game) cls.cg_kl.save() cls.cg_ql = ChartGroup(name="Queen League", order_in_parent=2, game=cls.game) cls.cg_ql.save() cls.cg_mc1 = ChartGroup(name="Mute City I", order_in_parent=1, game=cls.game, parent_group=cls.cg_kl) cls.cg_mc1.save() cls.chart_mc1c = Chart(name="Course Time", order_in_group=1, chart_group=cls.cg_mc1, chart_type=ct1) cls.chart_mc1c.save() game_2 = Game(name="F-Zero: Maximum Velocity") game_2.save() ChartGroup(name="Pawn Cup", order_in_parent=1, game=game_2).save()
def visit_chart_group(self, group_spec, game, parent_group, order, common_chart_type=None): common_chart_type = group_spec.get('common_chart_type', common_chart_type) try: chart_group = ChartGroup.objects.get(game=game, parent_group=parent_group, name=group_spec['name']) except ChartGroup.DoesNotExist: chart_group = ChartGroup(game=game, parent_group=parent_group, name=group_spec['name'], order_in_parent=order, show_charts_together=group_spec.get( 'show_charts_together', False)) chart_group.save() if 'child_groups' in group_spec: for child_order, child_group in enumerate( group_spec['child_groups'], 1): self.visit_chart_group(child_group, game, chart_group, child_order, common_chart_type=common_chart_type) if 'charts' in group_spec: for chart_order, chart_spec in enumerate(group_spec['charts'], 1): # `chart_spec` can be either a dict, or just a name string. if isinstance(chart_spec, str): chart_name = chart_spec chart_type_name = None else: chart_name = chart_spec['name'] chart_type_name = chart_spec.get('type') if not chart_type_name: if not common_chart_type: raise ValueError( f"No chart type specified for chart {chart_name}" f" of group {group_spec['name']}" f" (group id {chart_group.id})") chart_type_name = common_chart_type chart_type = ChartType.objects.get(game=game, name=chart_type_name) try: Chart.objects.get(chart_group=chart_group, name=chart_name) except Chart.DoesNotExist: chart = Chart(chart_group=chart_group, name=chart_name, order_in_group=chart_order, chart_type=chart_type) chart.save()
def setUpTestData(cls): super().setUpTestData() cls.game = Game(name="Game") cls.game.save() ct1 = ChartType(name="CT1", game=cls.game, format_spec=[], order_ascending=True) ct1.save() # Make a chart group hierarchy with breadth and depth of at least 5. # And add about as many charts, some top level, some nested. for n in range(1, 5 + 1): cg = ChartGroup(name=f"Top level group {n}", order_in_parent=n, game=cls.game) cg.save() chart = Chart(chart_group=cg, name=f"Chart {cg.id}", order_in_group=1, chart_type=ct1) chart.save() cg = ChartGroup(name=f"Top level group 6", order_in_parent=6, game=cls.game) cg.save() prev_cg = cg for n in range(1, 5 + 1): cg = ChartGroup(name=f"Nested group {n}", order_in_parent=1, parent_group=prev_cg, game=cls.game) cg.save() prev_cg = cg for n in range(1, 5 + 1): chart = Chart(chart_group=cg, name=f"Nested chart {cg.id}", order_in_group=n, chart_type=ct1) chart.save()
def setUpTestData(cls): super().setUpTestData() cls.game = Game(name="G") cls.game.save() game_2 = Game(name="G") game_2.save() cg1 = ChartGroup(name="CG1", game=cls.game, order_in_parent=1) cg1.save() cls.ct1 = ChartType( name="CT1", game=cls.game, format_spec=[], order_ascending=True) cls.ct1.save() cls.ct2 = ChartType( name="CT2", game=cls.game, format_spec=[], order_ascending=True) cls.ct2.save() cls.c1 = Chart( name="C1", chart_group=cg1, order_in_group=1, chart_type=cls.ct1) cls.c1.save() cls.c2 = Chart( name="C2", chart_group=cg1, order_in_group=2, chart_type=cls.ct2) cls.c2.save() # Add FGs to game 1 specifying a different order from alphabetical # or FG ID, so we can tell the order field is respected. cls.fg1 = FilterGroup(name="FG1", game=cls.game, order_in_game=2) cls.fg1.save() cls.fg2 = FilterGroup(name="FG2", game=cls.game, order_in_game=1) cls.fg2.save() cls.fg3 = FilterGroup(name="FG3", game=cls.game, order_in_game=3) cls.fg3.save() cls.fg4 = FilterGroup(name="FG4", game=cls.game, order_in_game=4) cls.fg4.save() # Add one FG to game 2, so that we can tell we're only getting FGs # of game 1. cls.fg5 = FilterGroup(name="FG5", game=game_2, order_in_game=1) cls.fg5.save() # Don't link FG4, so we can tell we're only getting FGs of this CT. cls.ct1.filter_groups.add(cls.fg1, cls.fg2, cls.fg3)