58 lines
2.3 KiB
Python
58 lines
2.3 KiB
Python
# vim:spell:spelllang=fr
|
|
# -*- encoding: utf-8 -*-
|
|
|
|
import logging
|
|
import os
|
|
from optparse import make_option
|
|
|
|
from django.core.management.base import BaseCommand
|
|
from django.db import transaction
|
|
|
|
from ... import models, django_ws
|
|
|
|
class Command(BaseCommand):
|
|
'''
|
|
Envoyer les demandes blackboard
|
|
'''
|
|
can_import_django_settings = True
|
|
requires_model_validation = True
|
|
args = ''
|
|
help = 'Envoyer les demandes blackboard'
|
|
|
|
option_list = BaseCommand.option_list + (
|
|
make_option("--send", action="store_true"),
|
|
make_option("--list", action="store_true"),
|
|
make_option("--delete", action="store", type="string"))
|
|
|
|
@transaction.commit_on_success
|
|
def handle(self, *args, **options):
|
|
logger = logging.getLogger()
|
|
bb_pushs = models.BlackBoardPush.objects.filter(request__history__new_status__start=True, sent=False)
|
|
if options['delete']:
|
|
qs = models.BlackBoardPush.objects.filter(id__in=options['delete'].split(','))
|
|
for push in qs:
|
|
print ' - deleted push request %s for document %s' % (push.id, push.request.id)
|
|
qs.delete()
|
|
if options['list']:
|
|
for push in bb_pushs:
|
|
print ' -', push.id, 'document', os.path.basename(push.request.uploadfile.name), '(%s)' % \
|
|
push.request.id, 'de', push.request.user.display_name(), 'dans le cours', push.course_name,
|
|
if push.visible_to_students:
|
|
print '(visible aux étudiants)',
|
|
print
|
|
if options['send']:
|
|
conn = django_ws.get_bb_conn()
|
|
for push in bb_pushs:
|
|
logger.info('sending request %s to mycourse', push.request.pk)
|
|
logger.info('from user %s', push.request.user.display_name().encode('utf-8'))
|
|
logger.info('into course %s', push.course_name.encode('utf-8'))
|
|
if push.visible_to_students:
|
|
logger.info('visible to students')
|
|
ok, result = conn.send_file(push.request.uploadfile, [push.course_name], push.visible_to_students)
|
|
if ok:
|
|
push.sent = True
|
|
push.save()
|
|
logger.info('sending succeeded')
|
|
else:
|
|
logger.error('sending failed: %s', result.encode('utf-8'))
|