Giter VIP home page Giter VIP logo

universe_oa's Introduction

Universe OA

This is the blog aggregator of the Open Astronomy community. For now it's only been used for SoC programmes (GSoC/SoCiS).

Structure of this repository

There are three branches: main, run and gh-pages.

  • main includes only commits made by people and not automatically.
  • run runs on GH actions and updates the posts and everything
  • gh-pages is the built version of the page, also done automatically.

We could keep main and run in the same branch but this makes it easier to search the commits that we care about.

Blog engine

This blog aggregator is generated as a static site using Nikola.

The configuration file for the site is conf.py. Refer to Nikola's documentation for details on how to use it.

The blog aggregator

The blog aggregator is controlled by two files: gsoc.yml and gsoc_times.yml and executed by grab.py script.

  • gsoc.yml keeps a list of all the gsoc editions, the gsoc participants, their rss feed and the organisation they are working for.
  • gsoc_times.yml keeps a key-value record of the date from the last contribution for each participant.
  • grab.py reads from the files above and updates them after a new blog entry has been found. The entry is downloaded and added as an entry in the aggregator.

The Contributors tracker

A little widget is shown in the top of the website to track the blog posts of each participant. With our SoC rules, we require one post every fortnight.

The widget is created using a Nikola plugin. Its source is under plugins/sidebar/sidebar.py. It uses the logos and dates set in organisations.yml and dates_posts.yml load through the conf.py.

The plugin looks whether there are posts in the ranges between the dates provided, and places a symbol for each of the GSoC participants.

Updates for a new SoC season:

  1. Update gsoc_times.yml from run into main

    git restore --source run gsoc_times.yml
    

    This brings the latest updates to gsoc_times.yml.

  2. Add properties on gsoc.yml and on gsoc_times.yml for new students. For names we are using their github handles.

    gsocYYYY:
      gh_student_a:
        rss_feed: "rss-url" # TODO (add blog with gsoc tag)
        project: 'suborg' # TODO (add project as named on ..)

    Then, once completed that file you can run this snippet to fill gsoc_times.yml

    year=$(date +"%Y")
    lastyear=$(( ${year} - 1))
    sed -n "/^gsoc${year}/,/gsoc${lastyear}/p" gsoc.yml | grep "^  [[:alpha:]].*:$" | sed 's/^[ ]*//' | sed "s/$/ ${year}-05-01 00:00:00/g" >> gsoc_times.yml
    LC_COLLATE=C sort -o  gsoc_times.yml gsoc_times.yml # So it sorts as python does, first upper case, then lower
  3. Create a PR and ask students to PR to that filling it in. As in: 2018

  4. squash merge that pull request into main.

  5. Locally, update dates_post.yaml with the new date ranges for this season and commit it to main

  6. copy the new config files into the run branch, for example with:

    git rebase --onto run <x> <z>

    where <x> is the commit before than <y> which is the one we want to copy (up to included) to run. Then push it run and all should work. And then push to main

Debug it locally

  • remove all the output:
    rm -rf .doit.db.* && rm -rf cache && nikola clean && nikola forget && rm -rf __pycache__ && rm -rf output
  • run the grab if needed (modifying the gsoc_times) and build.
  • To debug the plugin, add doit.tools.set_trace() instead of breakpoint to get pdb working.

universe_oa's People

Contributors

dpshelio avatar bsipocz avatar rachittshah avatar siddharthlal25 avatar cadair avatar mirca avatar adwaitbhope avatar alex-ian-hamilton avatar theand9 avatar sedictious avatar astrojuanlu avatar jredondopizarro avatar jes24 avatar kakirastern avatar meuge avatar nocturnalastro avatar pkj-m avatar aquatiko avatar sahilyadav27 avatar tianxiaoma avatar tcjansen avatar yashrsharma44 avatar abhijeetmanhas avatar anandxkumar avatar encrypted-soul avatar rirze avatar vatch123 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.