def comments_mod(request): """ Модерирование комментариев """ db = mydb.MyDB() context = get_default_context(request) user = auth.MyUser(request) if not user.is_editor(): return render(request, 'app/static/403.html', context) _sql = db.sql('mod_comments') sql = _sql.format(cols='count(*) cnt', orderby='') context['COUNT_COMMENTS'] = db.SqlQueryScalar(sql) sql = _sql.format(cols='*', orderby='ORDER BY m.time DESC LIMIT 30') rs = db.SqlQuery(sql) comments = [] for r in rs: m = get_message_text(request, r, is_comment=True) m['parent'] = get_url_comment(r['id']) comments.append(m) context['comments'] = comments return render(request, 'app/mod/comments.html', context)
def message(request, page=1): """ Построение ленты """ if 'highload.org' in request.META['HTTP_HOST']: return message_highload(request, page) db = mydb.MyDB() context = get_default_context(request) page = int(page) start = (page - 1) * consts.COUNT_MESSAGES_PAGE cats = get_news_cats('news') sql = db.sql('news_count').format(cats=cats) count_messages = rs = db.SqlQueryScalar(sql, {'cats': cats}) sql = db.sql('news_list').format(cats=cats) rs = db.SqlQuery(sql, { 'start': start, 'count': consts.COUNT_MESSAGES_PAGE, 'cats': cats }) news = [] for r in rs: news.append(get_message_text(request, r)) context['news'] = news context['PAGE_SELECT'] = create_page_select(count_messages, consts.COUNT_MESSAGES_PAGE, page, 'news/all/') return render(request, 'app/messages/messages.html', context)
def blog_post(request, post_id, page=1, gotocomment=None): db = mydb.MyDB() context = get_default_context(request) mid = db.SqlQueryScalar(db.sql('blog_post'), {'id': post_id}) rs = db.SqlQuery(db.sql('message_full'), {'mid': mid}) if len(rs) != 1: return render(request, 'app/static/unknow.html', context) context['msg'] = get_message_text(request, rs[0], is_comment=False, blog=True) context['msg']['en'] = 'blog' context['msg']['ru'] = 'блог' context['msg']['url_pageless'] = 'post{}'.format(post_id) context['LEFT_MENU'] = False context['ADDITIONAL_PARAMS'] = ''' 'comments_page': {}, '''.format(page) context['COMMENT_ID'] = gotocomment context['NAV_CAPTION'] = 'HighLoad.org' context['HIGHLOAD'] = True return render(request, 'app/highload/full_message.html', context)
def teachers_add_edit(request, _id=None): context = get_default_context(request) if _id: context['ADDITIONAL_PARAMS'] = ''' 'teacher_id': {}, '''.format(_id) return render(request, 'app/teachers/add_edit.html', context)
def teachers_mod(request): db = mydb.MyDB() context = get_default_context(request) user = auth.MyUser(request) if not user.is_editor(): return render(request, 'app/static/403.html', context) context['teachers'] = db.SqlQuery(db.sql('mod_teachers')) return render(request, 'app/mod/teachers.html', context)
def get_board_theme(request): context = get_default_context(request) context['PAGE_TITLE'] = 'Форум - ' bread_crumbs = [{ 'text': consts.NAV_CAPTION, 'link': '/' }, { 'text': 'Форум', 'link': '/board/', 'last': True }] context['BREAD_CRUMBS'] = json_dumps(bread_crumbs) return render(request, 'app/board/main.html', context)
def get_files_for_edu_main(request, subject=None, type_id=None): context = get_default_context(request) db = mydb.MyDB() # Заполняем шаблон правильным случаем, в зависимости от переданных параметров bread_crumbs = [{'text': consts.NAV_CAPTION, 'link': '/'}] context['RIGHT_MENU'] = False if not subject: bread_crumbs.append({'text': 'Файлы для учёбы', 'last': True}) context['BREAD_CRUMBS'] = json_dumps(bread_crumbs) context['SUBJECT_ID'] = 'null' context['TYPE_ID'] = 'null' elif not type_id: subject_name = db.SqlQueryScalar(db.sql('edu_files_subject_get_by_id'), {'id': int(subject)}) bread_crumbs.append({ 'text': 'Файлы для учёбы', 'link': '/files_for_edu/' }) bread_crumbs.append({'text': subject_name, 'last': True}) context['BREAD_CRUMBS'] = json_dumps(bread_crumbs) context['SUBJECT_ID'] = int(subject) context['TYPE_ID'] = 'null' context['RIGHT_MENU'] = True else: names = db.SqlQuery(db.sql('edu_files_subject_type_get'), { 'sid': int(subject), 'tid': int(type_id) }) bread_crumbs.append({ 'text': 'Файлы для учёбы', 'link': '/files_for_edu/' }) bread_crumbs.append({ 'text': names[0]['subject'], 'link': '/files_for_edu/{}'.format(int(subject)) }) bread_crumbs.append({'text': names[0]['type'], 'last': True}) context['BREAD_CRUMBS'] = json_dumps(bread_crumbs) context['SUBJECT_ID'] = int(subject) context['TYPE_ID'] = int(type_id) context['ENABLE_ADD_FILE'] = consts.ENABLE_ADD_FILE return render(request, 'app/files_for_edu/main.html', context)
def calendar_challenge(request, challenge_id=None): """ Challenge page Args: challenge_id: int, chelenge id """ user = auth.MyUser(request) context = get_default_context(request, user=user) add_calendar_context(context, user) if challenge_id: context['CALENDAR_CHALLENGE_ID'] = challenge_id return render(request, 'app/calendar/main.html', context)
def get_board_theme_comments(request, theme_id, page=1): context = get_default_context(request) db = mydb.MyDB() title = db.SqlQueryScalar(db.sql('board_theme_title'), {'id': theme_id}) bread_crumbs = [{'text': consts.NAV_CAPTION, 'link': '/'}] bread_crumbs.append({'text': 'Форум', 'link': '/board/'}) bread_crumbs.append({'text': title, 'last': True}) context['BREAD_CRUMBS'] = json_dumps(bread_crumbs) context['THEME_ID'] = theme_id context['THEME_TITLE'] = title context['ADDITIONAL_PARAMS'] = ''' 'comments_page': {}, '''.format(page) return render(request, 'app/board/theme.html', context)
def calendar_user(request, member_id=None): """ User page Args: member_id: int, user id """ user = auth.MyUser(request) context = get_default_context(request, user=user) add_calendar_context(context, user) if member_id: context['CALENDAR_MEMBER_ID'] = member_id return render(request, 'app/calendar/main.html', context)
def chair_list(request, chair_id): """ Список преподователей кафедры """ db = mydb.MyDB() context = get_default_context(request) chair = db.SqlQuery(db.sql('teachers_chair_read'), {'id': chair_id}) if not chair: raise Exception('Такой кафедры не существеует') context['CHAIR_NAME'] = chair[0]['name'] rs = db.SqlQuery(db.sql('teachers_chair_list'), {'chair_id': chair_id}) context['teachers'] = rs return render(request, 'app/teachers/chair_view.html', context)
def calendar(request): """ Main page """ # if we get 'code' from vk authorization - we generate sid for this user sid = None vk_code = request.GET.get('code') if vk_code: sid = auth_by_vk(vk_code) or None user = auth.MyUser(request, sid=sid) context = get_default_context(request, user=user) add_calendar_context(context, user) # send sid to HTML, then set cookies with JS context['SET_COOKIE_TOKEN'] = sid return render(request, 'app/calendar/main.html', context)
def news_mod(request): db = mydb.MyDB() context = get_default_context(request) user = auth.MyUser(request) if not user.is_editor(): return render(request, 'app/static/403.html', context) sql = db.sql('mod_news') rs = db.SqlQuery(sql) news = [] for r in rs: m = get_message_text(request, r) if m['category']: m['category_path'] = get_path_ID(int(m['category'])) else: m['category_path'] = '[Не выбран раздел]' news.append(m) context['news'] = news return render(request, 'app/mod/news.html', context)
def full_message(request, mid=None, page=1, gotocomment=None): """ Просмотр сообщения целиком с комментариями """ db = mydb.MyDB() context = get_default_context(request) rs = db.SqlQuery(db.sql('message_full'), {'mid': int(mid)}) if len(rs) != 1: return render(request, 'app/static/unknow.html', context) cat = get_message_top_category(int(rs[0]['category'])) context['msg'] = get_message_text(request, rs[0]) context['msg']['en'] = cat['en'] context['msg']['ru'] = cat['ru'] context['msg']['url_pageless'] = 'news/{}'.format(mid) context['ADDITIONAL_PARAMS'] = ''' 'comments_page': {}, '''.format(page) context['COMMENT_ID'] = gotocomment return render(request, 'app/messages/full_message.html', context)
def message_navigation(request, mode, _id='null'): """ Рендер расширенной формы: написать комментарий, новость, тему на форуме """ context = get_default_context(request) db = mydb.MyDB() sql = ''' SELECT count(*) > 0 FROM blog WHERE message_id = @mid@ ''' message_id = 'null' parent_id = 'null' board_theme = 'false' # Если true - новое тема на форуме blog_post = 'false' if mode == 'writer': message_id = _id if message_id != 'null': if db.SqlQueryScalar(sql, {'mid': int(message_id)}): blog_post = 'true' elif mode == 'comment': parent_id = _id elif mode == 'board_theme': message_id = _id board_theme = 'true' context['MESSAGE_ID'] = message_id context['PARENT_ID'] = parent_id context['BOARD_THEME'] = board_theme context['BLOG_POST'] = blog_post context['LEFT_MENU'] = False context['LEFT_WIDTH'] = 0 context['RIGHT_WIDTH'] = 0 context['WHOLE_WIDTH'] = '100%' context['MIDDLE_WIDTH'] = '100%' return render(request, 'app/messages/write_message.html', context)
def message_highload(request, page=1): """ Построение ленты блога """ db = mydb.MyDB() context = get_default_context(request) user = auth.MyUser(request) page = int(page) start = (page - 1) * consts.COUNT_MESSAGES_PAGE count_messages = rs = db.SqlQueryScalar(db.sql('blog_posts_count'), {'username': user.username}) rs = db.SqlQuery( db.sql('blog_posts'), { 'start': start, 'count': consts.COUNT_MESSAGES_PAGE, 'username': user.username }) posts = [] for r in rs: posts.append( get_message_text(request, r, is_comment=False, blog=True, preview=True)) context['posts'] = posts context['PAGE_SELECT'] = create_page_select(count_messages, consts.COUNT_MESSAGES_PAGE, page, 'page/') context['HIGHLOAD'] = True context['NAV_CAPTION'] = 'HighLoad.org' context['LEFT_MENU'] = False return render(request, 'app/highload/posts.html', context)
def teachers_list(request): db = mydb.MyDB() context = get_default_context(request) context['PAGE_TITLE'] = 'Преподаватели - ' rs = db.SqlQuery(db.sql('teachers_list')) latin_table = get_latin_table() chars = [] for r in rs: ch = r['name'][0] if chars and ch == chars[-1]['char_ru']: chars[-1]['ts'].append(r) else: chars.append({ 'char_ru': ch, 'char_en': latin_table.get(ch, ch), 'ts': [r] }) context['chars'] = chars assert isinstance(request, HttpRequest) return render(request, 'app/teachers/main.html', context)
def get_teachers_teacher(request, teacher_id=0, page=1, gotocomment=None): """ Карточка преподователя """ teacher_id = int(teacher_id) db = mydb.MyDB() context = get_default_context(request) context['PAGE_TITLE'] = 'Преподаватели - ' context['comments_page'] = page ts = db.SqlQuery(db.sql('teachers_teacher'), {'tid': teacher_id}) if not ts: raise Exception('Такого преподавателя не найдено.') context['teacher'] = ts[0] context['teacher']['information'] = context['teacher'][ 'information'].replace('\n', '<br />') context['teacher']['photos'] = get_teacher_photos(teacher_id) context['ADDITIONAL_PARAMS'] = ''' 'comments_page': {}, '''.format(page) context['COMMENT_ID'] = gotocomment return render(request, 'app/teachers/teacher.html', context)
def get_files_for_edu_add_file(request): context = get_default_context(request) db = mydb.MyDB() user = auth.MyUser(request) bread_crumbs = [{ 'text': consts.NAV_CAPTION, 'link': '/' }, { 'text': 'Файлы для учёбы', 'link': '/files_for_edu/' }, { 'text': 'Добавить свой файл', 'last': True }] context['BREAD_CRUMBS'] = json_dumps(bread_crumbs) description = request.POST.get('ft_description', '') type_id2 = int(request.POST.get('fd_type', -1)) type2 = request.POST.get('ft_type', '') subject = int(request.POST.get('fd_subject', -1)) subject2 = request.POST.get('ft_subject', '') author = request.POST.get('ft_author', '') submit_upload = request.POST.get('submit_upload', None) settings = {} if not submit_upload: context['FILE_SETTINGS'] = json_dumps(settings) return render(request, 'app/files_for_edu/add_file.html', context) # upload_tmp_name = isset($_FILES["upload"]["tmp_name"]) ? $_FILES["upload"]["tmp_name"] : ""; # upload_name = isset($_FILES["upload"]["name"]) ? $_FILES["upload"]["name"] : ""; # upload_size = isset($_FILES["upload"]["size"]) ? (int)$_FILES["upload"]["size"] : 0; _file = request.FILES['upload'] # this is my file upload_tmp_name = '' upload_name = 'test.zip' upload_size = 100 upload_result = { 'was_add': False, 'was_upload': False, 'was_bad_ext': False, 'was_add_mod': False, 'no_subject': False, 'no_type': False, } inserted = False if is_uploaded_file(upload_tmp_name): upload_result['was_upload'] = True ext = get_ext(['.zip', '.rar'], upload_name) if ext == -1: upload_result['was_bad_ext'] = True else: subject_id = get_subject(subject, subject2) type_id = get_type(type_id2, type2) if subject_id is None: upload_result['no_subject'] = True if type_id is None: upload_result['no_type'] = True if not upload_result['no_subject'] and not upload_result['no_type']: ext = ext.lower() ID = get_id() path = consts.DOCS_PATH + ID + ext if copy(upload_tmp_name, path): ps = { 'id': ID, 'ext': ext, 'subject_id': subject_id, 'description': description, 'type_id': type_id, 'size': upload_size, 'author': author, 'uploader': user.username, 'allow': 'yes' if user.is_editor() else 'no', 'time': int(time.time()) } db.SqlQuery(db.sql('edu_files_insert'), ps, True) inserted = True upload_result['was_add'] = user.is_editor() upload_result['was_add_mod'] = not user.is_editor() if submit_upload: settings['upload_result'] = upload_result if not inserted: settings['description'] = description settings['author'] = author settings['subject_text'] = subject2 settings['type_text'] = type2 settings['subject_id'] = int(subject) settings['type_id'] = int(type_id2) context['FILE_SETTINGS'] = json_dumps(settings) return render(request, 'app/files_for_edu/add_file.html', context)
def get_agreement(request): context = get_default_context(request) return render(request, 'app/static/agreement.html', context)
def get_inf(request): context = get_default_context(request) return render(request, 'app/static/inf.html', context)
def get_links(request): context = get_default_context(request) return render(request, 'app/static/links.html', context)