carpentries / amy Goto Github PK
View Code? Open in Web Editor NEWA web-based workshop administration application built using Django.
Home Page: https://amy.carpentries.org
License: MIT License
A web-based workshop administration application built using Django.
Home Page: https://amy.carpentries.org
License: MIT License
The app must support search for events, persons, sites, etc., without using a public service such as Google (since we don't want personal identifying information to be made public).
Instead of trusting airport.country
and site.country
to avoid duplicates, its easier to just have a country table that can be referenced from other tables. This also makes it easier to enforce canonical spelling (e.g. by requiring admin credentials to add new countries).
If Eventbrite is being used to handle registration for an event, the event details page should allow the admin to validate the key. This should not happen automatically (since it takes a while, and some events don't use Eventbrite), but should be a single-button operation.
The entire application needs to be styled with CSS.
When invalid data is entered in a form produced by Django, the form is redisplayed with an error message, but the incorrect data is pre-filled in the offending box rather than the original pre-edit value. (For example, if you try to change the domain name for a site to a domain name that's already in use, the new domain name --- the one already in use --- is displayed instead of the original.) It would be helpful if the form displayed both what the user typed and the original data somehow.
Low priority.
The event details page should either:
In the former case, there should be a single-button way to create the required doc if it doesn't exist, and a single-button way to send the link to the event's instructors and hosts. The latter design would have fewer moving parts, but would mean giving instructors and hosts access to the application.
The "all events" page should list the instructors assigned to a workshop (so that we can easily see those that don't yet have instructors).
We do not presently record who helped teach which instructor training workshop. We should.
The lead instructor for a workshop should somehow be marked as such in all displays.
There should be a way to award someone a badge, either through a stand-alone form or by adding a row to the page showing everyone who has that badge.
There should be a simple way to generate the YAML showing the locations of all the airports our instructors are near (for use in the main Software Carpentry website).
As proposed in swcarpentry/DEPRECATED-site#701, I think it would be good to have an event.slots
or similar to count how many seats were available. And maybe event.applicants
if anyone was waitlisted. Comparing with event.attendance
will let us see how full the event was, which gives a hint at how soon we'll want to run a follow-up workshop.
The app should allow admins to add a single new person, either by adding a row to the "display all persons" page and editing in place, or via a form, or both.
The inline display of a person's information in the "all persons" page, and the display on the "show single person" page, should both show what badges that person has (if any) and how often they have been an instructor or helper.
The display of how often they've instructed/helped should somehow link to the workshops they've taught at or helped at.
The database records extra information for some people, including the things they're qualified to teach, the airport they're closest too, etc. There should be a way to display this in place (click to expand, click to hide).
The display of training cohorts should show how many people have completed, are incomplete, or are still in progress.
The event details page should have a button for validating the link to the GitHub repository that hosts the event's website. (Validation shouldn't be automatic, since it can take a while and some workshops may use a different mechanism for their sites, but it should still be possible.) Code needed for validation can be borrowed from the workshop-template
repository.
The first step of validating the URL should be to make sure that the repository exists.
The second step is to make sure the index.html page in that repository is properly formatted.
The third step is to make sure that the information in that page is consistent with the values in the database (which the event details page is displaying).
Some instructor training sessions do not count towards becoming a Software Carpentry instructor. They should be clearly marked.
The display of sites should be broken into pages, and each page should have navigation links to jump to other pages.
There should be a single-page way to generate the YAML describing who has what badge (for use in the main Software Carpentry website).
The app should allow admins to upload a CSV file containing names, email addresses, and optionally roles as well. The uploaded data should be validated and displayed for further editing before being added.
To avoid confusion, we should rename 'site' (which means "a place that's hosting a workshop") to 'host' (meaning "the hosting organization"), so that we can use the name 'site' to mean "the specific location of a specific workshop".
I'm not clear on why we need to track cohorts. Can someone explain how we act on this information?
The app should allow admins to create a new training cohort, either by "add row" to the table displaying existing cohorts or by a separate form or both.
We currently record training cohorts in one way, and workshops in another. Does it make sense to unify the two?
There needs to be a way to add a new site to the database. This can be a single-page form, or a bit of Javascript to add a new row to the table on the "all sites" page, or both.
We indicate a person's (rough) location by listing the airport nearest her. We should also have some way to indicate the location of a host organization for a workshop. However, some sites don't have a location of their own, and others (e.g., the SSI) have multiple locations.
The display of all events should be paginated for easier navigation, and each page should include links to jump to others.
Parsing names is complicated, and we don't want to get into that business unless we have to. I don't think we have to, so we should simplify and just have person.name
. See the earlier discussion in swcarpentry/DEPRECATED-site#701.
Home page should show events whose dates and instructors still haven't been settled. This will probably require a change or addition to the data model, since workshops_event
only lists things with dates.
There should be a page displaying the details of a particular badge, with a table of all the people who've received it.
The event details page should (only) allow instructors and helpers to be added by selection from a list of people who are in the database. It should be possible to add hosts this way as well. The wiki page for the event can be used for notes about people who aren't in the database.
The page displaying training cohorts should show the people involved, and each person should be displayed with a link to their details page.
The airport model and the list of features related to airports would be easy to implement using geodjango. Will the db this is running on support the spatial data? I typically use postgres with postgis but it makes the development environment setup a lot less fun and could roadblock some submitters.
Each site's page should show past and future events at that site (including ones that are still being negotiated).
Add a large editable text area to each site's page so that organizers can record free-form notes about contacts, locations, possible dates, special requirements, etc.
The application needs an administrative page so that we can add admin accounts, etc.
I expect everyone in the database will want to log in to see their dashboard (listing upcoming workshops that they're on, or workshops in their area that need instructors or helpers), manage their personal information (new email, etc.), or register a new event. We probably don't two person tables with many duplicate entries, so I'd recommend dropping the stock auth.User and substituting workshops.Person.
We show instructors' locations by displaying the airport nearest them. (This is good enough for finding people near workshop locations, without revealing their home address.) The page displaying all the airports should include a map, and allow addition of new airports, both from a database and via manual entry (since smaller airports may not show up in the database).
Admins should be able to add a new skill to the set of skills instructors are able to teach. There should be an easy way for the admin adding the skill to indicate which of the people already in the database are qualified to teach it.
Every event page should have a large editable text box for free-form notes about the event.
The display of all persons in the database should be paginated, and each page should have links to navigate to other pages.
There should be a single page displaying all of the badges we award.
This is probably not the issue for here but I don't know where to record it so that it doesn't get lost.
As suggested by @gperu (see excerpt from his email below) it would be great if we could allow the hosts to co-manage the mailing lists for the workshops (just like they can have access to their particular registration on Eventbrite). Not sure if cPanel (I think this is what we use?) allows for that, but if it could be sorted somehow, that would make the admin's life easier. The hosts then add helpers or anyone else they need to the mailing list themselves. Right now is the admins that do that.
Today, when adding a helper to a mailing list (upon request of the host contact) I noted that there is a ‘Delegation’ function (along with ‘Delete’, ‘Change Password’ and ‘Manage’ functions, last cell of each mailing list row). For the first time today I clicked on it and saw who has administrative access to the mailing lists (us) and thought we could give admin access to each host for its relevant list.
Event pages should provide a calendar pop-up for select/altering start and end dates. (Note that the end date is optional - a one-day workshop only has a start date.)
The page that displays information about sites should allow editing of fields, if only to allow correction of typos.
Software Carpentry staff should be mailed automatically a few days before a workshop (so that they can wish instructors good luck), on the last day (so that they can ask how it went), and a week later (to debrief).
The page displaying all events should have a link to an "add event" form, or some Javascript to allow in-place addition of a row to the table, or both.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.