Software Carpentry is now running three events a week. That number could double by the end of 2015 but only if we can streamline setup and organization. The goal of this project is to build a web-based workshop administration application using Django to do that. It is not intended to be visible to the general public, or even to instructors (at least initially --- we may add that later). Instead, the target audience is administrators, most of whom are non-programmers, who need to keep track of what workshops are being arranged, when they're supposed to occur, who's teaching what, and so on.
To get started:
-
Install Django and its dependencies.
-
Setup your local database. There are two ways you can do this.
-
If you have access to the legacy data:
-
Create an empty database by running:
make migrations
-
Fill that database by running:
make import
-
-
Otherwise set up the redacted data with:
make database
-
-
Start a local Django development server by running:
python manage.py runserver
-
Open http://localhost:8000/workshops/ in your browser and start clicking.
Amy's data model is mostly done. What it needs now is views and controllers so that workshop organizers can inspect, add, and correct data. If you'd like to help, please fork this repository and send a pull request, or contact Greg Wilson.
Note:
if you are new to the project,
anything at all is welcome as a way of familiarizing yourself with the code.
After that,
please concentrate on features marked essential
in the issue tracker
so that we can get this into service in January 2015.
Better layout,
incremental page updates via AJAX,
and things like that can all be left until we have something that actually works.
Pages for Admin Tool
-
Landing page
- List of provisional upcoming events (that need instructors)
- List of confirmed upcoming events
- Navigation links for other pages
-
Site Index
- Table showing:
- Domain name (link to domain)
- Site name (link to Site Details for that site)
- Number of past events
- Number of future events
- Link to Add Site Form
- Table showing:
-
Site Details
- Summary (domain name, site name)
- Lat/long
- Problematic: some sites don't have one, and others may have many
- List of links to past events
- List of links to future events
- (Optional) some way to show instructors whose airport is within XXX km of that location
- Wiki page for notes about site
- Contact person, location, etc., can change from workshop to workshop, so use a free-form wiki page
-
Add Site Form
- Domain name
- Site name
- ...submission sends to Site Details page for site
-
Event Index
- Table showing:
- Site name (link to Site Details page)
- Event slug (link to Event Details page)
- Instructor names (each links to Person Details page)
- Paginated
- Link to Add Event Form
- Table showing:
-
Event Details
- Site name (link to Site Details page)
- Slug
- GitHub website repository URL (editable)
- GitHub pages website (inferred)
- Kind (pulldown for "SWC", "DC", "WiSE", etc.)
- Host contact name and email (hopefully from the Person table)
- Instructor names (each links to Person Details page)
- Add instructors (multi-selection pulldown)
- Helper names (each links to Person Details page)
- Add helpers (multi-selection pulldown)
- Start date (calendar)
- End date (calendar)
- Eventbrite ID (editable, links to Eventbrite page)
- Links to pre- and post-assessment forms (if they exist)
- Link to instructor post-assessment forms (if they exist)
- Link to Google spreadsheet checklist (if it exists)
- Buttons to create pre- and post-assessment forms and checklist (if they don't exist)
- Note: we'll no longer try to track restricted vs. unrestricted enrolment (since there are too many variations)
-
Add Event Form
- Site name (link to Site Details page)
- Slug (editable right up until the moment we commit to dates)
- GitHub website repository URL (editable)
- GitHub pages website (inferred)
- Kind (pulldown for SWC, DC, WiSE, etc.)
- Instructor names (each links to Person Details page)
- Some way to distinguish lead instructor from others
- Add instructors (multi-selection pulldown)
- Helper names (each links to Person Details page)
- Add helpers (multi-selection pulldown)
- Start date (calendar)
- End date (calendar)
- Or provisional dates (while we're still trying to book things)
- Tick box for "Eventbrite registration" vs. "local registration"
- Wiki page (for free-form text notes)
- ...submission sends to Event Details page for event
- ...and creates [email protected] email address (?)
-
Person Index
- Table showing:
- Personal name (editable)
- Middle name (editable)
- Last name (editable)
- Email address (editable)
- Instructor or not (and if so, how many times have they taught?)
- Link to Person Details page
- Submit button (per person, so only one editable at a time)
- Paginated
- Alphabetical index (jump to...) on last name
- Link to Add Person Form
- Link to Upload Person Form
- Table showing:
-
Add Person Form
- Table allowing entry of:
- Personal name (editable)
- Middle name (editable)
- Last name (editable)
- Email address (editable)
- Event (editable, optional)
- Role (pulldown, required if Event provided)
- Add Row button
- Submit button
- ...submission returns to Add Person Form with message about people added
- Table allowing entry of:
-
Upload Person Form
- Text box to enter CSV data
- Choose File button to select CSV file
- Pulldown to select Event (optional)
- ...submission creates populated Add Person Form
- ...if Event selected, all Roles in Add Person Form initialized to "learner"
-
Person Details
- Personal name (editable)
- Middle name (editable)
- Family name (editable)
- Email address (editable)
- Instructor or not (and if so, how many times have they taught)
- Gender (pulldown of "male", "female", "other", "prefer not to say")
- Active (checkbox)
- Airport (pulldown)
- Note: this is just to give us an idea of where the person lives
- GitHub ID (editable)
- Twitter ID (editable)
- Website URL (editable)
- Checkboxes for:
- Shell
- Python
- R
- MATLAB
- Git
- Mercurial
- SQL
- Submit button
- ...submission returns to Person Details page
-
Cohort Index
- Table showing:
- Cohort name
- Start date
- End date
- Number enrolled
- Number complete
- Number incomplete
- Link to Cohort Details page
- Link to Add Cohort Form
- Table showing:
-
Cohort Details
- Cohort name
- Start date
- End date
- Number enrolled
- Number complete
- Number incomplete
- Table showing:
- Trainee name (link to Person Details page)
- Trainee status (pulldown)
- Add trainees (multi-select pulldown)
-
Badge Index
- Table showing:
- Badge name (editable)
- Badge title (editable)
- Criteria (editable)
- Link to Badge Details page
- Add Row button
- Submit button
- ...submission returns to Badge Index
- Table showing:
-
Badge Details
- Badge name (link to Badge Index page)
- Table showing:
- Recipient (link to Person Details page)
- Date of award (calendar)
- Add Row button
- Submit button
- ...submission returns to Badge Details
-
Airport Index
- Table showing:
- IATA code
- Airport name (editable)
- Latitude (editable)
- Longitude (editable)
- Add Row button
- Submit button
- (Optional) some way to show instructors within XXX km of that location
- ...submission returns to Airport Index page
- Table showing:
-
Admin
- Add accounts, password re-set, etc.