class Command(BaseCommand):
help = "Import users from a XLS file (see an example in example/data/"
- args = "path"
+ args = "path period_name"
first_row = 2
admin_email = 'webmaster@parisson.com'
return None
def get_training(self, code):
+ period, c = Period.objects.get_or_create(name=self.period_name)
platform_only = False
if 'I' in code[0:2]:
platform_only = True
code = code[4:]
- training, c = Training.objects.get_or_create(code=code)
+ training, c = Training.objects.get_or_create(code=code, period=period)
else:
- training, c = Training.objects.get_or_create(code=code)
+ training, c = Training.objects.get_or_create(code=code, period=period)
return platform_only, training
def get_iej(self, name):
iej, c = IEJ.objects.get_or_create(name=name)
return iej
- def import_user(self, row):
+ def import_user(self, row, period_name):
+ self.period_name = period_name
last_name = row[0].value
first_name = row[1].value
email = row[9].value
student.iej = self.get_iej(row[2].value)
student.save()
- student.period = Period.objects.filter(name='Estivale')
+ student.period = Period.objects.filter(name=self.period_name)
student.procedure = self.get_courses(row[4].value)
student.written_speciality = self.get_courses(row[5].value)
student.oral_speciality = self.get_courses(row[6].value)
profile, created = Profile.objects.get_or_create(user=user)
profile.address = row[10].value
- profile.postal_code = int(row[11].value)
+ profile.postal_code = row[11].value
profile.city = row[12].value
profile.telephone = row[13].value
profile.save()
def handle(self, *args, **options):
file = args[0]
+ period_name = args[1]
self.book = xlrd.open_workbook(file)
sheet = self.book.sheet_by_index(0)
col = sheet.col(0)
for i in range(self.first_row, len(col)):
- self.import_user(sheet.row(i))
+ self.import_user(sheet.row(i), period_name)
class Command(BaseCommand):
help = "Import users from a XLS file (see an example in example/data/"
- args = "path"
+ args = "path period_name"
first_row = 2
admin_email = 'webmaster@parisson.com'
else:
raise BaseException('You should first create a course with this code: ' + code)
- def import_user(self, row):
+ def import_user(self, row, period):
last_name = row[0].value
first_name = row[1].value
email = row[9].value
student = Student.objects.filter(user=user)
if not student:
student = Student(user=user)
- student.period, c = Period.objects.get_or_create(name='Estivale')
+ student.period, c = Period.objects.get_or_create(name=period)
student.iej, c = IEJ.objects.get_or_create(name=row[2].value)
- student.training, c = Training.objects.get_or_create(code=row[3].value)
+ student.training, c = Training.objects.get_or_create(code=row[3].value,
+ period=student.period)
student.save()
student.procedure = self.get_first_course(row[4].value)
def handle(self, *args, **options):
file = args[0]
+ period = args[1]
self.book = xlrd.open_workbook(file)
sheet = self.book.sheet_by_index(0)
col = sheet.col(0)
for i in range(self.first_row, len(col)):
- self.import_user(sheet.row(i))
+ self.import_user(sheet.row(i), period)
WEIGHT_CHOICES = get_nint_choices(5)
+def get_random_hash():
+ hash = random.getrandbits(128)
+ return "%032x" % hash
class MetaCore:
app_label = app_label
return self.description
def save(self, **kwargs):
+ if not self.public_id:
+ self.public_id = get_random_hash()
self.course.save()
super(Conference, self).save(**kwargs)
return dict
def to_json_dict(self):
- data = {'id': self.public_id, 'course_code': self.course.code,
- 'course_type': self.course_type.name, 'professor_id': self.professor.user.username,
- 'period': self.period,
+ data = {'id': self.public_id,
+ 'course_code': self.course.code,
+ 'course_type': self.course_type.name,
+ 'professor_id': self.professor.user.username,
+ 'period': self.period.name,
'session': self.session,
- 'streams':[] }
+ 'streams': [],
+ 'date_begin': self.date_begin.strftime('%Y %m %d %H %M %S'),
+ 'date_end': self.date_end.strftime('%Y %m %d %H %M %S'),
+ }
if self.room:
data['room'] = self.room.name
'stream_type': stream.stream_type })
return data
+ def from_json_dict(self, data):
+ self.public_id = data['id']
+ self.course, c = Course.objects.get_or_create(code=data['course_code'])
+ self.course_type, c = CourseType.objects.get_or_create(name=data['course_type'])
+ user, c = User.objects.get_or_create(username=data['professor_id'])
+ self.professor, c = Professor.objects.get_or_create(user=user)
+ self.period, c = Period.objects.get_or_create(name=data['period'])
+ self.session = data['session']
+ dl = data['date_begin'].split(' ')
+ self.date_begin = datetime.datetime(int(dl[0]), int(dl[1]), int(dl[2]),
+ int(dl[3]), int(dl[4]), int(dl[5]))
+ dl = data['date_end'].split(' ')
+ self.date_end = datetime.datetime(int(dl[0]), int(dl[1]), int(dl[2]),
+ int(dl[3]), int(dl[4]), int(dl[5]))
+ if 'room' in data.keys():
+ organization = Organization.objects.get(name=data['organization'])
+ self.room, c = Room.objects.get_or_create(name=data['room'],
+ organization=organization)
+ self.save()
+
class Meta(MetaCore):
db_table = app_label + '_' + 'conference'
verbose_name = _('conference')
def save(self, **kwargs):
super(DocumentSimple, self).save(**kwargs)
self.set_mime_type()
-
+
class Meta(MetaCore):
db_table = app_label + '_' + 'document_simple'
if settings.TELEFORMA_E_LEARNING_TYPE == 'CRFPA':
from teleforma.views.crfpa import get_crfpa_courses
return get_crfpa_courses(user, date_order=False, num_order=False)
-
+
elif settings.TELEFORMA_E_LEARNING_TYPE == 'AE':
from teleforma.views.ae import get_ae_courses
return get_ae_courses(user, date_order=False, num_order=False)
-
+
def stream_from_file(__file):
chunk_size = 0x10000
def get_room(content_type=None, id=None, name=None):
- rooms = jqchat.models.Room.objects.filter(content_type=content_type,
- object_id=id)
- if not rooms:
- room = jqchat.models.Room.objects.create(content_type=content_type,
- object_id=id,
- name=name[:20])
+ if settings.TELEFORMA_GLOBAL_TWEETER:
+ return jqchat.models.Room.objects.create(name='site')
+
else:
- room = rooms[0]
- return room
+ rooms = jqchat.models.Room.objects.filter(content_type=content_type,
+ object_id=id)
+ if not rooms:
+ room = jqchat.models.Room.objects.create(content_type=content_type,
+ object_id=id,
+ name=name[:20])
+ else:
+ room = rooms[0]
+ return room
def get_access(obj, courses):
host = host.split(':')[0]
return host
-
-def get_random_hash():
- hash = random.getrandbits(128)
- return "%032x" % hash
-
def get_periods(user):
if settings.TELEFORMA_E_LEARNING_TYPE == 'CRFPA':
student = user.crfpa_student.all()
periods = Period.objects.all()
return periods
-
+
class CourseView(DetailView):
context['all_courses'] = all_courses
context['notes'] = course.notes.all().filter(author=self.request.user)
content_type = ContentType.objects.get(app_label="teleforma", model="course")
- if settings.TELEFORMA_GLOBAL_TWEETER:
- context['room'] = get_room(name='site')
- else:
- context['room'] = get_room(name=course.title, content_type=content_type,
+ context['room'] = get_room(name=course.title, content_type=content_type,
id=course.id)
context['doc_types'] = DocumentType.objects.all()
context['periods'] = get_periods(self.request.user)
context['item'] = media.item
context['type'] = media.course_type
context['notes'] = media.notes.all().filter(author=self.request.user)
- content_type = ContentType.objects.get(app_label="teleforma", model="media")
- if settings.TELEFORMA_GLOBAL_TWEETER:
- context['room'] = get_room(name='site')
- else:
- context['room'] = get_room(name=media.item.title, content_type=content_type,
- id=media.id)
+ content_type = ContentType.objects.get(app_label="teleforma", model="course")
+ context['room'] = get_room(name=media.course.title, content_type=content_type,
+ id=media.course.id)
+
access = get_access(media, all_courses)
if not access:
context['access_error'] = access_error
document = self.get_object()
context['course'] = document.course
context['notes'] = document.notes.all().filter(author=self.request.user)
- content_type = ContentType.objects.get(app_label="teleforma", model="document")
- if settings.TELEFORMA_GLOBAL_TWEETER:
- context['room'] = get_room(name='site')
- else:
- context['room'] = get_room(name=document.title, content_type=content_type,
- id=document.id)
+ content_type = ContentType.objects.get(app_label="teleforma", model="course")
+ context['room'] = get_room(name=document.course, content_type=content_type,
+ id=document.course.id)
access = get_access(document, all_courses)
if not access:
context['access_error'] = access_error
context['course'] = conference.course
context['type'] = conference.course_type
context['notes'] = conference.notes.all().filter(author=self.request.user)
- content_type = ContentType.objects.get(app_label="teleforma", model="conference")
- if settings.TELEFORMA_GLOBAL_TWEETER:
- context['room'] = get_room(name='site')
- else:
- context['room'] = get_room(name=conference.course.title, content_type=content_type,
- id=conference.id)
+ content_type = ContentType.objects.get(app_label="teleforma", model="course")
+ context['room'] = get_room(name=conference.course.title, content_type=content_type,
+ id=conference.course.id)
context['livestreams'] = conference.livestream.all()
context['host'] = get_host(self.request)
access = get_access(conference, all_courses)
return super(ConferenceView, self).dispatch(*args, **kwargs)
+class ConferenceListView(ListView):
+
+ model = Conference
+
+ @jsonrpc_method('teleforma.get_conference_list')
+ def get_conference_list(request):
+ return [c.to_json_dict() for c in self.get_queryset()]
+
+ def pull(self, conference):
+ url = 'http://' + settings.TELECASTER_MASTER_SERVER + '/json/'
+ s = ServiceProxy(url)
+ list = s.teleforma.get_conference_list()
+ for conf_dict in list:
+ conference.from_json_dict(conf_dict)
+
+
class ConferenceRecordView(FormView):
"Conference record form : TeleCaster module required"
stream_type=stream_type, streaming=True)
stream.save()
else:
- raise 'Error : Bad Conference dictionnary'
+ raise 'Error : input must be a conference dictionnary'
def push(self, conference):
url = 'http://' + settings.TELECASTER_MASTER_SERVER + '/json/'