Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 26 additions & 4 deletions doc/grade-data.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,37 @@
# Requesting Grades Data
# Grade Data

## Fetching Grade Data

Fetch grade data from [IRA Grade Data Distribution](https://ira.virginia.edu/university-data-home/grade-distribution-last-5-years?check_logged_in=1)

### Requirements
- `fetch_grades.py` (available in Google Drive) must be in *root* of repository
- Semester data csv for semester must be in `tcf_website/management/commands/semester_data/csv`

```console
$ python fetch_grades.py <year>_<season>
```

Saved in `tcf_website/management/commands/grade_data/csv`

## Updating Grade Data

See **Updating Grades** in [useful-commands.py](https://github.com/thecourseforum/theCourseForum2/blob/dev/doc/useful-commands.md)

# Prior Method (No longer works as of Feb. 2026)

***The University has stopped providing grade data requested via FOIA as of Feb. 2026.*** However, the below method *may* work with prodding.

The Freedom of Information Act allows us to request records from UVA, which is how we get our grades data. Follow these steps:

1. Go to https://communications.virginia.edu/foia/request-records
1. Go to https://universitycounsel.virginia.edu/foia/request-records
2. Click "Submit a FOIA request," creating an account as necessary.
3. In "Describe the Record(s) Requested", enter the following:

- I am a member of theCourseForum, a student-run team and registered CIO that maintains the top course review site at UVA. I am requesting the grades for all classes at UVA for `(semester here)`. We use these grades to provide a free online outlet for students to get the best information on their classes as they navigate course registration. Let me know if there is anything I need to do to facilitate this process.
- I am a member of theCourseForum, a student-run team and registered CIO that maintains the top course review site at UVA. We use these grades to provide a free online outlet for students to get the best information on their classes as they navigate course registration. I am requesting the grades for all classes at UVA for `(semester here)`. I am aware that it is available online at https://ira.virginia.edu/university-data-home, but this data does not have a link for export and is thus insufficient for my purposes. Let me know if there is anything I need to do to facilitate this process.

4. Select "Electronic via Records Center" as preferred method and "Status as FOIA requester" to UVA Student
5. You should receive an email in a few days, or you can check status under "View My Requests"
5. You should receive an email within a few days, or you can check status under "View My Requests"

One note: the data will come with the following redactions:
![image](https://user-images.githubusercontent.com/55100084/111021403-f777f180-8399-11eb-85cd-d1bbab710438.png)
Expand Down
33 changes: 33 additions & 0 deletions doc/semester-data.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Semester Data

## Fetching Semester Data

Fetch semester data from SIS API (~1.5-2 hours to run):

```console
$ docker exec -it tcf_django python manage.py fetch_data <year>_<season>
```

Saved in `tcf_website/management/commands/semester_data/csv`

See [fetch_data.py](https://github.com/thecourseforum/theCourseForum2/blob/dev/tcf_website/management/commands/fetch_data.py) for more information.

## Loading Semester Data

Delete existing semester data (if exists) and load new data from csv into database:

```console
$ docker exec -it tcf_django python manage.py load_semester <year>_<season>
```

See [load_semester.py](https://github.com/thecourseforum/theCourseForum2/blob/dev/tcf_website/management/commands/load_semester.py) for more information.

## Frequency

The semester data for a semester should be updated at least two times:
1. Before course enrollment for that semester opens
2. After the first day of classes of that semester

## Other useful commands

For other useful commands, see [useful-commands.md](https://github.com/thecourseforum/theCourseForum2/blob/dev/doc/useful-commands.md)
22 changes: 1 addition & 21 deletions doc/useful-commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,27 +81,7 @@ $ docker exec -it tcf_django python manage.py load_grades <year>_<season>.csv
5. Commit the semesterly data to the repo
6. Remove production credentialing (use `.env` credentials like normal)

## Fetching Semester Data

Fetch semester data from SIS API (Very Slow):

```console
$ docker exec -it tcf_django python manage.py fetch_data <year>_<season>
```

Saved in `tcf_website/management/commands/semester_data/csv`

See [fetch_data.py](https://github.com/thecourseforum/theCourseForum2/blob/dev/tcf_website/management/commands/fetch_data.py) for more information.

## Loading Semester Data

Load semester data from csv into database:

```console
$ docker exec -it tcf_django python manage.py load_semester <year>_<season>
```

See [load_semester.py](https://github.com/thecourseforum/theCourseForum2/blob/dev/tcf_website/management/commands/load_semester.py) for more information.
## [Fetching and Loading Semester Data](https://github.com/thecourseforum/theCourseForum2/blob/dev/doc/semester-data.md)

## Fetching Club Data

Expand Down
3 changes: 2 additions & 1 deletion scripts/container-startup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ python manage.py invalidate_cachalot tcf_website
python manage.py clearsessions

# Add custom commands here
# python manage.py load_semester 2026_spring
python manage.py load_semester 2026_spring
python manage.py load_grades ALL_DANGEROUS

echo 'Starting Django Server...'
exec gunicorn tcf_core.wsgi:application --bind 0.0.0.0:80 --log-level "info" --timeout 120
Loading