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)
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__)
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, })
def arruma_url_page(request): url = str(request.get_full_path()) if "&page=" in url: url = url[:-7] elif url.endswith('/'): url += '?' return url
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)
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))
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)
def post(self, request, *args, **kwargs): form = ReviewForm(request.POST) if form.is_valid(): form.save() return HttpResponseRedirect(request.get_full_path())
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
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)
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)
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'))
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))
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)
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, )))
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)
def get_current_path(request): current_url = request.get_full_path() return current_url
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)