lpschedule-generator

libreplanet schedule generator - ricketyspace.net/lpschedule-generator
git clone git://git.ricketyspace.net/lpschedule-generator.git
Log | Files | Refs

commit f896e22ac564b84c0e5307c2dd461e82b3dd24f1
parent ce5118e301a7947f23d37ab352ef7e7db7009524
Author: rsiddharth <rsd@gnu.org>
Date:   Wed, 11 May 2016 03:09:33 +0000

Add `SpeakerTBA` feature for LP Schedule.

From now on `SpeakerTBA` can be given if the speaker for a session is
not decided yet; `SpeakerTBA` will be filtered out of the generated
HTML.

Addresses issue #4.

Diffstat:
libreplanet-templates/2016/lp-schedule.jinja2 | 20+++++++++++---------
tests/files/lp-sch-tba.md | 95+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/test_lps_gen.py | 73+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 179 insertions(+), 9 deletions(-)

diff --git a/libreplanet-templates/2016/lp-schedule.jinja2 b/libreplanet-templates/2016/lp-schedule.jinja2 @@ -23,15 +23,17 @@ {# make speakers macro #} {% macro mk_speakers(speakers) %} - <span class="program-session-speaker"> - {% for speaker in speakers %} - {% if loop.last %} - {{ speaker }} - {% else %} - {{ speaker }}, - {% endif %} - {% endfor %} - </span> + {% if speakers[0]|lower != 'speakertba' %} + <span class="program-session-speaker"> + {% for speaker in speakers %} + {% if loop.last %} + {{ speaker }} + {% else %} + {{ speaker }}, + {% endif %} + {% endfor %} + </span> + {% endif %} {% endmacro %} {# make room macro #} diff --git a/tests/files/lp-sch-tba.md b/tests/files/lp-sch-tba.md @@ -0,0 +1,95 @@ +## Saturday, March 19 + +### 10:55 - 11:40: Session Block 1A + +#### Advocate for Yourself at Work: Use More Free Software and Keep Contributing to the Community + +SpeakerTBA + +Room 32-141 + +Your workplace can exert a lot of control over how much free software you use, what you're allowed to work on in your own time and what kinds of tools you become an expert in. New employees don't always negotiate their contracts to make sure they can continue contributing to free software and current employees aren't always successful at advocating for using free software tools, choosing free software technologies or contributing changes back upstream when they do rely on free software. We'll address what's possible, what your legal department is likely to be concerned about and how to be a smooth negotiator at work. Many companies could benefit tremendously from using Free and Open Source Software, but free software enthusiasts and institutional gatekeepers are coming from very different perspectives. + +Free software developers and users tend to be most familiar with free software's benefits when compared to proprietary solutions; user freedom, reusing code, public code review for bugs, increased project capacity and cost. The uninitiated may -- unfortunately -- be most familiar with the risks, some real and some perceived. Employers also benefit from having workers who are passionate about their work, are well-connected to the free software community and are constantly learning about new technologies from their peers outside the company, but new employee contracts rarely recognize this unless you ask. Conversations about contracts, choosing new technologies and sharing an employee's work with another entity are high stakes negotiations. With a solid understanding of what worries and motivates the other parties, you can become a savvy advocate for free software at work. + +This talk will help you gather information, frame the conversation and make the best possible case for using and contributing to free software at work. + +#### Building new economies for open development and content + +Paige Peterson, MaidSoft + +RoomTBA + +DescTBA + +#### Challenges and future growth in libre media and conference video production + +George Chriss and others, Kat Walsh (moderator) + +Room 32-144 + +DescTBA + +### 11:50 - 12:30: Session Block 2A + +#### A community take on the license compliance industry + +SpeakerTBA + +Room 31-123 + +DescTBA + +#### Community technology for solidarity economies + +Andrew Seeder, Dudley Street Neighborhood Initiative + +RoomTBA + +DescTBA + +#### Effective outreach in four steps + +Marina Zhurakhinskaya, Red Hat + +Room 32-144 + +DescTBA + +### 13:00 - 13:50: Session Block 3A + +#### Free software alternatives to dominant proprietary solutions: A review of French initiatives + +Marianne Corvellec, April and Jonathan Le Lous, April + +RoomTBA + +DescTBA + +#### FSF at 30: history of free software + +SpeakerTBA + +RoomTBA + +A look back at free software history, with a live demonstration of software from the past being used to deliver a presentation in 2016. + +#### Getting the academy to support free software and open science + +Scott Dexter and Evan Misshula, CUNY, and Erin Glass, UCSD + +RoomTBA + +Academic Institutions and their researchers are some of the biggest beneficiaries of free software development. While individual researchers have contributed greatly to free software, they usually do so outside of the scope of their regular jobs and to the detriment of their academic careers. + +At CUNY, we have taken steps to change this unacceptable situation. Please come to this session and exchange ideas and strategies for having contribtions to free software valued by the University. + +#### GNU/Linux and Chill: Free Software on a College Campus + +Michaela R. Brown + +Room 42-042 + +Being a free software user isn't easy, especially when you're a college student. I spent a year at a school that taught Visual Basic as its primary programming language for freshmen and sophomores, where "Introduction to Programming" was an overview of the Windows OS, and where most of the professors would only accept papers typed in Times New Roman -- and I survived. + +In this session, I'll give students tips for making it through college while still adhering to the values we hold as free software users -- including alternative fonts, making a GNU/Linux live disk for use on public computers, avoiding the "Netflix and Chill" dilemma, and most importantly, ways to discuss free software with professors and fellow students. After leaving this session, students will feel empowered and able to hold their own as free users in a proprietary campus. diff --git a/tests/test_lps_gen.py b/tests/test_lps_gen.py @@ -516,6 +516,79 @@ class TestLPS(object): os.chdir(self.old_cwd) +class TestLPSTBA(object): + """Class tests TBAs in the LP schedule. + + """ + + @classmethod + def setup_class(self): + """Runs before running any tests in this class. + + """ + # Change current working directory to the tests directory. + self.old_cwd = os.getcwd() + os.chdir('tests') + + self.MD_FILE = path.join('files', 'lp-sch-tba.md') + self.MD_FILE_CONTENT = read_file(self.MD_FILE) + + self.SCH_TEMPLATE = path.join('..', 'libreplanet-templates/2016', + 'lp-schedule.jinja2') + + self.markdown = LPSMarkdown() + self.lps_dict = self.markdown(self.MD_FILE_CONTENT) + + + def setup(self): + """Runs before each test in this class. + + """ + lp_html = RenderHTML(self.lps_dict, self.SCH_TEMPLATE) + self.soup = BeautifulSoup(lp_html, 'html.parser') + + + def cleanup_speaker(self, sp): + return ' '.join([s.strip() for s in sp.string.split('\n') + if len(s.strip())]) + + + def test_LP_speakers(self): + """Tests the non-existence of `SpeakerTBA` in gen. HTML. + + """ + speakers = [ + 'Paige Peterson, MaidSoft', + 'George Chriss and others, Kat Walsh (moderator)', + 'Andrew Seeder, Dudley Street Neighborhood Initiative', + 'Marina Zhurakhinskaya, Red Hat', + 'Marianne Corvellec, April and Jonathan Le Lous, April', + 'Scott Dexter and Evan Misshula, CUNY, and Erin Glass, UCSD', + 'Michaela R. Brown', + ] + + for sp in self.soup.find_all(class_='program-session-speaker'): + sp_block = self.cleanup_speaker(sp) + assert_equal(sp_block, speakers.pop(0)) + + + def teardown(self): + """Cleans up things after each test in this class. + + """ + # Remove `speakers.noids` file if it exists. + if path.isfile('speakers.noids'): + os.remove('speakers.noids') + + + @classmethod + def teardown_class(self): + """Cleans up the mess after running all tests in this class. + """ + # Change back to the old cwd + os.chdir(self.old_cwd) + + class TestLPSpeakers(object): """ Class that tests everything related LP Speakers