def post(self): self._require_admin() event_key = self.request.get("event_key").strip() event = Event.get_by_id(event_key) if not event: self.redirect("/admin/event/" + event.key_name) return if event.playoff_type != PlayoffType.ROUND_ROBIN_6_TEAM: logging.warning("Can't set advancement for non-round robin events") self.redirect("/admin/event/" + event.key_name) return advancement_csv = self.request.get("advancement_csv") comp_level = self.request.get("comp_level") matches_per_team = int(self.request.get("num_matches")) if comp_level not in Match.ELIM_LEVELS: logging.warning("Bad comp level: {}".format(comp_level)) self.redirect("/admin/event/" + event.key_name) return parsed_advancement = CSVAdvancementParser.parse( advancement_csv, matches_per_team) advancement = PlayoffAdvancementHelper.generatePlayoffAdvancementFromCSV( event, parsed_advancement, comp_level) cleaned_matches = MatchHelper.deleteInvalidMatches( event.matches, event) matches = MatchHelper.organizeMatches(cleaned_matches) bracket_table = PlayoffAdvancementHelper.generateBracket( matches, event, event.alliance_selections) comp_levels = bracket_table.keys() for comp_level in comp_levels: if comp_level != 'f': del bracket_table[comp_level] existing_details = EventDetails.get_by_id(event.key_name) new_advancement = existing_details.playoff_advancement if existing_details and existing_details.playoff_advancement else {} new_advancement.update(advancement) event_details = EventDetails( id=event.key_name, playoff_advancement={ 'advancement': new_advancement, 'bracket': bracket_table, }, ) EventDetailsManipulator.createOrUpdate(event_details) self.redirect("/admin/event/" + event.key_name) return
def post(self, event_key): self._require_admin() event = Event.get_by_id(event_key) if not event: self.redirect("/admin/event/" + event.key_name) return details = EventDetails.get_by_id(event.key_name) if details: details.playoff_advancement = {} EventDetailsManipulator.createOrUpdate(details) self.redirect("/admin/event/" + event.key_name) return
def details(self): if self._details is None: self._details = EventDetails.get_by_id(self.key.id()) elif type(self._details) == Future: self._details = self._details.get_result() return self._details
def test_createOrUpdate(self): EventDetailsManipulator.createOrUpdate(self.old_event_details) self.assertOldEventDetails(EventDetails.get_by_id('2011ct')) EventDetailsManipulator.createOrUpdate(self.new_event_details) self.assertMergedEventDetails(EventDetails.get_by_id('2011ct'))
def details(self): if self._details is None: self._details = EventDetails.get_by_id(self.key.id()) return self._details