Difference between revisions of "OPS435 Python Assignment 3"
(→Instruction) |
(→Rubric) |
||
(7 intermediate revisions by the same user not shown) | |||
Line 15: | Line 15: | ||
Name your Python3 script as <code>ccn_[student_id].py</code>. Create a symbolic link to your script as ccn.py (e.g. use the command ln -s ccn_rchan.py ccn.py to create the link) so that you can refer to your script as ccn.py. Your script must accept one or more "web site" as its command line parameters and other optional parameters as shown below. Your python script should produce the following usage text when run with the --help option: | Name your Python3 script as <code>ccn_[student_id].py</code>. Create a symbolic link to your script as ccn.py (e.g. use the command ln -s ccn_rchan.py ccn.py to create the link) so that you can refer to your script as ccn.py. Your script must accept one or more "web site" as its command line parameters and other optional parameters as shown below. Your python script should produce the following usage text when run with the --help option: | ||
<pre> | <pre> | ||
− | + | usage: ccn.py [-h] [-s SITE] [-t {table,text}] [-n {table,text}] N [N ...] | |
− | usage: ccn.py [-h] [-s SITE] N [N ...] | ||
Class Cancellation Notification System | Class Cancellation Notification System | ||
Line 27: | Line 26: | ||
-h, --help show this help message and exit | -h, --help show this help message and exit | ||
-s SITE, --site SITE class cancellation web site | -s SITE, --site SITE class cancellation web site | ||
+ | -t {table,text}, --type {table,text} | ||
+ | type of class concellation data: table -> html table, | ||
+ | text -> plain text file | ||
+ | -n {table,text}, --notification {table,text} | ||
+ | type of notification data: table -> html table, text | ||
+ | -> plain text file | ||
Copyright 2018 - Raymond Chan | Copyright 2018 - Raymond Chan | ||
Line 37: | Line 42: | ||
If there is more than one CCN subscription web page provided, merge all the subscription list with the first one at the top and the last one at the bottom. Read and process the subscription list in that order in your program. | If there is more than one CCN subscription web page provided, merge all the subscription list with the first one at the top and the last one at the bottom. Read and process the subscription list in that order in your program. | ||
+ | |||
+ | If no class cancellation site specified, default to https://scs.senecac.on.ca/~raymond.chan/ops435/a3/ccn.html. | ||
+ | |||
+ | If no -t or -n specified, default to html table. | ||
+ | |||
+ | Sample subscription site: https://wiki.cdot.senecacollege.ca/wiki/OPS435_Python_A3_CCN_Subscription | ||
+ | === Header === | ||
+ | |||
+ | All your Python codes for this assignment must be placed in a <font color='red'><b><u>single source file</u></b></font>. Please include the following declaration by <b><u>you</u></b> as the script level docstring in your Python source code file (replace [Student_id] with your Seneca email user name, and "Student Name" with your own name): | ||
+ | |||
+ | <source>OPS435 Assignment 3 - Fall 2018 | ||
+ | Program: ccn_[Stduent_id].py | ||
+ | Author: "Student Name" | ||
+ | The python code in this file ccn_[Student_id].py is original work written by | ||
+ | "Student Name". No code in this file is copied from any other source | ||
+ | including any person, textbook, or on-line resource except those provided | ||
+ | by the course instructor. I have not shared this python file with anyone | ||
+ | or anything except for submission for grading. | ||
+ | I understand that the Academic Honesty Policy will be enforced and violators | ||
+ | will be reported and appropriate action will be taken. | ||
+ | </source> | ||
+ | |||
+ | === Modules you are allowed to use in your script for this assignment === | ||
+ | * the <b>os, sys</b> modules | ||
+ | * the <b>argparse</b> module | ||
+ | ** [https://docs.python.org/3/howto/argparse.html Argparse Tutorial] - should read this first. | ||
+ | ** [https://docs.python.org/3/library/argparse.html Argparse API reference information page] | ||
+ | * the <b>time</b> module | ||
+ | ** [https://www.tutorialspoint.com/python3/python_date_time.htm Time module Tutorial] | ||
+ | ** [https://docs.python.org/3/library/time.html Time module API reference page] | ||
+ | |||
+ | === Sample Output === | ||
+ | You python script should check the class cancellation notification site for any classes cancellation that are going to happen in the next 24 hours. If it identifies any classes, it should check the class cancellation notification subscription sites for any matches. If there is any matches, it should send an appropriate email to the subscriber using the following template: | ||
+ | |||
+ | <pre> | ||
+ | Dear <subscriber full name>, | ||
+ | Your <class code> scheduled on <data and time> is being cancellated. Details about the cancellation can be found and confirm at <Class Cancellation Notification site>. | ||
+ | |||
+ | Your class cancellation notification team. | ||
+ | Message generated on <Date and time stamp> | ||
+ | </pre> | ||
+ | |||
+ | The sample message should also written to your CCN log file named ccn.log. | ||
+ | |||
+ | == Rubric == | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | ! Task !! Maximum mark !! Actual mark | ||
+ | |- | ||
+ | | Program Authorship Declaration ||1 || | ||
+ | |- | ||
+ | | Program usage || 2 || | ||
+ | |- | ||
+ | | Program Options || 2 || | ||
+ | |- | ||
+ | | Generate correct notification email || 5 || | ||
+ | |- | ||
+ | | Generate and keep correct email message in log|| 5 || | ||
+ | |- | ||
+ | | Function to extract and produce class cancellation data || 5 || | ||
+ | |- | ||
+ | | Function to extract and produce notification subscription data || 5 || | ||
+ | |- | ||
+ | | '''Total''' || 25 || | ||
+ | |||
+ | |} | ||
+ | == Submission == | ||
+ | After fully testing your program, submit your python script ccn_[student_id].py on Blackboard by November 30, 2018. |
Latest revision as of 13:23, 16 November 2018
Contents
Assignment 3 - Class Cancellation Notification (CCN)
Weight: 15% of the overall grade
Due Date: Ask your professor for exact date
Late Penalty: 20% per school day, and note that this assignment in an alternative to assignment 2. Same rules applied to this assignment as assignment 2
Overview
As most system administrators, you would like to offer email notification to your users based on the event that triggers it. In a school environment, classes may be cancelled in a daily basis and the classes being cancelled may be posted to a web site and it is up to the students to check it out. If you do not check the class cancellation web site before heading to your class, you may be disappointed when you get there and find out that your class has been cancelled. It would be nice if you can get an email send to you for any class cancellation before you leave home for the class. For this assignment, you are going to write a script to poll data from the class cancellation web site (any given web site, but you can use the web page here for testing purpose) and send an email to any body subscribe to you email notification service ( a sample subscription web page here that their classes have been cancelled.
Instruction
Program Name and valid command line arguments
Name your Python3 script as ccn_[student_id].py
. Create a symbolic link to your script as ccn.py (e.g. use the command ln -s ccn_rchan.py ccn.py to create the link) so that you can refer to your script as ccn.py. Your script must accept one or more "web site" as its command line parameters and other optional parameters as shown below. Your python script should produce the following usage text when run with the --help option:
usage: ccn.py [-h] [-s SITE] [-t {table,text}] [-n {table,text}] N [N ...] Class Cancellation Notification System positional arguments: N list of notification subscription sites to be processed. optional arguments: -h, --help show this help message and exit -s SITE, --site SITE class cancellation web site -t {table,text}, --type {table,text} type of class concellation data: table -> html table, text -> plain text file -n {table,text}, --notification {table,text} type of notification data: table -> html table, text -> plain text file Copyright 2018 - Raymond Chan
Replace the last line with your own full name
If there is one CCN subscription web page provided at the command line, read the subscription list from the given web page. The format of.
If there is more than one CCN subscription web page provided, merge all the subscription list with the first one at the top and the last one at the bottom. Read and process the subscription list in that order in your program.
If no class cancellation site specified, default to https://scs.senecac.on.ca/~raymond.chan/ops435/a3/ccn.html.
If no -t or -n specified, default to html table.
Sample subscription site: https://wiki.cdot.senecacollege.ca/wiki/OPS435_Python_A3_CCN_Subscription
Header
All your Python codes for this assignment must be placed in a single source file. Please include the following declaration by you as the script level docstring in your Python source code file (replace [Student_id] with your Seneca email user name, and "Student Name" with your own name):
OPS435 Assignment 3 - Fall 2018
Program: ccn_[Stduent_id].py
Author: "Student Name"
The python code in this file ccn_[Student_id].py is original work written by
"Student Name". No code in this file is copied from any other source
including any person, textbook, or on-line resource except those provided
by the course instructor. I have not shared this python file with anyone
or anything except for submission for grading.
I understand that the Academic Honesty Policy will be enforced and violators
will be reported and appropriate action will be taken.
Modules you are allowed to use in your script for this assignment
- the os, sys modules
- the argparse module
- Argparse Tutorial - should read this first.
- Argparse API reference information page
- the time module
Sample Output
You python script should check the class cancellation notification site for any classes cancellation that are going to happen in the next 24 hours. If it identifies any classes, it should check the class cancellation notification subscription sites for any matches. If there is any matches, it should send an appropriate email to the subscriber using the following template:
Dear <subscriber full name>, Your <class code> scheduled on <data and time> is being cancellated. Details about the cancellation can be found and confirm at <Class Cancellation Notification site>. Your class cancellation notification team. Message generated on <Date and time stamp>
The sample message should also written to your CCN log file named ccn.log.
Rubric
Task | Maximum mark | Actual mark |
---|---|---|
Program Authorship Declaration | 1 | |
Program usage | 2 | |
Program Options | 2 | |
Generate correct notification email | 5 | |
Generate and keep correct email message in log | 5 | |
Function to extract and produce class cancellation data | 5 | |
Function to extract and produce notification subscription data | 5 | |
Total | 25 |
Submission
After fully testing your program, submit your python script ccn_[student_id].py on Blackboard by November 30, 2018.