CakeCMS-Python-API/examples/download_submissions.py

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)'