def signup(self):
        # Create the user object
        email_verification_code = random_code(5)
        # new_user_uuid = uuid.uuid4().hex
        new_user_uuid = str(ObjectId())
        new_user = {
            "_id": new_user_uuid,
            'creation_date': datetime.datetime.utcnow(),
            "username": request.args.get('username'),
            "email": request.args.get('email'),
            "password": pbkdf2_sha256.hash(request.args.get('password')),
            "email_verified": False,
            "email_verification_code": email_verification_code,
            "email_verification_code_timestamp": time.time(),
            "products": [],
            "profile_picture": '',
        }
        print(new_user)

        # Check for existing verified email address
        if db.users.find_one({"email": new_user['email']}):
            return jsonify({"error": "Email adress is already in use, \nplease sign-in"}), 403

        # Enter new user in DB
        if db.users.insert_one(new_user):
            # Send email confirmation code
            Email().sendConfirmEmail(request.args.get('email'), email_verification_code)
            return jsonify({
                "status": "Account successfully created!",
                "userid": new_user_uuid
            }), 200

        return jsonify({"error": "Signup failed."}), 400
Example #2
0
    def init_data(self):
        #default test user
        demo = User(first_name=u'demo',
                    last_name=u'demo',
                    user_name=u'demo',
                    password=u'123456',
                    role_code=ADMIN,
                    status_code=ACTIVE,
                    user_settings=UserSettings(sex_code=MALE,
                                               phone='555-555-5555',
                                               bio=u'just a demo guy'))
        email = Email(address="*****@*****.**",
                      is_primary=True,
                      status_code=VERIFIED)
        demo.add_email(email)

        db.session.add(demo)
        db.session.add(email)
        db.session.commit()
        """Add in post categories"""
        for c in CATEGORIES:
            hashtag = Hashtag(name=c)
            db.session.add(hashtag)
        db.session.commit()

        self.demo_user = demo
        '''Add in circles'''
        ucla = Circle(name=u'ucla', description=u'ucla.edu emails only')
        ucla.add_member(demo)
        db.session.add(ucla)
        db.session.commit()
Example #3
0
 def test_by_user(self):
     user = self.demo_user
     user.add_email(self.good_email)
     user.add_email(self.diff_email)
     db.session.add(self.good_email)
     db.session.add(self.diff_email)
     db.session.commit()
     self.assertEqual(user.emails.all(), Email.by_user(user))
 def test_by_user(self):
    user = self.demo_user
    user.add_email(self.good_email)
    user.add_email(self.diff_email)
    db.session.add(self.good_email)
    db.session.add(self.diff_email)
    db.session.commit()
    self.assertEqual(user.emails.all(), Email.by_user(user))
Example #5
0
def initdb():
    """Init/reset database."""

    db.drop_all(bind=None)
    db.create_all(bind=None)

    admin = User(first_name=u'admin',
                 last_name=u'admin',
                 user_name=u'admin',
                 password=u'gFcPU5XB',
                 role_code=ADMIN,
                 status_code=ACTIVE,
                 user_settings=UserSettings(sex_code=MALE,
                                            age=10,
                                            phone='555-555-5555',
                                            bio=u''))
    email = Email(address="*****@*****.**",
                  is_primary=True,
                  status_code=VERIFIED)
    admin.add_email(email)
    db.session.add(admin)
    db.session.add(email)
    db.session.commit()

    hashtag = None
    """Add in all post hashtag"""
    for (key, id) in CATEGORIES.iteritems():
        hashtag = Hashtag(id=id, name=key)
        db.session.add(hashtag)
    db.session.commit()

    #Add in ucla circle
    ucla = Circle(name=u'ucla', description=u'ucla.edu emails only')
    ucla.add_member(admin)
    db.session.add(ucla)
    db.session.commit()

    ucla_info = CollegeInfo(circle_id=ucla.id,
                            domain=u'ucla.edu',
                            fb_group_id=267279833349705,
                            fb_sell_id=267375200006835)
    db.session.add(ucla_info)
    db.session.commit()
Example #6
0
 def __init__(self, *args, **kwargs):
     super(TestUserModel, self).__init__(*args, **kwargs)
     self.correct_password = u'123456'
     self.good_guy = User(first_name=u'good',
                          last_name=u'guy',
                          user_name=u'test',
                          password=self.correct_password,
                          role_code=USER,
                          status_code=ACTIVE,
                          user_settings=UserSettings(sex_code=MALE))
     self.good_girl = User(first_name=u'good',
                           last_name='girl',
                           user_name=u'crazy_girl',
                           password=self.correct_password,
                           role_code=USER,
                           status_code=INACTIVE,
                           user_settings=UserSettings(sex_code=FEMALE))
     self.good_girl_email = Email(address="*****@*****.**",
                                  is_primary=False,
                                  status_code=VERIFIED)
    def send_code(self):
        email = request.args.get('email')
        if not email:
            return jsonify({"error": "Email address missing"}), 400
        userid = request.args.get('userid')

        if userid:
            user = db.users.find_one({"_id" : userid})
        else:
            user = db.users.find_one({"email" : email})

        if not user:
            return jsonify({"error": "Can't find user"}), 400

        email_verification_code = random_code(5)

        if userid:
            db.users.update_one(
                {"_id" : userid},
                {"$set": {
                    "email_verification_code": email_verification_code,
                    "email_verification_code_timestamp": time.time()
                }
            })
        else:
            db.users.update_one(
                {"email" : email},
                {"$set": {
                    "email_verification_code": email_verification_code,
                    "email_verification_code_timestamp": time.time()
                }
            })
        
        Email().sendConfirmEmail(request.args.get('email'), email_verification_code)
        return jsonify({
            "status": "Email verification code sent!",
            "userid": user['_id']
        }), 200
Example #8
0
 def test_by_id(self):
     user = self.demo_user
     email_id = user.primary_email.id
     self.assertEqual(user.primary_email, Email.by_id(email_id))
Example #9
0
 def __init__(self, *args, **kwargs):
     super(TestEmailModel, self).__init__(*args, **kwargs)
     self.good_email = Email(address="*****@*****.**", is_primary=False)
     self.same_email = Email(address="*****@*****.**", is_primary=False)
     self.diff_email = Email(address="*****@*****.**", is_primary=False)
Example #10
0
    def test_is_email_taken(self):
        self.demo_user.add_email(self.good_email)
        db.session.commit()

        self.assertTrue(Email.is_email_taken(self.same_email.address))
        self.assertFalse(Email.is_email_taken(self.diff_email.address))
Example #11
0
def initdb():
    """Init/reset database."""

    db.drop_all(bind=None)
    db.create_all(bind=None)

    admin = User(first_name=u'admin',
                 last_name=u'admin',
                 user_name=u'admin',
                 password=u'123456',
                 role_code=ADMIN,
                 status_code=ACTIVE,
                 user_settings=UserSettings(
                     sex_code=MALE,
                     age=10,
                     phone='555-555-5555',
                     bio=u'admin Guy is ... hmm ... just a admin guy.'))
    email = Email(address="*****@*****.**",
                  is_primary=True,
                  status_code=VERIFIED)
    admin.add_email(email)
    db.session.add(admin)
    db.session.add(email)
    db.session.commit()

    hashtag = None
    """Add in all post hashtag"""
    for (key, id) in CATEGORIES.iteritems():
        hashtag = Hashtag(id=id, name=key)
        db.session.add(hashtag)
    db.session.commit()

    #generate 1000 random post
    '''
    for x in range(0,1000):
      post = Post(name='test-'+str(x), price=10, description='AOH LALAL')
      post.user_id = admin.id
      post.add_hashtag(hashtag)
      db.session.add(post)
   
      db.session.commit()

      chat = Chat(buyer= admin)
      msg = ChatMessage(body = "TEST MESSAGE", created_by = admin.id)
      post.add_chat(chat)
      chat.add_message(msg)
      db.session.commit()

    db.session.commit()
    '''

    #Add in ucla circle
    ucla = Circle(name=u'ucla', description=u'ucla.edu emails only')
    ucla.add_member(admin)
    db.session.add(ucla)
    db.session.commit()

    ucla_info = CollegeInfo(circle_id=ucla.id,
                            domain=u'ucla.edu',
                            fb_group_id=267279833349705,
                            fb_sell_id=267375200006835)
    db.session.add(ucla_info)
    db.session.commit()
 def test_by_id(self):
    user = self.demo_user
    email_id = user.primary_email.id
    self.assertEqual(user.primary_email, Email.by_id(email_id))
 def test_is_email_taken(self):
    self.demo_user.add_email(self.good_email)
    db.session.commit()
 
    self.assertTrue(Email.is_email_taken(self.same_email.address))
    self.assertFalse(Email.is_email_taken(self.diff_email.address))