Пример #1
0
def report_fake_account():
    if g.permission < 1:
        flash(NOT_AUTH_MSG, 'text-warning')
        return redirect('/')
    fake_json = request.get_json()
    User.report_fake_account(fake_json['reported'], fake_json['fake'])
    return jsonify({'response': 'OK'})
Пример #2
0
def remove_user(login):
    if g.permission < 1:
        flash(NOT_AUTH_MSG, 'text-warning')
        return redirect('/')
    User.remove_user(login)
    flash(USER_REMOVED, 'text-warning')
    return redirect('/')
Пример #3
0
 def validate_email(self, field):
     if re.fullmatch('^[a-zA-Z0-9\-._]+@[a-zA-Z0-9._\-]+\.[a-zA-Z0-9_\-]+$',
                     field.data) is None:
         raise ValidationError('Not a valid email address')
     if User.email_exists(
             field.data) and field.data != User.get_email(session['id']):
         raise ValidationError('email occupied')
Пример #4
0
def update_email_view(login):
    if User.accept_update_email(login):
        User.update_email(login)
        flash(EMAIL_CONFIRMED, 'text-success')
        User.log_out()
        return redirect('/')
    flash(ACCESS_DENIED, 'text-danger')
    return redirect('/')
Пример #5
0
def reset_password_view():
    if g.permission > 0:
        return redirect('/cabinet')
    form = SendPasswordEmailForm()
    if form.validate_on_submit():
        User.send_reset_passwd_email(form.email.data)
        flash(RESET_PASSWD_MAIL, 'text-success')
        return redirect('/')
    return render_template('reset_passwd.html', form=form)
Пример #6
0
def before_request():
    g.permission = User.auth()
    if g.permission >= 2:
        g.this_user = User(session['id'], session['id'])
        g.sm_av_path = User.get_avatar_mini_path(session['id'])
        g.av_path = User.get_avatar_path(session['id'])
        g.connection_ids, g.requested_connection_ids, g.unconfirmed_connection_ids = \
            User.get_all_connection_ids(session['id'])
        g.all_connection_ids = list(
            set(g.connection_ids + g.requested_connection_ids +
                g.unconfirmed_connection_ids))
Пример #7
0
def registration_view():
    if g.permission > 0:
        return redirect('/cabinet')
    form = RegistrationForm()
    if form.validate_on_submit():
        User.register(form.login.data, form.email.data, form.passwd.data,
                      form.first_name.data, form.last_name.data,
                      form.birth_date.data)
        User.send_registration_email(form.email.data, form.login.data)
        flash(CONFIRMATION_EMAIL, 'text-success')
        return redirect('/')
    return render_template('registration.html', form=form)
Пример #8
0
def assign_new_passwd_view(login, token):
    if g.permission > 0:
        return redirect('/cabinet')
    if not User.check_login_token(login, token):
        flash('You shall not pass!', 'text-danger')
        return redirect('/')
    form = NewPasswdForm()
    if form.validate_on_submit():
        User.update_passwd(User.get_user_id(login), form.passwd.data)
        flash(RESET_PASSWD_CONFIRMED, 'text-success')
        return redirect('/')
    return render_template('new_passwd.html', form=form)
Пример #9
0
def chat_view(login):
    if g.permission < 1:
        flash(NOT_AUTH_MSG, 'text-warning')
        return redirect('/')
    user = User(User.get_user_id(login), session['id'])
    chat = Chat.get_all(session['id'], user.id)
    Chat.set_as_read(session['id'], user.id)
    return render_template('chat.html',
                           user=user,
                           chat=chat,
                           current_usr=None,
                           get_user_by_id=Chat.get_user_by_id)
Пример #10
0
def landing_view():
    if g.permission > 0:
        return redirect('/cabinet')
    form = LoginForm()
    if request.method == 'POST':
        if form.validate_on_submit() and User.verify_passwd(
                form.login.data, form.passwd.data):
            User.log_in(form.login.data)
            return redirect('/cabinet')
        else:
            flash(INVALID_USER, 'text-danger')
            return redirect('/')
    return render_template('landing.html', title='Sign in', form=form)
Пример #11
0
 def __init__(self, user_id):
     self.user = User(user_id, user_id)
     self.gender_pref = self.get_gender_and_pref()
     self.match_ids = list()
     self.offers = list()
     for gender_pref_item in self.gender_pref:
         sql = '''SELECT id FROM users WHERE gender=(SELECT id FROM gender WHERE gender.type=%s)
                 AND preferences=(SELECT id FROM preferences WHERE preferences.type=%s)
                 AND id!=%s;'''
         cursor = db.cursor()
         cursor.execute(sql, (gender_pref_item['gender'], gender_pref_item['preferences'], self.user.id))
         self.match_ids += [item['id'] for item in cursor.fetchall()]
     for id in self.match_ids:
         self.offers.append(User(id, user_id))
     cursor.close()
Пример #12
0
def brows_view(page):
    if g.permission < 1:
        flash(NOT_AUTH_MSG, 'text-warning')
        return redirect('/')
    form = FilterForm()
    research = Research(session['id'])
    if request.method == 'GET':
        research.sort('weight')
    if form.validate_on_submit():
        research.sort(form.order_by.data)
        if form.enable_distance.data:
            research.filter('distance', form.distance.data)
        if form.enable_sexuality.data:
            research.filter('sexuality', form.sexuality.data)
        if form.enable_age.data:
            research.filter('age', (form.age_from.data, form.age_to.data))
        if form.enable_interests.data:
            interests_list = User.get_interests_from_user(
                form.common_interests.data)
            research.filter('interests', interests_list)
    count = len(research.offers)
    pagination = Pagination(page, PER_PAGE, count)
    research.get_users_per_page(page, PER_PAGE)
    return render_template('browse.html',
                           offers=research.offers,
                           form=form,
                           pagination=pagination)
Пример #13
0
def search_view(page):
    if g.permission < 1:
        flash(NOT_AUTH_MSG, 'text-warning')
        return redirect('/')
    form = FilterForm()
    offers = list()
    if form.validate_on_submit() and (form.enable_age.data
                                      or form.enable_sexuality.data
                                      or form.enable_distance.data
                                      or form.enable_interests.data):
        research = Research(session['id'])
        if form.enable_age.data:
            research.filter('age', (form.age_from.data, form.age_to.data))
        if form.enable_sexuality.data:
            research.filter('sexuality', form.sexuality.data)
        if form.enable_distance.data:
            research.filter('distance', form.distance.data)
        if form.enable_interests.data:
            interests_list = User.get_interests_from_user(
                form.common_interests.data)
            research.filter('interests', interests_list)
        research.sort(form.order_by.data)
        offers = research.offers
    # count = len(offers)
    # pagination = Pagination(page, PER_PAGE, count)
    # offers = offers[(page * PER_PAGE - PER_PAGE):(page * PER_PAGE)]
    return render_template('search.html', form=form, offers=offers)
Пример #14
0
 def validate_login(self, field):
     if re.fullmatch('^[a-z_\-A-Z0-9]{3,80}$', field.data) is None:
         raise ValidationError(
             'Login should be between 3-80 characters long. Allowed characters are letters, numbers, "-", "_".'
         )
     if User.login_exists(field.data):
         raise ValidationError('login occupied')
Пример #15
0
def chat_with_view():
    if g.permission < 1:
        flash(NOT_AUTH_MSG, 'text-warning')
        return redirect('/')
    connections = User.get_all_connections(g.connection_ids, session['id'])
    for user in connections:
        user.unread_msgs = Chat.get_count_unread_from(user.id, session['id'])
    return render_template('chat_with.html', connections=connections)
Пример #16
0
def connections():
    if g.permission < 1:
        flash(NOT_AUTH_MSG, 'text-warning')
        return redirect('/')
    connections_confirmed = User.get_all_connections(g.connection_ids,
                                                     session['id'])
    connections_requested = User.get_all_connections(
        g.requested_connection_ids, session['id'])
    connections_unconfirmed = User.get_all_connections(
        g.unconfirmed_connection_ids, session['id'])
    connections_blocked = User.get_all_connections(
        User.get_all_blocked_ids(session['id']), session['id'])
    return render_template('connections.html',
                           connections_confirmed=connections_confirmed,
                           connections_requested=connections_requested,
                           connections_unconfirmed=connections_unconfirmed,
                           connections_blocked=connections_blocked)
Пример #17
0
def settings_notification_view():
    if g.permission < 1:
        flash(NOT_AUTH_MSG, 'text-warning')
        return redirect('/')
    form = EditNotificationsForm()
    if request.method == 'POST':
        User.update_notifications_settings(session['id'], form.likes_me.data,
                                           form.unlikes_me.data,
                                           form.likes_me_back.data,
                                           form.viewed_my_profile.data,
                                           form.incoming_massage.data)
        flash(UPDATED, 'text-success')
    results = User.get_notification_settings(session['id'])
    form.likes_me.data = results['likes_me']
    form.unlikes_me.data = results['unlikes_me']
    form.likes_me_back.data = results['likes_me_back']
    form.viewed_my_profile.data = results['viewed_my_profile']
    form.incoming_massage.data = results['incoming_massage']
    return render_template('settings_notifications.html', form=form)
Пример #18
0
def chat_add():
    data = {'response': 'OK'}
    result = request.get_json()
    if User.connected(result['user_id'], result['receiver_id']):
        Chat.add(result['user_id'], result['receiver_id'], result['msg'])
        if Chat.chat_notification_allowed(result['receiver_id'],
                                          session['id']):
            settings = NotificationSteeings(result['receiver_id'])
            Notifications(result['receiver_id'], session['login'],
                          url_for('routes.chat_view', login=g.this_user.login),
                          settings, 'incoming_massage', session['id'])
    return jsonify(data)
Пример #19
0
def cabinet_view():
    if g.permission < 1:
        flash(NOT_AUTH_MSG, 'text-warning')
        return redirect('/')
    connections_confirmed = User.get_all_connections(g.connection_ids,
                                                     session['id'])
    connections_requested = User.get_all_connections(
        g.requested_connection_ids, session['id'])
    connections_unconfirmed = User.get_all_connections(
        g.unconfirmed_connection_ids, session['id'])
    connections_unconfirmed = list(
        filter(lambda x: not x.is_blocked, connections_unconfirmed))
    user_photos = User.get_photos_path(session['id'])
    user_data = User.get_profile_settings_from_db(session['id'])
    visit_history = VisitHistory.get_visit_history(session['id'])
    return render_template('cabinet.html',
                           user_photos=user_photos,
                           user_data=user_data,
                           connections_confirmed=connections_confirmed,
                           connections_requested=connections_requested,
                           connections_unconfirmed=connections_unconfirmed,
                           visit_history=visit_history)
Пример #20
0
def add_photo_view():
    if g.permission == 2:
        if request.method == 'POST':
            user_photos = request.get_json()
            avatar_photo_id = int(user_photos['avatar_photo_id']) + 1
            del user_photos['avatar_photo_id']
            for key, val in user_photos.items():
                image_string = val.split(',')[1]
                User.save_photos(str(int(key) + 1), image_string,
                                 session['id'])
                User.update_sexuality(session['id'], 5)
            User.set_avatar(avatar_photo_id, session['id'], session['login'])
            User.update_access_status(session['login'], 3)
            data = {'response': 'OK'}
            return jsonify(data)
        else:
            return render_template('add_photo.html')
    elif g.permission in (0, 1):
        flash(ACCESS_DENIED, 'text-danger')
        return redirect('/')
    else:
        return redirect(url_for('routes.cabinet_view'))
Пример #21
0
def other_profile_view(login):
    if g.permission < 1:
        flash(NOT_AUTH_MSG, 'text-warning')
        return redirect('/')
    if login == g.this_user.login:
        return redirect(url_for('routes.cabinet_view'))
    user = User(User.get_user_id(login), session['id'])
    VisitHistory.add_item(user.id, session['id'], session['login'],
                          g.this_user.homepage, 'view')
    if request.method == 'POST':
        settings = NotificationSteeings(user.id)
        if request.form['submit'] == '1' and (user.connection_status == 0 or user.connection_status == 2) \
                and not user.is_blocked:
            VisitHistory.add_item(user.id, session['id'], session['login'],
                                  g.this_user.homepage, 'like')
            User.set_connection(session['id'], user.id)
            User.update_sexuality(user.id, 20)
            if User.connection_requested(user.id, session['id']):
                Notifications(user.id, session['login'], g.this_user.homepage,
                              settings, 'likes_me_back', session['id'])
                Notifications(session['id'], user.login, user.homepage,
                              settings, 'likes_me_back', user.id)
            else:
                Notifications(user.id, session['login'], g.this_user.homepage,
                              settings, 'likes_me', session['id'])
        elif request.form['submit'] == '0' and (user.connection_status == 1 or
                                                user.connection_status == 3):
            VisitHistory.add_item(user.id, session['id'], session['login'],
                                  g.this_user.homepage, 'dislike')
            User.unset_connection(session['id'], user.id)
            User.update_sexuality(user.id, -20)
            Notifications(user.id, session['login'], g.this_user.homepage,
                          settings, 'unlikes_me', session['id'])
        elif request.form['submit'] == '2' and not user.is_blocked:
            User.block_user(session['id'], user.id)
            if user.connection_status == 1 or user.connection_status == 3:
                User.update_sexuality(user.id, -20)
        elif request.form['submit'] == '3' and user.is_blocked:
            User.unblock_user(session['id'], user.id)
        user = User(User.get_user_id(login), session['id'])
    connected = User.connection_requested(session['id'], user.id)
    if Notifications.viewed_profile_notification_allowed(
            user.id, session['id']):
        settings = NotificationSteeings(user.id)
        Notifications(user.id, session['login'], g.this_user.homepage,
                      settings, 'viewed_my_profile', session['id'])
    return render_template('other_profile.html',
                           user=user,
                           connected=connected)
Пример #22
0
 def validate_email(self, field):
     if not User.email_exists(field.data):
         raise ValidationError('No such email in the database')
Пример #23
0
def before_request():
    g.permission = User.auth()
    if g.permission >= 2:
        g.this_user = User(session['id'], session['id'])
Пример #24
0
def create_profile_view(login):
    form = ProfileForm()
    if form.validate_on_submit():
        User.update_access_status(login, 2)
        User.create_profile(User.get_user_id(login), form.gender.data,
                            form.preferences.data, form.biography.data,
                            form.interests.data, form.city.data,
                            form.show_location.data)
        User.log_in(login)
        User.create_user_folder(session['login'], session['id'])
        return redirect(url_for('routes.add_photo_view'))
    if User.accept_confirmation_email(login):
        User.update_access_status(login, 1)
        return render_template('create_profile.html', form=form)
    else:
        flash(ACCESS_DENIED, 'text-danger')
        return redirect('/')
Пример #25
0
def logout():
    User.log_out()
    flash(LOGGED_OUT_MSG, 'text-success')
    return redirect('/')
Пример #26
0
def before_request():
    g.permission = User.auth()
Пример #27
0
def map_view():
    if g.permission < 1:
        flash(NOT_AUTH_MSG, 'text-warning')
        return redirect('/')
    locations = User.get_all_lat_lng_login(session['id'])
    return render_template('map.html', locations=locations)
Пример #28
0
def settings_photo_view():
    if g.permission < 1:
        flash(NOT_AUTH_MSG, 'text-warning')
        return redirect('/')
    if request.method == 'POST':
        user_photos = request.get_json()
        avatar_photo_id = user_photos['avatar_photo_id']
        photos_to_del = user_photos['photos_to_del']
        del user_photos['avatar_photo_id']
        del user_photos['photos_to_del']
        for photo_to_del in photos_to_del:
            User.delete_photo(int(photo_to_del), session['id'])
            User.update_sexuality(session['id'], -5)
        for key, val in user_photos.items():
            User.update_access_status(session['login'], 3)
            image_string = val.split(',')[1]
            User.save_photos(key, image_string, session['id'])
            User.update_sexuality(session['id'], 5)
        User.set_avatar(avatar_photo_id, session['id'], session['login'])
        flash(UPDATED, 'text-success')
        data = {'response': 'OK'}
        return jsonify(data)
    avatar_path = User.get_avatar_path(session['id'])
    photos = User.get_photos_path(session['id'])
    grep_img_funct = User.grep_image_number
    return render_template('settings_photos.html',
                           avatar_path=avatar_path,
                           photos=photos,
                           grep_img_funct=grep_img_funct)
Пример #29
0
def settings_profile_view():
    if g.permission < 1:
        flash(NOT_AUTH_MSG, 'text-warning')
        return redirect('/')
    form = EditProfileForm()
    if form.validate_on_submit():
        User.update_profile(session['id'], form.login.data,
                            form.first_name.data, form.last_name.data,
                            form.birth_date.data, form.gender.data,
                            form.preferences.data, form.biography.data,
                            form.city.data, form.show_location.data)
        if form.passwd.data != '':
            User.update_passwd(session['id'], form.passwd.data)
        if form.email.data != User.get_email(session['id']):
            flash(UPDATE_EMAIL, 'text-success')
            User.send_update_email_rwquest(form.email.data, session['login'],
                                           session['id'])
        if form.interests.data != ', '.join(
                User.get_interests_list(session['id'])):
            User.update_interesrs(session['id'], form.interests.data)
        flash(UPDATED, 'text-success')
    User.fill_edit_profile_form_from_db(form, session['id'])
    return render_template('settings_profile.html', form=form)