X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=turbot%2Fpuzzle.py;h=08e86218738bbfba6cdeff598ded4acdfb758cec;hb=5e7ee7c20f71996cedd04586d7139250c6704c0d;hp=b361b10f3d322ce5efb43abd92c3e978e3e8c9d3;hpb=3385d460742786491db31c1587a86886a3e1b6c8;p=turbot diff --git a/turbot/puzzle.py b/turbot/puzzle.py index b361b10..08e8621 100644 --- a/turbot/puzzle.py +++ b/turbot/puzzle.py @@ -129,8 +129,9 @@ def puzzle_matches_one(puzzle, pattern): """Returns True if this puzzle matches the given string (regexp) A match will be considered on any of puzzle title, round title, - puzzle URL, puzzle state, or solution string. The string can - include regular expression syntax. Matching is case insensitive. + puzzle URL, puzzle state, puzzle type, tags, or solution + string. The string can include regular expression syntax. Matching + is case insensitive. """ p = re.compile('.*'+pattern+'.*', re.IGNORECASE) @@ -151,21 +152,31 @@ def puzzle_matches_one(puzzle, pattern): if p.match(puzzle['state']): return True + if 'type' in puzzle: + if p.match(puzzle['type']): + return True + if 'solution' in puzzle: for solution in puzzle['solution']: if p.match(solution): return True + if 'tags' in puzzle: + for tag in puzzle['tags']: + if p.match(tag): + return True + return False def puzzle_matches_all(puzzle, patterns): """Returns True if this puzzle matches all of the given list of patterns A match will be considered on any of puzzle title, round title, - puzzle URL, puzzle state, or solution string. All patterns must - match the puzzle somewhere, (that is, there is an implicit logical - AND between patterns). Patterns can include regular expression - syntax. Matching is case insensitive. + puzzle URL, puzzle state, puzzle types, tags, or solution + string. All patterns must match the puzzle somewhere, (that is, + there is an implicit logical AND between patterns). Patterns can + include regular expression syntax. Matching is case insensitive. + """ for pattern in patterns: @@ -231,11 +242,21 @@ def puzzle_channel_topic(puzzle): def puzzle_channel_name(puzzle): """Compute the channel name for a puzzle""" + round = '' + if 'rounds' in puzzle: + round = '-' + puzzle_id_from_name(puzzle['rounds'][0]) + + meta = '' + if puzzle.get('type', 'plain') == 'meta': + meta = '-m' + # Note: We don't use puzzle['puzzle_id'] here because we're keeping # that as a persistent identifier in the database. Instead we # create a new ID-like identifier from the current name. - channel_name = "{}-{}".format( + channel_name = "{}{}{}-{}".format( puzzle['hunt_id'], + round, + meta, puzzle_id_from_name(puzzle['name']) ) @@ -279,7 +300,7 @@ def puzzle_update_channel_and_sheet(turb, puzzle, old_puzzle=None): old_sheet_name = puzzle_sheet_name(old_puzzle) if sheet_name != old_sheet_name: - turbot.sheets.renameSheet(turb, puzzle['sheet_url'], sheet_name) + turbot.sheets.rename_spreadsheet(turb, puzzle['sheet_url'], sheet_name) # Compute the Slack channel name and set it if it has changed channel_name = puzzle_channel_name(puzzle)