pyvec / naucse.python.cz

Website with learning materials / Stránka s učebními materiály
https://naucse.python.cz
Other
322 stars 118 forks source link

allow base + extra materials #205

Closed hroncok closed 7 years ago

hroncok commented 7 years ago

In run, currently, I can either use base without materials (will use materials form base) or define my own list of materials. I'd like to define materials as addition to base's materials.

Instead of this:

derives: pyladies
...
- base: loops
  date: 2017-10-03
  materials:
  - lesson: beginners/functions
    type: lesson
  - lesson: intro/turtle
    type: lesson
  - lesson: beginners/while
    type: lesson
  - title: Tahák s užitečnými funkcemi
    url: https://github.com/pyvec/cheatsheets/raw/master/basic-functions/basic-functions-cs.pdf
    type: cheatsheet
  - title: Domácí projekty (PDF)
    url: https://github.com/PyLadiesCZ/pyladies.cz/raw/master/original/v1/s003-looping/handout/handout3a.pdf
    type: homework

I want to do (something like):

derives: pyladies
...
- base: loops
  date: 2017-10-03
  extra_materials:
  - title: Domácí projekty (PDF)
    url: https://github.com/PyLadiesCZ/pyladies.cz/raw/master/original/v1/s003-looping/handout/handout3a.pdf
    type: homework
messa commented 7 years ago

To base: loops míří kam?

hroncok commented 7 years ago

Here: https://github.com/pyvec/naucse.python.cz/blob/7489d55bd1d03ec348ae9b7563f34b7ec3597588/courses/pyladies/info.yml#L85

messa commented 7 years ago

Kdyby to bylo v jednom souboru, tak by se dalo použít YAML magic &anchor a *alias.

Ještě mě tu napadá, že by se to dalo udělat jako obecnější filtr, který prostě umí vložit cokoli z jakéhokoli YAML souboru.

Vlastně kdyby se YAML předzpracovával Jinjou, tak by to šlo ještě jednodušeji :) Mimochodem, to předpracování Markdownu Jinjou je taky dobré :+1:

hroncok commented 7 years ago

Tohle není potřeba řešit na úrovni dat nebo yamlu. To vyřeší an úrovni načítání. Mmt.

hroncok commented 7 years ago

This is possible :tada:

https://github.com/pyvec/naucse.python.cz/blob/7489d55bd1d03ec348ae9b7563f34b7ec3597588/naucse/models.py#L249

encukou commented 7 years ago

Right, this particular thing is possible with +merge.

It's not possible to re-order materials, or add something in the middle of base's materials. In those cases the whole list needs to be repeated – but before overengineering a solution to that, I want to run with the simple +merge solution, and see how and where non-DRY metadata will hurt.

hroncok commented 7 years ago

That makes sense.