Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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)
Beispiel #6
0
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)
Beispiel #7
0
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)
Beispiel #8
0
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)
Beispiel #9
0
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)
Beispiel #10
0
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)
Beispiel #11
0
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)
Beispiel #12
0
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)
Beispiel #13
0
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)
Beispiel #14
0
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)
Beispiel #15
0
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)
Beispiel #16
0
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)
Beispiel #17
0
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)
Beispiel #18
0
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)
Beispiel #19
0
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)
Beispiel #20
0
def get_agreement(request):
    context = get_default_context(request)
    return render(request, 'app/static/agreement.html', context)
Beispiel #21
0
def get_inf(request):
    context = get_default_context(request)
    return render(request, 'app/static/inf.html', context)
Beispiel #22
0
def get_links(request):
    context = get_default_context(request)
    return render(request, 'app/static/links.html', context)