예제 #1
0
파일: views.py 프로젝트: samsi/openstax-cms
def accounts(request):
    # This will not be reached in deployed environments where Cloudfront is serving OSWeb,
    # because Cloudfront proxies all `/accounts*` traffic straight to Accounts.  It is only
    # for test and dev environments.

    url = "{}{}".format(settings.ACCOUNTS_SERVER_URL, request.get_full_path())
    return redirect(url)
예제 #2
0
def parse_search(request) -> object:

    def crawl_index(url):
        with urllib.request.urlopen(url) as response:
            html = response.read()
            html = bs(html, "html.parser")
            lst = bs.find_all(html, "a")
            url_lst = []
            for i in lst:
                web_url = i["href"]
                if "/devops/" in web_url:
                    url_lst.append(web_url)
            return url_lst

    def search_page(url_lst, query):
        result = []
        for i in url_lst:
            content_url = url + i
            with urllib.request.urlopen(content_url) as res:

                html = res.read()
                html = bs(html, "html.parser")
                strings = html.body.strings
                title = html.h1
                if title is None:
                    title = i.split("/")[-1]
                else:
                    title = re.sub("[\n]", "", title.string).strip()
                for i in strings:
                    i = re.sub("\n", " ", i)
                    if query in i.lower():
                        dic = {
                            "url": content_url,
                            "page": title,
                            "content": i
                        }
                        result.append(dic)
        return result

    url = "http://www.thedevopscourse.com"

    try:
        header = "The DevOps Course"
        path = request.get_full_path()
        query = path.split("query=")[1]
        if("+") in query:
            query = " ".join(query.split("+")).lower()
        else:
            query = query.lower()

        data = search_page(crawl_index(url), query)

        return render(request,
                      'search.html', dict(data=data,
                                          header=header,
                                          query=query))
    except Exception as e:
        return HttpResponseServerError(e.__cause__,
                                       e.__context__,
                                       e.__traceback__)
예제 #3
0
def viewWork(request):
    conn = pymysql.connect(
        host='aa1ob3qqoho0ocv.c8ijhazzdpdc.ap-northeast-2.rds.amazonaws.com',
        user='******',
        password='******',
        db='HarmonyDataBase',
        charset='utf8')
    curs = conn.cursor(pymysql.cursors.DictCursor)
    if request.method == "GET":
        pk = request.get_full_path()
        postnum = pk[20:]

        datafetch = "Select p.postnum, p.ID, p.title, p.contents, p.created_date, p.filepath, p.filename From HarmonyDataBase.Posts p;"
        curs.execute(datafetch)
        boardList = curs.fetchall()
        files = File.objects.all()

        for boardRow in boardList:
            if boardRow['postnum'] == postnum:
                return render(
                    request, 'Harmony/readpost.html', {
                        'postnum': boardRow['postnum'],
                        'ID': boardRow['ID'],
                        'title': boardRow['title'],
                        'contents': boardRow['contents'],
                        'created_date': boardRow['created_date'],
                        'filepath': boardRow['filepath'],
                        'filename': boardRow['filename'],
                        'data': files,
                    })
예제 #4
0
def arruma_url_page(request):
    url = str(request.get_full_path())
    if "&page=" in url:
        url = url[:-7]
    elif url.endswith('/'):
        url += '?'
    return url
예제 #5
0
def content(request):
    data_selection = ContentsInSectionGames.objects.all()
    inf_g = InfoGames.objects.all()
    count = {
        inf_g[i].name_games: 'Кол-во статей: ' +
        str(inf_g.filter(name_games=inf_g[i].name_games).count())
        for i in range(inf_g.count())
    }
    if len(data_selection) > len(count):
        for i in data_selection:
            if i in count:
                continue
            else:
                count[i] = 'Нет статей!'
    content_battlefield = AboutBattleField.objects.all()
    content_dungeon = AboutDungeon.objects.all()
    content_pool_of_memory = AboutPoolOfMemory.objects.all()
    content_round_table = AboutRoundTable.objects.all()
    content_main_hall = AboutMainHall.objects.all()
    dat = AboutLibrary.objects.all()

    contaxt = {
        "prTitle": "Библиотека",
        "data": dat,
        "selectGame": data_selection,
        "battlefield": content_battlefield,
        "dungeon": content_dungeon,
        "dict_count": count,
        "pool_of_memory": content_pool_of_memory,
        "round_table": content_round_table,
        "main_hall": content_main_hall,
        "this_path": request.get_full_path()
    }
    return render(request, "connects/library_cont_games.html", contaxt)
예제 #6
0
파일: views.py 프로젝트: 893271511/web
def index(request):
    url = request.get_full_path()
    request.breadcrumbs(breadcrumbs)
    if request.GET.get('env') == 'production':
        env_en = 'production'
        env_cn = '生产'
        env_next = 'test'
    else:
        env_en = 'test'
        env_cn = '测试'
        env_next = 'production'

    if url == "/onerelease/":
        title = set_title(url)
        form = OneReleaseForm()
        t = loader.get_template("onerelease.html")
    else:
        title = set_title(url)
        form = ReleaseForm()

        # pro = Project.objects.get(name='renren-fenqi')
        # joe = User.objects.get(username=request.user)
        # checker = ObjectPermissionChecker(joe) # we can pass user or group
        # var2 = checker.has_perm('release.release_test_project', pro)
        # var3 = request.user.has_perm('release.release_test_project')
        # flatpage = Project()
        # print(flatpage)
        #assign_perm('release.release_test_project', user, pro_name)

        t = loader.get_template("release.html")
    c = RequestContext(request, locals())
    return HttpResponse(t.render(c))
예제 #7
0
def add_category_and_post(request, pk):
    # получаю pk категории
    super_category_pk = request.get_full_path().split('/')[2]

    if request.method == 'POST':
        post_form = AddCategoryAndPostForm(request.POST,
                                           initial={"user": request.user})
        get_category = post_form.data['category']
        get_text = post_form.data['text']
        # создаю новую тему с именем взятым из введенного значения в форме, категория равна той, которая в адресной строке браузера
        new_created_category = Category.objects.create(
            name=get_category,
            super_category=SuperCategory.objects.get(pk=super_category_pk))
        # создаю пост в только что созданной теме
        Post.objects.create(
            category=Category.objects.get(pk=new_created_category.pk),
            text=get_text,
            user=request.user)

        messages.add_message(request, messages.SUCCESS,
                             "Тема была успешно создана!")

        return redirect('/category/' + str(new_created_category.pk))

    post_form = AddCategoryAndPostForm(initial={"user": request.user})
    context = {'post_form': post_form}
    return render(request, 'mainapp/create_category_detail.html', context)
예제 #8
0
파일: views.py 프로젝트: DennySim/dj-di
    def post(self, request, *args, **kwargs):

        form = ReviewForm(request.POST)

        if form.is_valid():
            form.save()

        return HttpResponseRedirect(request.get_full_path())
예제 #9
0
    def process_response(self, request, response):
        """
        Adding request and response logging
        """
        request_time = request.META['HTTP_X_UPSTREAM_SERVICE_TIME']
        REQUEST_DATACONTENT = ''
        RESPONSE_DATACONTENT = ''
        trace = ""

        # request contains 'HTTP_X_CLOUD_TRACE_CONTEXT' Meta in live API
        if 'HTTP_X_CLOUD_TRACE_CONTEXT' in request.META and request.META[
                'HTTP_X_CLOUD_TRACE_CONTEXT'] != "":
            trace = request.META['HTTP_X_CLOUD_TRACE_CONTEXT'].split('/')[0]
        else:
            # For test logging from local update the below trace value for every request
            trace = "80a8891891eb0c4725bdcebd8df55418"

        SEVERITY = 'INFO'
        TRACE = "projects/{}/traces/{}".format(client.project, trace)
        content_length = len(response.content)
        REQUEST = {
            'requestMethod': request.method,
            'requestUrl': request.get_full_path(),
            'status': response.status_code,
            'userAgent': request.META['HTTP_USER_AGENT'],
            'responseSize': content_length,
            'latency': request_time,
            'remoteIp': request.META['REMOTE_ADDR']
        }

        if request.method == 'GET':
            REQUEST_DATACONTENT = request.GET
            if len(REQUEST_DATACONTENT) > 8000:
                REQUEST_DATACONTENT = REQUEST_DATACONTENT[0:8000]
        else:
            REQUEST_DATACONTENT = self._initial_http_body
            if len(REQUEST_DATACONTENT) > 8000:
                REQUEST_DATACONTENT = REQUEST_DATACONTENT[0:8000]

        RESPONSE_DATACONTENT = response.content
        if len(RESPONSE_DATACONTENT) > 8000:
            RESPONSE_DATACONTENT = RESPONSE_DATACONTENT[0:8000]

        parent_logger.name = "appengine.googleapis.com%2Fnginx.request"

        parent_logger.log_struct(
            {
                'REQUEST': str(REQUEST_DATACONTENT),
                'RESPONSE': str(RESPONSE_DATACONTENT)
            },
            client=client,
            severity=SEVERITY,
            http_request=REQUEST,
            trace=TRACE,
            resource=_GAE_APP_RESOURCE)
        logger.info(RESPONSE_DATACONTENT)
        return response
예제 #10
0
def postmodify(request):
    conn = pymysql.connect(
        host='aa1ob3qqoho0ocv.c8ijhazzdpdc.ap-northeast-2.rds.amazonaws.com',
        user='******',
        password='******',
        db='HarmonyDataBase',
        charset='utf8')
    curs = conn.cursor(pymysql.cursors.DictCursor)

    if request.method == "GET":
        form = FileForm(request.POST, request.FILES)
        return render(request, 'Harmony/postupdate.html', {
            'form': form,
        })

    if request.method == "POST":
        pk = request.get_full_path()
        postnum = pk[21:]

        datafetch = "Select p.postnum, p.ID, p.title, p.contents, p.created_date, p.filepath, p.filename From HarmonyDataBase.Posts p;"
        curs.execute(datafetch)
        boardList = curs.fetchall()

        for boardRow in boardList:
            if boardRow['postnum'] == postnum:
                form = FileForm(request.POST, request.FILES)
                if form.is_valid():
                    form.save()
                title = request.POST['title']
                date = datetime.now()
                contents = request.POST['contents']
                filename = request.FILES['file'].name
                filepath = "media/files" + filename

                updatedata = 'Update HarmonyDataBase.Posts p Set p.title=%s, p.contents=%s, p.filename=%s, p.filepath=%s, p.created_date=%s Where p.postnum=%s;'
                curs.execute(updatedata, (
                    title,
                    contents,
                    filename,
                    filepath,
                    date,
                    postnum,
                ))
                conn.commit()

                request.method = "GET"
                return showfile(request)
예제 #11
0
def profile(request, pk):
    # беру число из адресной строки, чтобы получить pk пользователя
    current_profile_pk = request.get_full_path().split('/')[3]
    # беру пользователя на основании этого числа
    current_user = User.objects.get(pk=current_profile_pk)
    request_user = request.user
    user_message_counter = Post.objects.filter(user=current_user).count()
    context = {
        'current_user': current_user,
        'user_message_counter': user_message_counter,
        'request_user': request_user
    }

    if request.user.pk == int(current_profile_pk):
        return render(request, 'mainapp/profile.html', context)
    else:

        return render(request, 'mainapp/another_profile.html', context)
예제 #12
0
def callback(request):
    # Get the state saved in session
    expected_state = request.session.pop('auth_state', '')
    # Make the token request
    token = get_token_from_code(request.get_full_path(), expected_state)
    # Get the user's profile
    user = get_user(token)
    if not User.objects.filter(username=user['mail']).exists():
        new_user = User.objects.create_user(user['mail'])
        new_user.save()
        account = Account()
        account.user = new_user
        account.name = user['displayName']
        account.email = user['mail']
        account.save()
        return HttpResponseRedirect(reverse('details'))
    login(request, User.objects.get(username=user['mail']))
    store_token(request, token)
    return HttpResponseRedirect(reverse('home'))
예제 #13
0
파일: views.py 프로젝트: 893271511/web
def Rollback(request):
    #当提交表单时
    if request.method == 'POST':
        project = request.POST.get('project')
        env = request.POST.get('env')
        version = request.POST.get('version')
        server = request.POST.get('server')
        #判断是单台发布,还是批量发布
        if server != None:
            if env == "test":
                SERVER = Project.objects.get(name=project).test_env.all()
            elif env == "staging":
                SERVER = Project.objects.get(name=project).staging_env.all()
            else:
                SERVER = Project.objects.get(name=project).production_env.all()
            for i in SERVER:
                if server == str(i):
                    return StreamingHttpResponse(
                        stream_response_generator(
                            [project, version, env, server]), )
            return HttpResponse("禁止发到此主机")
        else:
            return StreamingHttpResponse(
                stream_response_generator([project, version, env]), )

    else:
        url = request.get_full_path()
        request.breadcrumbs(breadcrumbs)
        if request.GET.get('env') == 'production':
            env_en = 'production'
            env_cn = '生产'
            env_next = 'test'
        else:
            env_en = 'test'
            env_cn = '测试'
            env_next = 'production'
        title = set_title(url)
        form = GeneralForm()
        t = loader.get_template("rollback.html")
        c = RequestContext(request, locals())
        return HttpResponse(t.render(c))
예제 #14
0
def library(request):
    my_data = AboutLibrary.objects.all()
    dat_game = SectionInLibraryAboutGames.objects.all()
    dat_klan = SectionInLibraryAboutKlan.objects.all()
    content_battlefield = AboutBattleField.objects.all()
    content_dungeon = AboutDungeon.objects.all()
    content_pool_of_memory = AboutPoolOfMemory.objects.all()
    content_round_table = AboutRoundTable.objects.all()
    content_main_hall = AboutMainHall.objects.all()
    contaxt = {
        "prTitle": "Библиотека",
        "data": my_data,
        "selectGame": dat_game,
        "selectKlan": dat_klan,
        "battlefield": content_battlefield,
        "dungeon": content_dungeon,
        "pool_of_memory": content_pool_of_memory,
        "round_table": content_round_table,
        "main_hall": content_main_hall,
        "this_path": request.get_full_path()
    }
    return render(request, "connects/library_parts.html", contaxt)
예제 #15
0
    def post(self, request, pk):
        url = request.get_full_path()
        form = CommentForm(request.POST)
        if form.is_valid():
            # 获取分数和评论
            score = form.cleaned_data.get('score')
            comment = form.cleaned_data.get('comment')
            print(score, comment)
            # 获取用户和电影
            user_id = request.session['user_id']
            user = User.objects.get(pk=user_id)
            movie = Movie.objects.get(pk=pk)

            # 更新一条记录
            rating = Movie_rating.objects.filter(user=user,
                                                 movie=movie).first()
            if rating:
                # 如果存在则更新
                # print(rating)
                rating.score = score
                rating.comment = comment
                rating.save()
                # messages.info(request,"更新评分成功!")
            else:
                print('记录不存在')
                # 如果不存在则添加
                rating = Movie_rating(user=user,
                                      movie=movie,
                                      score=score,
                                      comment=comment)
                rating.save()
            messages.info(request, "评论成功!")

        else:
            # 表单没有验证通过
            messages.info(request, "评分不能为空!")
        return redirect(reverse('movie:detail', args=(pk, )))
예제 #16
0
def show_and_add_posts(request, pk):
    # получаю id категории из адресной строки, беру второй элемент списка - id
    # нулевой элемент связан с тем, что пагинатор добавляет в строку ненужное, которое я отрезаю, беря только нулевой элемент
    current_category = request.get_full_path().split('/')[2][0]
    all_posts = Post.objects.filter(
        category=current_category).order_by("published_at")

    # беру посты, относящиеся к категории с id из адресной строки и отображаю их по дате публикации

    # пагинатор
    # сколько постов на одной странице
    paginator = Paginator(all_posts, 5)

    # если нет  page в запросе, выводится первая страница
    if 'page' in request.GET:
        page_num = request.GET['page']
    else:
        page_num = 1
    page = paginator.get_page(page_num)

    # прибавляю 1, потому что при определенных условиях редиректит на предыдущую страницу
    last_page = page.paginator.num_pages + 1

    # добавление постов
    if request.method == 'POST':

        # счетчик просмотров каждой темы
        my_views_counter = Category.objects.get(pk=pk)
        # увеличиваю значение поля на единицу
        my_views_counter.count_of_views -= 1
        my_views_counter.save()

        form = AddPostForm(request.POST)
        if form.is_valid():
            form.save()
            # редирект на ту же страницу откуда отправлен пост

            return HttpResponseRedirect(request.path_info +
                                        '?page=%s' % last_page)
    else:
        # автоматически заполняю два поля формы - текущим пользователем и категорией из адресной строки
        form = AddPostForm(initial={
            "category": current_category,
            "user": request.user
        })

        # счетчик просмотров каждой темы
        my_views_counter = Category.objects.get(pk=pk)
        # увеличиваю значение поля на единицу
        my_views_counter.count_of_views += 1
        my_views_counter.save()

    # "current_category": my_views_counter - здесь использую для тайтлов в post_list_view.html
    # 'posts': page.object_list - выводим на странице только нужное кол-во постов  - page.object_list
    context = {
        'posts': page.object_list,
        'form': form,
        "current_category": my_views_counter,
        'page': page
    }

    return render(request, 'mainapp/posts_list_view.html', context)
예제 #17
0
파일: views.py 프로젝트: akerande/trackpro
def get_current_path(request):
    current_url = request.get_full_path()
    return current_url
예제 #18
0
def show_and_send_private_messages(request, pk1, pk2):
    another_user_pk = request.get_full_path().split('/')[3]
    another_user = User.objects.get(pk=another_user_pk)

    # получаю юзера и того, кому отправлено письмо.
    smaller = another_user
    bigger = request.user

    # меняю местами pk, чтобы первым всегда шел меньший по знаечнию pk
    if bigger.pk < smaller.pk:
        bigger, smaller = smaller, bigger

    # если диалог уже создан, получаю диалог с двумя юзерами
    try:
        current_dialog = Dialog.objects.get(user__in=(request.user,
                                                      another_user),
                                            another_user__in=(another_user,
                                                              request.user))

    # если не создан - создаю
    except Dialog.DoesNotExist:
        current_dialog = \
            Dialog.objects.update_or_create(smaller=smaller, bigger=bigger, user=request.user,
                                            another_user=another_user,
                                            defaults={'last_post': '',
                                                      'created_at': datetime.now(),
                                                      'is_readed': False})[0]

    # делаю сообщение прочитанным если диалог открыл не автор письма,
    if request.user != current_dialog.user:
        current_dialog.is_readed = True
        current_dialog.save()

    if request.method == 'POST':

        message_form = SendPrivateMessageForm(request.POST,
                                              initial={
                                                  "user": request.user,
                                                  "another_user": another_user,
                                              })

        # получаю текст из формы для его вставки в модель диалога
        text_for_dialog = message_form.data['text']

        if message_form.is_valid():
            message_form.save()

            # обновляю диалог, если добавлено сообшение
            Dialog.objects.update_or_create(smaller=smaller,
                                            bigger=bigger,
                                            defaults={
                                                'last_post': text_for_dialog,
                                                'created_at': datetime.now(),
                                                'user': request.user,
                                                'another_user': another_user,
                                                'is_readed': False
                                            })

            return HttpResponseRedirect(request.path_info)

    # выбираю только сообщения от текущего юзера и того, с кем на данный момент ведется переписка
    private_message = PrivateMessage.objects.filter(
        user__in=(request.user, another_user),
        another_user__in=(another_user, request.user)).order_by('send_at')
    message_form = SendPrivateMessageForm(initial={
        "user": request.user,
        "another_user": another_user,
    })
    context = {
        "message_form": message_form,
        "private_message": private_message
    }
    return render(request, 'mainapp/messages_with_one_user_list.html', context)