def __create_cams_draft(self): """Creates Cam's Draft smartgrid with two levels, three columns, three actions""" try: draft = get_object_or_404(Draft, slug='cam') except Http404: draft = Draft(name="Cam", slug="cam") draft.save() level1 = DesignerLevel(draft=draft, name="Foo", slug="foo", priority=1) level1.save() level2 = DesignerLevel(draft=draft, name="Bar", slug="bar", priority=2) level2.save() column1 = DesignerColumnName(draft=draft, name="Baz", slug='baz') column1.save() column2 = DesignerColumnName(draft=draft, name="Qux", slug='qux') column2.save() column3 = DesignerColumnName(draft=draft, name="Zob", slug='zob') column3.save() col_loc = DesignerColumnGrid(draft=draft, level=level1, column=5, name=column1) col_loc.save() col_loc = DesignerColumnGrid(draft=draft, level=level1, column=2, name=column2) col_loc.save() col_loc = DesignerColumnGrid(draft=draft, level=level2, column=1, name=column3) col_loc.save() action = smartgrid_mgr.instantiate_designer_action_from_library(draft, \ 'play-outside-cafe-1') grid_loc = DesignerGrid(draft=draft, level=level1, column=5, row=2, action=action) grid_loc.save() action = smartgrid_mgr.instantiate_designer_action_from_library(draft, \ 'use-stairs') grid_loc = DesignerGrid(draft=draft, level=level1, column=2, row=1, action=action) grid_loc.save() action = smartgrid_mgr.instantiate_designer_action_from_library(draft, \ 'energy-city') grid_loc = DesignerGrid(draft=draft, level=level2, column=5, row=5, action=action) grid_loc.save()
def instantiate_designer_level_from_smartgrid(draft, slug): """Creates or over writes a DesignerLevel for the given designer draft and level slug.""" level = get_object_or_404(Level, slug=slug) try: des_level = get_object_or_404(DesignerLevel, draft=draft, slug=slug) except Http404: des_level = DesignerLevel() des_level.draft = draft _copy_fields(level, des_level) return des_level
def copy_draft(from_draft, to_draft): """Copies all the items in from_draft to copy_draft.""" # print "copy_draft(%s, %s)" % (from_draft, to_draft) clear_designer(to_draft) # levels for level in DesignerLevel.objects.filter(draft=from_draft): copy = DesignerLevel(draft=to_draft) _copy_fields_no_foriegn_keys(level, copy) copy.save() # ColumnNames for column in DesignerColumnName.objects.filter(draft=from_draft): copy = DesignerColumnName(draft=to_draft) _copy_fields_no_foriegn_keys(column, copy) copy.save() # DesignerColumnGrid for loc in DesignerColumnGrid.objects.filter(draft=from_draft): level = get_designer_level(to_draft, loc.level.slug) column = get_designer_column_name(to_draft, loc.name.slug) copy = DesignerColumnGrid(draft=to_draft, name=column, level=level) _copy_fields_no_foriegn_keys(loc, copy) copy.save() # DesignerActions for action in DesignerAction.objects.filter(draft=from_draft): action = get_designer_action(from_draft, action.slug) if action.type == 'activity': copy = DesignerActivity(draft=to_draft) elif action.type == 'commitment': copy = DesignerCommitment(draft=to_draft) elif action.type == 'event': copy = DesignerEvent(draft=to_draft) _copy_fields_no_foriegn_keys(action, copy) copy.save() # Copy all the DesignerTextPropmtQuestions for question in DesignerTextPromptQuestion.objects.filter(action=action, draft=from_draft): des_obj = DesignerTextPromptQuestion(action=copy, draft=to_draft) _copy_fields_no_foriegn_keys(question, des_obj) des_obj.save() # DesignerGrid for loc in DesignerGrid.objects.filter(draft=from_draft): level = get_designer_level(to_draft, loc.level.slug) action = get_designer_action(to_draft, loc.action.slug) copy = DesignerGrid(level=level, draft=to_draft, action=action) _copy_fields_no_foriegn_keys(loc, copy) copy.save() return to_draft
def setUp(self): self.__create_cams_draft() self.action_slug = 'intro-video' self.col_slug = 'get-started' try: self.draft = get_object_or_404(Draft, slug="default") except Http404: self.draft = Draft(name="Default", slug="default") self.draft.save() try: self.designer_level = get_object_or_404(DesignerLevel, slug='level-1') except Http404: self.designer_level = DesignerLevel(name="Level 1", slug="level-1", priority=1) self.designer_level.draft = self.draft self.designer_level.save()
def setUp(self): """Sets up the test evironment for the Designer views.""" self.user = test_utils.setup_superuser(username="******", password="******") challenge_mgr.register_page_widget("sgg_designer", "smartgrid_design") from apps.managers.cache_mgr import cache_mgr cache_mgr.clear() self.client.login(username="******", password="******") try: draft = smartgrid_mgr.get_designer_draft(self.draft_slug) except Http404: # shouldn't happen Default draft is defined in base_settings draft = Draft(name='Default', slug='default') draft.save() try: level = smartgrid_mgr.get_designer_level(draft, self.level_slug) except Http404: # ensure there is a DesignerLevel level = DesignerLevel(name="Level 1", slug=self.level_slug, priority=1, draft=draft) level.save()
def copy_smartgrid_to_designer(draft): """Copies the current Smart Grid Game to the given designer draft.""" # Clear out the Designer clear_designer(draft) # Copy the levels for lvl in Level.objects.all(): try: des_lvl = get_object_or_404(DesignerLevel, draft=draft, slug=lvl.slug) except Http404: des_lvl = DesignerLevel() des_lvl.draft = draft _copy_fields(lvl, des_lvl) # Copy the ColumnNames for col in ColumnName.objects.all(): try: des_col = get_object_or_404(DesignerColumnName, draft=draft, slug=col.slug) except Http404: des_col = DesignerColumnName() des_col.draft = draft _copy_fields(col, des_col) # Copy the location information for grid in ColumnGrid.objects.all(): col = DesignerColumnGrid() col.level = get_designer_level(draft, grid.level.slug) col.column = grid.column col.name = get_designer_column_name(draft, grid.name.slug) col.draft = draft col.save() # Copy the Actions for action in Action.objects.all(): instantiate_designer_action_from_smartgrid(draft, action.slug) # Copy the location information for grid in Grid.objects.all(): loc = DesignerGrid() loc.level = get_designer_level(draft, grid.level.slug) loc.column = grid.column loc.row = grid.row loc.action = get_designer_action(draft, grid.action.slug) loc.draft = draft loc.save()
def add_level(request, draft_slug): """Creates a new level.""" draft = smartgrid_mgr.get_designer_draft(draft_slug) if request.method == 'POST': form = AddLevelForm(request.POST) if form.is_valid(): max_priority = 0 for level in DesignerLevel.objects.filter(draft=draft): if max_priority < level.priority: max_priority = level.priority max_priority += 1 slug = slugify(form.cleaned_data['level_name']) level = DesignerLevel(name=form.cleaned_data['level_name'], slug=slug, \ priority=max_priority, draft=draft) predicate = form.cleaned_data['unlock_condition'] if not predicate_mgr.validate_predicates(predicate): level.unlock_condition = predicate else: level.unlock_condition = 'False' # What is the correct default value? level.save() response = HttpResponseRedirect("/sgg_designer/?draft=%s" % draft.slug) return response
def supply(request, page_name): """ supply view_objects for widget rendering.""" _ = page_name user = request.user gcc_settings, _ = GccSettings.objects.get_or_create(user=user) draft_choices = Draft.objects.all() draft = None tree_list = None levels = [] if len(draft_choices) != 0: try: draft_slug = request.REQUEST['draft'] except KeyError: try: draft_slug = request.COOKIES['current-designer-draft'] except KeyError: draft_slug = draft_choices[0].slug try: draft = smartgrid_mgr.get_designer_draft(draft_slug) except Http404: draft = draft_choices[0] levels = DesignerLevel.objects.filter(draft=draft) if len(levels) == 0: # need to create default level l = DesignerLevel() l.name = "Level 1" # no name l.slug = "default" l.unlock_condition = "True" l.unlock_condition_text = "Unlocked" l.draft = draft l.save() levels = DesignerLevel.objects.filter(draft=draft) ts = action_dependency.build_designer_grid_trees(draft) tree_list = [] for k in list(ts): tree_list.append(ts[k].tohtmlstring()) results = gcc.run_designer_checks(draft, gcc_settings) return { 'draft': draft, 'draft_choices': draft_choices, 'levels': levels, 'columns': LibraryColumnName.objects.all(), 'activities': LibraryActivity.objects.all(), 'commitments': LibraryCommitment.objects.all(), 'events': LibraryEvent.objects.all(), 'fillers': Filler.objects.all(), 'reset_form': RevertToSmartgridForm(), 'publish_form': DeployToSmartgridForm(), 'example_grid_form': ExampleGridsForm(), 'add_level_form': AddLevelForm(), 'delete_level_form': DeleteLevelForm(), 'event_date_form': EventDateForm(), 'new_draft_form': NewDraftForm(), 'delete_draft_form': DeleteDraftForm(), 'load_template_form': LoadTemplateForm(), 'gcc_settings_form': GccSettingsForm(instance=gcc_settings), 'palette': smartgrid_mgr.get_designer_palette(draft), 'designer_grid': smartgrid_mgr.get_designer_grid(draft), 'designer_actions': smartgrid_mgr.get_designer_action_slugs(draft), 'designer_columns': smartgrid_mgr.get_designer_column_name_slugs(draft), 'errors': results[_ERRORS], 'warnings': results[_WARNINGS], 'trees': tree_list, }