Ejemplo n.º 1
0
 def update_config(cls):
     info = load_yaml(CONFIG_PATH)
     if info is None:
         cls.query.first().delete()
     else:
         params = {
             'md_toc_marker': info['markdown']['toc_marker'],
             'note_title': info['note']['title'],
             'note_subtitle': info['note']['subtitle'],
             'note_description': info['note']['description'],
             'theme': info['app']['theme'],
             'post_per_page': info['app']['post_per_page'],
             'ga_tracking_id': info['app']['ga_tracking_id'],
             'url': info['app']['url'],
             'timezone': info['app']['timezone'],
             'aes_key': info['aes_key'],
         }
         config = cls.query.first()
         if config is None:
             config = Config(**params)
             db.session.add(config)
         else:
             for k, v in params.items():
                 setattr(config, k, v)
     db.session.commit()
Ejemplo n.º 2
0
 def insert_entries(data, verbose=False):
     '''Role.insert_entries(data, verbose=False)'''
     yaml_file = os.path.join(current_app.config['DATA_DIR'], data, 'roles.yml')
     entries = load_yaml(yaml_file=yaml_file)
     if entries is not None:
         print('---> Read: {}'.format(yaml_file))
         for entry in entries:
             role = Role(
                 name=entry['name'],
                 category=entry['category'],
                 icon=entry['icon'],
                 level=entry['level']
             )
             db.session.add(role)
             db.session.commit()
             if verbose:
                 print('导入用户角色信息', entry['name'], entry['category'])
             for permission in entry['permissions']:
                 role_permission = RolePermission(
                     role_id=role.id,
                     permission_id=Permission.query.filter_by(name=permission).first().id
                 )
                 db.session.add(role_permission)
                 if verbose:
                     print('赋予权限', entry['name'], permission)
             db.session.commit()
     else:
         print('文件不存在', yaml_file)
Ejemplo n.º 3
0
 def insert_entries(data, verbose=False):
     '''Video.insert_entries(data, verbose=False)'''
     yaml_file = os.path.join(current_app.config['DATA_DIR'], data, 'videos.yml')
     entries = load_yaml(yaml_file=yaml_file)
     if entries is not None:
         print('---> Read: {}'.format(yaml_file))
         makedirs(path=current_app.config['HLS_DIR'], overwrite=True)
         for entry in entries:
             video_file = os.path.join(current_app.config['VIDEO_DIR'], entry['file_name'])
             if os.path.exists(video_file):
                 hls_cache_file_name = '{}.mp4'.format(token_urlsafe(16))
                 copyfile(video_file, os.path.join(current_app.config['HLS_DIR'], hls_cache_file_name))
                 video = Video(
                     name='{} {}'.format(entry['lesson_name'], entry['abbr']),
                     abbr=entry['abbr'],
                     description=entry['description'],
                     lesson_id=Lesson.query.filter_by(name=entry['lesson_name']).first().id,
                     duration=get_video_duration(video_file),
                     file_name=entry['file_name'],
                     hls_cache_file_name=hls_cache_file_name
                 )
                 db.session.add(video)
                 if verbose:
                     print('导入视频信息', entry['lesson_name'], entry['abbr'], entry['file_name'])
             else:
                 print('视频文件不存在', entry['lesson_name'], entry['abbr'], entry['file_name'])
         db.session.commit()
     else:
         print('文件不存在', yaml_file)
Ejemplo n.º 4
0
def vb_reading_list():
    '''resource.vb_reading_list()'''
    datafile = os.path.join(current_app.config['RESOURCE_DIR'], 'vb', 'reading_list.yml')
    reading_list = load_yaml(datafile=datafile)
    if reading_list is None:
        abort(404)
    return minify(render_template(
        'resource/vb/reading_list.html',
        reading_list=reading_list
    ))
Ejemplo n.º 5
0
def vb_glossary(id):
    '''resource.vb_glossary(id)'''
    header = 'VB L{} 单词补遗'.format(id)
    datafile = os.path.join(current_app.config['RESOURCE_DIR'], 'vb', 'glossaries', '{}.yml'.format(id))
    glossary = load_yaml(datafile=datafile)
    if glossary is None:
        abort(404)
    return minify(render_template(
        'resource/vb/glossary.html',
        header=header,
        glossary=glossary
    ))
Ejemplo n.º 6
0
def vb_tutorial_draft(id):
    '''resource.vb_tutorial_draft(id)'''
    header = 'VB L{} 视频研修补充材料(草稿)'.format(id)
    datafile = os.path.join(current_app.config['RESOURCE_DIR'], 'vb', 'tutorials', '{}.draft.yml'.format(id))
    tutorial = load_yaml(datafile=datafile)
    if tutorial is None:
        abort(404)
    return minify(render_template(
        'resource/vb/tutorial.html',
        header=header,
        tutorial=tutorial
    ))
Ejemplo n.º 7
0
 def update_user(cls):
     info = load_yaml(USER_PATH)
     if info is None:
         cls.query.first().delete()
     else:
         user = cls.query.first()
         if user is None:
             user = User(info['email'], info['password'], info['name'])
             db.session.add(user)
         else:
             for k, v in info.items():
                 setattr(user, k, v)
     db.session.commit()
Ejemplo n.º 8
0
 def insert_entries(data, verbose=False):
     '''Room.insert_entries(data, verbose=False)'''
     yaml_file = os.path.join(current_app.config['DATA_DIR'], data, 'rooms.yml')
     entries = load_yaml(yaml_file=yaml_file)
     if entries is not None:
         print('---> Read: {}'.format(yaml_file))
         for entry in entries:
             room = Room(name=entry['name'])
             db.session.add(room)
             if verbose:
                 print('导入房间信息', entry['name'])
         db.session.commit()
     else:
         print('文件不存在', yaml_file)
Ejemplo n.º 9
0
 def insert_entries(data, verbose=False):
     '''DeviceType.insert_entries(data, verbose=False)'''
     yaml_file = os.path.join(current_app.config['DATA_DIR'], data, 'device_types.yml')
     entries = load_yaml(yaml_file=yaml_file)
     if entries is not None:
         print('---> Read: {}'.format(yaml_file))
         for entry in entries:
             device_type = DeviceType(
                 name=entry['name'],
                 icon=entry['icon']
             )
             db.session.add(device_type)
             if verbose:
                 print('导入设备类型信息', entry['name'], entry['icon'])
         db.session.commit()
     else:
         print('文件不存在', yaml_file)
Ejemplo n.º 10
0
 def insert_entries(data, verbose=False):
     '''Permission.insert_entries(data, verbose=False)'''
     yaml_file = os.path.join(current_app.config['DATA_DIR'], data, 'permissions.yml')
     entries = load_yaml(yaml_file=yaml_file)
     if entries is not None:
         print('---> Read: {}'.format(yaml_file))
         for entry in entries:
             permission = Permission(
                 name=entry['name'],
                 category=entry['category']
             )
             db.session.add(permission)
             if verbose:
                 print('导入用户权限信息', entry['name'], entry['category'])
         db.session.commit()
     else:
         print('文件不存在', yaml_file)
Ejemplo n.º 11
0
 def insert_entries(data, verbose=False):
     '''Lesson.insert_entries(data, verbose=False)'''
     yaml_file = os.path.join(current_app.config['DATA_DIR'], data, 'lessons.yml')
     entries = load_yaml(yaml_file=yaml_file)
     if entries is not None:
         print('---> Read: {}'.format(yaml_file))
         for entry in entries:
             lesson = Lesson(
                 name='{} {}'.format(entry['lesson_type_name'], entry['abbr']),
                 abbr=entry['abbr'],
                 type_id=LessonType.query.filter_by(name=entry['lesson_type_name']).first().id,
                 progress_threshold=entry['progress_threshold']
             )
             db.session.add(lesson)
             if verbose:
                 print('导入课程信息', entry['lesson_type_name'], entry['abbr'])
         db.session.commit()
     else:
         print('文件不存在', yaml_file)
Ejemplo n.º 12
0
 def insert_entries(data, verbose=False):
     '''LessonType.insert_entries(data, verbose=False)'''
     yaml_file = os.path.join(current_app.config['DATA_DIR'], data, 'lesson_types.yml')
     entries = load_yaml(yaml_file=yaml_file)
     if entries is not None:
         print('---> Read: {}'.format(yaml_file))
         for entry in entries:
             lesson_type = LessonType(
                 name=entry['name'],
                 color=entry['color'],
                 view_point=entry['view_point'],
                 login_required=entry['login_required']
             )
             db.session.add(lesson_type)
             if verbose:
                 print('导入课程类型信息', entry['name'], entry['color'], entry['view_point'])
         db.session.commit()
     else:
         print('文件不存在', yaml_file)