def rss_parser(): try: content = urllib2.urlopen("https://lenta.ru/rss").read() except urllib2.HTTPError: return False tree = etree.fromstring(content) items = tree.xpath("//item") for item in items: try: category = item.xpath('category/text()')[0] guid = item.xpath('guid/text()')[0] title = item.xpath('title/text()')[0] link = item.xpath('link/text()')[0] description = item.xpath('description/text()')[0] pub_date = parser.parse(item.xpath('pubDate/text()')[0]) except IndexError: continue category, created = Category.objects.get_or_create(name=category) try: post = Post.objects.get(guid=guid) except Post.DoesNotExist: post = Post(guid=guid) post.category = category post.title = title post.link = link post.description = description post.pub_date = pub_date post.save() return True
def create(request: HttpRequest, course_id: int) -> HttpResponse: """Create a new post.""" course = Course.objects.get(id=course_id) payload = loads(request.body) # create post with required fields new_post = Post( title=payload["title"], content=payload["content"], author=request.user, course=course, ) new_post.save() # handle optional fields if payload.get("parent", False): parent_post = Post.objects.get(id=payload["parent"]) new_post.parent = parent_post if payload.get("tags", False): tags = Tag.objects.filter(id__in=payload["tags"]) new_post.tags.add(*tags) if payload.get("type", False): new_post.type = payload["type"] if payload.get("visibility", False): new_post.visibility = payload["visibility"] new_post.anonymous = payload.get("anonymous", False) # automatically add author as a follower new_post.followers.add(request.user) new_post.save() return HttpResponse(dumps(PostService.post_to_dict(new_post)))
def write_post_db(data): post = Post(source_name=data['source_name'], author=data['author'], title=data['title'], url=data['url'], img_url=data['img_url'], published_at=data['published_at'], description=data['description']) # check if we have already this post if (not Post.objects.filter(title__icontains=data['title'])) or \ (not Post.objects.filter(url__icontains=data['url'])): post.save() else: print('It\'s OK! We have already this info!')
def add_measurement(request): temp = request.POST.get('temperature', None) hum = request.POST.get('humidity', None) mac = request.POST.get('mac', None) if mac is None: return Response() sensors = Sensor.objects.filter(mac_addr=mac) if sensors.count() == 0: sensor = Sensor(mac_addr=mac, name=mac) sensor.save() else: sensor = sensors[0] post = Post(temperature=temp, humidity=hum, sensor=sensor) post.save() return Response(sensor.interval)
def post(self, request, format=None): # Check if user is authed or not username_data = get_username_from_jwt(request) if username_data['username'] != False: # Parse and create post data = JSONParser().parse(request) data['created_at'] = created_at = timezone.now() serializer = PostSerializer(data=data) if serializer.is_valid(): user = User.objects.get(username=username_data['username']) post = Post(title=serializer.data['title'], description=serializer.data['description'], user=user, created_at=serializer.data['created_at']) post.save() return JsonResponse(serializer.data, status=201) return JsonResponse(serializer.errors, status=400) return JsonResponse({'msg': username_data['error_msg']}, status=400)
def create_post(request): form = PostForm({'author': request.user.id}) if request.method == 'POST': form = PostForm(request.POST, request.FILES) title = request.POST['title'] details = request.POST['details'] viewers = request.POST['viewers'] if form.is_valid(): post = Post(author=request.user, type='Blog', title=title, details=details, viewers=viewers) try: post.save() ''' upload the files ''' files = request.FILES.getlist('files') if files is not None: for file in files: attachment = Attachment(file=file, post=post, content_type=file.content_type) attachment.save() return HttpResponseRedirect(reverse('thanks')) except (): pass return render(request, 'posts/create.html', {'model': { 'form': form, 'action': 'create-post' }})
postedDateTimes.insert(0, postedDatetime) for i in range(postCount): companyIndex = random.randrange(0, len(companies)) companyId = companyIndex + 1 company = companies[companyIndex] companyName = company.__dict__["name"] buyOrSell = random.choice(["buy", "sell"]) profit_or_loss_price = randint(-30000, 60000) * 100 content = getContent(companyName, buyOrSell, profit_or_loss_price) created_at = postedDateTimes[i] post = Post( content=content, user=random.choice(users), company=company, price=randint(500, 15000), quantity=randint(1, 20) * 100, buy_or_sell=buyOrSell, created_at=created_at, ) if buyOrSell == "sell": post.profit_or_loss_price = profit_or_loss_price post.save() for user in getLikeUsers(users): post.likeUsers.add(user)
def setup(): """ Function that creates and saves elements to the database for demo purposes. Function assumes that the database starts out empty. For LOCAL DEV ONLY. """ passwords = [] # create example users passwords.append(UserService.generate_password()) user1 = User.objects.create_user( "*****@*****.**", password=passwords[0], email="*****@*****.**", first_name="Josiah", last_name="Carberry", ) user1.save() passwords.append(UserService.generate_password()) user2 = User.objects.create_user( "*****@*****.**", password=passwords[1], email="*****@*****.**", first_name="Blueno", ) user2.save() passwords.append(UserService.generate_password()) user3 = User.objects.create_user( "*****@*****.**", password=passwords[2], email="*****@*****.**", first_name="Random", last_name="Person", ) user3.save() # create course course1 = Course(name="Course 1") course1.save() course1.instructors.add(user1) course1.students.add(user2) course1.students.add(user3) course1.save() # create posts post1 = Post( author=user1, course=course1, title="I have a question", content="idk what im doing", anonymous=True, type=Post.Type.QUESTION, visibility=Post.Visibility.PUBLIC, ) post1.save() post2 = Post( author=user1, course=course1, title="I also have a question", content="i really dont know what im doing", anonymous=False, type=Post.Type.NOTE, visibility=Post.Visibility.PRIVATE, ) post2.save() post3 = Post( author=user3, course=course1, title="My code is broken", content="Hi you can see my name, Student answers welcomed!!", anonymous=False, type=Post.Type.NOTE, visibility=Post.Visibility.PUBLIC, ) post3.save() post4 = Post( author=user2, course=course1, title="Could a TA help", content="Only TAs should be able to see this", anonymous=False, type=Post.Type.NOTE, visibility=Post.Visibility.PRIVATE, ) post4.save() post5 = Post( author=user1, course=course1, title="TA Note about posting", content="Hours Changed from 11 to 2", anonymous=True, type=Post.Type.NOTE, visibility=Post.Visibility.PUBLIC, ) post5.save() post6 = Post( author=user1, course=course1, title="Question to Students", content="TA asking for student replies ", anonymous=True, type=Post.Type.QUESTION, visibility=Post.Visibility.PUBLIC, ) post6.save() # create tags tag1 = Tag(name="Tag 1", course=course1) tag1.save() tag2 = Tag(name="Tag 2", course=course1) tag2.save() post1.tags.add(tag1, tag2) post2.tags.add(tag2) post4.tags.add(tag1) post6.tags.add(tag1, tag2) print("setup successful!") print("user passwords in order: " + str(passwords))
def add(request): x = Post( author="i_iary2", meta={ "thumbnail": "https://scontent-icn1-1.cdninstagram.com/vp/93c5f4e4a0f30ab4929b8f514310fc45/5E520F48/t51.2885-19/s320x320/71219904_394028257956097_6460407248781836288_n.jpg?_nc_ht=scontent-icn1-1.cdninstagram.com", "author": "i_iary2", "follower": "14900", "name": "이아리", "description": "🌼 시시콜콜한 이야기✉ [email protected]" }, keywords=[{ "label": "#갬성곰", "value": 1 }, { "label": "#렛츠락페스티벌", "value": 1 }, { "label": "#말든가", "value": 1 }, { "label": "#그러든가", "value": 1 }, { "label": "#자존곰", "value": 1 }, { "label": "#텐션짱", "value": 1 }, { "label": "#이불밖은", "value": 1 }, { "label": "#위험해", "value": 1 }, { "label": "#하늘공원", "value": 1 }, { "label": "#핑크뮬리", "value": 1 }, { "label": "#핑크풀카페", "value": 1 }, { "label": "#배경화면", "value": 1 }, { "label": "#아이폰배경화면", "value": 1 }, { "label": "#갤럭시배경화면", "value": 1 }, { "label": "#배경화면나눔", "value": 1 }, { "label": "#무료배경화면", "value": 1 }, { "label": "#당첨자발표", "value": 1 }, { "label": "#숭실대", "value": 1 }, { "label": "#과식", "value": 1 }, { "label": "#과음아님", "value": 1 }, { "label": "#억새숲", "value": 1 }, { "label": "#가을감성", "value": 1 }, { "label": "#가글아님", "value": 1 }, { "label": "#닮은꼴찾기", "value": 1 }, { "label": "#끼어들기성공", "value": 1 }, { "label": "#ㅎㅎ", "value": 1 }, { "label": "#ddp패션위크", "value": 1 }, { "label": "#월요병", "value": 1 }, { "label": "#분노곰", "value": 1 }, { "label": "#집가고싶다", "value": 1 }, { "label": "#독서", "value": 1 }, { "label": "#가을날씨", "value": 1 }, { "label": "#한정판굿즈", "value": 2 }, { "label": "#5만명", "value": 2 }, { "label": "#구독자이벤트", "value": 2 }, { "label": "#귀여운캐릭터", "value": 4 }, { "label": "#벨리곰이야기", "value": 4 }, { "label": "#인스타툰", "value": 5 }, { "label": "#그림", "value": 5 }, { "label": "#벨리곰이야기_모아보기", "value": 5 }, { "label": "#벨리곰", "value": 7 }, { "label": "#cutecharacter", "value": 9 }], posts=[{ "likes": 5572, "image": "https://scontent-icn1-1.cdninstagram.com/vp/9d9061a98d38d659bf89bbf2f2a358d6/5E4D21DF/t51.2885-15/sh0.08/e35/s640x640/74527310_931825897199105_5780876061267631189_n.jpg?_nc_ht=scontent-icn1-1.cdninstagram.com&_nc_cat=1" }, { "likes": 4943, "image": "https://scontent-icn1-1.cdninstagram.com/vp/9d9061a98d38d659bf89bbf2f2a358d6/5E4D21DF/t51.2885-15/sh0.08/e35/s640x640/74527310_931825897199105_5780876061267631189_n.jpg?_nc_ht=scontent-icn1-1.cdninstagram.com&_nc_cat=1" }, { "likes": 4373, "image": "https://scontent-icn1-1.cdninstagram.com/vp/9d9061a98d38d659bf89bbf2f2a358d6/5E4D21DF/t51.2885-15/sh0.08/e35/s640x640/74527310_931825897199105_5780876061267631189_n.jpg?_nc_ht=scontent-icn1-1.cdninstagram.com&_nc_cat=1" }, { "likes": 4110, "image": "https://scontent-icn1-1.cdninstagram.com/vp/9d9061a98d38d659bf89bbf2f2a358d6/5E4D21DF/t51.2885-15/sh0.08/e35/s640x640/74527310_931825897199105_5780876061267631189_n.jpg?_nc_ht=scontent-icn1-1.cdninstagram.com&_nc_cat=1" }, { "likes": 4015, "image": "https://scontent-icn1-1.cdninstagram.com/vp/9d9061a98d38d659bf89bbf2f2a358d6/5E4D21DF/t51.2885-15/sh0.08/e35/s640x640/74527310_931825897199105_5780876061267631189_n.jpg?_nc_ht=scontent-icn1-1.cdninstagram.com&_nc_cat=1" }, { "likes": 3912, "image": "https://scontent-icn1-1.cdninstagram.com/vp/9d9061a98d38d659bf89bbf2f2a358d6/5E4D21DF/t51.2885-15/sh0.08/e35/s640x640/74527310_931825897199105_5780876061267631189_n.jpg?_nc_ht=scontent-icn1-1.cdninstagram.com&_nc_cat=1" }, { "likes": 3350, "image": "https://scontent-icn1-1.cdninstagram.com/vp/9d9061a98d38d659bf89bbf2f2a358d6/5E4D21DF/t51.2885-15/sh0.08/e35/s640x640/74527310_931825897199105_5780876061267631189_n.jpg?_nc_ht=scontent-icn1-1.cdninstagram.com&_nc_cat=1" }, { "likes": 3310, "image": "https://scontent-icn1-1.cdninstagram.com/vp/9d9061a98d38d659bf89bbf2f2a358d6/5E4D21DF/t51.2885-15/sh0.08/e35/s640x640/74527310_931825897199105_5780876061267631189_n.jpg?_nc_ht=scontent-icn1-1.cdninstagram.com&_nc_cat=1" }, { "likes": 3060, "image": "https://scontent-icn1-1.cdninstagram.com/vp/9d9061a98d38d659bf89bbf2f2a358d6/5E4D21DF/t51.2885-15/sh0.08/e35/s640x640/74527310_931825897199105_5780876061267631189_n.jpg?_nc_ht=scontent-icn1-1.cdninstagram.com&_nc_cat=1" }, { "likes": 3046, "image": "https://scontent-icn1-1.cdninstagram.com/vp/9d9061a98d38d659bf89bbf2f2a358d6/5E4D21DF/t51.2885-15/sh0.08/e35/s640x640/74527310_931825897199105_5780876061267631189_n.jpg?_nc_ht=scontent-icn1-1.cdninstagram.com&_nc_cat=1" }, { "likes": 2356, "image": "https://scontent-icn1-1.cdninstagram.com/vp/9d9061a98d38d659bf89bbf2f2a358d6/5E4D21DF/t51.2885-15/sh0.08/e35/s640x640/74527310_931825897199105_5780876061267631189_n.jpg?_nc_ht=scontent-icn1-1.cdninstagram.com&_nc_cat=1" }, { "likes": 1549, "image": "https://scontent-icn1-1.cdninstagram.com/vp/9d9061a98d38d659bf89bbf2f2a358d6/5E4D21DF/t51.2885-15/sh0.08/e35/s640x640/74527310_931825897199105_5780876061267631189_n.jpg?_nc_ht=scontent-icn1-1.cdninstagram.com&_nc_cat=1" }]) x.save() return HttpResponse("OK") # x.save()
def create(self, validated_data): post_list = Post(**validated_data) post_list.save() return post_list