Exemple #1
0
def wrap_HomeworkStatus(ins, usr):
    if not usr.pref.s_work:
        raise OperationError
    return ('hw_checked', {
        'hw_name': ins.homework.title,
        'course_name': ins.homework.course.name,
        'score': ins.grading,
    }, get_redirect_url('hw/detail', {'homework_id': ins.homework.id}))
Exemple #2
0
def wrap_Lecture(ins, usr):
    if not usr.pref.s_lecture:
        raise OperationError
    return ('new_lec', {
        'title': ins.title,
        'lecturer': ins.lecturer,
        'time': ins.time,
        'place': ins.place,
    }, get_redirect_url('lecture/detail', {'lecture_id': ins.id}))
Exemple #3
0
def wrap_Homework(ins, usr):
    if not usr.pref.s_work:
        raise OperationError
    return ('new_hw', {
        'hw_name': ins.title,
        'course_name': ins.course.name,
        'ddl': ins.end_time.strftime('%Y-%m-%d'),
        'days_left': (ins.end_time - date.today()).days,
    }, get_redirect_url('hw/detail', {'homework_id': ins.id}))
Exemple #4
0
def wrap_Notice(ins, usr):
    if not usr.pref.s_notice:
        raise OperationError
    return ('new_notice', {
        'course': ins.course.name,
        'title': ins.title,
        'publisher': ins.publisher,
        'content': ins.content,
        'time': ins.publishtime.strftime('%Y-%m-%d'),
    }, get_redirect_url('notice/detail', {'notice_id': ins.id}))
Exemple #5
0
class CustomWeChatView(WeChatView):
    handlers = [
        eval(m[0])
        for m in inspect.getmembers(handlers_module, inspect.isclass)
        if m[1].__module__ == handlers_module.__name__
        and m[1].__name__.endswith('Handler')
    ]
    event_keys = {}
    menu = {
        'button': [{
            'name':
            '新鲜事',
            'sub_button': [{
                'type':
                'view',
                'name':
                '作业',
                'url':
                get_redirect_url('redirect', state='hw/unfinished-list'),
            }, {
                'type':
                'view',
                'name':
                '公告',
                'url':
                get_redirect_url('redirect', state='notice/list'),
            }, {
                'type':
                'view',
                'name':
                '日历',
                'url':
                get_redirect_url('redirect', state='calendar'),
            }]
        }, {
            'name':
            '发现',
            'sub_button': [{
                'type':
                'view',
                'name':
                '讲座',
                'url':
                get_redirect_url('redirect', state='lecture/list'),
            }, {
                'type': 'view',
                'name': '组队',
                'url': get_redirect_url('redirect', state='team'),
            }]
        }, {
            'name':
            '个人中心',
            'sub_button': [{
                'type': 'view',
                'name': '绑定/解绑',
                'url': get_redirect_url('redirect', state='u/bind'),
            }, {
                'type': 'view',
                'name': '偏好设置',
                'url': get_redirect_url('redirect', state='u/pref'),
            }]
        }]
    }

    @classmethod
    def update_menu(cls, menu=None):  # pragma: no cover
        if not menu:
            menu = cls.menu
        try:
            cls._wechat.create_menu(menu)
        except Exception as e:
            raise BaseError(
                -1,
                'CustomWeChatView:update_menu() error setting menu: {}'.format(
                    str(e)))

    @classmethod
    def get_templates(cls):  # pragma: no cover
        Template.objects.all().delete()
        res = cls._wechat.request.get(
            url=
            'https://api.weixin.qq.com/cgi-bin/template/get_all_private_template'
        )
        ls = res['template_list']
        for item in ls:
            dat = Template(t_id=item['template_id'], t_title=item['title'])
            dat.save()
            logger.info('Saved {} with {}.'.format(dat.t_title, dat.t_id))
Exemple #6
0
 def do_redirect(self):
     if not self.student.xt_id:
         return redirect(settings.get_redirect_url('u/bind'))
     return redirect(settings.get_redirect_url(unquote(self.input['state'])))