45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
import cakecms
|
|
|
|
HOST = 'http://localhost/cakecms'
|
|
SUBMISSION_ID = 12
|
|
COURSE = 'np'
|
|
TOKEN = 'yRUoMb4KmZwLOHdotB5t0W3h'
|
|
|
|
# create an (unauthenticated) instance
|
|
cms = cakecms.CakeCMS(HOST)
|
|
# [optional] log queries to console
|
|
cms.debug = True
|
|
# get a course list (dictionary)
|
|
courses = cms.courses_list()
|
|
print courses
|
|
for id, course in courses.items():
|
|
print '- #{}: {} ( at {}/{} )'.format(id, course, HOST, course)
|
|
|
|
# attach to a course (with admin token)
|
|
cms.course = COURSE
|
|
cms.token = TOKEN
|
|
|
|
# list submissions
|
|
for submission in cms.submissions_index():
|
|
print submission['Submission']['id'], ':', submission['Submission']['name']
|
|
|
|
# list submission items (actual files for a single submission)
|
|
result = cms.submission_items_index(submission_id=SUBMISSION_ID)
|
|
print len(result), 'submissions'
|
|
for subitem in result:
|
|
print 'Submission #', subitem['SubmissionItem']['id'],'by', subitem['User']['display'], ':', subitem['SubmissionItem']['filesize'], 'bytes (rev.', str(subitem['SubmissionItem']['revision'])+')'
|
|
|
|
# download one submission
|
|
content = cms.submission_items_download(submission_item_id=result[0]['SubmissionItem']['id'])
|
|
print len(content), 'bytes'
|
|
|
|
# download bundle to memory
|
|
zip_archive = cms.submission_items_download_all(submission_id=SUBMISSION_ID)
|
|
print len(zip_archive), 'bytes in zip (in memory)'
|
|
|
|
# download bundle as stream
|
|
with cms.submission_items_download_all_streamed(submission_id=SUBMISSION_ID) as f:
|
|
zip_archive_size = len(f.read())
|
|
print zip_archive_size, 'bytes in zip (streamed)'
|
|
|