コード例 #1
0
ファイル: fake_users.py プロジェクト: cjmabry/reddimatch
def populate_users(numUsers):
    r = reddit_api.praw_instance()
    subreddit = r.get_subreddit('test')
    posts = subreddit.get_hot(limit=numUsers)
    # subreddit = r.get_front_page()

    posts_dict = {}
    for thing in posts:
        username = str(thing.author)

        if not models.User.query.filter_by(reddit_username=username).first():
            u = generate_random_user(username)
            db.session.add(u)
            subs = reddit_api.get_offsite_user_favorite_subs(username)

            for sub in subs:
                if models.Subreddit.query.filter_by(name=sub.name).first():
                    print(sub.name + 'found')
                    subreddit = models.Subreddit.query.filter_by(
                        name=sub.name).first()
                else:
                    print(sub.name + ' not found')
                    subreddit = models.Subreddit(name=sub.name)
                    db.session.add(subreddit)
                f = u.favorite(subreddit)
                if f is not None:
                    db.session.add(f)
                    print('favorited ' + sub.name)
                else:
                    print(sub.name + ' already favorited by ' + str(u))

            db.session.commit()
コード例 #2
0
ファイル: reddit_api.py プロジェクト: cjmabry/reddimatch
def get_favorite_subs(user):
    time1 = time.time()
    r = praw_instance()

    reddit_user = r.get_redditor(user.username)

    comments = reddit_user.get_comments(sort='new', time='all', limit=100)

    comments_by_subreddit = []

    try:
        for comment in comments:
            comments_by_subreddit.append(comment.subreddit.display_name)

    except praw.errors.NotFound as e:
        print e
        print "There be an HTTP error. The user probably doesn't have any comments, or Reddit might be down."

    comments = collections.Counter(comments_by_subreddit)

    top_subs_by_comments = sorted(comments.items(),
                                  key=operator.itemgetter(1),
                                  reverse=True)

    subs = []

    for key, value in top_subs_by_comments[:3]:
        sub = models.Subreddit(name=key)
        subs.append(sub)

    pprint(comments)
    pprint(subs)

    print(time.time() - time1)
    return subs
コード例 #3
0
ファイル: views.py プロジェクト: cjmabry/reddimatch
def register():
    if current_user.registered and not current_user.deleted:
        return redirect(url_for('match'))

    form = forms.RegistrationForm(request.form)

    if request.method == 'POST' and form.validate():
        user = current_user
        user.username = form.username.data
        user.allow_reddit_notifications = form.allow_reddit_notifications.data
        user.bio = form.bio.data
        user.newsletter = True
        user.registered = True
        user.created_on = datetime.datetime.now()
        user.email_verified = False

        if form.email.data:
            user.email = form.email.data
        else:
            user.email = None

        favorite_subs = []
        favorite_subs.append(form.favorite_sub_1.data.lower())

        if form.favorite_sub_2.data:
            favorite_subs.append(form.favorite_sub_2.data.lower())

        if form.favorite_sub_3.data:
            favorite_subs.append(form.favorite_sub_3.data.lower())

        user.unfavorite_all()

        for sub in favorite_subs:

            # strip /r/ from name
            if '/' in sub:
                sub = sub.split('/')[-1]

            if models.Subreddit.query.filter_by(name = sub).first() is None:
                subreddit = models.Subreddit(name=sub)
                db.session.add(subreddit)
                db.session.commit()
                user.favorite(subreddit)
            else:
                subreddit = models.Subreddit.query.filter_by(name = sub).first()
                user.favorite(subreddit)

        db.session.commit()
        return redirect(url_for('match'))

    form.allow_reddit_notifications.default = True

    form.process()

    return render_template('register.html', title='Reddimatch - Register', form=form, page_class='register_page')
コード例 #4
0
ファイル: fake_users.py プロジェクト: cjmabry/reddimatch
def populate_subreddit_db(numSubreddits):
    r = reddit_api.praw_instance()
    front_page = r.get_front_page(limit=numSubreddits)

    front_page_dict = {}
    for thing in front_page:
        subreddit_name = str(thing.subreddit)
        subreddit_id = str(thing.subreddit_id)

        if not models.Subreddit.query.filter_by(name=subreddit_name).first():
            sub = models.Subreddit(name=subreddit_name, reddit_id=subreddit_id)
            db.session.add(sub)
            db.session.commit()
        else:
            sub = models.Subreddit.query.filter_by(name=subreddit_name).first()
            sub.reddit_id = subreddit_id
コード例 #5
0
ファイル: views.py プロジェクト: cjmabry/reddimatch
def dashboard():
    form = forms.DashboardForm(request.form)
    user = current_user

    if request.method == 'POST' and form.validate():
        user.username = form.username.data
        user.allow_reddit_notifications = form.allow_reddit_notifications.data

        if form.age.data:
            user.age = int(form.age.data)
        user.gender_id = int(form.gender.data)
        user.desired_gender_id = int(form.desired_gender.data)
        user.date_searchable = not form.searchable.data
        user.min_age = int(form.min_age.data)
        user.max_age = int(form.max_age.data)
        user.search_radius = int(form.radius.data)
        current_user.disable_location = form.disable_location.data

        if user.disable_location is True:
            user.latitude = None
            user.longitude = None
            user.location = None

        if form.email.data:
            user.email = form.email.data
        else:
            user.email = None

        user.bio = form.bio.data
        favorite_subs = []
        favorite_subs.append(form.favorite_sub_1.data)

        if form.favorite_sub_2.data:
            favorite_subs.append(form.favorite_sub_2.data)

        if form.favorite_sub_3.data:
            favorite_subs.append(form.favorite_sub_3.data)

        user.unfavorite_all()

        for sub in favorite_subs:
            if models.Subreddit.query.filter_by(name=sub).first():
                sub = models.Subreddit.query.filter_by(name=sub).first()
                user.favorite(sub)
            elif models.Subreddit.query.filter_by(name=sub).first() is None:
                r = reddit_api.praw_instance()
                try:
                    r.get_subreddit(sub, fetch=True)
                except Exception as e:
                    flash(e)
                    return render_template('dashboard.html', title='Reddimatch - My Profile', form=form, page_class='dashboard_page')

                subreddit = models.Subreddit(name=sub)
                db.session.add(subreddit)

        db.session.commit()

        return render_template('dashboard.html', title='Reddimatch - My Profile', form=form, page_class='dashboard_page')

    if user.gender_id:
        form.gender.default = user.gender_id
    else:
        form.gender.default = 1

    if user.desired_gender_id:
        form.desired_gender.default = user.desired_gender_id
    else:
        form.desired_gender.default = 2

    if user.min_age:
        form.min_age.default = user.min_age
    else:
        form.min_age.default = 18

    if user.max_age:
        form.max_age.default = user.max_age
    else:
        form.max_age.default = 35

    if user.search_radius:
        form.radius.default = user.search_radius
    else:
        form.radius.default = 50

    if user.date_searchable is not None:
        form.searchable.default = not user.date_searchable
    else:
        form.searchable.default = False

    if user.allow_reddit_notifications is not None:
        form.allow_reddit_notifications.default = user.allow_reddit_notifications
    else:
        form.allow_reddit_notifications.default = False

    if user.location:
        form.location.default = user.location

    if user.disable_location == True:
        form.disable_location.default = True
    else:
        form.disable_location.default = False

        form.process()

    form.process()

    return render_template('dashboard.html', page_class='dashboard_page', title='Reddimatch - My Profile',form=form)