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}))
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}))
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}))
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}))
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))
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'])))