Project
1 Sprint 4
Summary: In this final sprint in your first project, you will
allow a professor to claim a CUBES project
Tools:
We will continue to use the same version control, continuous
integration tools and programming language requirements that we put
together for parts one - three.
Sprint 4: A GUI with data visualization:
You have come a fair ways in creating a project that is useful and
built in parts. This last sprint will finish it up and add lots of
useful features. You continue to be self directed and choose a lot of
the 'how' yourself as long as you accomplish the what (on my machine
of course), This sprint takes more time and will be worth a lot of
credit just like sprint3
Due:
Sunday March 5th at 11:59pm (officially Spring break starts on Monday
the 6th) I'm happy to take assignments early.
New Code
Summary: Now add to your GUI to allow
the user to select a CUBES project to claim.
Production Code
The steps below are numbered only to make it easier to read. If you
find it easier to work on the deliverables in a different order please
do so.
- When your program first starts up, with the GUI, allow the user to
choose to either
- update the data in the database (undergrads
only since the grads are already doing this)
- run the data visualization
- When updating the data:
- get all of the data from wufoo - otherwise don't use the wufoo
api if not updating the data.
- The data visualization (begun in sprint 3)
- Display the data in the list and let a user select any item to
see the complete data as in sprint3
- let the user select a CUBES project to claim. Dr. Jacobson
suggested using a button to do this, but use any approach that
makes sense and is easy to use.
- undergrads only:
- make sure this claim is reflected in your database (foreign
key the records for the CUBEs project and the faculty claiming
it together - possibly with a third table)
- once a project is selected, change its appearance in the
list some how so it is easy to see which projects have been
claimed
- when selecting a claimed project in the list, display both
the full CUBEs project data and the information about the
faculty/user who claimed it.
- Grads only:
- somewhere in your program create a 'constant' (python
doesn't really have constants, but the other languages we are
using do) that will contain the CUBEs administrator's email.
address
- when a user claims a project, send email to the CUBE's
administrator's email address. (use a test address that you
set up when testing so you don't flood someone's email)
- If you haven't done this sort of thing before, have a look
at a couple of ideas (you will of course have to make
adjustments to make it work for you)
- Python
- https://www.courier.com/blog/three-ways-to-send-emails-using-python-with-code-tutorials/
- https://realpython.com/python-send-email/
- Java
- https://netcorecloud.com/tutorials/send-email-in-java-using-gmail-smtp/
- https://www.geeksforgeeks.org/send-email-using-java-program/
- Javascript
- https://stackoverflow.com/questions/13231125/automatically-open-default-email-client-and-pre-populate-content
- https://www.geeksforgeeks.org/how-to-send-an-email-from-javascript/
- User records
- allow the user to fill in their own data including
- first name
- last name
- title
- bsu email (use this as the primary key)
- department
- store the above information in a table
- undergrads only: in your
local database that has the wufoo data in another table
- grads only: this can
either be on your server or a local database
- When a user is filling in their data, prompt them to enter
their email first, if their record is already in the table, then
fill in the rest of the data for them
NOTE: I've
been very careful not to tell you how to display it, only what to
display. use your creativity to show all of this information in a
useful format.
Tests:
Add additional tests to your test suite. You should include tests to
make sure your user creation works and that your population of the
user data works when entering an email address of an already existing
user. Add one more test of your own.
make sure all of the previous tests still work.
For the GUI, either use a tool like selenium (which you will have to
learn on your own), or write a detailed manual test plan (with
pictures) to explain what should happen when your graphical elements
are invoked. There is a lot of disagreement in the industry about
whether automated GUI tests are worthless or vitally important.
DevOps:
as before, update any github actions with dependency management and
anything else you need to make the Continuous Integration continue to
function.