def test_recommendations(self):
   user = CustomUser(password="******", first_name="john", last_name="doe",
                   email="*****@*****.**", language='en-US', region='US')
   user.save()
   netflix = Subscription(user_id=user.id, name="netflix", api_provider_id=8)
   netflix.save()
   amazon_prime = Subscription(user_id=user.id, name="Amazon Prime", api_provider_id=9)
   amazon_prime.save()
   disney_plus = Subscription(user_id=user.id, name="Disney+", api_provider_id=337)
   disney_plus.save()
   itunes = Subscription(user_id=user.id, name="Itunes", api_provider_id=2)
   itunes.save()
   c = Client()
   response = c.get(f"/v1/movies?user={user.id}")
   self.assertEqual(len(response.json()['results']), 20)
   self.assertEqual(type(response.json()['results'][0]['title']), str)
   self.assertEqual(type(response.json()['results'][0]['title']), str)
   self.assertEqual(type(response.json()['results'][0]['genre_ids']), list)
   self.assertEqual(type(response.json()['results'][0]['genre_ids'][0]), int)
   self.assertEqual(type(response.json()['results'][0]['id']), int)
   self.assertEqual(type(response.json()['results'][0]['genre_ids'][0]), int)
   self.assertEqual(type(response.json()['results'][0]['poster_path']), str)
   self.assertEqual(type(response.json()['results'][0]['backdrop_path']), str)
   self.assertEqual(type(response.json()['results'][0]['release_date']), str)
   self.assertEqual(type(response.json()['results'][0]['vote_average']), float)
Ejemplo n.º 2
0
 def test_subscription(self):
     user = CustomUser(password="******",
                       first_name="john",
                       last_name="doe",
                       email="*****@*****.**",
                       language='1234',
                       region='NA')
     user.save()
     sub = Subscription(user_id=user.id, name="netflux", api_provider_id=8)
     sub2 = Subscription(user_id=user.id, name="prime", api_provider_id=9)
     sub3 = Subscription(user_id=user.id, name="Banana", api_provider_id=10)
     sub.save()
     sub2.save()
     sub3.save()
     self.assertEqual(sub.user.first_name, "john")
     self.assertEqual(sub.name, "netflux")
     self.assertEqual(sub.user_id, user.id)
     self.assertEqual(sub.api_provider_id, 8)
     self.assertEqual(sub2.name, "prime")
     self.assertEqual(sub2.user_id, user.id)
     self.assertEqual(sub2.api_provider_id, 9)
     self.assertEqual(sub3.name, "Banana")
     self.assertEqual(sub3.user_id, user.id)
     self.assertEqual(sub3.api_provider_id, 10)
     self.assertEqual(len(user.subscriptions.all()), 3)
 def test_director_recommendations(self):
   user = CustomUser(password="******", first_name="john", last_name="doe",
                     email="*****@*****.**", language='1234', region='NA')
   user.save()
   netflix = Subscription(user_id=user.id, name="netflix", api_provider_id=8)
   netflix.save()
   amazon_prime = Subscription(
       user_id=user.id, name="Amazon Prime", api_provider_id=9)
   amazon_prime.save()
   disney_plus = Subscription(
       user_id=user.id, name="Disney+", api_provider_id=337)
   disney_plus.save()
   itunes = Subscription(user_id=user.id, name="Itunes", api_provider_id=2)
   itunes.save()
   thumb = Thumb(title='The Great Escape', api_movie_id=2,
                 api_director_id=341, up=True, user=user)
   thumb.save()
   thumb2 = Thumb(title='James Bond', api_movie_id=3,
                  api_director_id=341, up=True, user=user)
   thumb2.save()
   thumb3 = Thumb(title='The Red House', api_movie_id=4,
                  api_director_id=489, up=True, user=user)
   thumb3.save()
   thumb4 = Thumb(title='Gladiator', api_movie_id=5,
                  api_director_id=489, up=True, user=user)
   thumb4.save()
   thumb5 = Thumb(title='House', api_movie_id=6,
                  api_director_id=341, up=True, user=user)
   thumb5.save()
   self.assertEqual(views.recommendations_by_director(user), 341)
 def test_watchlist(self):
     user = CustomUser(password="******", first_name="john", last_name="doe",
                       email="*****@*****.**", language='1234', region='NA')
     user.save()
     watchlist = Watchlist(
         user_id=user.id, title="TheGreatEscape", api_movie_id=123)
     watchlist2 = Watchlist(
         user_id=user.id, title="KingKong", api_movie_id=456)
     watchlist3 = Watchlist(
         user_id=user.id, title="James Bond", api_movie_id=789)
     watchlist.save()
     watchlist2.save()
     watchlist3.save()
     # user.save()
     record = Watchlist.objects.get(id=1)
     # breakpoint()
     self.assertEqual(record.user.first_name, "john")
     self.assertEqual(watchlist.api_movie_id, 123)
     self.assertEqual(watchlist.user_id, user.id)
     self.assertEqual(watchlist.title, "TheGreatEscape")
     self.assertEqual(watchlist2.title, "KingKong")
     self.assertEqual(watchlist2.user_id, user.id)
     self.assertEqual(watchlist2.api_movie_id, 456)
     self.assertEqual(watchlist3.title, "James Bond")
     self.assertEqual(watchlist3.user_id, user.id)
     self.assertEqual(watchlist3.api_movie_id, 789)
     self.assertEqual(len(user.watchlist.all()), 3)
 def test_services_by_user(self):
   user = CustomUser(password="******", first_name="john", last_name="doe",
                     email="*****@*****.**", language='1234', region='NA')
   user.save()
   netflix = Subscription(user_id=user.id, name="netflix", api_provider_id=8)
   netflix.save()
   amazon_prime = Subscription(
       user_id=user.id, name="Amazon Prime", api_provider_id=9)
   amazon_prime.save()
   disney_plus = Subscription(
       user_id=user.id, name="Disney+", api_provider_id=337)
   disney_plus.save()
   itunes = Subscription(user_id=user.id, name="Itunes", api_provider_id=2)
   itunes.save()
   self.assertEqual(views.user_subscriptions(user), '2|8|9|337')
Ejemplo n.º 6
0
 def authenticate(self, request, username=None, password=None, **kwargs):
     try:
         user = CustomUser.objects.get(email=username)
     except CustomUser.DoesNotExist:
         CustomUser().set_password(password)
     else:
         if user.check_password(password) and self.user_can_authenticate(
                 user):
             return user
Ejemplo n.º 7
0
 def thumb(self):
     user = CustomUser(password="******",
                       first_name="john",
                       last_name="doe",
                       email="*****@*****.**",
                       language='1234',
                       region='NA')
     user.save()
     thumb = Thumb(user_id=user.id,
                   title="TheGreatEscape",
                   api_movie_id=123,
                   api_actor_id=423,
                   api_director_id=412,
                   up=True,
                   api_genre_id=321,
                   api_similar_id=234)
     thumb2 = Thumb(user_id=user.id,
                    title="DonkeyKong",
                    api_movie_id=532,
                    api_actor_id=234,
                    api_director_id=876,
                    up=True,
                    api_genre_id=123,
                    api_similar_id=874)
     thumb.save()
     thumb2.save()
     record = Thumb.objects.get(id=1)
     self.assertEqual(record.user.first_name, "john")
     self.assertEqual(thumb.user_id, user.id)
     self.assertEqual(thumb.title, "TheGreatEscape")
     self.assertEqual(thumb.api_movie_id, 123)
     self.assertEqual(thumb.api_actor_id, 423)
     self.assertEqual(thumb.api_director_id, 412)
     self.assertEqual(thumb.up, True)
     self.assertEqual(thumb.api_genre_id, 321)
     self.assertEqual(thumb.api_similar_id, 234)
     self.assertEqual(thumb2.user_id, user.id)
     self.assertEqual(thumb2.title, "DonkeyKong")
     self.assertEqual(thumb2.api_movie_id, 532)
     self.assertEqual(thumb2.api_actor_id, 234)
     self.assertEqual(thumb2.api_director_id, 876)
     self.assertEqual(thumb2.up, True)
     self.assertEqual(thumb2.api_genre_id, 123)
     self.assertEqual(thumb2.api_similar_id, 874)
Ejemplo n.º 8
0
def test_user():
    user = CustomUser(password="******",
                      first_name="john",
                      last_name="doe",
                      email="*****@*****.**",
                      language='1234',
                      region='NA')
    assert str(user.email) == "*****@*****.**"
    assert str(user.language) == '1234'
    assert str(user.password) == '123456'
    assert str(user.first_name) == 'john'
    assert str(user.last_name) == 'doe'
    assert str(user.region) == 'NA'
Ejemplo n.º 9
0
def login(request):
    # Handle the oauth callback, create/login user
    r = praw.Reddit('tehpoopsmith slashsaved testing')
    r.set_oauth_app_info(settings.REDDIT_CLIENT_ID, settings.REDDIT_SECRET, "http://localhost:8003/login")
    code = request.GET.get('code')
    state = request.GET.get('state')
    info = r.get_access_information(code)
    access_token = info['access_token']
    refresh_token = info['refresh_token']
    user = r.get_me()
    print "State=%s, code=%s, info=%s." % (state, code, str(info))
    #print "SAVED LINKS: %s" % r.user.get_saved()
    cache.set("tehpoopsmith_client", r)
    try:
        u = User.objects.get(username=user.name)
    except User.DoesNotExist:
        u = User(username=user.name)
        u.set_password('password')
    u.access_token = access_token
    u.refresh_token = refresh_token
    u.save()    
    u = authenticate(username=user.name, password='******')
    user_login(request, u)
    return HttpResponseRedirect('/')
Ejemplo n.º 10
0
    def generate(self):
        def generate_image(img_type):
            sleep(api.sleep_time)
            if img_type == 'avatar':
                return self.generate_image(self.avatar_reserve, api.avatar,
                                           api.avatar_type, api.avatar_verify,
                                           api.avatar_path_to_content)
            elif img_type == 'plate':
                return self.generate_image(self.images_reserve, api.image,
                                           api.image_type, api.image_verify,
                                           api.image_path_to_content)
            else:
                return

        config = get_settings()
        basic, chances, api = config.Basic, config.Chances, config.API
        max_users = basic.first_period
        users_count = 0
        for period in range(basic.periods):
            print('BIG LOOP')
            max_users += int(basic.first_period * basic.growth / 100 * period)
            users_in_period = randint(max_users - users_count, max_users)
            users_count += users_in_period
            period_dates = sorted([
                self.generate_period_dates(basic.start_date, period)
                for _ in range(users_in_period)
            ])
            for date in period_dates:
                print('USER')
                email = self.unique_email()
                user = CustomUser(email=email)
                if basic.default_password:
                    user.set_password(basic.default_password)
                else:
                    user.set_password(self.fake.ean8)

                if randint(1, 100) <= chances.invite:
                    try:
                        user.invitation_code = choice(self.existing_codes)
                    except IndexError:
                        user.invitation_code = None

                user.save()

                self.existing_codes.append(user.invite_code)

                if randint(1, 100) <= chances.non_personal_invite:
                    sort = randint(2, 3)
                    encode = Encoder(r'http://127.0.0.1:8000/register',
                                     len(self.existing_codes) + 1, sort)
                    additional = Code.objects.create(
                        owner=None,
                        number=encode.invitation_code.split('_')[0],
                        sort=sort,
                        code=encode.invitation_code,
                        url=encode.encoded_url,
                        qr=encode.qr()[1])
                    self.existing_codes.append(additional)

                profile = user.profile
                gender = randint(1, 2)

                if gender == 1:
                    first_name = self.fake.first_name_male()
                    last_name = self.fake.last_name_male()
                else:
                    first_name = self.fake.first_name_female()
                    last_name = self.fake.last_name_female()

                if randint(1, 100) <= chances.non_standart_avatar:
                    content = generate_image('avatar')

                    if content is not None:
                        relative_avatar = os.path.join(TMP_DIRS['avatar'],
                                                       'avatar.jpeg')
                        create_folder(
                            os.path.join(MEDIA_ROOT, TMP_DIRS['avatar']))
                        with open(os.path.join(MEDIA_ROOT, relative_avatar),
                                  'wb') as img:
                            img.write(content)
                    else:
                        relative_avatar = None
                else:
                    relative_avatar = None

                date_joined = date

                plates = []
                for index in range(4):
                    plate = generate_image('plate')

                    if plate is not None:
                        relative_image = os.path.join(
                            TMP_DIRS['plates'], f'original_{index + 1}.png')
                        create_folder(
                            os.path.join(MEDIA_ROOT, TMP_DIRS['plates']))
                        with open(os.path.join(MEDIA_ROOT, relative_image),
                                  'wb') as img:
                            img.write(plate)
                        plates.append(relative_image)
                    else:
                        plates.append(None)

                template = randint(1, 4)

                finished = True

                updates = dict(first_name=first_name,
                               last_name=last_name,
                               gender=gender,
                               avatar=relative_avatar,
                               date_joined=date_joined,
                               plate_img_1=plates[0],
                               plate_img_2=plates[1],
                               plate_img_3=plates[2],
                               plate_img_4=plates[3],
                               template=template,
                               finished=finished)

                for key, value in updates.items():
                    setattr(profile, key, value)

                profile.save()