Пример #1
0
def test_create_invalid_review(invalid_review):
    invalid = False

    try:
        Review(*invalid_review).clean_fields()
    except ValidationError:
        invalid = True

    assert invalid
Пример #2
0
def my_profile(request):
    try:
        followed_user_courses = FollowedUserCourses.get_courses_followed_by_app_user(request.user.appuser)
        last_user_reviews = Review.profile_page_feed(request.user)
        return render(request, 'homepage/users/my_profile.html', {'user_reviews': last_user_reviews,
                      'user_followed_courses': followed_user_courses})

    except AppUser.DoesNotExist:
        return render(request, 'homepage/users/my_profile.html', {'user_reviews': None,
                      'user_followed_courses': None})
Пример #3
0
    def generate_data(apps, schema_editor):
        from homepage.models import AppUser
        from homepage.models import Course
        from homepage.models import Review
        from homepage.models import Professor
        from django.core.files.uploadedfile import SimpleUploadedFile
        from os import path
        from django.conf import settings
        from datetime import datetime
        import pytz

        users = AppUser.objects.all()
        courses = Course.objects.all()
        professors = Professor.objects.all()
        image = ''

        # prevent creating a new image upon every pytest run
        if not path.exists(path.join(settings.MEDIA_ROOT, IMAGES_DIR, NEW_IMAGE_FILE)):
            image_path = path.join(settings.MEDIA_ROOT, IMAGES_DIR, IMAGE_FILE)
            image = SimpleUploadedFile(
                name=NEW_IMAGE_FILE,
                content=open(image_path, 'rb').read(),
                content_type='image/jpeg')
        else:
            image = path.join(IMAGES_DIR, NEW_IMAGE_FILE)

        date1 = datetime(2015, 10, 9, 23, 55, 59, 5, tzinfo=pytz.UTC)
        date2 = datetime(2016, 10, 9, 23, 55, 59, 5, tzinfo=pytz.UTC)
        date3 = datetime(2015, 10, 3, 20, 00, 3, 5, tzinfo=pytz.UTC)
        date4 = datetime(2017, 3, 9, 18, 20, 00, 5, tzinfo=pytz.UTC)
        date5 = datetime(2016, 5, 2, 7, 00, 00, 5, tzinfo=pytz.UTC)
        date6 = datetime(2015, 6, 1, 12, 20, 00, 5, tzinfo=pytz.UTC)

        test_data_review = [
            (1, courses[0].course_id, users[0].user.id, 5, date1,
                "Great course", 3, 10, professors[2].id, image),
            (2, courses[0].course_id, users[0].user.id, 4, date2, "I've learned a lot!", 2, 4),
            (3, courses[1].course_id, users[1].user.id, 4.5, date3,
                "The course was difficult", 5, 0, professors[0].id),
            (4, courses[1].course_id, users[1].user.id, 3.2, date4, "I didn't learn anything new", 3.7),
            (5, courses[2].course_id, users[2].user.id, 4.5, date5,
                "This course helped me to find a job", 2.5),
            (6, courses[2].course_id, users[2].user.id, 3.5, date6, "I didn't understand the material", 4),
        ]

        with transaction.atomic():
            for tdr in test_data_review:
                Review(*tdr).save()
Пример #4
0
def add_review(request, course_id):
    if Review.user_already_posted_review(request.user.id, course_id):
        messages.error(request, 'You have already posted a review for this course')
        return redirect(f'/course/{course_id}/')

    try:
        course = Course.objects.get(pk=course_id)
    except ObjectDoesNotExist:
        return redirect('/add_review_search/')

    if request.method == "POST":
        form = ReviewForm(request.POST, user=request.user.id, course=course_id)
        if form.is_valid():
            review = form.save()
            course = Course.objects.get(pk=review.course.course_id)
            course.update_course_per_review(review.rate, review.course_load, review.content)
            return redirect(f'/course/{course_id}/')
    else:
        form = ReviewForm(user=request.user.id, course=course_id)
    return render(request, 'homepage/add_review.html', {'form': form, 'course_name': course.name})
Пример #5
0
def review_write(request):
    userprofile = request.user.userprofile

    if request.method == "GET":
        rid = int(request.GET.get('rid'))

        if not rid:
            return redirect('index')

        r = Reservation.objects.get(id=rid)

        context = {'rid': r.id}

        if userprofile.id == r.userprofile.id:
            return render(request, 'review/review_write.html', context=context)

        return redirect('index')

    elif request.method == "POST":
        data = request.POST

        rid = int(data.get('rid'))
        subject = data.get('subject')
        content = data.get('content')

        r = Reservation.objects.get(id=rid)
        if not r.userprofile.id == userprofile.id:
            return redirect('index')

        review = Review()
        review.reservation = r
        review.title = subject
        review.content = content
        review.save()

        r.written_review = True
        r.save()

        return redirect('sitter_detail', r.sitter.id)
Пример #6
0
 def test_profile_page_reviews(self, sign_in, user_profile_reviews):
     user_reviews = Review.profile_page_feed(sign_in.wsgi_request.user)
     assert all(review in user_profile_reviews for review in user_reviews)
Пример #7
0
def test_user_already_posted_review(user_id, course_id, expected_result):
    assert Review.user_already_posted_review(user_id,
                                             course_id) == expected_result
Пример #8
0
def test_review_str(new_review, expected_string):
    review = Review(*new_review)

    assert str(review) == expected_string
Пример #9
0
def test_add_valid_review(valid_review):
    review = Review(*valid_review)
    review.save()

    assert Review.objects.filter(pk=review.id).exists()
Пример #10
0
def test_landing_feed():
    result = Review.landing_page_feed()
    assert isinstance(result, QuerySet)
    assert all(isinstance(review, Review) for review in result)
    ids_list = list(result.values_list('id'))
    assert [arg[0] for arg in ids_list] == [4, 2, 5]
Пример #11
0
def test_main_feed():
    result = Review.main_feed()
    assert isinstance(result, QuerySet)
    assert all(isinstance(review, Review) for review in result)
    ids_list = list(result.values_list('id'))
    assert [arg[0] for arg in ids_list] == [4, 2, 5, 1, 3, 6]
Пример #12
0
def reviews(request):
    reviews = Review.main_feed()
    liked_reviews = []
    if not request.user.is_anonymous:
        liked_reviews = UserLikes.get_liked_reviews_by_user(request.user)
    return render(request, 'homepage/reviews/reviews.html', {'reviews': reviews, 'liked_reviews': liked_reviews})
Пример #13
0
def landing(request):
    last_reviews = Review.landing_page_feed()
    return render(request, 'homepage/landing/landing.html', {'reviews': last_reviews})