Exemplo n.º 1
0
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
Exemplo n.º 2
0
    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)))
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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!')
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
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'
                  }})
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
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))
Exemplo n.º 10
0
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()
Exemplo n.º 11
0
 def create(self, validated_data):
     post_list = Post(**validated_data)
     post_list.save()
     return post_list