def parse_new_chapters(user, chapters): for c in chapters: if not 'start' in c: raise ParameterMissing('start parameter missing') start = parse_time(c['start']) if not 'end' in c: raise ParameterMissing('end parameter missing') end = parse_time(c['end']) label = c.get('label', '') adv = c.get('advertisement', False) device_uid = c.get('device', None) if device_uid: device_id = get_device(user, device_uid, request.META.get('HTTP_USER_AGENT', ''), undelete=True).id else: device_id = None chapter = Chapter() chapter.device = device_id chapter.created = timestamp chapter.start = start chapter.end = end chapter.label = label chapter.advertisement = adv yield chapter