random cleanups
This commit is contained in:
parent
73bb2281a4
commit
498b90ddcc
|
|
@ -1675,11 +1675,11 @@ def instructor_list_to_activate_evals():
|
||||||
def add_evals(section=0):
|
def add_evals(section=0):
|
||||||
# show or hide?
|
# show or hide?
|
||||||
|
|
||||||
TERM = 180
|
TERM = 181
|
||||||
SEM = "fa23"
|
SEM = "sp24"
|
||||||
|
|
||||||
hidden = True
|
hidden = False
|
||||||
s = [ x.strip() for x in codecs.open(f'cache/{SEM}_eval_sections.csv','r').readlines()]
|
s = [ x.strip() for x in codecs.open(f'cache/{SEM}_eval_sections.txt','r').readlines()]
|
||||||
s = list(funcy.flatten(s))
|
s = list(funcy.flatten(s))
|
||||||
s.sort()
|
s.sort()
|
||||||
print(s)
|
print(s)
|
||||||
|
|
|
||||||
164
depricated.py
164
depricated.py
|
|
@ -191,6 +191,109 @@ def stats():
|
||||||
|
|
||||||
######### from tasks.py
|
######### from tasks.py
|
||||||
|
|
||||||
|
def strip(x): return x.strip()
|
||||||
|
|
||||||
|
def esc_comma(x): return re.sub(',','[CMA]',x)
|
||||||
|
|
||||||
|
def by_sem(x): return x['sem']
|
||||||
|
|
||||||
|
def parse_schedule():
|
||||||
|
# "Course Code","Start Date","End Date",Term,Delivery,CRN,Status,"Course Name",
|
||||||
|
# 8 "Course Description","Units/Credit hours","Instructor Last Name",
|
||||||
|
# 11 "Instructor First Name",Campus/College,"Meeting Days and Times",
|
||||||
|
# 14 "Pass/No Pass available?","Class Capacity","Available Seats","Waitlist Capacity",
|
||||||
|
# 18 "Current Waitlist Length","Meeting Locations","Course Notes",ZTC 21
|
||||||
|
|
||||||
|
oo = codecs.open('cache/fa20_section_notes.txt','w','utf-8')
|
||||||
|
pp = codecs.open('cache/fa20_section_summary.txt','w','utf-8')
|
||||||
|
|
||||||
|
|
||||||
|
u0 = "https://hhh.gavilan.edu/phowell/map/dir_api_tester.php?a=get/sections"
|
||||||
|
existing_sections = json.loads( requests.get(u0).text )
|
||||||
|
|
||||||
|
existing_sections = funcy.group_by(by_sem,existing_sections)
|
||||||
|
by_sem_crn = {}
|
||||||
|
|
||||||
|
for sem,sects in existing_sections.items():
|
||||||
|
for s in sects:
|
||||||
|
new_key = sem + '_' + s['crn']
|
||||||
|
by_sem_crn[new_key] = s
|
||||||
|
|
||||||
|
#print(json.dumps(by_sem_crn,indent=2))
|
||||||
|
mt = open('cache/missed_instructors.txt','w')
|
||||||
|
|
||||||
|
teacher_cache = {}
|
||||||
|
count = 0
|
||||||
|
stopat = 20000
|
||||||
|
|
||||||
|
u1 = "https://www.gavilan.edu/_files/php/current_schedule.csv"
|
||||||
|
with requests.Session() as s:
|
||||||
|
download = s.get(u1)
|
||||||
|
decoded_content = download.content.decode('utf-8')
|
||||||
|
cr = csv.reader(decoded_content.splitlines(), delimiter=',')
|
||||||
|
my_list = list(cr)
|
||||||
|
#for row in my_list:
|
||||||
|
# print(row)
|
||||||
|
for row in my_list:
|
||||||
|
row = list(map(strip,row))
|
||||||
|
row = list(map(esc_comma,row))
|
||||||
|
if row[3] in sem_to_short:
|
||||||
|
row[3] = sem_to_short[row[3]]
|
||||||
|
if row[20]:
|
||||||
|
oo.write("%s - %s \n" % (row[0], row[20]))
|
||||||
|
summary = "%s %s %s %s \t %s %s\t %s" % (row[4], row[11],row[10],row[6], row[5], row[0], row[7])
|
||||||
|
pp.write(summary + "\n")
|
||||||
|
|
||||||
|
# cancelled?
|
||||||
|
status = row[6]
|
||||||
|
if status != "Active": continue
|
||||||
|
|
||||||
|
# ignore if exists? TODO check if i need to update it
|
||||||
|
this_sem_crn = row[3] + '_' + row[5]
|
||||||
|
if this_sem_crn in by_sem_crn:
|
||||||
|
print("\t...already uploaded...skipping %s" % this_sem_crn)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if count >0 and count<stopat:
|
||||||
|
t_name = "%s %s" % (row[11],row[10])
|
||||||
|
if t_name in teacher_cache:
|
||||||
|
r = {'sched_alias':1, 'id': teacher_cache[t_name]}
|
||||||
|
else:
|
||||||
|
u2 = "https://hhh.gavilan.edu/phowell/map/dir_api_tester.php?a=get/instructor/name"
|
||||||
|
p2 = {'inst': t_name }
|
||||||
|
print("\tSearching for teacher: %s" % t_name )
|
||||||
|
r2 = requests.post(u2, data=p2)
|
||||||
|
r = json.loads(r2.text)
|
||||||
|
if r and 'id' in r: teacher_cache[t_name] = r['id']
|
||||||
|
|
||||||
|
if not r:
|
||||||
|
print("\tCouldn't locate teacher: %s %s" % (row[11],row[10]))
|
||||||
|
u2 = "https://hhh.gavilan.edu/phowell/map/dir_api_tester.php?a=get/instructor/fuzzyname"
|
||||||
|
p2 = {'inst': row[11] + " % " + row[10] }
|
||||||
|
print("\tFuzzy search for teacher: " + row[11] + " % " + row[10])
|
||||||
|
r2 = requests.post(u2, data=p2)
|
||||||
|
r = json.loads(r2.text)
|
||||||
|
if r and 'id' in r: teacher_cache[t_name] = r['id']
|
||||||
|
|
||||||
|
if r and 'sched_alias' in r:
|
||||||
|
row[10] = r['id']
|
||||||
|
#print("\tfound teacher: " + str(r))
|
||||||
|
payload = { 'cols':'code,start_date,end_date,sem,delivery,crn,status,name,descr,units,teacher_id,days,pnp,location,note,ztc',
|
||||||
|
'vals': u','.join( [ row[j] for j in [0,1,2,3,4,5,6,7,8,9,10,13,14,19,20,21] ] ) }
|
||||||
|
#print(json.dumps(payload,indent=2))
|
||||||
|
#print()
|
||||||
|
r3 = requests.post("https://hhh.gavilan.edu/phowell/map/dir_api_tester.php?a=add/section", params=payload)
|
||||||
|
result = json.loads(r3.text)
|
||||||
|
if result and 'err' in result and result['err']:
|
||||||
|
print("\n*** Problem? --> %s" % result['err'] )
|
||||||
|
mt.write("*** Problem? --> %s\n" % result['err'] )
|
||||||
|
else:
|
||||||
|
print("*** Still Couldn't locate teacher: %s %s" % (row[11],row[10]))
|
||||||
|
mt.write("Couldn't locate teacher: %s %s\n" % (row[11],row[10]))
|
||||||
|
print()
|
||||||
|
count += 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def certificates_gott_build_2020():
|
def certificates_gott_build_2020():
|
||||||
#send_email("Peter Howell", "Peter", "phowell@gavilan.edu", "test", "this is a test")
|
#send_email("Peter Howell", "Peter", "phowell@gavilan.edu", "test", "this is a test")
|
||||||
|
|
@ -408,6 +511,62 @@ def serve():
|
||||||
|
|
||||||
### interactive.py
|
### interactive.py
|
||||||
|
|
||||||
|
from textual.app import App, ComposeResult
|
||||||
|
from textual.containers import ScrollableContainer, Container, Horizontal
|
||||||
|
from textual.widgets import Button, Footer, Header, Static, Label
|
||||||
|
from textual.widgets import Welcome
|
||||||
|
from textual import events
|
||||||
|
from textual.app import App, ComposeResult
|
||||||
|
from textual.widgets import RichLog
|
||||||
|
|
||||||
|
|
||||||
|
class CanvasApp(App):
|
||||||
|
"""A Textual app to manage canvas."""
|
||||||
|
|
||||||
|
BINDINGS = [("d", "toggle_dark", "Toggle dark mode"), ("q", "quit_app", "Quit")]
|
||||||
|
CSS_PATH = "interactive.tcss"
|
||||||
|
|
||||||
|
current_label = ""
|
||||||
|
|
||||||
|
# RHS side panel: Status & Saved Preferences
|
||||||
|
current_term = ""
|
||||||
|
last_db_pull = ""
|
||||||
|
orientation_shell_id = ""
|
||||||
|
stem_shell_id = ""
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def compose(self) -> ComposeResult:
|
||||||
|
"""Create child widgets for the app."""
|
||||||
|
yield Header()
|
||||||
|
#yield Welcome()
|
||||||
|
yield Label(self.current_label, classes="box", id="feedback")
|
||||||
|
yield RichLog()
|
||||||
|
yield Footer()
|
||||||
|
|
||||||
|
def action_toggle_dark(self) -> None:
|
||||||
|
"""An action to toggle dark mode."""
|
||||||
|
self.dark = not self.dark
|
||||||
|
|
||||||
|
def action_quit_app(self) -> None:
|
||||||
|
self.exit()
|
||||||
|
|
||||||
|
def on_button_pressed(self) -> None:
|
||||||
|
self.exit()
|
||||||
|
|
||||||
|
def on_key(self, event: events.Key) -> None:
|
||||||
|
self.query_one(RichLog).write(event)
|
||||||
|
self.current_label += event.character
|
||||||
|
fb = self.query_one("#feedback")
|
||||||
|
fb.update(self.current_label)
|
||||||
|
|
||||||
|
|
||||||
|
def text_app():
|
||||||
|
app = CanvasApp()
|
||||||
|
app.run()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -2196,7 +2355,7 @@ def categorize():
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
# Deprecated. call perl.
|
# Deprecated. call perl.
|
||||||
|
|
@ -2206,8 +2365,7 @@ def constructSchedule():
|
||||||
cmd = 'perl make.pl ' + term
|
cmd = 'perl make.pl ' + term
|
||||||
print "command: " + cmd
|
print "command: " + cmd
|
||||||
os.system(cmd)
|
os.system(cmd)
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
def fetch_dict(target,params={}):
|
def fetch_dict(target,params={}):
|
||||||
|
|
|
||||||
168
interactive.py
168
interactive.py
|
|
@ -1,6 +1,10 @@
|
||||||
import heapq, re, csv, os, shutil, datetime, urllib, sys
|
import re, datetime, urllib, sys
|
||||||
import itertools, time, markdown, csv, json, os.path, webbrowser, threading
|
import markdown, json, threading
|
||||||
from functools import wraps
|
|
||||||
|
#import heapq, csv, os, shutil, itertools, time, os.path, webbrowser
|
||||||
|
#from functools import wraps
|
||||||
|
# from content import my_site
|
||||||
|
|
||||||
from flask import Flask, request, send_from_directory, Response, render_template
|
from flask import Flask, request, send_from_directory, Response, render_template
|
||||||
from flask import send_file
|
from flask import send_file
|
||||||
from flask_socketio import SocketIO, emit
|
from flask_socketio import SocketIO, emit
|
||||||
|
|
@ -13,7 +17,6 @@ import localcache
|
||||||
from server import *
|
from server import *
|
||||||
from canvas_secrets import flask_secretkey
|
from canvas_secrets import flask_secretkey
|
||||||
|
|
||||||
from content import my_site
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -355,29 +358,122 @@ def serve():
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
from random import randint
|
||||||
|
import asciimatics
|
||||||
|
from asciimatics.scene import Scene
|
||||||
|
from asciimatics.widgets import Frame, Layout, Button, ListBox, TextBox, Widget, Divider
|
||||||
|
from asciimatics.exceptions import StopApplication, ResizeScreenError
|
||||||
|
from asciimatics.event import MouseEvent, KeyboardEvent
|
||||||
|
from asciimatics.screen import Screen
|
||||||
|
import traceback
|
||||||
|
|
||||||
from textual.app import App, ComposeResult
|
def update():
|
||||||
from textual.containers import ScrollableContainer, Container, Horizontal
|
pass
|
||||||
from textual.widgets import Button, Footer, Header, Static, Label
|
def enroll_ori():
|
||||||
from textual.widgets import Welcome
|
pass
|
||||||
from textual import events
|
|
||||||
from textual.app import App, ComposeResult
|
class OutputView(Frame):
|
||||||
from textual.widgets import RichLog
|
def __init__(self, screen):
|
||||||
|
super(OutputView, self).__init__(screen,
|
||||||
|
screen.height,
|
||||||
|
(screen.width * 2 // 3),
|
||||||
|
on_load=self.nothing,
|
||||||
|
hover_focus=True,
|
||||||
|
has_border=True,
|
||||||
|
title="Output")
|
||||||
|
|
||||||
|
|
||||||
class CanvasApp(App):
|
class MenuView(Frame):
|
||||||
"""A Textual app to manage canvas."""
|
def __init__(self, screen):
|
||||||
|
super(MenuView, self).__init__(screen,
|
||||||
|
screen.height,
|
||||||
|
screen.width,
|
||||||
|
on_load=self.nothing,
|
||||||
|
hover_focus=False,
|
||||||
|
has_border=False,
|
||||||
|
title="Actions")
|
||||||
|
# Save off the model that accesses the contacts database.
|
||||||
|
self.model = [["Update database","update"], ["Enroll Orientation Shell","enroll_ori"]]
|
||||||
|
|
||||||
BINDINGS = [("d", "toggle_dark", "Toggle dark mode"), ("q", "quit_app", "Quit")]
|
# Main UI: Actions and their output
|
||||||
CSS_PATH = "interactive.tcss"
|
self._list_view = ListBox(
|
||||||
|
height=screen.height - 5,
|
||||||
|
options=self.model, name="actions", on_select=self.nothing)
|
||||||
|
self._output_view = TextBox(height=screen.height - 5, name="output", readonly=False)
|
||||||
|
self._output_view.value = ['default']
|
||||||
|
|
||||||
|
self._edit_button = Button("Edit", self.nothing)
|
||||||
|
self._delete_button = Button("Delete", self.a)
|
||||||
|
layout = Layout([1,2], fill_frame=False)
|
||||||
|
self.add_layout(layout)
|
||||||
|
layout.add_widget(self._list_view)
|
||||||
|
layout.add_widget(self._output_view,1)
|
||||||
|
#layout.add_widget(Divider())
|
||||||
|
|
||||||
current_label = ""
|
layout2 = Layout([1, 1, 1, 1])
|
||||||
|
self.add_layout(layout2)
|
||||||
|
layout2.add_widget(Button("Add", self.nothing), 0)
|
||||||
|
layout2.add_widget(self._edit_button, 1)
|
||||||
|
layout2.add_widget(self._delete_button, 2)
|
||||||
|
layout2.add_widget(Button("Quit", self._quit), 3)
|
||||||
|
self.fix()
|
||||||
|
|
||||||
|
def nothing(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def a(self):
|
||||||
|
self.update_output('delete button pressed')
|
||||||
|
|
||||||
|
def update_output(self,value):
|
||||||
|
li = self._output_view.value.copy()
|
||||||
|
li.append(value)
|
||||||
|
self._output_view.value = li
|
||||||
|
|
||||||
|
|
||||||
|
def _quit(self):
|
||||||
|
raise StopApplication("User pressed quit")
|
||||||
|
|
||||||
|
def text_app():
|
||||||
|
while True:
|
||||||
|
Screen.wrapper(demo, catch_interrupt=False)
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
'''try:
|
||||||
|
Screen.wrapper(demo, catch_interrupt=False)
|
||||||
|
sys.exit(0)
|
||||||
|
except ResizeScreenError as e:
|
||||||
|
pass
|
||||||
|
except Exception as e:
|
||||||
|
print(traceback.format_exc())
|
||||||
|
sys.exit(0)'''
|
||||||
|
#mv = MenuView(demo)
|
||||||
|
#Screen.wrapper()
|
||||||
|
#Screen.wrapper(demo)
|
||||||
|
|
||||||
|
def demo(screen):
|
||||||
|
scene1 = Scene([MenuView(screen)],-1)
|
||||||
|
screen.play([scene1], stop_on_resize=True, start_scene=scene1, allow_int=True )
|
||||||
|
|
||||||
|
def demo2(screen):
|
||||||
|
last_event = KeyboardEvent(0)
|
||||||
|
while True:
|
||||||
|
screen.print_at('Hello world!',
|
||||||
|
randint(0, screen.width), randint(1, screen.height),
|
||||||
|
colour=randint(0, screen.colours - 1),
|
||||||
|
bg=randint(0, screen.colours - 1))
|
||||||
|
ev = screen.get_event()
|
||||||
|
if type(ev) == KeyboardEvent:
|
||||||
|
last_event = ev
|
||||||
|
screen.print_at(ev,
|
||||||
|
0, 0,
|
||||||
|
colour=randint(0, screen.colours - 1),
|
||||||
|
bg=randint(0, screen.colours - 1))
|
||||||
|
if last_event.key_code in (ord('Q'), ord('q')):
|
||||||
|
return
|
||||||
|
screen.refresh()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# RHS side panel: Status & Saved Preferences
|
|
||||||
current_term = ""
|
|
||||||
last_db_pull = ""
|
|
||||||
orientation_shell_id = ""
|
|
||||||
stem_shell_id = ""
|
|
||||||
|
|
||||||
# Most common actions
|
# Most common actions
|
||||||
|
|
||||||
|
|
@ -432,36 +528,6 @@ class CanvasApp(App):
|
||||||
# update database every 5 hours
|
# update database every 5 hours
|
||||||
|
|
||||||
|
|
||||||
def compose(self) -> ComposeResult:
|
|
||||||
"""Create child widgets for the app."""
|
|
||||||
yield Header()
|
|
||||||
#yield Welcome()
|
|
||||||
yield Label(self.current_label, classes="box", id="feedback")
|
|
||||||
yield RichLog()
|
|
||||||
yield Footer()
|
|
||||||
|
|
||||||
def action_toggle_dark(self) -> None:
|
|
||||||
"""An action to toggle dark mode."""
|
|
||||||
self.dark = not self.dark
|
|
||||||
|
|
||||||
def action_quit_app(self) -> None:
|
|
||||||
self.exit()
|
|
||||||
|
|
||||||
def on_button_pressed(self) -> None:
|
|
||||||
self.exit()
|
|
||||||
|
|
||||||
def on_key(self, event: events.Key) -> None:
|
|
||||||
self.query_one(RichLog).write(event)
|
|
||||||
self.current_label += event.character
|
|
||||||
fb = self.query_one("#feedback")
|
|
||||||
fb.update(self.current_label)
|
|
||||||
|
|
||||||
|
|
||||||
def text_app():
|
|
||||||
app = CanvasApp()
|
|
||||||
app.run()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
options = { 1: ['start web server',serve] ,
|
options = { 1: ['start web server',serve] ,
|
||||||
2: ['start text app', text_app],
|
2: ['start text app', text_app],
|
||||||
|
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
Screen {
|
|
||||||
layout: vertical;
|
|
||||||
}
|
|
||||||
|
|
||||||
.box {
|
|
||||||
height: 1fr;
|
|
||||||
border: solid green;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
@ -9,6 +9,8 @@ from datetime import timedelta
|
||||||
from dateutil.parser import parse
|
from dateutil.parser import parse
|
||||||
from os.path import exists, getmtime
|
from os.path import exists, getmtime
|
||||||
from pipelines import sync_non_interactive, url, header, gp, dean
|
from pipelines import sync_non_interactive, url, header, gp, dean
|
||||||
|
from semesters import to_sis_sem
|
||||||
|
|
||||||
|
|
||||||
#from courses import getCoursesInTerm
|
#from courses import getCoursesInTerm
|
||||||
#from courses import user_in_depts_live
|
#from courses import user_in_depts_live
|
||||||
|
|
@ -1697,12 +1699,6 @@ ORDER BY u.sortablename;"""
|
||||||
return courses
|
return courses
|
||||||
|
|
||||||
|
|
||||||
def to_sis_sem(s):
|
|
||||||
season = s[0:2]
|
|
||||||
year = "20" + s[2:5]
|
|
||||||
a = {'sp':'30','su':'50','fa':'70'}
|
|
||||||
season = a[season]
|
|
||||||
return year+season
|
|
||||||
|
|
||||||
def build_db_schedule():
|
def build_db_schedule():
|
||||||
# from the schedule json files
|
# from the schedule json files
|
||||||
|
|
|
||||||
778
out.txt
778
out.txt
|
|
@ -1,778 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Performing: load all programs
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
A.A.-T Degree Theatre Arts
|
|
||||||
- take_all from THEA1, THEA12A, THEA13A, THEA14,
|
|
||||||
- take at least n courses from THEA27, THEA25, THEA26, THEA12B, THEA15,
|
|
||||||
- take at least n courses from THEA13A, THEA14,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Theater Arts-Television Performance
|
|
||||||
- take_all from THEA1, THEA2A, THEA12A, THEA13A, THEA14,
|
|
||||||
- take_all from THEA17B, MCTV17B, THEA16, MCTV16, THEA19, MCTV 19, MCTV 17A, THEA17A, THEA20, HUM25,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Theatre Arts: Technical Production
|
|
||||||
- take_all from THEA1, THEA2A, THEA12A, THEA13A, THEA14,
|
|
||||||
- take_all from THEA19, MCTV 19, THEA4, CMUN2, THEA15, THEA2B, THEA12B, ART2A, THEA7, ART8A, ART10A, ART12A, ART12B, ART13, THEA14,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Theatre Arts: Acting
|
|
||||||
- take_all from THEA1, THEA2A, THEA12A, THEA13A, THEA14,
|
|
||||||
- take_all from THEA19, MCTV 19, THEA4, CMUN2, THEA13B, THEA13C, THEA13D, THEA2B, THEA12B, MUS8A, MUS8B, MUS8C, MUS8D, THEA7, THEA11,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement Spanish Native Speakers Option 4
|
|
||||||
- take at least n courses from HIST12, HUM12, SPAN 12A, SPAN12B, SPAN23, ART14A, THEA3,
|
|
||||||
|
|
||||||
Certificate of Achievement Spanish Non-Native Speakers Option 3
|
|
||||||
- take at least n courses from SPAN2A, SPAN2B, SPAN 12A, SPAN12B, SPAN23,
|
|
||||||
|
|
||||||
Certificate of Achievement Spanish Non-Native Speakers Option 2
|
|
||||||
- take at least n courses from SPAN1B, SPAN2A, SPAN2B, SPAN 12A, SPAN12B, SPAN23,
|
|
||||||
|
|
||||||
Certificate of Achievement Spanish Non-Native Speakers Option 1
|
|
||||||
- take at least n courses from SPAN1A, SPAN1B, SPAN2A, SPAN2B,
|
|
||||||
|
|
||||||
Certificate of Achievement Music Composition and Production
|
|
||||||
- take_all from MUS3A, MUS3B, MUS4A, MUS7, MUS16A, MUS21, MUS1A, MUS1B, MUS2, MUS6,
|
|
||||||
|
|
||||||
A.A.-T Degree Music
|
|
||||||
- take_all from MUS3A, MUS3B, MUS3C, MUS3D, MUS11A, MUS11B, MUS14,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Music
|
|
||||||
- take_all from MUS3A, MUS3B, MUS4A, MUS4B, MUS1A, MUS1B, MUS6, MUS7, MUS16A, MUS21, MUS5A, MUS5B, MUS5C, MUS5D, MUS8A, MUS8B, MUS9B, MUS12,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.S.-T Degree Mathematics
|
|
||||||
- take_all from MATH1A, MATH 1B, MATH1C, MATH2, MATH2C,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.S. Degree Mathematics
|
|
||||||
- take_all from ENGR5, MATH1A, MATH 1B, MATH1C, MATH2, MATH2C,
|
|
||||||
- take at least n courses from MATH5, PHYS 4A, PHYS 4B, PHYS 4C,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Liberal Arts: Social Science Emphasis- Behavioral and Organizational Social Sciences
|
|
||||||
- take_all from PSYC2, CD2, JOUR10, SOC10, CD3, PSYC3, POLS6, CMUN6, PSYC6, PSYC7, CD7, BIO15, AH15, AJ10, AJ18, AH3, ECON1, ECON2, MATH5, MATH6, POLS1, POLS3, POLS4, PSYC10, PSYC11, SOC1A, SOC1B, SOC3, SOC 4, SOC21,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Liberal Arts: Social Science Emphasis- Cultural and Historical Sciences
|
|
||||||
- take_all from HIST12, HUM12, POLS6, CMUN6, PSYC6, ART21, HIST21, KIN6, CD6, ANTH1, ANTH2, ANTH3, ANTH5, ART10A, CD5, ECON1, ECON2, GEOG2, HIST1, HIST2, HIST3, HIST4A, HIST4B, HIST5, HIST 6, HIST7A, HIST7B, POLS1, SOC1A, SOC1B, SOC3, SOC 4,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Liberal Arts: Natural Science Emphasis
|
|
||||||
- take_all from BIO9, AH9, BIO8, AH8, BIO15, AH15, BIO 1, BIO4, BIO5, BIO7, BIO21, CHEM1A, CHEM1B, CHEM12A, CHEM12B, ECOL1, GEOL1, MATH1A, MATH 1B, MATH1C, MATH2, MATH2C, MATH5, MATH7, MATH8A, MATH8B, PHYS2A, PHYS2B, PHYS 4A, PHYS 4B, PHYS 4C,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Liberal Arts: Language Arts & Humanities Emphasis
|
|
||||||
- take_all from SOC10, POLS6, CMUN6, PSYC6, CMUN129, CSIS129, THEA4, CMUN2, CMUN1A, CMUN4, CMUN5, CMUN8, CMUN10, PHIL1, PHIL2, PHIL3A, PHIL3B, PHIL4, PHIL6, PHIL9, ENGL1B, ENGL2B, ENGL2C, ENGL2E, ENGL2F, ENGL2J, ENGL4A, ENGL4B, ENGL5A, ENGL5B, ENGL9A, FRNH1A, FRNH1B, JPN1A, JPN1B, SPAN1A, SPAN1B, SPAN 12A, SPAN12B, JOUR16A, JOUR10,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Liberal Arts: Expressive Arts Emphasis
|
|
||||||
- take_all from ART25A, CD25A, ART25B, CD25B, THEA17B, MCTV17B, ART21, HIST21, DM74, CSIS74, DM76, CSIS76, DM 77, CSIS 77, DM80, CSIS80, DM 85, CSIS 85, DM110, CSIS110, DM114, CSIS114, DM117, CSIS117, THEA19, MCTV 19, MCTV 17A, THEA17A, ART1A, ART1B, ART6, MUS1A, MUS1B, THEA1, THEA3, THEA7, ART2A, ART3A, ART3B, ART8A, ART10A, ART12A, ART12B, ART13, ART14A, ART15A, ART15B, ART34A, ART34B, MUS4A, MUS4B, MUS5A, MUS5B, MUS5C, MUS5D, MUS8A, MUS8B, MUS8C, MUS8D, MUS9A, MUS9B, MUS12, THEA2A, THEA2B, THEA12A, THEA12B, THEA13A, THEA13B, THEA13C, THEA13C, THEA21, ART11,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Liberal Arts: Computer Science & Information Systems Emphasis
|
|
||||||
- take_all from CSIS6, DM6, CSIS7, DM7, CSIS73, DM73, CSIS75, DM75, DM74, CSIS74, DM76, CSIS76, DM 77, CSIS 77, DM80, CSIS80, DM 85, CSIS 85, CD12, CSIS9, CSIS5, CSIS8, CSIS10, CSIS12, CSIS12L, CSIS18, CSIS18L, CSIS24, CSIS26, CSIS43, CSIS44, CSIS45, CSIS46, CSIS47, CSIS49, CSIS51, CSIS54, CSIS54L, CSIS84, DM113, DM114,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Liberal Arts: Business Emphasis
|
|
||||||
- take_all from CSIS2L, CSIS2, BUS11, ECON11, BUS1, ECON1, ECON2, ACCT20, ACCT21, BUS14, BUS80, CSIS 1, ECON1, ECON2,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Liberal Arts: Administration of Justice Emphasis
|
|
||||||
- take_all from POLS6, CMUN6, PSYC6, AJ10, AJ12, AJ14, AJ16, AJ18, AJ19, AJ20, AJ21, AJ32, AJ173, AJ176,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A.-T Degree Journalism
|
|
||||||
- take_all from JOUR10, JOUR16A, JOUR18A, JOUR18B, ART8A, PHIL2, PHIL4, ENGL1C,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.S. Degree Health Science
|
|
||||||
- take_all from BIO9, AH9, BIO8, AH8, BIO15, AH15, AH 11, BIO11, AH3, CHEM1A, CHEM1B, CHEM30A, CHEM30B, BIO 1, BIO10, BIO7, MATH233, ECOL1, PSYC10,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.S.-T Degree Administration of Justice
|
|
||||||
- take at least n courses from AJ10, AJ14,
|
|
||||||
- take at least n courses from AJ12, AJ16, AJ18, AJ19, AJ20,
|
|
||||||
- take at least n courses from SOC1A, PSYC10, MATH5,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Law Enforcement, Option 1
|
|
||||||
- take_all from AJ10, AJ12, AJ14, AJ16, AJ18,
|
|
||||||
- take at least n courses from AJ5, AJ19, AJ20, AJ21, AJ32, AJ173, AJ176, AJ184,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement Law Enforcement, Option 1
|
|
||||||
- take_all from AJ10, AJ12, AJ14, AJ16, AJ18,
|
|
||||||
- take at least n courses from AJ5, AJ19, AJ20, AJ21, AJ32, AJ173, AJ176, AJ184,
|
|
||||||
|
|
||||||
A.A. Degree Law Enforcement, Option 2
|
|
||||||
- take_all from JLE100, JLE142, JLE143, JLE 144, AJ100A,
|
|
||||||
- take at least n courses from AJ5, AJ20, AJ19, AJ21, AJ32, AJ173, AJ176, AJ184,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.S. Degree Registered Nursing
|
|
||||||
- take at least n courses from ENGL 1A, MATH240, AH8, BIO8, AH9, BIO9, MATH235, MATH 242, CMUN1A, SOC1A, AH51, AH52, AH53, AH54, AH16,
|
|
||||||
- take at least n courses from AH55, AH56,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement Registered Nursing
|
|
||||||
- take at least n courses from AH8, BIO8, AH9, BIO9, ENGL 1A, CMUN1A, SOC1A, MATH235, MATH240, MATH 242, AH51, AH52, AH54, AH53, AH16,
|
|
||||||
- take at least n courses from AH55, AH56,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement Registered Nursing 30 Unit Option
|
|
||||||
- take at least n courses from BIO9, AH9, BIO8, AH8, AH55, AH56,
|
|
||||||
|
|
||||||
Certificate of Proficiency Nursing Assistant
|
|
||||||
- take_all from AH 280,
|
|
||||||
|
|
||||||
Certificate of Proficiency Clinical Medical Assisting
|
|
||||||
- take_all from AH170, AH171,
|
|
||||||
|
|
||||||
A.A.-T Degree Studio Art
|
|
||||||
- take_all from ART2A, ART13, ART3A, ART1B,
|
|
||||||
- take at least n courses from ART1A,
|
|
||||||
- take at least n courses from ART15A, ART34A, ART10A, ART12A, ART8A,
|
|
||||||
- take_all from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A.-T Degree Art History
|
|
||||||
- take at least n courses from ART3A, ART1A, ART1B,
|
|
||||||
- take at least n courses from ART21, HIST21,
|
|
||||||
- take at least n courses from ART13, ART2A, ART34A, ART10A, ART12A, ART8A,
|
|
||||||
- take at least n courses from ART2A, ART8A, ART10A, ART12A, ART13, ART34A,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.S. Degree Biological Science
|
|
||||||
- take_all from CHEM1A, CHEM1B, BIO 1, BIO4, BIO5, PHYS2A, PHYS2B,
|
|
||||||
- take at least n courses from BIO9, AH9, BIO8, AH8, BIO15, AH15, BIO7, BIO13, BIO21, ECOL1, MATH1A, MATH 1B,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement Biotechnology
|
|
||||||
- take_all from BIOT103, BIOT104, BIO10, CHEM30A, CHEM30B,
|
|
||||||
|
|
||||||
A.A. Degree Accounting
|
|
||||||
- take at least n courses from CSIS12L, CSIS2, BOT 100, BUS 100, CSIS8, MATH402, MATH411, ACCT20, ACCT 103, CSIS 1, ECON1, BUS1, BOT 291A, BOT 291B, BOT 291C, ENGL250,
|
|
||||||
- take_all from CSIS 120, ACCT 120, CSIS121, ACCT121, ACCT20, BOT 212, CSIS128, ACCT105,
|
|
||||||
- take at least n courses from ACCT21, ACCT190, BUS80, CSIS122,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement General Business
|
|
||||||
- take at least n courses from CSIS2L, CSIS2, BUS11, ECON11, ACCT20, ACCT21, ECON1, ECON2, MATH5,
|
|
||||||
- take at least n courses from BUS1, BUS80, MATH1A, MATH 1B, MATH1C, MATH2, MATH2C, MATH6, MATH7, MATH8A, MATH8B, ANTH3, HIST7A, HIST7B, PHIL2, PSYC10, SOC1A,
|
|
||||||
|
|
||||||
Certificate of Achievement School Age Child Care
|
|
||||||
- take_all from CD1, CD2, CD5, CD7, CD9, CD19,
|
|
||||||
- take_all from CD3, CD8A, CD 14A, CD 14B, CD31, CD97,
|
|
||||||
|
|
||||||
Certificate of Achievement Early Intervention Assistant
|
|
||||||
- take at least n courses from CD1, CD2, CD5, CD9, CD10, CD 13, CD19, CD35, CD36, CD160, CD190, CD 30A, CD 30B,
|
|
||||||
|
|
||||||
Certificate of Proficiency Child Development: Spanish Early Childhood Education
|
|
||||||
- take at least n courses from CD1, CD2, CD5, CD9, CD 13, CD160, CD 219,
|
|
||||||
|
|
||||||
Certificate of Proficiency Computer Hardware
|
|
||||||
- take at least n courses from CSIS181, CSIS182,
|
|
||||||
- take at least n courses from CSIS2L, CSIS2, CSIS122,
|
|
||||||
|
|
||||||
Certificate of Proficiency Introduction to Computer Networking
|
|
||||||
- take at least n courses from CSIS178, CSIS 179, CSIS183,
|
|
||||||
- take at least n courses from CSIS2L, CSIS48, CSIS181, MATH205,
|
|
||||||
|
|
||||||
A.S. Degree CSIS: Programming for the Internet
|
|
||||||
- take_all from CSIS6, DM6, CSIS7, DM7, CSIS75, DM75, DM 85, CSIS 85, CSIS51, CSIS54, CSIS54L, CSIS84, CSIS5, CSIS45, CSIS78,
|
|
||||||
- take at least n courses from MATH233,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement CSIS: Programming for the Internet
|
|
||||||
- take_all from CSIS6, DM6, CSIS7, DM7, CSIS75, DM75, DM 85, CSIS 85, CSIS51, CSIS54, CSIS54L, CSIS84, CSIS5, CSIS45, CSIS78,
|
|
||||||
- take at least n courses from MATH233,
|
|
||||||
|
|
||||||
A.S. Degree Computer Networking
|
|
||||||
- take_all from CSIS48, CSIS178, CSIS 179, CSIS181, CSIS182, CSIS183,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement Computer Networking
|
|
||||||
- take_all from CSIS48, CSIS178, CSIS 179, CSIS181, CSIS182, CSIS183,
|
|
||||||
|
|
||||||
A.S. Degree UNIX Operating System
|
|
||||||
- take_all from CSIS48, CSIS49, CSIS18, CSIS18L, CSIS45, CSIS5, CSIS24, CSIS46, CSIS54, CSIS54L,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement UNIX Operating System
|
|
||||||
- take_all from CSIS48, CSIS49, CSIS18, CSIS18L, CSIS45, CSIS5, CSIS24, CSIS46, CSIS54, CSIS54L,
|
|
||||||
|
|
||||||
Certificate of Proficiency Esthetician
|
|
||||||
- take_all from COS220, COS221,
|
|
||||||
|
|
||||||
Certificate of Achievement Digital Design and Imaging
|
|
||||||
- take_all from CSIS75, DM75, DM 77, CSIS 77, DM107, CSIS107, DM76, CSIS76,
|
|
||||||
- take at least n courses from CSIS 85, DM 85, DM74, CSIS74, DM80, CSIS80,
|
|
||||||
|
|
||||||
Certificate of Achievement Interactive Media
|
|
||||||
- take_all from CSIS75, DM 75, DM 77, CSIS 77, DM107, CSIS107, DM76, CSIS76,
|
|
||||||
- take_all from DM6, CSIS6, CSIS42, CSIS45, CSIS84, DM160, CSIS160,
|
|
||||||
|
|
||||||
A.S.-T Degree Business Administration
|
|
||||||
- take_all from ACCT20, ACCT21, ECON1, ECON2, BUS80,
|
|
||||||
- take at least n courses from BUS11, ECON11, MATH5, MATH6, MATH7,
|
|
||||||
- take at least n courses from CSIS2, BUS1, BUS 100,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement Child Development and Educational Studies
|
|
||||||
- take_all from CD1, CD2, CD 40, CD5, CD7, CD9, CD19,
|
|
||||||
- take at least n courses from CD4, CD5, CD7, CD10, CD12, CD 13, CD 15, CD16, CD17, CD18, CD 20, CD22, CD23, CD32, CD97, CD98,
|
|
||||||
|
|
||||||
A.S.-T Degree Physics
|
|
||||||
- take_all from PHYS 4A, PHYS 4B, PHYS 4C, MATH1A, MATH 1B, MATH1C,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A.-T Degree Psychology
|
|
||||||
- take_all from MATH5, PSYC10, PSYC32,
|
|
||||||
- take at least n courses from BIO10, BIO12,
|
|
||||||
- take at least n courses from PSYC11,
|
|
||||||
- take at least n courses from PSYC 40, PSYC3,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.S.-T Degree Early Childhood Education
|
|
||||||
- take_all from CD 40, CD5, CD1, CD32, CD4, CD 30A, CD9, CD7,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.S.-T Degree Economics
|
|
||||||
- take_all from BUS11, ECON11, ECON1, ECON2, MATH5, MATH6, MATH1A,
|
|
||||||
- take at least n courses from MATH7, MATH 1B, ACCT20, ACCT21, CSIS2, BUS 100, CSIS51,
|
|
||||||
- take at least n courses from ECON14, MATH1C, MATH2, BUS14,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement Law Enforcement, Option 2
|
|
||||||
- take_all from JLE100, JLE142, JLE143, JLE 144, AJ100A,
|
|
||||||
|
|
||||||
A.A.-T Degree Anthropology
|
|
||||||
- take_all from ANTH1, ANTH2, ANTH3,
|
|
||||||
- take at least n courses from MATH5,
|
|
||||||
- take at least n courses from BIO7, ANTH32, PSYC32,
|
|
||||||
- take at least n courses from ANTH1L, ANTH5, ANTH6, HIST4A, HIST4B, HIST12, MUS6, POLS3, POLS4, SOC1A, SOC1B, SOC3, SOC 4,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.S.-T Degree Biology
|
|
||||||
BIO 1, BIO4, BIO 2, BIO 1, BIO5, CHEM1A, CHEM1B, MATH1A, PHYS2A, PHYS2B, PHYS 4A, PHYS 4B,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A.-T Degree History
|
|
||||||
- take_all from HIST1, HIST2,
|
|
||||||
- take at least n courses from HIST4A, HIST7A, HIST4B, HIST7B,
|
|
||||||
- take at least n courses from HIST3, HIST5, HIST 6, HIST12, HIST21, ART21,
|
|
||||||
- take at least n courses from ANTH3, ANTH5, ANTH6, ART1A, ART1B, MUS1A, MUS1B, POLS6, PSYC6, POLS9, SOC9, SOC1B, SOC3, SOC 4, THEA1,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement Fire Science
|
|
||||||
- take_all from JFT17, JFT 8,
|
|
||||||
|
|
||||||
A.S. Degree Aviation Maintenance Technology
|
|
||||||
- take_all from AMT100, AMT101, AMT110, AMT111, AMT120, AMT121,
|
|
||||||
- take at least n courses from CSIS 1,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.S.-T Degree Computer Science
|
|
||||||
- take_all from CSIS5, CSIS45, CSIS24, CSIS46, CSIS27, CSIS28, CSIS26, MATH1A, MATH 1B, PHYS 4A, PHYS 4B,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Digital Media (with options)
|
|
||||||
- take_all from DM75, CSIS75, DM76, CSIS76, DM 77, CSIS 77, DM107, CSIS107,
|
|
||||||
- take at least n courses from DM 85, CSIS 85, DM74, CSIS74, DM80, CSIS80,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from DM60, DM61, DM113,
|
|
||||||
- take at least n courses from DM6, CSIS6, CSIS42, CSIS45, CSIS84, DM160, CSIS160,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.S.-T Degree Chemistry
|
|
||||||
- take_all from CHEM1A, CHEM1B, CHEM12A, CHEM12B, PHYS 4A, PHYS 4B, MATH1A, MATH 1B,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.S. Degree Licensed Vocational Nursing
|
|
||||||
- take at least n courses from AH 11, BIO11, AH3, ENGL 1A, PSYC10, MATH240, BIO7, BIO9, BIO8, AH8, AH9, MATH 242, MATH235, AH 280, CMUN1A, SOC1A,
|
|
||||||
- take at least n courses from AH 51, AH 52, AH 53, AH 54,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Proficiency Home Health Aide
|
|
||||||
- take_all from AH 280, AH182,
|
|
||||||
|
|
||||||
Certificate of Achievement Aviation Maintenance Technology: Airframe
|
|
||||||
- take_all from AMT100, AMT101, AMT110, AMT111,
|
|
||||||
- take at least n courses from AMT190,
|
|
||||||
|
|
||||||
Certificate of Achievement Aviation Maintenance Technology
|
|
||||||
- take_all from AMT100, AMT101, AMT110, AMT111, AMT120, AMT121,
|
|
||||||
- take at least n courses from CSIS 1,
|
|
||||||
|
|
||||||
Certificate of Achievement Aviation Maintenance Technology: Powerplant
|
|
||||||
- take_all from AMT100, AMT101, AMT120, AMT121,
|
|
||||||
- take at least n courses from AMT190,
|
|
||||||
|
|
||||||
A.A.-T Degree Spanish
|
|
||||||
- take_all from SPAN1A, SPAN1B, SPAN2A, SPAN2B,
|
|
||||||
- take at least n courses from SPAN8A, ANTH3, SOC1A, CMUN4, SPAN8B,
|
|
||||||
- take at least n courses from SPAN 12A, SPAN12B, FRNH1A, FRNH1B,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Child Development
|
|
||||||
- take at least n courses from CD1, CD2, CD4, CD9, CD19, CD 20, CD32, CD5, CD7, CD 30A, CD 30B, CD 40,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Studio Art
|
|
||||||
- take_all from ART2A, ART3A, ART79, ART13,
|
|
||||||
- take at least n courses from ART21, HIST21, ART1A, ART1B,
|
|
||||||
- take at least n courses from ART3B, ART14A, ART15A, ART15B, ART34A, ART8A,
|
|
||||||
- take at least n courses from ART10A, ART12A, ART7A,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement Communication Studies
|
|
||||||
- take at least n courses from CMUN129, CSIS129, THEA4, CMUN2, CMUN1A, CMUN4, CMUN5, CMUN8, CMUN10, CMUN 12, CMUN6,
|
|
||||||
|
|
||||||
Certificate of Proficiency Classical and Contemporary World Philosophies and Religions
|
|
||||||
- take at least n courses from PHIL1, PHIL3A, PHIL3B, PHIL6, PHIL9, PHIL23,
|
|
||||||
|
|
||||||
A.A.-T Degree Communication Studies
|
|
||||||
- take at least n courses from CMUN1A,
|
|
||||||
- take at least n courses from CMUN8, CMUN10,
|
|
||||||
- take at least n courses from THEA4, CMUN2, CMUN4, JOUR10, CMUN5,
|
|
||||||
- take at least n courses from ANTH3, ENGL1B, ENGL1C, PSYC10, SOC1A,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Liberal Arts: Elementary Education Emphasis
|
|
||||||
- take_all from PSYC2, CD2, ART25A, CD25A, CD3, PSYC3, PSYC7, CD7, KIN6, CD6, CD8A, CD8B, CD 14A, CD 14B, CD31, CD97, AJ20, AH3, ENGL2F, HIST3, MATH12, THEA2A, CD8C, CD 40, PSYC 40,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Wastewater Collection Technology Education
|
|
||||||
- take_all from WTRM 201, WTRM 202, WTRM 203, WTRM 204, WTRM 207, WTRM 213, WTRM 216,
|
|
||||||
- take at least n courses from WTRM 205, WTRM 206, WTRM 209, WTRM 210, WTRM 211, WTRM 212, WTRM 214, WTRM 215,
|
|
||||||
- take at least n courses from WTRM 218, WTRM 221, WTRM 232, WTRM 233, WTRM 234, WTRM235, WTRM 290, WTRM 217,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Wastewater Technology Education
|
|
||||||
- take_all from WTRM 201, WTRM 202, WTRM 203, WTRM 204, WTRM 207, WTRM 211, WTRM 213,
|
|
||||||
- take at least n courses from WTRM 209, WTRM 210, WTRM 212, WTRM 214, WTRM 215, WTRM 232,
|
|
||||||
- take at least n courses from WTRM 216, WTRM 218, WTRM 221, WTRM 233, WTRM 234, WTRM235, WTRM 290, WTRM 217,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Water Distribution Technology Education
|
|
||||||
- take_all from WTRM 201, WTRM 202, WTRM 203, WTRM 204, WTRM 205, WTRM 206, WTRM 232,
|
|
||||||
- take at least n courses from WTRM 207, WTRM 209, WTRM 210, WTRM 211, WTRM 212, WTRM 213, WTRM 214, WTRM 215,
|
|
||||||
- take at least n courses from WTRM 216, WTRM 218, WTRM 221, WTRM 233, WTRM 234, WTRM235, WTRM 290, WTRM 217,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Water Resource Management
|
|
||||||
- take_all from WTRM 201, WTRM 202, WTRM 203, WTRM 205, WTRM 206, WTRM 207,
|
|
||||||
- take at least n courses from WTRM 208, WTRM 209, WTRM 210, WTRM 211, WTRM 212, WTRM 213, WTRM 214, WTRM 215,
|
|
||||||
- take at least n courses from WTRM 204, WTRM 216, WTRM 217, WTRM 218, WTRM 219, WTRM 220, WTRM 221, WTRM 290, WTRM 233,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Water Technology Education
|
|
||||||
- take_all from WTRM 201, WTRM 202, WTRM 203, WTRM 204, WTRM 205, WTRM 206, WTRM 209,
|
|
||||||
- take at least n courses from WTRM 207, WTRM 210, WTRM 211, WTRM 212, WTRM 213, WTRM 214, WTRM 215, WTRM 232,
|
|
||||||
- take at least n courses from WTRM 216, WTRM 218, WTRM 221, WTRM 233, WTRM 234, WTRM235, WTRM 290, WTRM 217,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A.-T Degree English
|
|
||||||
- take_all from ENGL1B, ENGL1C,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from ENGL5A, ENGL5B, ENGL4A, ENGL4B,
|
|
||||||
- take at least n courses from ENGL9A,
|
|
||||||
- take at least n courses from ENGL2C, ENGL2F, ENGL2J, HUM3, HUM4, JOUR16A, THEA4, ENGL2E, CMUN2,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement HVAC - Heating, Ventilation and Air Conditioning
|
|
||||||
- take at least n courses from HVAC 201, HVAC 202, HVAC 203, HVAC 204, HVAC 205, HVAC 206,
|
|
||||||
|
|
||||||
A.S. Degree HVAC - Heating, Ventilation and Air Conditioning
|
|
||||||
- take at least n courses from HVAC 201, HVAC 202, HVAC 203, HVAC 204, HVAC 205, HVAC 206,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Liberal Arts: Multiple Subjects
|
|
||||||
- take_all from
|
|
||||||
- take at least n courses from ENGL1B, ENGL2B, ENGL2C, ENGL2E, ENGL2J, ENGL4A, ENGL4B, ENGL5A, ENGL5B, CMUN1A, CMUN2, CMUN8, CMUN10, CMUN5,
|
|
||||||
- take at least n courses from BIO9, AH9, BIO8, AH8, BIO15, AH15, AH 11, BIO11, ANTH1, BIO 1, BIO4, BIO5, BIO7, BIO10, ECOL1, ASTR1, CHEM1A, CHEM1B, CHEM12A, CHEM12B, CHEM30A, CHEM30B, GEOL1, GEOG1, PHYS 1, PHYS2A, PHYS2B, PHYS 4A, PHYS 4B, PHYS 4C, PSCI1, BIO13, BIO12,
|
|
||||||
- take at least n courses from PSYC2, CD2, JOUR10, SOC10, CD3, PSYC3, HIST12, HUM12, PSYC7, CD7, ANTH2, ANTH3, ANTH5, CMUN4, ECON1, ECON2, GEOG2, HIST1, HIST2, HIST3, HIST5, HIST 6, POLS1, POLS3, POLS4, PSYC10, SOC1A, SOC1B, SOC3, SOC 4, SOC21, PSYC 40, SJS 5,
|
|
||||||
- take at least n courses from ART21, HIST21, ART1B, ART11, PHIL1, PHIL2, PHIL3A, PHIL3B, PHIL4, PHIL6, PHIL9, HIST7A, HIST7B, HUM3, HUM4, HUM10, THEA1, SPAN1A, SPAN1B, SPAN2A, SPAN2B, SPAN 12A, SPAN12B, HIST4A, MUS6, MUS2, MUS4A, ART6, ART25A, ART3A,
|
|
||||||
- take at least n courses from CSIS 1, CSIS2, CSIS26,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A.-T Degree Elementary Teacher Education
|
|
||||||
- take_all from CD 40, BIO12, CHEM30A, PHYS 1, GEOL1, MATH12, CMUN1A, ENGL 1A, ENGL1B, GEOG1, HIST4A, HIST1, POLS1, CD8C, PSYC 40, BIO10, BIO15, GEOG2,
|
|
||||||
- take at least n courses from ENGL1C, PHIL4,
|
|
||||||
- take at least n courses from ART6, MUS15,
|
|
||||||
- take at least n courses from CD25A, ART25A, CD8A, MATH14,
|
|
||||||
|
|
||||||
NC-Cmptncy: NC Certificate of Competency ESL for Child Care
|
|
||||||
- take at least n courses from ESL 712, ESL 713,
|
|
||||||
|
|
||||||
Certificate of Achievement Digital Video and Animation
|
|
||||||
- take_all from CSIS75, DM75, DM 77, CSIS 77, DM107, CSIS107, DM76, CSIS76,
|
|
||||||
- take_all from DM60, DM61, DM113,
|
|
||||||
|
|
||||||
A.S. Degree Computer Programming
|
|
||||||
- take at least n courses from CSIS45, CSIS24, CSIS46, CSIS 27, CSIS26, CSIS42, CSIS48,
|
|
||||||
- take at least n courses from CSIS12, CSIS12L, CSIS28, CSIS24, CSIS45, CSIS51, CSIS49, CSIS44, CSIS5, CSIS42, CSIS54, CSIS54L, CSIS6, DM6, CSIS160, DM160, CSIS78, CSIS84,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement Computer Programming
|
|
||||||
- take at least n courses from CSIS48, CSIS45, CSIS24, CSIS46, CSIS 27, CSIS26, CSIS42,
|
|
||||||
- take at least n courses from CSIS28, CSIS12, CSIS12L, CSIS24, CSIS45, CSIS51, CSIS49, CSIS44, CSIS5, CSIS42, CSIS54, CSIS54L, CSIS6, DM6, CSIS160, DM160, CSIS78, CSIS84,
|
|
||||||
|
|
||||||
NC-Cmptncy: NC Certificate of Competency ESL Citizenship
|
|
||||||
ESL702A, ESL702B,
|
|
||||||
|
|
||||||
A.A.-T Degree Kinesiology
|
|
||||||
- take_all from KIN2, BIO7, BIO9, KIN39, KIN83, KIN16A, KIN61A, KIN71A, KIN88A, KIN88B, KIN24A, KIN 44A, KIN66A, KIN66B, KIN24B, KIN 44B, KIN62A, KIN62B, KIN64A, KIN64B, KIN68A, KIN68B, KIN70A, KIN70B, KIN73A, KIN73B, KIN74A, KIN74B, KIN81A, KIN81B, KIN82A, KIN82B, KIN89A, KIN89B, KIN17A, KIN17B, KIN18A, KIN18B, KIN19A, KIN19B, KIN20A, KIN20B, KIN31A, KIN31B, KIN79A, KIN79B, KIN80A, KIN87, KIN121A, KIN121B, KIN125A, KIN125B, KIN127A, KIN127B, KIN137A, KIN137B, KIN165A, KIN165B, ATH77, ATH27, ATH25, ATH37, ATH21, MATH5, CHEM1A, CHEM30A, PHYS2A, PHYS 4A, AH 30,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement Kinesiology and Athletics: Personal Fitness Training
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from BIO15, AH15, KIN3, KIN 85, KIN84,
|
|
||||||
- take at least n courses from AH 11, HE1,
|
|
||||||
|
|
||||||
Certificate of Proficiency Welding Technology
|
|
||||||
- take at least n courses from WELD 201, WELD 202, WELD 203,
|
|
||||||
|
|
||||||
NC-Complet: NC Certificate of Completion Welding Technology
|
|
||||||
- take at least n courses from WELD 701, WELD 702, WELD 703,
|
|
||||||
|
|
||||||
NC-Cmptncy: NC Certificate of Competency ESL Lifeskills
|
|
||||||
- take at least n courses from ESL786, ESL787, ESL 789, ESL 788,
|
|
||||||
- take at least n courses from ESL775, ESL776, ESL784, ESL785,
|
|
||||||
|
|
||||||
NC-Complet: NC Certificate of Completion Vocational ESL
|
|
||||||
- take at least n courses from ESL704A, ESL704B,
|
|
||||||
|
|
||||||
Certificate of Proficiency ESL Advanced Level
|
|
||||||
- take at least n courses from ESL562, ESL563, ESL 564, ESL 569, ESL 564,
|
|
||||||
|
|
||||||
Certificate of Proficiency ESL Intermediate Level
|
|
||||||
- take at least n courses from ESL 541, ESL 542, ESL543, ESL547, ESL548, ESL 549, ESL 541,
|
|
||||||
|
|
||||||
NC-Complet: NC Certificate of Completion GED Preparation
|
|
||||||
- take at least n courses from ENGL 756, GUID700,
|
|
||||||
|
|
||||||
A.S.-T Degree Film, Television, and Electronic Media
|
|
||||||
- take_all from THEA20, HUM3, MCTV16, JOUR10,
|
|
||||||
- take at least n courses from MCTV6, THEA6,
|
|
||||||
- take at least n courses from HUM25, MCTV18, THEA18, MCTV 17A, THEA 17A,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from HUM4, HUM6, HUM10, MCTV 43, MCTV 19, THEA 19,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A.-T Degree Philosophy
|
|
||||||
- take at least n courses from PHIL2, PHIL1, PHIL3A,
|
|
||||||
- take at least n courses from PHIL7A, PHIL7B, PHIL4,
|
|
||||||
- take at least n courses from HIST7A, HIST7B, PHIL3A, PHIL3B,
|
|
||||||
- take at least n courses from PHIL9, PHIL6, PHIL15, PHIL12,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement Business: Accounting Option
|
|
||||||
- take at least n courses from CSIS 1, CSIS2,
|
|
||||||
- take at least n courses from ACCT 103, ACCT20, ACCT 120,
|
|
||||||
- take at least n courses from ACCT21, ACCT105, BUS1, BUS11, ECON11, MATH5, BUS14, ECON14, BUS80, BOT 100, BUS 100, CSIS128, CMUN 12, ECON1, ECON2, ACCT 120, CSIS 120, ACCT121, CSIS121, BOT 212, BOT 291A, BOT 291B, BOT 291C, CSIS 129, CMUN 129, CSIS 212, CSIS 126, CSIS122, CSIS75, DM 75, CSIS8, CSIS6, DM6, ACCT20,
|
|
||||||
|
|
||||||
Certificate of Achievement Business: Management Option
|
|
||||||
- take at least n courses from CSIS 1, CSIS2,
|
|
||||||
- take at least n courses from MKTG100, MGMT104, MGMT120, MGMT101,
|
|
||||||
- take at least n courses from BOT 291A, BOT 291B, BOT 291C, BUS1, BUS11, ECON11, MATH5, BUS80, BUS14, ECON14, BOT 100, BUS 100, CSIS8, CSIS128, CMUN 12, ECON1, ECON2, ACCT21, ACCT105, ACCT 120, CSIS 120, ACCT121, CSIS121, BOT 212, CSIS6, DM6, CSIS75, DM 75, CSIS122, CSIS 212, CSIS 126, CSIS 129, CMUN 129, ACCT20,
|
|
||||||
|
|
||||||
Certificate of Achievement Business: Medical Office Option
|
|
||||||
- take at least n courses from CSIS2, CSIS 1,
|
|
||||||
- take at least n courses from BOT180, BOT 281, BOT182, CSIS 126, BOT 283,
|
|
||||||
- take at least n courses from BOT 212, BOT 291A, BOT 291B, BOT 291C, CSIS122, CSIS 212, CSIS8, ACCT21, ACCT105, ACCT 120, CSIS 120, ACCT121, CSIS121, BOT 100, BUS 100, BUS1, BUS11, ECON11, MATH5, BUS14, ECON14, BUS80, CSIS6, DM6, CSIS75, DM 75, CSIS 126, CSIS128, CSIS 129, CMUN 129, CMUN 12, ECON1, ECON2, ACCT20,
|
|
||||||
|
|
||||||
Certificate of Achievement Business: Office Applications Option
|
|
||||||
- take at least n courses from CSIS 1, CSIS2,
|
|
||||||
- take at least n courses from CSIS121, CSIS122, CSIS 126, CSIS 129, CMUN 129, ACCT121,
|
|
||||||
- take at least n courses from BOT 212, BOT 291A, BOT 291B, BOT 291C, BOT 100, BUS 100, BUS80, CMUN 12, CSIS 120, ACCT 120, CSIS8, CSIS 212, DM 75, CSIS75, CSIS128, ACCT21, ACCT105, ACCT121, CSIS121, BUS1, BUS11, ECON11, MATH5, CSIS6, DM6, CSIS122, CSIS 126, CSIS 129, CMUN 129, ECON1, ECON2, BUS14, ECON14, ACCT20,
|
|
||||||
|
|
||||||
Certificate of Achievement Real Estate
|
|
||||||
- take_all from RE160, RE162,
|
|
||||||
- take at least n courses from BUS80, ACCT 103,
|
|
||||||
|
|
||||||
Certificate of Achievement Business: Technical Publishing Option
|
|
||||||
- take at least n courses from CSIS 1, CSIS2,
|
|
||||||
- take at least n courses from CSIS6, CSIS75, DM6, DM 75, CSIS 74, DM 74, CSIS76, DM76, CSIS80, DM80, CSIS 85, DM 85,
|
|
||||||
- take at least n courses from BOT 100, BUS 100, BOT 291A, BOT 291B, BOT 291C, CMUN 129, CSIS 129, CMUN 12, CSIS8, CSIS 212, CSIS122, ACCT21, ACCT105, ACCT 120, CSIS 120, ACCT121, CSIS121, BOT 212, BUS1, BUS11, ECON11, MATH5, BUS14, ECON14, BUS80, CSIS6, DM6, CSIS75, DM 75, CSIS 126, CSIS128, ECON1, ECON2, ACCT20,
|
|
||||||
|
|
||||||
A.A. Degree Business (with options)
|
|
||||||
- take at least n courses from CSIS 1, CSIS2,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from ACCT 120, CSIS 120, ACCT20, ACCT 103,
|
|
||||||
- take at least n courses from MGMT101, MGMT104, MKTG100, MGMT120,
|
|
||||||
- take at least n courses from BOT180, BOT 281, BOT182, CSIS 126, BOT 283,
|
|
||||||
- take at least n courses from CSIS121, CSIS 126, CSIS122, CSIS 129, CMUN 129, ACCT121,
|
|
||||||
- take at least n courses from CSIS6, DM6, CSIS75, DM 75, CSIS 74, DM 74, CSIS76, DM76, CSIS80, DM80, CSIS 85, DM 85,
|
|
||||||
- take at least n courses from BUS1, BUS80, ACCT21, ACCT105, ACCT 120, CSIS 120, ACCT121, CSIS121, BOT 212, BOT 291A, BOT 291B, BOT 291C, BOT 100, BUS 100, BUS11, ECON11, MATH5, BUS14, ECON14, CSIS6, DM6, CSIS8, CSIS75, DM 75, CSIS122, CSIS 212, CSIS 126, CSIS128, CSIS 129, CMUN 129, CMUN 12, ECON1, ECON2, ACCT20, CSIS 212,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.S.-T Degree Public Health Science
|
|
||||||
HE1, HE 5, MATH5, BIO10, CHEM1A, CHEM30A, PSYC10, BIO7, BIO9, ECON1, ECON2, BIO11, HE2, SOC1A,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A. Degree Kinesiology
|
|
||||||
- take_all from KIN2, BIO15,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from HE1, KIN5, KIN 6, KIN8,
|
|
||||||
- take at least n courses from KIN7, KIN15, KIN7,
|
|
||||||
- take at least n courses from KIN3, KIN4A,
|
|
||||||
- take at least n courses from KIN84, KIN 85,
|
|
||||||
- take at least n courses from KIN3, KIN4A, KIN4B, KIN4C, KIN5, KIN6, KIN7, KIN8, KIN15, KIN84, KIN 85, HE1, BIO7, BIO9, BIO11, BUS80, KIN 92,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.S. Degree Engineering
|
|
||||||
- take at least n courses from ENGR 10, MATH1A, MATH 1B, MATH1C, PHYS 4A, PHYS 4B,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from ENGR5, CSIS45,
|
|
||||||
- take at least n courses from ENGR1, ENGR2, ENGR3, ENGR4,
|
|
||||||
- take at least n courses from CHEM1A, ENGR5, ENGR2, ENGR3, PHYS 4C, MATH2, MATH2C, CHEM1A, CSIS45, CHEM1B, ENGR3, PHYS 4C, MATH2, MATH2C, CHEM1A, ENGR5, ENGR2, PHYS 4C, CHEM1B, MATH2, MATH2C, CSIS45, CSIS46, MATH 16, ENGR3, PHYS 4C, MATH2, MATH2C, CHEM1A, ENGR5, ENGR2, ENGR3, CHEM1B, MATH2, MATH2C,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
A.A.-T Degree Sociology
|
|
||||||
- take_all from SOC1A, SOC1B, MATH5, SOC21, SOC3, SOC 4, SOC10,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
NC-Complet: NC Certificate of Completion Computer Applications for ESL Students
|
|
||||||
- take at least n courses from ESL 707, ESL 709, ESL 710, ESL 705, ESL 706,
|
|
||||||
|
|
||||||
A.A.-T Degree Social Justice Studies
|
|
||||||
- take_all from SOC3, SJS 5, CMUN4, SOC1B,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from HIST12, HIST5, HIST 6, HUM12,
|
|
||||||
- take at least n courses from ENGL2B, ENGL2E, HIST4A, HIST4B, PHIL3B,
|
|
||||||
- take at least n courses from CMUN6, ANTH3, POLS6, PSYC6, SOC1B,
|
|
||||||
- take at least n courses from BUS11, MATH5, PSYC32,
|
|
||||||
- take at least n courses from SPAN2B, SPAN 12A,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
NC-Cmptncy: NC Certificate of Competency ESL Intermediate II Level
|
|
||||||
- take at least n courses from ESL 741, ESL 742, ESL 743, ESL748, ESL747, ESL 749,
|
|
||||||
|
|
||||||
Certificate of Achievement Wastewater Collection Technology Education
|
|
||||||
- take_all from WTRM 202, WTRM 203, WTRM 204, WTRM 207, WTRM 213, WTRM 216, WTRM 201,
|
|
||||||
- take at least n courses from WTRM 205, WTRM 206, WTRM 209, WTRM 210, WTRM 211, WTRM 212, WTRM 214, WTRM 215,
|
|
||||||
- take at least n courses from WTRM 217, WTRM 218, WTRM 221, WTRM 232, WTRM 233, WTRM 234, WTRM235, WTRM 290,
|
|
||||||
|
|
||||||
Certificate of Achievement Wastewater Technology Education
|
|
||||||
- take_all from WTRM 201, WTRM 202, WTRM 203, WTRM 204, WTRM 207, WTRM 211, WTRM 213,
|
|
||||||
- take at least n courses from WTRM 209, WTRM 210, WTRM 212, WTRM 214, WTRM 215, WTRM 232,
|
|
||||||
- take at least n courses from WTRM 216, WTRM 217, WTRM 218, WTRM 221, WTRM 233, WTRM 234, WTRM235, WTRM 290,
|
|
||||||
|
|
||||||
Certificate of Achievement Water Distribution Technology Education
|
|
||||||
- take_all from WTRM 201, WTRM 202, WTRM 203, WTRM 204, WTRM 205, WTRM 206, WTRM 232,
|
|
||||||
- take at least n courses from WTRM 207, WTRM 209, WTRM 210, WTRM 211, WTRM 212, WTRM 213, WTRM 214, WTRM 215,
|
|
||||||
- take at least n courses from WTRM 216, WTRM 217, WTRM 218, WTRM 221, WTRM 233, WTRM 234, WTRM235, WTRM 290,
|
|
||||||
|
|
||||||
Certificate of Achievement Water Resource Management
|
|
||||||
- take_all from WTRM 201, WTRM 202, WTRM 203, WTRM 205, WTRM 206, WTRM 207,
|
|
||||||
- take at least n courses from WTRM 208, WTRM 209, WTRM 210, WTRM 211, WTRM 212, WTRM 213, WTRM 214, WTRM 215,
|
|
||||||
- take at least n courses from WTRM 204, WTRM 216, WTRM 217, WTRM 218, WTRM 219, WTRM 220, WTRM 221, WTRM 233, WTRM 290,
|
|
||||||
|
|
||||||
Certificate of Achievement Water Technology Education
|
|
||||||
- take_all from WTRM 201, WTRM 202, WTRM 203, WTRM 204, WTRM 205, WTRM 206, WTRM 209,
|
|
||||||
- take at least n courses from WTRM 207, WTRM 210, WTRM 211, WTRM 212, WTRM 213, WTRM 214, WTRM 215, WTRM 232,
|
|
||||||
- take at least n courses from WTRM 216, WTRM 218, WTRM 217, WTRM 221, WTRM 233, WTRM 234, WTRM235, WTRM 290,
|
|
||||||
|
|
||||||
A.A.-T Degree Political Science
|
|
||||||
- take_all from POLS1,
|
|
||||||
- take at least n courses from PSYC32, POLS32, POLS3, POLS4, POLS10, MATH5,
|
|
||||||
- take at least n courses from POLS5, POLS7, POLS 12,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
NC-Complet: NC Certificate of Completion Job Coaching
|
|
||||||
GUID 600, GUID 601,
|
|
||||||
|
|
||||||
NC-Complet: NC Certificate of Completion Workforce Preparation and Success
|
|
||||||
LIFE 700, LIFE 701,
|
|
||||||
|
|
||||||
Certificate of Achievement Construction Management
|
|
||||||
- take at least n courses from CMGT 101, CMGT 102, CMGT 103, CMGT 104, CMGT 105,
|
|
||||||
|
|
||||||
NC-Cmptncy: NC Certificate of Competency ESL Beginning Level
|
|
||||||
- take at least n courses from ESL 727, ESL 728,
|
|
||||||
|
|
||||||
NC-Cmptncy: NC Certificate of Competency ESL Intermediate I Level
|
|
||||||
- take at least n courses from ESL737, ESL738, ESL 731, ESL 739,
|
|
||||||
|
|
||||||
Certificate of Achievement Licensed Vocational Nursing
|
|
||||||
- take at least n courses from AH 71, AH 72, AH 73,
|
|
||||||
|
|
||||||
Certificate of Achievement Television Performance Option
|
|
||||||
- take at least n courses from THEA18, MCTV18, THEA16, MCTV16, THEA 17A, THEA6, THEA20, HUM25, MCTV6, THEA 19, THEA12A, THEA13A, MCTV 43,
|
|
||||||
|
|
||||||
Certificate of Achievement Film and Television Production
|
|
||||||
MCTV6, MCTV18, THEA20, MCTV 43, HUM25, MCTV16, MCTV 17A, MCTV 19, HUM3, HUM4, HUM6, HUM10,
|
|
||||||
|
|
||||||
Certificate of Achievement Cybersecurity
|
|
||||||
- take at least n courses from CSIS 179, CSIS 184, AJ184, CSIS 186, CSIS 187,
|
|
||||||
|
|
||||||
A.S.-T Degree Business Administration 2.0
|
|
||||||
- take at least n courses from ACCT20, ACCT21, ECON1, ECON2, BUS80,
|
|
||||||
- take at least n courses from MATH6, MATH7,
|
|
||||||
- take at least n courses from BUS11, ECON11, MATH5,
|
|
||||||
- take at least n courses from BUS1, BUS 100, BOT 100,
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
NC-Complet: NC Certificate of Completion Small Business Development
|
|
||||||
- take_all from BUS 700, BUS 701,
|
|
||||||
|
|
||||||
NC-Cmptncy: NC Certificate of Competency ESL Advanced Level
|
|
||||||
- take at least n courses from ESL 763, ESL 762, ESL 764, ESL 769,
|
|
||||||
|
|
||||||
Certificate of Achievement California State University (CSU) General Education Pattern
|
|
||||||
- take at least n courses from CMUN1A, CMUN5, CMUN8, CMUN10, ENGL 1A, PHIL2, PHIL4, ENGL1C, CMUN 3,
|
|
||||||
- take at least n courses from BIO9, BIO8, BIO15, AH15, BUS11, ECON11, ASTR1, CHEM1A, CHEM1B, CHEM12A, CHEM12B, CHEM30A, CHEM30B, GEOG1, GEOL1, PHYS 1, PHYS2A, PHYS2B, PHYS 4A, PHYS 4B, PHYS 4C, PSCI1, PSCI2, ANTH1, BIO 1, BIO4, BIO5, BIO7, BIO10, BIO12, BIO13, ECOL1, BUS14, MATH1A, MATH 1B, MATH1C, MATH2, MATH2C, MATH5, MATH6, MATH7, MATH8A, MATH8B, MATH12, MATH14, ANTH1L, ENVS1, MATH 11, BIO 2, MATH 16, ECON14,
|
|
||||||
- take at least n courses from JOUR10, SOC10, ART25A, CD25A, HIST12, ART21, HIST21, THEA4, CMUN2, ART1A, ART1B, ART2A, ART3A, ART6, ART8A, ART10A, ART13, HUM6, HUM10, MUS1A, MUS1B, MUS3A, MUS4A, MUS6, THEA1, THEA3, THEA7, THEA12A, THEA20, ART11, ENGL1B, ENGL2B, ENGL2C, ENGL2E, ENGL2F, ENGL2J, ENGL4A, ENGL4B, ENGL5A, ENGL5B, ENGL9A, ENGL9B, FRNH1A, FRNH1B, HIST1, HIST3, HIST4A, HIST4B, HIST5, HIST 6, HIST7A, HIST7B, HUM3, HUM4, HUM10, JPN1A, JPN1B, PHIL1, PHIL3A, PHIL3B, PHIL6, PHIL9, SPAN1A, SPAN1B, SPAN2A, SPAN2B, SPAN 12A, SPAN12B, ART14A, DM60, MUS2, THEA25, THEA26, MCTV16, CHN1A, CHN1B, PHIL7A, PHIL7B, PHIL12, PHIL15, FRNH 2A, FRNH 2B, ART 4,
|
|
||||||
- take at least n courses from PSYC2, CD2, JOUR10, SOC10, CD3, PSYC3, AJ5, POLS5, HIST12, POLS6, CMUN6, PSYC6, PSYC7, CD7, HIST1, HIST2, POLS1, ANTH2, ANTH3, ANTH5, ECON1, ECON2, CMUN4, SOC3, HIST5, HIST 6, SOC 4, GEOG2, HIST1, HIST2, HIST3, HIST4A, HIST4B, HIST5, HIST 6, ANTH6, CMUN4, POLS1, POLS3, POLS4, PSYC10, PSYC11, SOC1A, SOC1B, SOC3, SOC 4, AJ10, ANTH32, CD 40, POLS10, POLS12, POLS32, PHIL12, PSYC 40, PSYC32, SJS 5, HE 5, SOC 25, ETHN 3B, ECON 10, ETHN 12, HIST 10, ETHN 10B, ANTH 10, ETHN 10A, ENGL 2L, ETHN 2L, ENGL 2R, ETHN 2R, ETHN 1, ETHN 2,
|
|
||||||
- take at least n courses from AH 11, GUID1, AH3, GUID6, HE1, HE2, SOC21, KIN8, KIN1, GUID27, HE 92, KIN 92,
|
|
||||||
- take at least n courses from ETHN 3B, ETHN 10B,
|
|
||||||
|
|
||||||
Certificate of Proficiency Peer Education Leadership - Basic
|
|
||||||
- take at least n courses from GUID52, PSYC52, GUID 28, ENGL12A,
|
|
||||||
|
|
||||||
Certificate of Proficiency Peer Education Leadership - Advanced
|
|
||||||
- take at least n courses from GUID52, PSYC52, GUID 28, ENGL12A,
|
|
||||||
- take at least n courses from ENGL 12, ENGL12C, ENGL12D, CMUN1A, CMUN4, CMUN6, POLS6, PSYC6, CMUN8, CMUN10,
|
|
||||||
|
|
||||||
A.A. Degree Communication Studies
|
|
||||||
- take at least n courses from CMUN1A, CMUN4, CMUN8, CMUN10, PSYC10,
|
|
||||||
- take_all from JOUR10, SOC10, POLS6, CMUN6, PSYC6, GUID27, CMUN5, PHIL4, ANTH3, SOC1A, SOC21, SOC 4,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement Communication Studies: Interpersonal Communication
|
|
||||||
- take at least n courses from POLS6, CMUN6, PSYC6, GUID27, CMUN5, CMUN8, PSYC10, SOC1A, CMUN 12,
|
|
||||||
|
|
||||||
Certificate of Achievement Cosmetology
|
|
||||||
- take_all from COS200, COS201, COS202,
|
|
||||||
|
|
||||||
A.S. Degree Cosmetology
|
|
||||||
- take_all from COS200, COS201, COS202,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
||||||
Certificate of Achievement Intersegmental General Education Transfer Curriculum (IGETC)
|
|
||||||
- take at least n courses from ENGL 1A, ENGL1C, PHIL4, CMUN1A, CMUN5, CMUN8, CMUN10,
|
|
||||||
- take at least n courses from BUS11, ECON11, MATH1A, MATH 1B, MATH1C, MATH2, MATH2C, MATH5, MATH6, MATH7, MATH8A, MATH8B, MATH14, MATH 11, MATH 16,
|
|
||||||
- take at least n courses from ART21, HIST21, ART1A, ART1B, ART6, HUM6, MUS1A, MUS1B, MUS6, THEA1, THEA3, THEA7, ENGL1B, ENGL2B, ENGL2C, ENGL2E, ENGL2F, ENGL2J, ENGL4A, ENGL4B, ENGL5A, ENGL5B, HIST1, HIST2, HIST3, HIST4A, HIST4B, HIST5, HIST 6, HIST7A, HIST7B, HUM3, HUM4, HUM10, PHIL1, PHIL3A, PHIL3B, PHIL6, PHIL9, SPAN2A, SPAN2B, MUS2, MUS6, MCTV16, PHIL7A, PHIL7B, PHIL15, PHIL12, ART 4, FRNH 2A, FRNH 2B, MUS15, ENGL 2L, ETHN 2L,
|
|
||||||
- take at least n courses from PSYC2, CD2, JOUR10, SOC10, CD3, PSYC3, AJ5, POLS5, HIST12, ANTH2, ANTH3, ANTH5, ANTH6, CMUN4, ECON1, ECON2, GEOG2, HIST1, HIST2, HIST3, HIST4A, HIST4B, HIST5, HIST 6, POLS1, POLS3, POLS4, PSYC10, PSYC11, SOC1A, SOC1B, SOC3, SOC 4, AJ10, ANTH32, POLS7, POLS10, POLS32, PSYC32, PSYC 40, SJS 5, SOC 25, CD 40, ECON 10, ETHN 12, ANTH 10, ETHN 10A, ENGL 2L, ETHN 2, ENGL 2R, ETHN 2R, ETHN 1, ETHN 2, HIST 10, ETHN 10B, ETHN 12, ETHN 3B,
|
|
||||||
- take at least n courses from BIO9, BIO8, BIO15, AH15, ASTR1, CHEM1A, CHEM1B, CHEM12A, CHEM12B, CHEM30A, CHEM30B, GEOG1, GEOL1, PSCI1, PSCI2, PHYS 1, PHYS2A, PHYS2B, PHYS 4A, PHYS 4B, PHYS 4C, ANTH1, BIO 1, BIO4, BIO5, BIO7, BIO10, BIO12, BIO13, ECOL1, ANTH1L, ENVS1, BIO 2,
|
|
||||||
- take at least n courses from FRNH1B, JPN1B, SPAN1B, SPAN2A, SPAN2B, SPAN 12A, SPAN12B, CHN1B, FRNH 2A, FRNH 2B,
|
|
||||||
- take at least n courses from
|
|
||||||
|
|
@ -6,7 +6,10 @@ aiomysql==0.2.0
|
||||||
aiosignal==1.3.1
|
aiosignal==1.3.1
|
||||||
annotated-types==0.6.0
|
annotated-types==0.6.0
|
||||||
annoy==1.17.3
|
annoy==1.17.3
|
||||||
|
anyio==4.3.0
|
||||||
arrow==1.3.0
|
arrow==1.3.0
|
||||||
|
asciimatics==1.15.0
|
||||||
|
asttokens==2.4.1
|
||||||
async-timeout==4.0.3
|
async-timeout==4.0.3
|
||||||
asyncpg==0.29.0
|
asyncpg==0.29.0
|
||||||
attrs==23.2.0
|
attrs==23.2.0
|
||||||
|
|
@ -34,12 +37,15 @@ cssselect==1.2.0
|
||||||
cycler==0.12.1
|
cycler==0.12.1
|
||||||
cymem==2.0.8
|
cymem==2.0.8
|
||||||
dateparser==1.2.0
|
dateparser==1.2.0
|
||||||
|
decorator==5.1.1
|
||||||
deepdiff==6.7.1
|
deepdiff==6.7.1
|
||||||
|
distro==1.9.0
|
||||||
dm-tree==0.1.8
|
dm-tree==0.1.8
|
||||||
docxcompose==1.4.0
|
docxcompose==1.4.0
|
||||||
docxtpl==0.16.7
|
docxtpl==0.16.7
|
||||||
durable-rules==2.0.28
|
durable-rules==2.0.28
|
||||||
et-xmlfile==1.1.0
|
et-xmlfile==1.1.0
|
||||||
|
executing==2.0.1
|
||||||
filelock==3.13.1
|
filelock==3.13.1
|
||||||
Flask==3.0.1
|
Flask==3.0.1
|
||||||
Flask-SocketIO==5.3.6
|
Flask-SocketIO==5.3.6
|
||||||
|
|
@ -60,16 +66,21 @@ h11==0.14.0
|
||||||
h5py==3.10.0
|
h5py==3.10.0
|
||||||
html2markdown==0.1.7
|
html2markdown==0.1.7
|
||||||
htmldate==1.7.0
|
htmldate==1.7.0
|
||||||
|
httpcore==1.0.4
|
||||||
httplib2==0.22.0
|
httplib2==0.22.0
|
||||||
|
httpx==0.27.0
|
||||||
huggingface-hub==0.20.3
|
huggingface-hub==0.20.3
|
||||||
hyperlink==21.0.0
|
hyperlink==21.0.0
|
||||||
ics==0.7.2
|
ics==0.7.2
|
||||||
idna==3.6
|
idna==3.6
|
||||||
incremental==22.10.0
|
incremental==22.10.0
|
||||||
|
iniconfig==2.0.0
|
||||||
instructure-dap-client==0.3.18
|
instructure-dap-client==0.3.18
|
||||||
|
ipython==8.22.1
|
||||||
itemadapter==0.8.0
|
itemadapter==0.8.0
|
||||||
itemloaders==1.1.0
|
itemloaders==1.1.0
|
||||||
itsdangerous==2.1.2
|
itsdangerous==2.1.2
|
||||||
|
jedi==0.19.1
|
||||||
Jinja2==3.1.3
|
Jinja2==3.1.3
|
||||||
jmespath==1.0.1
|
jmespath==1.0.1
|
||||||
joblib==1.3.2
|
joblib==1.3.2
|
||||||
|
|
@ -90,6 +101,7 @@ markdown-it-py==3.0.0
|
||||||
markdownify==0.11.6
|
markdownify==0.11.6
|
||||||
MarkupSafe==2.1.5
|
MarkupSafe==2.1.5
|
||||||
matplotlib==3.8.2
|
matplotlib==3.8.2
|
||||||
|
matplotlib-inline==0.1.6
|
||||||
mdit-py-plugins==0.4.0
|
mdit-py-plugins==0.4.0
|
||||||
mdurl==0.1.2
|
mdurl==0.1.2
|
||||||
minizinc==0.9.0
|
minizinc==0.9.0
|
||||||
|
|
@ -101,6 +113,7 @@ networkx==3.2.1
|
||||||
nltk==3.8.1
|
nltk==3.8.1
|
||||||
numpy==1.26.3
|
numpy==1.26.3
|
||||||
oauthlib==3.2.2
|
oauthlib==3.2.2
|
||||||
|
openai==1.12.0
|
||||||
openpyxl==3.1.2
|
openpyxl==3.1.2
|
||||||
ordered-set==4.1.0
|
ordered-set==4.1.0
|
||||||
orjson==3.9.12
|
orjson==3.9.12
|
||||||
|
|
@ -111,6 +124,7 @@ pampy==0.3.0
|
||||||
pandas==2.2.0
|
pandas==2.2.0
|
||||||
paramiko==3.4.0
|
paramiko==3.4.0
|
||||||
parsel==1.8.1
|
parsel==1.8.1
|
||||||
|
parso==0.8.3
|
||||||
path-dict==4.0.0
|
path-dict==4.0.0
|
||||||
pathlib==1.0.1
|
pathlib==1.0.1
|
||||||
patsy==0.5.6
|
patsy==0.5.6
|
||||||
|
|
@ -119,10 +133,13 @@ pdfminer.six==20231228
|
||||||
piexif==1.1.3
|
piexif==1.1.3
|
||||||
pillow==10.2.0
|
pillow==10.2.0
|
||||||
plotly==5.18.0
|
plotly==5.18.0
|
||||||
|
pluggy==1.4.0
|
||||||
preshed==3.0.9
|
preshed==3.0.9
|
||||||
|
prompt-toolkit==3.0.43
|
||||||
Protego==0.3.0
|
Protego==0.3.0
|
||||||
protobuf==4.25.2
|
protobuf==4.25.2
|
||||||
psycopg2==2.9.9
|
psycopg2==2.9.9
|
||||||
|
pure-eval==0.2.2
|
||||||
pyarrow==15.0.0
|
pyarrow==15.0.0
|
||||||
pyasn1==0.5.1
|
pyasn1==0.5.1
|
||||||
pyasn1-modules==0.3.0
|
pyasn1-modules==0.3.0
|
||||||
|
|
@ -131,6 +148,7 @@ pycryptodome==3.20.0
|
||||||
pydantic==2.6.1
|
pydantic==2.6.1
|
||||||
pydantic_core==2.16.2
|
pydantic_core==2.16.2
|
||||||
PyDispatcher==2.0.7
|
PyDispatcher==2.0.7
|
||||||
|
pyfiglet==1.0.2
|
||||||
pygame==2.5.2
|
pygame==2.5.2
|
||||||
Pygments==2.17.2
|
Pygments==2.17.2
|
||||||
PyJWT==2.8.0
|
PyJWT==2.8.0
|
||||||
|
|
@ -142,6 +160,7 @@ pyparsing==3.1.1
|
||||||
PyPDF2==3.0.1
|
PyPDF2==3.0.1
|
||||||
pysftp==0.2.9
|
pysftp==0.2.9
|
||||||
PySocks==1.7.1
|
PySocks==1.7.1
|
||||||
|
pytest==8.0.1
|
||||||
python-dateutil==2.8.2
|
python-dateutil==2.8.2
|
||||||
python-docx==1.1.0
|
python-docx==1.1.0
|
||||||
python-engineio==4.8.2
|
python-engineio==4.8.2
|
||||||
|
|
@ -158,6 +177,7 @@ requests-file==2.0.0
|
||||||
requests-oauthlib==1.3.1
|
requests-oauthlib==1.3.1
|
||||||
rich==13.7.0
|
rich==13.7.0
|
||||||
rpds-py==0.17.1
|
rpds-py==0.17.1
|
||||||
|
rpy2==3.5.15
|
||||||
rsa==4.9
|
rsa==4.9
|
||||||
safetensors==0.4.2
|
safetensors==0.4.2
|
||||||
schedule==1.2.1
|
schedule==1.2.1
|
||||||
|
|
@ -180,6 +200,7 @@ spacy-legacy==3.0.12
|
||||||
spacy-loggers==1.0.5
|
spacy-loggers==1.0.5
|
||||||
SQLAlchemy==2.0.25
|
SQLAlchemy==2.0.25
|
||||||
srsly==2.4.8
|
srsly==2.4.8
|
||||||
|
stack-data==0.6.3
|
||||||
statsmodels==0.14.1
|
statsmodels==0.14.1
|
||||||
striprtf==0.0.26
|
striprtf==0.0.26
|
||||||
sympy==1.12
|
sympy==1.12
|
||||||
|
|
@ -198,6 +219,7 @@ toolz==0.12.1
|
||||||
torch==2.2.0
|
torch==2.2.0
|
||||||
tqdm==4.66.1
|
tqdm==4.66.1
|
||||||
trafilatura==1.7.0
|
trafilatura==1.7.0
|
||||||
|
traitlets==5.14.1
|
||||||
transformers==4.37.2
|
transformers==4.37.2
|
||||||
trio==0.24.0
|
trio==0.24.0
|
||||||
trio-websocket==0.11.1
|
trio-websocket==0.11.1
|
||||||
|
|
@ -214,6 +236,7 @@ uritemplate==4.1.1
|
||||||
urllib3==2.2.0
|
urllib3==2.2.0
|
||||||
w3lib==2.1.2
|
w3lib==2.1.2
|
||||||
wasabi==1.1.2
|
wasabi==1.1.2
|
||||||
|
wcwidth==0.2.13
|
||||||
weasel==0.3.4
|
weasel==0.3.4
|
||||||
Werkzeug==3.0.1
|
Werkzeug==3.0.1
|
||||||
Whoosh==2.7.4
|
Whoosh==2.7.4
|
||||||
|
|
|
||||||
13
semesters.py
13
semesters.py
|
|
@ -1,7 +1,10 @@
|
||||||
|
# Try to gather all the different formats and ways of labeling a semester, along with their associated dates.
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
sem_to_short = { 'Summer 2021': 'su21', 'Fall 2021':'fa21', 'Winter 2022':'wi22', 'Spring 2022':'sp22', 'Summer 2022':'su22', 'Fall 2022':'fa22' }
|
||||||
|
|
||||||
|
|
||||||
standard = ['Fall 2024', 'Summer 2024', 'Spring 2024', 'Winter 2024',
|
standard = ['Fall 2024', 'Summer 2024', 'Spring 2024', 'Winter 2024',
|
||||||
'Fall 2023', 'Summer 2023', 'Spring 2023', 'Winter 2023',
|
'Fall 2023', 'Summer 2023', 'Spring 2023', 'Winter 2023',
|
||||||
'Fall 2022', 'Summer 2022', 'Spring 2022', 'Winter 2022',
|
'Fall 2022', 'Summer 2022', 'Spring 2022', 'Winter 2022',
|
||||||
|
|
@ -27,6 +30,7 @@ canvas_label = []
|
||||||
semester_list = {}
|
semester_list = {}
|
||||||
|
|
||||||
season_to_number = { 'Fall': '70', 'Summer': '50', 'Spring': '30', 'Winter': '10'}
|
season_to_number = { 'Fall': '70', 'Summer': '50', 'Spring': '30', 'Winter': '10'}
|
||||||
|
s_to_n = {'sp':'30','su':'50','fa':'70'}
|
||||||
|
|
||||||
for s in list(zip(standard,code,begin)):
|
for s in list(zip(standard,code,begin)):
|
||||||
season,year = s[0].split(' ')
|
season,year = s[0].split(' ')
|
||||||
|
|
@ -38,13 +42,10 @@ for s in list(zip(standard,code,begin)):
|
||||||
semester_list[cl] = sem_record
|
semester_list[cl] = sem_record
|
||||||
|
|
||||||
|
|
||||||
# TODO remove original in localcache.py
|
# Given 'fa22' return 202270
|
||||||
def to_sis_sem(s):
|
def to_sis_sem(s):
|
||||||
season = s[0:2]
|
season = s[0:2]
|
||||||
year = "20" + s[2:5]
|
return "20" + s[2:5] + s_to_n[season]
|
||||||
a = {'sp':'30','su':'50','fa':'70'}
|
|
||||||
season = a[season]
|
|
||||||
return year+season
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
348
tasks.py
348
tasks.py
|
|
@ -14,12 +14,13 @@
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import pysftp, os, datetime, requests, re, json, sqlite3, codecs, csv, sys
|
import pysftp, os, datetime, requests, re, json, sqlite3, codecs, csv, sys
|
||||||
import funcy, os.path, shutil, urllib
|
import funcy, os.path, datetime, calendar, time, shutil, urllib
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
#from datetime import strptime
|
from time import gmtime, strftime
|
||||||
from time import mktime
|
from time import mktime
|
||||||
|
|
||||||
|
from semesters import sem_to_short
|
||||||
from canvas_secrets import badgr_target, badgr_hd
|
from canvas_secrets import badgr_target, badgr_hd
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1044,211 +1045,18 @@ def cmtes():
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sem_to_short = { 'Summer 2021': 'su21', 'Fall 2021':'fa21', 'Winter 2022':'wi22', 'Spring 2022':'sp22', 'Summer 2022':'su22', 'Fall 2022':'fa22' }
|
|
||||||
def strip(x): return x.strip()
|
|
||||||
|
|
||||||
def esc_comma(x): return re.sub(',','[CMA]',x)
|
###
|
||||||
|
###
|
||||||
def by_sem(x): return x['sem']
|
### CALENDAR RELATED FUNCTIONS
|
||||||
|
###
|
||||||
def parse_schedule():
|
|
||||||
# "Course Code","Start Date","End Date",Term,Delivery,CRN,Status,"Course Name",
|
|
||||||
# 8 "Course Description","Units/Credit hours","Instructor Last Name",
|
|
||||||
# 11 "Instructor First Name",Campus/College,"Meeting Days and Times",
|
|
||||||
# 14 "Pass/No Pass available?","Class Capacity","Available Seats","Waitlist Capacity",
|
|
||||||
# 18 "Current Waitlist Length","Meeting Locations","Course Notes",ZTC 21
|
|
||||||
|
|
||||||
oo = codecs.open('cache/fa20_section_notes.txt','w','utf-8')
|
|
||||||
pp = codecs.open('cache/fa20_section_summary.txt','w','utf-8')
|
|
||||||
|
|
||||||
|
|
||||||
u0 = "https://hhh.gavilan.edu/phowell/map/dir_api_tester.php?a=get/sections"
|
|
||||||
existing_sections = json.loads( requests.get(u0).text )
|
|
||||||
|
|
||||||
existing_sections = funcy.group_by(by_sem,existing_sections)
|
|
||||||
by_sem_crn = {}
|
|
||||||
|
|
||||||
for sem,sects in existing_sections.items():
|
|
||||||
for s in sects:
|
|
||||||
new_key = sem + '_' + s['crn']
|
|
||||||
by_sem_crn[new_key] = s
|
|
||||||
|
|
||||||
#print(json.dumps(by_sem_crn,indent=2))
|
|
||||||
mt = open('cache/missed_instructors.txt','w')
|
|
||||||
|
|
||||||
teacher_cache = {}
|
|
||||||
count = 0
|
|
||||||
stopat = 20000
|
|
||||||
|
|
||||||
u1 = "https://www.gavilan.edu/_files/php/current_schedule.csv"
|
|
||||||
with requests.Session() as s:
|
|
||||||
download = s.get(u1)
|
|
||||||
decoded_content = download.content.decode('utf-8')
|
|
||||||
cr = csv.reader(decoded_content.splitlines(), delimiter=',')
|
|
||||||
my_list = list(cr)
|
|
||||||
#for row in my_list:
|
|
||||||
# print(row)
|
|
||||||
for row in my_list:
|
|
||||||
row = list(map(strip,row))
|
|
||||||
row = list(map(esc_comma,row))
|
|
||||||
if row[3] in sem_to_short:
|
|
||||||
row[3] = sem_to_short[row[3]]
|
|
||||||
if row[20]:
|
|
||||||
oo.write("%s - %s \n" % (row[0], row[20]))
|
|
||||||
summary = "%s %s %s %s \t %s %s\t %s" % (row[4], row[11],row[10],row[6], row[5], row[0], row[7])
|
|
||||||
pp.write(summary + "\n")
|
|
||||||
|
|
||||||
# cancelled?
|
|
||||||
status = row[6]
|
|
||||||
if status != "Active": continue
|
|
||||||
|
|
||||||
# ignore if exists? TODO check if i need to update it
|
|
||||||
this_sem_crn = row[3] + '_' + row[5]
|
|
||||||
if this_sem_crn in by_sem_crn:
|
|
||||||
print("\t...already uploaded...skipping %s" % this_sem_crn)
|
|
||||||
continue
|
|
||||||
|
|
||||||
if count >0 and count<stopat:
|
|
||||||
t_name = "%s %s" % (row[11],row[10])
|
|
||||||
if t_name in teacher_cache:
|
|
||||||
r = {'sched_alias':1, 'id': teacher_cache[t_name]}
|
|
||||||
else:
|
|
||||||
u2 = "https://hhh.gavilan.edu/phowell/map/dir_api_tester.php?a=get/instructor/name"
|
|
||||||
p2 = {'inst': t_name }
|
|
||||||
print("\tSearching for teacher: %s" % t_name )
|
|
||||||
r2 = requests.post(u2, data=p2)
|
|
||||||
r = json.loads(r2.text)
|
|
||||||
if r and 'id' in r: teacher_cache[t_name] = r['id']
|
|
||||||
|
|
||||||
if not r:
|
|
||||||
print("\tCouldn't locate teacher: %s %s" % (row[11],row[10]))
|
|
||||||
u2 = "https://hhh.gavilan.edu/phowell/map/dir_api_tester.php?a=get/instructor/fuzzyname"
|
|
||||||
p2 = {'inst': row[11] + " % " + row[10] }
|
|
||||||
print("\tFuzzy search for teacher: " + row[11] + " % " + row[10])
|
|
||||||
r2 = requests.post(u2, data=p2)
|
|
||||||
r = json.loads(r2.text)
|
|
||||||
if r and 'id' in r: teacher_cache[t_name] = r['id']
|
|
||||||
|
|
||||||
if r and 'sched_alias' in r:
|
|
||||||
row[10] = r['id']
|
|
||||||
#print("\tfound teacher: " + str(r))
|
|
||||||
payload = { 'cols':'code,start_date,end_date,sem,delivery,crn,status,name,descr,units,teacher_id,days,pnp,location,note,ztc',
|
|
||||||
'vals': u','.join( [ row[j] for j in [0,1,2,3,4,5,6,7,8,9,10,13,14,19,20,21] ] ) }
|
|
||||||
#print(json.dumps(payload,indent=2))
|
|
||||||
#print()
|
|
||||||
r3 = requests.post("https://hhh.gavilan.edu/phowell/map/dir_api_tester.php?a=add/section", params=payload)
|
|
||||||
result = json.loads(r3.text)
|
|
||||||
if result and 'err' in result and result['err']:
|
|
||||||
print("\n*** Problem? --> %s" % result['err'] )
|
|
||||||
mt.write("*** Problem? --> %s\n" % result['err'] )
|
|
||||||
else:
|
|
||||||
print("*** Still Couldn't locate teacher: %s %s" % (row[11],row[10]))
|
|
||||||
mt.write("Couldn't locate teacher: %s %s\n" % (row[11],row[10]))
|
|
||||||
print()
|
|
||||||
count += 1
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# TODO some weird hour offset issue w/ these activities
|
|
||||||
|
|
||||||
def cal():
|
|
||||||
from ics import Calendar
|
|
||||||
|
|
||||||
u1 = "https://hhh.gavilan.edu/phowell/map/dir_api_tester.php?a=get/sessions"
|
|
||||||
|
|
||||||
gav_activities = json.loads( requests.get(u1).text )
|
|
||||||
g_by_uid = {}
|
|
||||||
|
|
||||||
for g in gav_activities:
|
|
||||||
print("\t" + str(g['cal_uid']))
|
|
||||||
if g['cal_uid']:
|
|
||||||
g_by_uid[ g['cal_uid'] ] = g
|
|
||||||
|
|
||||||
for g in gav_activities:
|
|
||||||
pass
|
|
||||||
#print(g)
|
|
||||||
#return
|
|
||||||
print(g_by_uid)
|
|
||||||
|
|
||||||
url = "https://calendar.google.com/calendar/ical/4aq36obt0q5jjr5p82p244qs7c%40group.calendar.google.com/public/basic.ics"
|
|
||||||
|
|
||||||
# the plwc cal
|
|
||||||
url = "https://calendar.google.com/calendar/ical/if2r74sfiitva2ko9chn2v9qso%40group.calendar.google.com/public/basic.ics"
|
|
||||||
c = Calendar(requests.get(url).text)
|
|
||||||
|
|
||||||
for e in list(c.timeline):
|
|
||||||
#print(e)
|
|
||||||
#print()
|
|
||||||
print(e.name)
|
|
||||||
#continue
|
|
||||||
if not str(e.uid) in g_by_uid.keys():
|
|
||||||
year = str(e.begin)
|
|
||||||
year = year[:4]
|
|
||||||
if not year == "2021": continue
|
|
||||||
print("Not in conf_sessions db: \n\t%s\n\t%s" % ( e.name, e.begin ))
|
|
||||||
addit = input("Do you want to add it? (y/n) ")
|
|
||||||
if addit=='y':
|
|
||||||
payload = { 'title':str(e.name) , 'length': 1, 'starttime':str(e.begin) ,
|
|
||||||
'desc': str(e.description),
|
|
||||||
'type':220, 'location':str(e.location) , 'cal_uid':str(e.uid) }
|
|
||||||
print(json.dumps(payload,indent=2))
|
|
||||||
print()
|
|
||||||
r = requests.post("https://hhh.gavilan.edu/phowell/map/dir_api_tester.php?a=set/newsession", data=payload)
|
|
||||||
print("RESPONSE --> ")
|
|
||||||
print(r.text)
|
|
||||||
|
|
||||||
#print("\t%s" % e.uid)
|
|
||||||
#print("\t%s\n\t%s\n\t%s\n\t%s\n" % ( str(e.begin), e.description, e.location, str(e.last_modified)))
|
|
||||||
#c
|
|
||||||
# <Calendar with 118 events and 0 todo>
|
|
||||||
#print(c.events)
|
|
||||||
# {<Event 'Visite de "Fab Bike"' begin:2016-06-21T15:00:00+00:00 end:2016-06-21T17:00:00+00:00>,
|
|
||||||
# <Event 'Le lundi de l'embarqué: Adventure in Espressif Non OS SDK edition' begin:2018-02-19T17:00:00+00:00 end:2018-02-19T22:00:00+00:00>,
|
|
||||||
# ...}
|
|
||||||
#e = list(c.timeline)[0]
|
|
||||||
#print("Event '{}' started {}".format(e.name, e.begin.humanize()))
|
|
||||||
|
|
||||||
|
|
||||||
def file_renamer():
|
|
||||||
where = 'cache/picsStaffdir/cropped/'
|
|
||||||
ff = os.listdir(where)
|
|
||||||
|
|
||||||
for F in ff:
|
|
||||||
nn = re.sub("\.jpg$","",F)
|
|
||||||
print("Old name: %s. New name: %s" % (F, nn))
|
|
||||||
os.rename( where+F, where+nn )
|
|
||||||
print("ok")
|
|
||||||
|
|
||||||
def list_auth():
|
|
||||||
r = fetch( url + '/api/v1/accounts/1/authentication_providers')
|
|
||||||
print(json.dumps(r,indent=2))
|
|
||||||
|
|
||||||
|
|
||||||
def update_auth():
|
|
||||||
#r = fetch( url + '/api/v1/accounts/1/authentication_providers')
|
|
||||||
u = url + '/api/v1/accounts/1/authentication_providers/104'
|
|
||||||
opt = {"metadata_uri": r'https://eis-prod.ec.gavilan.edu/saml/idp-metadataxxx.xml'}
|
|
||||||
r2 = requests.put(u, headers=header, data=opt)
|
|
||||||
print ( r2.text )
|
|
||||||
|
|
||||||
#print(json.dumps(r,indent=2))
|
|
||||||
|
|
||||||
def print_a_calendar():
|
def print_a_calendar():
|
||||||
import datetime
|
year = 2024
|
||||||
cur_week = datetime.date.today().isocalendar()[1]
|
cur_week = datetime.date.today().isocalendar()[1]
|
||||||
print(f"Current week number: {cur_week}")
|
print(f"Current week number: {cur_week}")
|
||||||
|
|
||||||
import time
|
|
||||||
from time import gmtime, strftime
|
|
||||||
#d = time.strptime("3 Jul 2023", "%d %b %Y")
|
|
||||||
#print(strftime(d, '%U'))
|
|
||||||
|
|
||||||
|
|
||||||
import calendar
|
|
||||||
|
|
||||||
# Specify the year
|
|
||||||
year = 2023
|
|
||||||
|
|
||||||
if 0:
|
if 0:
|
||||||
# Create a calendar for the entire year
|
# Create a calendar for the entire year
|
||||||
|
|
@ -1361,6 +1169,92 @@ def word_calendar():
|
||||||
doc.save('cache/tasks_schedule.docx')
|
doc.save('cache/tasks_schedule.docx')
|
||||||
|
|
||||||
|
|
||||||
|
# TODO some weird hour offset issue w/ these activities
|
||||||
|
|
||||||
|
def cal():
|
||||||
|
from ics import Calendar
|
||||||
|
|
||||||
|
u1 = "https://hhh.gavilan.edu/phowell/map/dir_api_tester.php?a=get/sessions"
|
||||||
|
|
||||||
|
gav_activities = json.loads( requests.get(u1).text )
|
||||||
|
g_by_uid = {}
|
||||||
|
|
||||||
|
for g in gav_activities:
|
||||||
|
print("\t" + str(g['cal_uid']))
|
||||||
|
if g['cal_uid']:
|
||||||
|
g_by_uid[ g['cal_uid'] ] = g
|
||||||
|
|
||||||
|
for g in gav_activities:
|
||||||
|
pass
|
||||||
|
#print(g)
|
||||||
|
#return
|
||||||
|
print(g_by_uid)
|
||||||
|
|
||||||
|
url = "https://calendar.google.com/calendar/ical/4aq36obt0q5jjr5p82p244qs7c%40group.calendar.google.com/public/basic.ics"
|
||||||
|
|
||||||
|
# the plwc cal
|
||||||
|
url = "https://calendar.google.com/calendar/ical/if2r74sfiitva2ko9chn2v9qso%40group.calendar.google.com/public/basic.ics"
|
||||||
|
c = Calendar(requests.get(url).text)
|
||||||
|
|
||||||
|
for e in list(c.timeline):
|
||||||
|
#print(e)
|
||||||
|
#print()
|
||||||
|
print(e.name)
|
||||||
|
#continue
|
||||||
|
if not str(e.uid) in g_by_uid.keys():
|
||||||
|
year = str(e.begin)
|
||||||
|
year = year[:4]
|
||||||
|
if not year == "2021": continue
|
||||||
|
print("Not in conf_sessions db: \n\t%s\n\t%s" % ( e.name, e.begin ))
|
||||||
|
addit = input("Do you want to add it? (y/n) ")
|
||||||
|
if addit=='y':
|
||||||
|
payload = { 'title':str(e.name) , 'length': 1, 'starttime':str(e.begin) ,
|
||||||
|
'desc': str(e.description),
|
||||||
|
'type':220, 'location':str(e.location) , 'cal_uid':str(e.uid) }
|
||||||
|
print(json.dumps(payload,indent=2))
|
||||||
|
print()
|
||||||
|
r = requests.post("https://hhh.gavilan.edu/phowell/map/dir_api_tester.php?a=set/newsession", data=payload)
|
||||||
|
print("RESPONSE --> ")
|
||||||
|
print(r.text)
|
||||||
|
|
||||||
|
#print("\t%s" % e.uid)
|
||||||
|
#print("\t%s\n\t%s\n\t%s\n\t%s\n" % ( str(e.begin), e.description, e.location, str(e.last_modified)))
|
||||||
|
#c
|
||||||
|
# <Calendar with 118 events and 0 todo>
|
||||||
|
#print(c.events)
|
||||||
|
# {<Event 'Visite de "Fab Bike"' begin:2016-06-21T15:00:00+00:00 end:2016-06-21T17:00:00+00:00>,
|
||||||
|
# <Event 'Le lundi de l'embarqué: Adventure in Espressif Non OS SDK edition' begin:2018-02-19T17:00:00+00:00 end:2018-02-19T22:00:00+00:00>,
|
||||||
|
# ...}
|
||||||
|
#e = list(c.timeline)[0]
|
||||||
|
#print("Event '{}' started {}".format(e.name, e.begin.humanize()))
|
||||||
|
|
||||||
|
|
||||||
|
def file_renamer():
|
||||||
|
where = 'cache/picsStaffdir/cropped/'
|
||||||
|
ff = os.listdir(where)
|
||||||
|
|
||||||
|
for F in ff:
|
||||||
|
nn = re.sub("\.jpg$","",F)
|
||||||
|
print("Old name: %s. New name: %s" % (F, nn))
|
||||||
|
os.rename( where+F, where+nn )
|
||||||
|
print("ok")
|
||||||
|
|
||||||
|
|
||||||
|
# Use api to fix ilearn's authentication method when we can't log in. List.
|
||||||
|
def list_auth():
|
||||||
|
r = fetch( url + '/api/v1/accounts/1/authentication_providers')
|
||||||
|
print(json.dumps(r,indent=2))
|
||||||
|
|
||||||
|
# Use api to fix ilearn's authentication method when we can't log in. Modify.
|
||||||
|
def update_auth():
|
||||||
|
#r = fetch( url + '/api/v1/accounts/1/authentication_providers')
|
||||||
|
u = url + '/api/v1/accounts/1/authentication_providers/104'
|
||||||
|
opt = {"metadata_uri": r'https://eis-prod.ec.gavilan.edu/saml/idp-metadataxxx.xml'}
|
||||||
|
r2 = requests.put(u, headers=header, data=opt)
|
||||||
|
print ( r2.text )
|
||||||
|
|
||||||
|
#print(json.dumps(r,indent=2))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
@ -1372,13 +1266,15 @@ if __name__ == "__main__":
|
||||||
6: ['fetch calendar events to conf_sessions db',cal] ,
|
6: ['fetch calendar events to conf_sessions db',cal] ,
|
||||||
7: ['job titles workings....',job_titles2] ,
|
7: ['job titles workings....',job_titles2] ,
|
||||||
8: ['collate all profile pics for db',index_pics] ,
|
8: ['collate all profile pics for db',index_pics] ,
|
||||||
9: ['process schedule csv file from web',parse_schedule] ,
|
#9: ['process schedule csv file from web',parse_schedule] ,
|
||||||
10: ['dumb rename images mistake',file_renamer] ,
|
10: ['dumb rename images mistake',file_renamer] ,
|
||||||
11: ['list auth', list_auth],
|
11: ['list auth', list_auth],
|
||||||
12: ['update auth', update_auth],
|
12: ['update auth', update_auth],
|
||||||
13: ['print a calendar', print_a_calendar],
|
13: ['print a calendar', print_a_calendar],
|
||||||
14: ['create a week calendar in word', word_calendar],
|
14: ['create a week calendar in word', word_calendar],
|
||||||
15: ['create GOTT certificates', certificates_gott_build],
|
15: ['create GOTT certificates', certificates_gott_build],
|
||||||
|
20: ['build_quiz', build_quiz],
|
||||||
|
21: ['certificates_gott_build, certificates_gott_build']
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(sys.argv) > 1 and re.search(r'^\d+',sys.argv[1]):
|
if len(sys.argv) > 1 and re.search(r'^\d+',sys.argv[1]):
|
||||||
|
|
@ -1400,8 +1296,6 @@ if __name__ == "__main__":
|
||||||
|
|
||||||
|
|
||||||
################################
|
################################
|
||||||
if 0:
|
|
||||||
pass
|
|
||||||
|
|
||||||
if (0):
|
if (0):
|
||||||
out = open('cache/badgr.txt','w')
|
out = open('cache/badgr.txt','w')
|
||||||
|
|
@ -1415,51 +1309,3 @@ if __name__ == "__main__":
|
||||||
auth = json.loads(open('cache/badgr.txt','r').read())
|
auth = json.loads(open('cache/badgr.txt','r').read())
|
||||||
print ( auth )
|
print ( auth )
|
||||||
|
|
||||||
if (0):
|
|
||||||
mail_test()
|
|
||||||
|
|
||||||
if (0):
|
|
||||||
build_quiz()
|
|
||||||
|
|
||||||
if (0):
|
|
||||||
certificates_gott_build()
|
|
||||||
|
|
||||||
#if (0):
|
|
||||||
# blueprint_semester()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
1 Default Term
|
|
||||||
6 Professional Development
|
|
||||||
7 Committees
|
|
||||||
8 Practice Courses
|
|
||||||
9 Miscellaneous
|
|
||||||
24 OEI Courses
|
|
||||||
27 Prof Dev Drafts
|
|
||||||
169 Library
|
|
||||||
170 Incompletes
|
|
||||||
172 2021 Fall
|
|
||||||
171 2021 Summer
|
|
||||||
168 2021 Spring
|
|
||||||
167 Accreditation
|
|
||||||
65 2020 Fall
|
|
||||||
64 2020 Summer
|
|
||||||
62 2020 Spring
|
|
||||||
63 2020 Winter
|
|
||||||
61 2019 Fall
|
|
||||||
60 2019 Summer
|
|
||||||
25 2019 Spring
|
|
||||||
26 2019 Winter
|
|
||||||
23 2018 Fall
|
|
||||||
22 2018 Summer
|
|
||||||
21 2018 Spring
|
|
||||||
18 2017 Fall
|
|
||||||
14 2017 Summer
|
|
||||||
15 2017 Early Start Summer
|
|
||||||
10 2017 Spring (Practice)
|
|
||||||
11 2017 Spring
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
|
||||||
5
util.py
5
util.py
|
|
@ -5,6 +5,9 @@
|
||||||
import re, csv
|
import re, csv
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from bs4 import BeautifulSoup as bs
|
from bs4 import BeautifulSoup as bs
|
||||||
|
import pytz, datetime, dateutil, json
|
||||||
|
from time import timedelta
|
||||||
|
from dateutil import tz
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -134,12 +137,12 @@ def how_long_ago(a): # number of hours ago 'a' was...
|
||||||
def partition(times_list):
|
def partition(times_list):
|
||||||
# get a list of times in this format: 2017-02-14T17:01:46Z
|
# get a list of times in this format: 2017-02-14T17:01:46Z
|
||||||
# and break them into a list of sessions, [start, hits, minutes]
|
# and break them into a list of sessions, [start, hits, minutes]
|
||||||
|
minutes_till_new_session = 26
|
||||||
global dd
|
global dd
|
||||||
mm = ['x','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
|
mm = ['x','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
|
||||||
start = ""
|
start = ""
|
||||||
last = ""
|
last = ""
|
||||||
hits = 0
|
hits = 0
|
||||||
minutes_till_new_session = 26
|
|
||||||
delta = timedelta(minutes=26)
|
delta = timedelta(minutes=26)
|
||||||
HERE = tz.tzlocal()
|
HERE = tz.tzlocal()
|
||||||
sessions = []
|
sessions = []
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue