def update_fasion(): try: key = Post.objects.filter(department="의류학과").latest('upload_dt') except: key = None if key: latest = fashionCrawl.fashion_check_latest() if key.title != latest: data_dict = fashionCrawl.fashion_extract_latest_notices(key.title) for data in data_dict: if data['content'] != "": fb = Post(title=data['title'], upload_dt=data['modify_dt'], department=data['type'], content=data['content'], url=data['url']) fb.save() return latest else: return None else: # data_dict = fashionCrawl.fashion_extract_indeed_notices(3) data_dict = fashionCrawl.fashion_extract_indeed_notices( fashionCrawl.fashion_extract_indeed_pages()) for data in data_dict: if data['content'] != "": fb = Post(title=data['title'], upload_dt=data['modify_dt'], department=data['type'], content=data['content'], url=data['url']) fb.save() return fashionCrawl.fashion_check_latest()
def update_korean(): try: key = Post.objects.filter(department="국어국문학과").latest('upload_dt') except: key = None if key: latest = korean_crawl.check_latest() if key.title != latest: data_dict = korean_crawl.extract_latest_notices(key.title) for data in data_dict: if data['content'] != "": fb = Post(title=data['title'], upload_dt=data['modify_dt'], department=data['type'], content=data['content'], url=data['url']) fb.save() return latest else: return None else: data_dict = korean_crawl.extract_korean_notices(3) # data_dict = korean_crawl.extract_korean_notices(korean_crawl.extract_last_pages()) for data in data_dict: if data['content'] != "": fb = Post(title=data['title'], upload_dt=data['modify_dt'], department=data['type'], content=data['content'], url=data['url']) fb.save() return korean_crawl.check_latest()
def post_create(request): if request.method == "POST": do = request.POST.get('do') if do == 'del': return redirect(reverse('index')) # handle ingredient table items = [] for i, q in zip(request.POST.getlist('item'), request.POST.getlist('quantity')): items.append({'item': i, 'quantity': q}) post = { 'title': request.POST.get('post-title'), 'intro': request.POST.get('post-intro'), 'items': items, 'steps': request.POST.getlist('post-step'), 'fyi': request.POST.get('post-fyi'), } if do == 'pub': p = Post(creator=request.user, post_type='R', published_at=timezone.now, content=json.dumps(post)) else: # sav p = Post(creator=request.user, post_type='R', content=json.dumps(post)) p.save() return redirect(reverse('post_view', args=[p.id])) else: return render(request, 'post/create.html')
def analysis_view(request): if request.method == "POST": body_unicode = request.body.decode('utf-8') body = json.loads(request.body) print(request.body) content = body['b64_image'] filename = str(dateformat.format(timezone.now(), 'Y-m-d_H-i-s')) + '.jpg' post = Post() post.image = ContentFile(base64.b64decode(content), name=filename) post.name = filename post.save() object, result_data, total_percent = analysis.draw_line(post.pk) user_image = base64.b64encode(post.image.read()) result_image = base64.b64encode(object.result.read()) print(test) data = { "message" : str(result_data[0]), "image_name" : post.image.name.split('.')[0], "image" : str(user_image), "result" : str(result_image) } return JsonResponse(data) else: return HttpResponse("get is worng request")
def update_haksa(): try: key = Post.objects.filter(department="학사공지").latest('upload_dt') except: key = None if key: latest = haksaCrawl.check_latest() if key.title != latest: data_dict = haksaCrawl.extract_latest_notices(key.title) for data in data_dict: if data['content'] != "": print(f"{data['title']} is updated") fb = Post(title=data['title'], upload_dt=data['modify_dt'], department=data['type'], content=data['content'], url=data['url']) fb.save() return latest else: return None else: data_dict = haksaCrawl.extract_indeed_notices(3) # data_dict = haksaCrawl.extract_indeed_notices(haksaCrawl.extract_indeed_pages()) for data in data_dict: if data['content'] != "": fb = Post(title=data['title'], upload_dt=data['modify_dt'], department=data['type'], content=data['content'], url=data['url']) fb.save() return haksaCrawl.check_latest()
def mail(modeladmin, request, queryset): post = Post() post.save() for user in queryset: post.users.add(user) return redirect(f'/main/post/{post.pk}/change/')
def dtf_main(): names = dtf_names() links = dtf_links() conts = dtf_content() dts = [] date = dtf_date() time = dtf_time() site = "dtf" #"https://leonardo.osnova.io/91e47474-c70d-55ad-af16-b3bc2335e282/" chck = re.compile(r'\"https\:\/\/.*\/\"') url = 'https://dtf.ru/gameindustry/entries/new' img_urls = [] res = requests.get(url) soup = bs4.BeautifulSoup(res.text, "html.parser") out = soup.find_all('div', class_='content-image') urls = [] for item in out: mo = chck.search(str(item)) img_urls.append(mo.group()[1:-1]) del img_urls[10:] i = 0 for item in date: dts.append(str(item) + " " + time[i]) i = i + 1 i = 1 for item in img_urls: res = requests.get(item) img_file = open( os.path.join( 'D:\\agregator\\gamers_gazette\\game_news_site\\media\\images', 'dtf{}.png'.format(i)), 'wb') urls.append('images/dtf{}.png'.format(i)) i = i + 1 for chunk in res.iter_content(100000): img_file.write(chunk) img_file.close() i = 1 for i in range(0, 10): p = Post(site=site, title=names[i], img=urls[i], pub_date=dts[i], time=time[i], date=date[i], text=conts[i]) p.save()
def comment_list(request): if request.method == 'GET': comments = Comment.objects.all() comments = [c.to_json() for c in comments] return JsonResponse(comments, safe=False) elif request.method == 'POST': data = json.loads(request.body) post = Post(content=data['content'], date=data['date']) post.save() return JsonResponse(post.to_json())
def send_post(request): if request.user.is_authenticated: form = PostForm(request.POST) if request.method == "POST": form = PostForm(request.POST) if form.is_valid(): country = Country.objects.get( name=form.cleaned_data["country"]) new_post = Post( country=country, city=form.cleaned_data["city"], total_travelers=form.cleaned_data["total"], wanted_travelers=form.cleaned_data["wanted"], free_places=form.cleaned_data["free"], interest=form.cleaned_data["interest"], title=form.cleaned_data["title"], message=form.cleaned_data["message"], start_date=form.cleaned_data["start"], end_date=form.cleaned_data["end"], budget=form.cleaned_data["budget"], ready=False, created_by=request.user, ) new_post.save() clist = [] c = Country.objects.all() for i in c: clist.append(i) all_posts = Post.objects.filter(country__id=country.id) alpha = country.alpha_2 url = f"../static/img/flags/flag-{alpha}.jpg" name = country.name mess = "Message sent!" context = { "all_posts": all_posts, "clist": clist, "url": url, "name": name, "mess": mess, } messages.success(request, "Post sent!") return render(request, "main/posts.html", context) else: return redirect("/") else: return redirect("/") else: return render(request, "main/posts.html")
def post_list(request): if request.method == 'GET': posts = Post.objects.all() posts = [p.to_json() for p in posts] return JsonResponse(posts, safe=False) elif request.method == 'POST': data = json.loads(request.body) post = Post( title=data['title'], content=data['content'], date=data['date'], #created_by=data['created_by'], ) post.save() return JsonResponse(post.to_json())
def submitpost(request): u = checkCookies(request) print >>sys.stderr,'F*****G HELL {}'.format(u) if u != False: if request.POST.has_key('content'): post = Post(author=u) post.setContent(request.POST['content']) post.save() #for follower in u.is_followed.all(): # print >>sys.stderr, "ADDING POST TO FEED" # follower.feed.post_set.add(post) return randompost(request) else: return error(request,"I don't even know") else: return error(request,"I don't even know")
def submitpost(request): u = checkCookies(request) print >> sys.stderr, 'F*****G HELL {}'.format(u) if u != False: if request.POST.has_key('content'): post = Post(author=u) post.setContent(request.POST['content']) post.save() #for follower in u.is_followed.all(): # print >>sys.stderr, "ADDING POST TO FEED" # follower.feed.post_set.add(post) return randompost(request) else: return error(request, "I don't even know") else: return error(request, "I don't even know")
def ArticleRequest(request, article_id): if not request.user.is_authenticated(): return HttpResponseRedirect('/login/') art = Article.objects.get(id=article_id) user = Users.objects.get(id=art.user_id.id) users = request.user.get_profile() posts=Post.objects.filter(art_id=article_id) form=PostForm() sport_pic=Sport.objects.get(id=art.sport_id.id) gps_filename=str(art.gps_file) gps_filename=gps_filename[9:] if art.art_alb is not None: try: album = Album.objects.get(id=art.art_alb.id) except Album.DoesNotExist: album=None pic_list = Picture.objects.filter(album=album) context =({ 'art':art, 'user1':user, 'pic_list':pic_list, 'users':users, 'posts':posts, 'form':form, 'sport_pic':sport_pic, 'gps_filename':gps_filename, }) else: context=({ 'art':art, 'user1':user, 'users':users, 'posts':posts, 'form':form, 'sport_pic':sport_pic, 'gps_filename':gps_filename, }) if request.method=='POST': form = PostForm(request.POST) if form.is_valid(): content=form.cleaned_data['content'] new_post=Post(user_id=users,art_id=art,content=content,date=datetime.datetime.now()) new_post.save() return render_to_response('main/article.html', context, context_instance=RequestContext(request))
def vg_main(): names = vg_names() conts = vg_content() dts = [] date = vg_date() time = vg_time() site = "vgtimes" chck = re.compile(r'src\=\".*\"') url = 'https://vgtimes.ru/tags/%D0%98%D0%B3%D1%80%D0%BE%D0%B2%D1%8B%D0%B5+%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8' img_urls= [] res = requests.get(url) soup = bs4.BeautifulSoup(res.text, "html.parser") out = soup.find_all("div",class_="image_wrap type0") urls = [] for item in out: mo = chck.search(str(item)) img_urls.append('https://vgtimes.ru'+mo.group()[5:-1]) del img_urls[10:] i = 1 for item in img_urls: res = requests.get(item) img_file = open(os.path.join('D:\\agregator\\gamers_gazette\\game_news_site\\media\\images','vg{}.png'.format(i)), 'wb') urls.append('images/vg{}.png'.format(i)) i = i + 1 for chunk in res.iter_content(100000): img_file.write(chunk) img_file.close() i = 0 for item in date: dts.append(str(item)+" "+time[i]) i = i + 1 for i in range (0, 9): p = Post(site = site, title = names[i], img = urls[i], pub_date = dts[i], time = time[i], date = date[i], text = conts[i]) p.save()
def new_post(request): if not request.user.is_authenticated(): return redirect('/admin/login') post = Post() categories = Category.objects.all() if request.method == 'POST': print request.POST post.user = request.user post.title = request.POST.get('post_title','') post.text = request.POST.get('post_text','') post.category_id = request.POST.get('post_category',0) post.save() return redirect('/blog/%s' % post.category.name) return render(request, 'main/posts/new.html', {'post': post, 'categories': categories})
def post_list(request): if request.method == 'GET': posts = Post.objects.all() for post in posts: post.to_json() return JsonResponse(Post.objects.first().to_json(), safe=False) elif request.method == 'POST': data = json.loads(request.body) plist = Post( title=data['title'], author=data['author'], date_published=data['date_published'], content=data['content'], comment=data['comment'], ) plist.save() return JsonResponse(plist.to_json())
def test(request): if request.method == "POST": post = Post() post.name = request.FILES["image"].name post.image = request.FILES["image"] post.save() object, result_data = analysis.draw_line(post.pk) data = { "message": result_data, "image": post.image.url, "result": object.result.url } return render(request, "test.html", data) else: return render(request, "test.html")
def create(request): authenticated_user = get_authenticated_user(request) # If form method == POST if request.method == 'POST': form = PostForm(request.POST) # Get form if form.is_valid(): title = form.cleaned_data['titleInput'] # Read title body = form.cleaned_data['bodyInput'] # Read body cover = form.cleaned_data['coverInput'] # Read cover short_description = form.cleaned_data[ 'shortDescriptionInput'] # Read short description # Create a Post model with form data post = Post( title=title, body=body, author=authenticated_user, cover=cover, short_description=short_description, ) post.save() # Save it post.slug = post_slug_generator(post) post.save() # Redirect user to 'person:post:detail' url return HttpResponseRedirect('/user/' + post.author.username + '/post/' + post.slug) # If form method == GET else: form = PostForm() # Give form to user context = { 'authenticated_user': authenticated_user, 'new_notifications': get_new_notifications(authenticated_user), 'form': form, } # Show 'create/post.html' to user return render(request, 'create/post.html', context)
def index(request): if request.method == "POST": userid = get_object_or_404(User, username=request.user) body = request.POST.get('body') p = Post() p.author = userid p.body = body p.save() return HttpResponseRedirect('/') show_followed = False if str(request.user) != 'AnonymousUser': u = UserProfile.objects.get(user__username=request.user) show_cookie = bool(request.COOKIES.get('show_followed', '')) if show_cookie: posts = u.followed_posts() else: posts = Post.objects.order_by('-timestamp') return render_to_response('index.html', locals(), context_instance=RequestContext(request))
def new_post(request): person = Person.objects.get(username=request.user.username) # If form method == POST if request.method == 'POST': form = PostForm(request.POST) # Get form if form.is_valid(): title = form.cleaned_data['title'] # Read title body = form.cleaned_data['body'] # Read body cover = form.cleaned_data['cover'] # Read cover short_description = form.cleaned_data[ 'short_description'] # Read short description category = form.cleaned_data['category'] # Read category body = mskf.translate_to_html(body) # Create a Post model with form data post = Post(title = title,\ body = body,\ author = person,\ cover = cover,\ short_description = short_description,\ category = category) post.save() # Save it return HttpResponseRedirect('/user/' + post.author.username + '/post/' + str(post.id)) # If form method == GET else: form = PostForm() # Give form to user context = { 'form': form, } mskf.add_notification_availability_to_context(request, context) mskf.add_authenticated_user_to_context(request, context) return render(request, 'new_post.html', context)
def index(request): if request.method == "POST": userid = get_object_or_404(User, username=request.user) body = request.POST.get('body') p = Post() p.author = userid p.body = body p.save() return HttpResponseRedirect('/') show_followed = False if str(request.user) != 'AnonymousUser': u = UserProfile.objects.get(user__username=request.user) show_cookie = bool(request.COOKIES.get('show_followed', '')) if show_cookie: posts = u.followed_posts() else: posts = Post.objects.order_by('-timestamp') return render_to_response( 'index.html', locals(), context_instance=RequestContext(request))
def new_post(request): authenticated_user = get_authenticated_user(request) # If form method == POST if request.method == 'POST': form = PostForm(request.POST) # Get form if form.is_valid(): title = form.cleaned_data['title'] # Read title body = form.cleaned_data['body'] # Read body cover = form.cleaned_data['cover'] # Read cover short_description = form.cleaned_data[ 'short_description'] # Read short description category = form.cleaned_data['category'] # Read category # Create a Post model with form data post = Post(title=title, body=body, author=authenticated_user, cover=cover, short_description=short_description, category=category) post.save() # Save it return HttpResponseRedirect('/user/' + post.author.username + '/post/' + str(post.id)) # If form method == GET else: form = PostForm() # Give form to user context = { 'authenticated_user': authenticated_user, 'new_notifications': get_new_notifications(authenticated_user), 'form': form, } return render(request, 'post/write.html', context)
def callback(request): def startButton(reply_token, send_text): try: reply = line_bot_api.reply_message(reply_token, [ TextSendMessage(send_text), TemplateSendMessage(alt_text='メニューを更新', template=ButtonsTemplate( title='メニューを更新', text='更新ボタンを押してください', actions=[ PostbackTemplateAction( label='メニューを更新', data='start'), ])) ]) except LineBotApiError: return HttpResponseBadRequest() return reply def confirmButton(reply_token, send_text): try: reply = line_bot_api.reply_message(reply_token, [ TextSendMessage(send_text), TemplateSendMessage( alt_text='確認', template=ButtonsTemplate( title='確認', text='選択してください', actions=[ PostbackTemplateAction(label='更新', data='save'), PostbackTemplateAction(label='中止', data='quit'), ])) ]) except LineBotApiError: return HttpResponseBadRequest() return reply if request.method == 'POST': body = request.body.decode('utf-8') signature = request.META['HTTP_X_LINE_SIGNATURE'] try: events = parser.parse(body, signature) except InvalidSignatureError: return HttpResponseForbidden() except LineBotApiError: return HttpResponseBadRequest() for event in events: posts = Post.objects.values('user_id').order_by('-created_at') users = [] for post in posts: users.append(post['user_id']) has_created = event.source.user_id in users if has_created == True: post = Post.objects.filter( user_id=event.source.user_id).order_by('-created_at')[0] if isinstance(event, FollowEvent): startButton( event.reply_token, 'フォローありがとうございます!\nメニューを更新したい場合、下のボタンを押してください\nなお、以下がサイトのURLです\n\nhttps://{}' .format(settings.DOMAIN_NAME)) elif isinstance(event, PostbackEvent): if event.postback.data == 'start': if has_created == False: post = Post(user_id=event.source.user_id, status=1) post.save() try: line_bot_api.reply_message( event.reply_token, TextSendMessage('メニューの更新ですね\nまずは料理名を入力してください')) except LineBotApiError: return HttpResponseBadRequest() else: if post.status == 0: post = Post(user_id=event.source.user_id, status=1) post.save() try: line_bot_api.reply_message( event.reply_token, TextSendMessage( 'メニューの更新ですね\nまずは料理名を入力してください')) except LineBotApiError: return HttpResponseBadRequest() elif event.postback.data == 'save': if has_created == True: if post.status == 5: post.status = 0 post.save() try: line_bot_api.reply_message( event.reply_token, TextSendMessage( 'サイトが更新されました\n\nhttps://{}'.format( settings.DOMAIN_NAME))) except LineBotApiError: return HttpResponseBadRequest() elif event.postback.data == 'quit': if has_created == True: if post.status == 5: post.image_path.delete() post.delete() try: line_bot_api.reply_message( event.reply_token, TextSendMessage('操作中のデータを削除しました')) except LineBotApiError: return HttpResponseBadRequest() elif isinstance(event, MessageEvent): if isinstance(event.message, TextMessage): if event.message.text == 'ニッポンポン': del_posts = Post.objects.exclude( Q(image_path__contains='ebi-fry') | Q(image_path__contains='katsu-don') | Q(image_path__contains='beef-stew')) for del_post in del_posts: del_post.image_path.delete() Post.objects.all().delete() try: line_bot_api.reply_message( event.reply_token, TextSendMessage('合衆国ニッポンポン!!!')) except LineBotApiError: return HttpResponseBadRequest() elif event.message.text == 'ナナリー': del_posts = Post.objects.exclude( Q(image_path__contains='ebi-fry') | Q(image_path__contains='katsu-don') | Q(image_path__contains='beef-stew')) for del_post in del_posts: del_post.image_path.delete() Post.objects.all().delete() Post.objects.bulk_create([ Post(title='エビフライ', description='プリプリのエビをカリカリの衣で包んだ至高の一品', price='850', image_path='img/post/ebi-fry.jpg', status=0), Post(title='シチュー', description='バラ肉をルーとともにホロホロになるまで煮込んだビーフシチュー', price='1200', image_path='img/post/beef-stew.jpg', status=0), Post(title='かつ丼', description='揚げたてのカツをふんわり半熟卵でとじた定番の一品', price='750', image_path='img/post/katsu-don.jpg', status=0), ]) try: line_bot_api.reply_message( event.reply_token, TextSendMessage('ナナリーーーーーッッ!!!!!')) except LineBotApiError: return HttpResponseBadRequest() if has_created == True: if post.status == 0: startButton( event.reply_token, 'ご利用ありがとうございます\nメニューを更新したい場合、下のボタンを押してください\nなお、以下がサイトのURLです\n\nhttps://{}' .format(settings.DOMAIN_NAME)) elif post.status == 1: post.title = event.message.text post.status = 2 post.save() try: line_bot_api.reply_message( event.reply_token, TextSendMessage('次はメニューの説明文を入力してください'), ) except LineBotApiError: return HttpResponseBadRequest() elif post.status == 2: post.description = event.message.text post.status = 3 post.save() try: line_bot_api.reply_message( event.reply_token, TextSendMessage('次は値段を入力してください'), ) except LineBotApiError: return HttpResponseBadRequest() elif post.status == 3: try: post.price = int(event.message.text) post.status = 4 post.save() except: try: line_bot_api.reply_message( event.reply_token, TextSendMessage('半角数字を入力してください'), ) except LineBotApiError: return HttpResponseBadRequest() try: line_bot_api.reply_message( event.reply_token, TextSendMessage('次は掲載する画像を送信してください'), ) except LineBotApiError: return HttpResponseBadRequest() elif post.status == 4: try: line_bot_api.reply_message( event.reply_token, TextSendMessage('画像を送信してください'), ) except LineBotApiError: return HttpResponseBadRequest() else: startButton( event.reply_token, 'ご利用ありがとうございます\nメニューを更新したい場合、下のボタンを押してください\nなお、以下がサイトのURLです\n\nhttps://{}' .format(settings.DOMAIN_NAME)) elif isinstance(event.message, ImageMessage): if has_created == True: if post.status == 4: try: message_content = line_bot_api.get_message_content( event.message.id) with NamedTemporaryFile(mode='w+b') as f: for chunk in message_content.iter_content( ): f.write(chunk) post.image_path.save(event.message.id + '.jpg', File(f), save=True) post.status = 5 post.save() except: traceback.print_exc() try: line_bot_api.reply_message( event.reply_token, TextSendMessage('画像を保存できませんでした'), ) except LineBotApiError: return HttpResponseBadRequest() confirmButton( event.reply_token, '項目は以上です\nこれでよろしければ「保存」、更新を中止したい場合は「中止」を押してください' ) elif post.status == 0: startButton( event.reply_token, 'ご利用ありがとうございます\nメニューを更新したい場合、下のボタンを押してください\nなお、以下がサイトのURLです\n\nhttps://{}' .format(settings.DOMAIN_NAME)) elif post.status == 5: confirmButton(event.reply_token, 'すでに画像は送信されています\n更新または中止を選択してください') else: try: line_bot_api.reply_message( event.reply_token, TextSendMessage('テキストを入力してください'), ) except LineBotApiError: return HttpResponseBadRequest() else: startButton( event.reply_token, 'ご利用ありがとうございます\nメニューを更新したい場合、下のボタンを押してください\nなお、以下がサイトのURLです\n\nhttps://{}' .format(settings.DOMAIN_NAME)) return HttpResponse() else: return HttpResponseBadRequest()
def create(self, validated_data): post = Post(**validated_data) post.author = User.objects.first() post.created = datetime.datetime.now() post.save() return post
def filler(): arr = fresher() v_name = vg.vg_names() v_link = vg.vg_links() v_content = vg.vg_content() v_time = vg.vg_time() v_date = vg.vg_date() v_dt = [] d_name = dtf.dtf_names() d_link = dtf.dtf_links() d_content = dtf.dtf_content() d_time = dtf.dtf_time() d_date = dtf.dtf_date() d_dt = [] d_img_links = [] #for i in range(1,11): # d_img_links.append("images/dtf{}.png".format(i)) i_name = igrm.igrm_names() i_link = igrm.igrm_links() i_content = igrm.igrm_content() i_date = igrm.igrm_date() i_time = igrm.igrm_time() i_dt = [] i = 0 j = 0 k = 0 o = 0 for item in d_date: d_dt.append(str(item) + " " + d_time[i]) i = i + 1 i = 0 for item in v_date: i_dt.append(str(item) + " " + i_time[i]) i = i + 1 i = 0 for item in i_date: v_dt.append(str(item) + " " + v_time[i]) i = i + 1 i = 0 Post.objects.all().delete() while i < 28: if arr[i] == d_time[j]: site = "dtf" p = Post(site=site, title=d_name[j], pub_date=d_dt[j], time=d_time[j], date=d_date[j], text=d_content[j]) p.save() i = i + 1 j = 0 k = 0 o = 0 else: j = j + 1 if arr[i] == i_time[k]: site = "igromania" p = Post(site=site, title=i_name[k], pub_date=i_dt[k], time=i_time[k], date=i_date[k], text=i_content[k]) p.save() i = i + 1 k = 0 o = 0 j = 0 else: k = k + 1 if arr[i] == v_time[o]: site = "vgtimes" p = Post(site=site, title=v_name[o], pub_date=v_dt[o], time=v_time[o], date=v_date[o], text=v_content[o]) p.save() i = i + 1 o = 0 j = 0 k = 0 else: o = o + 1
def handle(self, **options): Menu.objects.get_or_create(name='menu') Menu.objects.get_or_create(name='bottom_menu') post_count = int(options.get('post-count', 100)) comment_limit = int(options.get('comment-limit', 100)) random_rate = lambda: int(random() * 1000) get_rand = lambda _list: _list[int(random() * len(_list))] blog_types = map( lambda type: BlogType.objects.get_or_create(name=type)[0], ( getattr(settings, 'DEFAULT_BLOG_TYPE', 'main'), 'talks', 'personal', )) random_type = partial(get_rand, blog_types) users = map( lambda username: User.objects.get_or_create(username=username)[0], ( 'bob', 'paul', 'mike', 'anna', 'sasha', 'katya', 'masha', )) map( lambda user: Profile.objects.get_or_create( user=user, rate=random_rate(), posts_rate=random_rate(), comments_rate=random_rate(), blogs_rate=random_rate(), )[0], users) random_user = partial(get_rand, users) blogs = map( lambda (blog_name, url): Blog.objects.get_or_create( name=blog_name, owner=random_user(), type=random_type(), description=url, rate=random_rate(), rate_count=random_rate(), )[0], ( (u'астрономии', 'astronomy.xml'), (u'геологии', 'geology.xml'), (u'гироскопии', 'gyroscope.xml'), (u'литературоведению', 'literature.xml'), (u'маркетингу', 'marketing.xml'), (u'математике', 'mathematics.xml'), (u'музыковедению', 'music.xml'), (u'политологии', 'polit.xml'), (u'почвоведению', 'agrobiologia.xml'), (u'правоведению', 'law.xml'), (u'психологии', 'psychology.xml'), (u'страноведению', 'geography.xml'), (u'физике', 'physics.xml'), (u'философии', 'philosophy.xml'), (u'химии', 'chemistry.xml'), (u'эстетике', 'estetica.xml'), )) random_blog = partial(get_rand, blogs) random_comment = lambda limit: Post.objects.all()[int(random() * limit) ].title for counter in range(post_count): post = Post() post.author = random_user() post.blog = random_blog() post.title, post.text = obtain_spring(post.blog.description) post.rate = random_rate() post.rate_count = random_rate() post.save(edit=False, retry=True) post.set_tags(','.join(post.title.split())) last = root = post.create_comment_root() limit = int(random() * comment_limit) while limit: if not int(random() * 3): last = root last = last.add_child(post=post, author=random_user(), text=random_comment(counter), created=datetime.now(), rate=random_rate(), rate_count=random_rate()) limit -= 1
class ViewTests(TestCase): def setUp(self): self.author = User.objects.create(username='******', password=make_password('secret'), email='*****@*****.**') self.viewer = User.objects.create(username='******', password=make_password('secret'), email='*****@*****.**') self.post = Post(creator=self.author, published_at=timezone.now(), content="{}") self.draft = Post(creator=self.author, content="{}") self.post.save() self.draft.save() def test_author_view_post(self): self.client.login(username='******', password='******') response = self.client.get(reverse('post_view', args=[self.post.id])) self.assertEqual(response.status_code, 200) def test_author_view_draft(self): self.client.login(username='******', password='******') response = self.client.get(reverse('post_view', args=[self.draft.id])) self.assertEqual(response.status_code, 200) def test_viewer_view_post(self): self.client.login(username='******', password='******') response = self.client.get(reverse('post_view', args=[self.post.id])) self.assertEqual(response.status_code, 200) def test_viewer_view_draft(self): self.client.login(username='******', password='******') response = self.client.get(reverse('post_view', args=[self.draft.id])) self.assertEqual(response.status_code, 404) def test_author_edit_post(self): self.client.login(username='******', password='******') response = self.client.get(reverse('post_edit', args=[self.post.id])) self.assertRedirects(response, reverse('post_view', args=[self.post.id])) def test_author_edit_draft(self): self.client.login(username='******', password='******') response = self.client.get(reverse('post_edit', args=[self.draft.id])) self.assertTemplateUsed(response, 'post/edit.html') def test_viewer_edit_permission_denied(self): self.client.login(username='******', password='******') response = self.client.get(reverse('post_edit', args=[self.draft.id])) self.assertEqual(response.status_code, 403) def test_comment_create_unconfirmed_redirect(self): self.client.login(username='******', password='******') response = self.client.post( reverse('post_comment_create', args=[self.post.id]), {}) self.assertRedirects( response, reverse('unconfirmed') + '?next=' + reverse('post_comment_create', args=[self.post.id])) def test_comment_create_confirmed(self): self.viewer.confirmed = True self.viewer.save() self.client.login(username='******', password='******') response = self.client.post( reverse('post_comment_create', args=[self.post.id]), {'comment': 'ruin my life'}) self.assertRedirects(response, reverse('post_view', args=[self.post.id])) def test_comment_create_on_draft(self): self.client.login(username='******', password='******') self.viewer.confirmed = True self.viewer.save() response = self.client.post( reverse('post_comment_create', args=[self.draft.id]), {'comment': 'ruin my life'}) self.assertEqual(response.status_code, 404) def test_comment_delete(self): author_comment = Comment.objects.create(creator=self.author, post=self.post, content="author comment") viewer_comment1 = Comment.objects.create(creator=self.viewer, post=self.post, content="viewer comment 1") viewer_comment2 = Comment.objects.create(creator=self.viewer, post=self.post, content="viewer comment 2") author_comment.save() viewer_comment1.save() viewer_comment2.save() self.client.login(username='******', password='******') response = self.client.get( reverse('post_comment_delete', args=[author_comment.id])) self.assertEqual(response.status_code, 403) response = self.client.get( reverse('post_comment_delete', args=[viewer_comment1.id])) self.assertRedirects(response, reverse('index')) self.client.login(username='******', password='******') response = self.client.get( reverse('post_comment_delete', args=[viewer_comment2.id])) self.assertRedirects(response, reverse('index')) def test_view_comments(self): self.client.login(username='******', password='******') response = self.client.get( reverse('post_view_comments', args=[self.draft.id])) self.assertEqual(response.status_code, 404) response = self.client.get( reverse('post_view_comments', args=[self.post.id])) self.assertTemplateUsed(response, 'post/view_comments.html')
def create(self, validated_data): post = Post(**validated_data) post.user = User.objects.first() post.save() return post
def handle(self, **options): Menu.objects.get_or_create( name='menu' ) Menu.objects.get_or_create( name='bottom_menu' ) post_count = int(options.get('post-count', 100)) comment_limit = int(options.get('comment-limit', 100)) random_rate = lambda: int(random() * 1000) get_rand = lambda _list: _list[int(random()*len(_list))] blog_types = map( lambda type: BlogType.objects.get_or_create(name=type)[0], (getattr(settings, 'DEFAULT_BLOG_TYPE', 'main'), 'talks', 'personal',) ) random_type = partial(get_rand, blog_types) users = map( lambda username: User.objects.get_or_create(username=username)[0], ('bob', 'paul', 'mike', 'anna', 'sasha', 'katya', 'masha',) ) map( lambda user: Profile.objects.get_or_create( user=user, rate=random_rate(), posts_rate=random_rate(), comments_rate=random_rate(), blogs_rate=random_rate(), )[0], users ) random_user = partial(get_rand, users) blogs = map( lambda (blog_name, url): Blog.objects.get_or_create( name=blog_name, owner=random_user(), type=random_type(), description=url, rate=random_rate(), rate_count=random_rate(), )[0], ( (u'астрономии', 'astronomy.xml'), (u'геологии', 'geology.xml'), (u'гироскопии', 'gyroscope.xml'), (u'литературоведению', 'literature.xml'), (u'маркетингу', 'marketing.xml'), (u'математике', 'mathematics.xml'), (u'музыковедению', 'music.xml'), (u'политологии', 'polit.xml'), (u'почвоведению', 'agrobiologia.xml'), (u'правоведению', 'law.xml'), (u'психологии', 'psychology.xml'), (u'страноведению', 'geography.xml'), (u'физике', 'physics.xml'), (u'философии', 'philosophy.xml'), (u'химии', 'chemistry.xml'), (u'эстетике', 'estetica.xml'), ) ) random_blog = partial(get_rand, blogs) random_comment = lambda limit: Post.objects.all()[int(random() * limit)].title for counter in range(post_count): post = Post() post.author = random_user() post.blog = random_blog() post.title, post.text = obtain_spring(post.blog.description) post.rate = random_rate() post.rate_count = random_rate() post.save(edit=False, retry=True) post.set_tags(','.join(post.title.split())) last = root = post.create_comment_root() limit = int(random() * comment_limit) while limit: if not int(random()*3): last = root last = last.add_child( post=post, author=random_user(), text=random_comment(counter), created=datetime.now(), rate=random_rate(), rate_count=random_rate() ) limit -= 1
def post_add(request): if(request.POST.get('addPostBtn')): p = Post(post_author=request.user, post_title=request.POST.get('post_title'), post_content = request.POST.get('post_content'), created_at=timezone.now()) p.save() return redirect('/blog')
def create(self, validated_data): post = Post(**validated_data) post.save() return post
ACCESS_SECRET = os.environ['TWITTER_ACCESS_SECRET'] auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.set_access_token(ACCESS_KEY, ACCESS_SECRET) api = tweepy.API(auth) sample_user = CustomUser.objects.get(username = '******') twitter_account = SocialAccount.objects.get(user_id=sample_user.id) tweets = api.user_timeline(twitter_account.uid, tweet_mode='extended', include_rts=False) filtered = filter(lambda t: not t.full_text.startswith('@'), tweets) tweets_without_mentions = list(filtered) for tweet in tweets_without_mentions: new_post = Post( text_content = tweet.full_text, source = 'twitter', # TODO: move this constant into a separate file associated_social_account = twitter_account, tweet_id_str = tweet.id_str, posted_by = sample_user, date_posted = tweet.created_at ) new_post.save() sentences = split_text_into_sentences(new_post.text_content) for i in range(len(sentences)): new_sentence = Sentence( sentence_index = i, text_content = sentences[i], parent_post = new_post ) new_sentence.save()
class ViewTests(TestCase): def setUp(self): self.me = User.objects.create(username='******', password=make_password('secret'), email='*****@*****.**') self.idol = User.objects.create(username='******', password='******', email='*****@*****.**') self.fan = User.objects.create(username='******', password='******', email='*****@*****.**') self.me.save() self.idol.save() self.fan.save() self.my_post = Post(creator=self.me, published_at=timezone.now(), content="{}") self.my_draft = Post(creator=self.me, content="{}") self.my_post.save() self.my_draft.save() self.idol_post = Post(creator=self.idol, published_at=timezone.now(), content="{}") self.idol_post.save() self.comment_sent = Comment(creator=self.me, post=self.idol_post, content="ruin my life") self.comment_rcvd = Comment(creator=self.fan, post=self.my_post, content="awesome!") self.comment_sent.save() self.comment_rcvd.save() self.me.follow.add(self.idol) self.me.fans.add(self.fan) self.me.save() def test_panel_posts(self): self.client.login(username='******', password='******') response = self.client.get(reverse('panel_posts')) p = response.context["items"][0] self.assertEqual(p.id, self.my_post.id) def test_panel_drafts(self): self.client.login(username='******', password='******') response = self.client.get(reverse('panel_drafts')) p = response.context["items"][0] self.assertEqual(p.id, self.my_draft.id) def test_comments_rcvd(self): self.client.login(username='******', password='******') response = self.client.get(reverse('panel_comments_rcvd')) p = response.context["items"][0] self.assertEqual(p.id, self.comment_rcvd.id) def test_comments_sent(self): self.client.login(username='******', password='******') response = self.client.get(reverse('panel_comments_sent')) p = response.context["items"][0] self.assertEqual(p.id, self.comment_sent.id) def test_users_followed_by_me(self): self.client.login(username='******', password='******') response = self.client.get(reverse('panel_users_followed_by_me')) p = response.context["items"][0] self.assertEqual(p.id, self.idol.id) def test_users_following_me(self): self.client.login(username='******', password='******') response = self.client.get(reverse('panel_users_following_me')) p = response.context["items"][0] self.assertEqual(p.id, self.fan.id)