Skip to content

Commit ba8dda0

Browse files
committed
Basic configuration. Added User and Course generation methods
1 parent 4831901 commit ba8dda0

File tree

6 files changed

+72
-0
lines changed

6 files changed

+72
-0
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,6 @@ ENV/
9999

100100
# mypy
101101
.mypy_cache/
102+
103+
# project specific
104+
config.py

README.md

+21
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,23 @@
11
# canvas-mock-data
22
A series of functions to create realistic-looking mock data in the Canvas LMS
3+
4+
## Setup
5+
6+
1. Install requirements
7+
8+
```sh
9+
pip install -r requirements.txt
10+
```
11+
12+
2. Create `config.py` from template.
13+
14+
```sh
15+
cp config.template.py config.py
16+
```
17+
18+
3. Fill in `config.py`
19+
20+
```python
21+
API_URL = 'https://example.edu/canvas'
22+
API_KEY = 'p@$$w0rd'
23+
```

canvas_mock_data.py

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from faker import Faker
2+
from canvasapi import Canvas
3+
4+
from config import API_URL, API_KEY
5+
6+
7+
canvas = Canvas(API_URL, API_KEY)
8+
fake = Faker()
9+
10+
11+
def generate_users(num_users, account_id):
12+
account = canvas.get_account(account_id)
13+
14+
for i in range(1, num_users + 1):
15+
first_name = fake.first_name()
16+
last_name = fake.last_name()
17+
18+
user = {
19+
'name': '{} {}'.format(first_name, last_name),
20+
'short_name': first_name,
21+
'sortable_name': '{}, {}'.format(last_name, first_name)
22+
}
23+
pseudonym = {
24+
'unique_id': '{}.{}{}@example.com'.format(first_name[0], last_name, i),
25+
'password': 'password'
26+
}
27+
28+
account.create_user(pseudonym, user=user)
29+
30+
31+
def generate_courses(num_courses, account_id):
32+
account = canvas.get_account(account_id)
33+
34+
for i in range(1, num_courses + 1):
35+
course_dict = {
36+
'name': fake.catch_phrase().title(),
37+
'course_code': fake.bothify(text='???-####').upper(),
38+
'offer': True
39+
}
40+
41+
account.create_course(course=course_dict)

config.template.py

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
API_URL = '' # Canvas URL (e.g. https://example.instructure.com)
2+
API_KEY = '' # Canvas API access token

requirements.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
canvasapi==0.9.0
2+
Faker==0.8.12
3+
flake8==3.5.0

setup.cfg

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[flake8]
2+
max-line-length = 99

0 commit comments

Comments
 (0)