Skip to content

Migrate open-response TextMatch levels to the new FreeResponse type#7867

Merged
joshlory merged 3 commits into
stagingfrom
migrate-free-response-levels
Apr 14, 2016
Merged

Migrate open-response TextMatch levels to the new FreeResponse type#7867
joshlory merged 3 commits into
stagingfrom
migrate-free-response-levels

Conversation

@joshlory

@joshlory joshlory commented Apr 13, 2016

Copy link
Copy Markdown
Contributor

Most of this change is already in review as part of PR #7854. The relevant commits for this PR are 686fd6b and 0375ace.

I used the following script to migrate the levels:

# Migrate TextMatch levels with no answer validation to use the new FreeResponse type
game = Game.find_by_name 'FreeResponse'
TextMatch.all.select{ |tm| !tm.properties['answers'] }.each do |tm|
  props = tm.properties
  instructions = [props['content1'], props['markdown']].compact.join("\n\n")
  level = FreeResponse.create!(
    name: tm.name,
    game: game,
    level_num: 'custom',
    user_id: 0,
    published: true,
    title: props['title'],
    height: props['height'],
    placeholder: props['placeholder'],
    markdown_instructions: instructions,
    solution: props['teacher_markdown']
  )
  tm.destroy!
end
  • TODO: Verify that the levels have the same ID after migration.

@joshlory joshlory force-pushed the migrate-free-response-levels branch from 147bbdd to 0375ace Compare April 14, 2016 01:00
@joshlory

joshlory commented Apr 14, 2016

Copy link
Copy Markdown
Contributor Author

Verified that the levels have the same ID after migration (because we find_or_create_by! level key).

irb(main):001:0> TextMatch.all.select{ |tm| !tm.properties['answers'] }.map(&:id) 
  TextMatch Load (5.9ms)  SELECT `levels`.* FROM `levels` WHERE `levels`.`type` IN ('TextMatch')
=> [1996, 2008, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2076, 2077, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283]

After rake seed:scripts:

irb(main):002:0> FreeResponse.pluck(:id)
   (3.1ms)  SELECT `levels`.`id` FROM `levels` WHERE `levels`.`type` IN ('FreeResponse')
=> [1996, 2008, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2076, 2077, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283]

Also spot-checked that my last attempt loaded correctly for a few migrated levels.

@wjordan

wjordan commented Apr 14, 2016

Copy link
Copy Markdown
Contributor

Can't say I can comment on the details all that well, but in general the migration procedure looks good to me.

@joshlory

joshlory commented Apr 14, 2016

Copy link
Copy Markdown
Contributor Author

I think level_num for these new levels should be 'custom' instead of nil. I will update.

@laurelfan

Copy link
Copy Markdown
Contributor

LGTM

@joshlory

Copy link
Copy Markdown
Contributor Author

As part of this change I've defaulted all FreeResponse levels to set skip_dialog and skip_sound to true. The dialog makes sense for validated questions, but adds an extra unnecessary click for unvalidated levels.

This dialog will never show up after clicking "Submit" on a FreeResponse level. The page will navigate to the next level when the user clicks "Submit".

skip_dialog

I've confirmed with the CSP level builders that this change is acceptable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants