def post(self): userid = self.get_current_user()['_id']['$oid'] user = User.objects(id=userid).first() name = self.get_argument('FullName',default=(user.FirstName + " "+user.LastName),strip=True) gender = self.get_argument('gender',default=user.Gender,strip=True) major = self.get_argument('major',default=user.School.Major,strip=True) gradyear = int(self.get_argument('yearpicker',default=user.School.GradYear,strip=True)) about = self.get_argument('about',default=user.About,strip=True) #print gender # if password != user.Password: # m = hashlib.md5() # m.update(password) # password = m.hexdigest() # user.Password = password if len(name) < 2: user.FirstName = name[0] else: user.FirstName = name.split()[0] user.LastName = name.split()[1] user.Gender = gender user.School.Major = major user.School.GradYear = gradyear user.About = about # print self.request.files if len(self.request.files) > 0: fileinfo = self.request.files['pic'][0] profimg = ProfileImage(Owner=user.id) profimg.Image.put(fileinfo['body'],content_type = 'image/jpeg',Owner=user.id) profimg.save() user.ProfileImg = profimg.id user.save() user = User.objects(id=user.id).exclude("Password","Wall","FriendsRequested","Friends","FriendsRequesting","Clubs","Nots").first() self.set_secure_cookie("userdata", tornado.escape.json_encode(dumps(user.to_mongo())))
def register(user,request,callback=None): # TODO : Insert User into corresponding school collection/ register request # A user should be added to the register request collection: #When a user verifies email, then they are inserted into user/university collection # print user password = user["Password"][0].strip() m = hashlib.md5() m.update(password) password = m.hexdigest() username = user['UserName'][0].strip().lower() names = user['FullName'][0].split() if len(names) > 1: firstname = user['FullName'][0].split()[0].strip().lower() lastname = user['FullName'][0].split()[1].strip().lower() else: firstname = user['FullName'][0].strip().lower() lastname = '' email = user['Email'][0].strip().lower() gender = user['gender'][0].strip() university = user['university'][0].strip() major = user['major'][0].strip() gradyear = int(user['yearpicker'][0].strip()) aboutme = user['about'][0].strip() regid=ObjectId() #print request.files fileinfo = request.files['pic'][0] uni = University.objects(Name=university).first() if uni is None: uni = University(Name=university) uni.save() school = School(University=uni.id,Major=major,GradYear=gradyear) #Check length usermodel = User(UserName=username,FirstName=firstname,LastName=lastname,Password=password,Email=email,Gender=gender,School=school,About=aboutme,RegId=regid) try: usermodel.save() except NotUniqueError as e: if "UserName" in str(e): if callback != None: return callback(RegError.USERNAME_INUSE) return RegError.USERNAME_INUSE if "Email" in str(e): if callback != None: return callback(RegError.EMAIL_INUSE) return RegError.EMAIL_INUSE profimg = ProfileImage(Owner=usermodel.id) profimg.Image.put(fileinfo['body'],content_type = 'image/jpeg',Owner=usermodel.id) profimg.save() usermodel.ProfileImg = profimg.id usermodel.save() uni.Students.append(usermodel.id) uni.save() logger.info(username + " has registered") #send_confirmation(email,regid) if callback != None: return callback(200) return 200
def test_go_pro_from_wp(self): # # pre-requisites for fully signed up client # package = create_push_package(os.path.join(settings.MEDIA_ROOT, 'test')) # register resp = register_user_from_wp() profile = ClientProfile.objects.all()[0] # upload icon profile_image = ProfileImage(profile=profile) image_path = os.path.join(settings.MEDIA_ROOT, 'test', 'image.png') profile_image.image = SimpleUploadedFile(name='test_image.png', content=open( image_path, 'rb').read(), content_type='image/png') profile_image.save() # select plan resp = c.get(reverse('register_thank_you', args=[profile.id])) profile = ClientProfile.objects.all()[0] profile.status = 'active' profile.save() plan = Plan.objects.all()[0] package = PushPackage.objects.all()[0] # assertions for fully signed up client self.assertEqual(profile.status, 'active') self.assertEqual(ClientProfile.objects.count(), 1) self.assertEqual(Plan.objects.count(), 1) self.assertEqual(plan.type, PlanVariant.TRIAL) self.assertEqual(PushPackage.objects.count(), 1) self.assertTrue(package.used) # convert plan to Pro. # ! This workflow is not 100% in accordance to the website, because # the client would select directly the Pro plan, without having a Trial plan first plan.type = PlanVariant.PRO plan.save() # sign in from WordPress, from old version of plugin resp = c.post(reverse('api_sign_in'), { 'api_token': '*****@*****.**', 'api_secret': 'holymomma', }) # assertions for successfully signing in self.assertContains(resp, "signed_in") self.assertContains(resp, package.identifier) self.assertContains(resp, profile.user.email) self.assertContains(resp, "log") # assert that website cluster exists self.assertEqual(WebsiteCluster.objects.count(), 1) cluster = WebsiteCluster.objects.all()[0] self.assertEqual(cluster.website_set.count(), 1) # sign in from WordPress, from new version of plugin from the website registered with resp = c.post( reverse('api_sign_in'), { 'api_token': '*****@*****.**', 'api_secret': 'holymomma', 'website_url': 'http://testwebsite.com', }) # assertions for existing website in cluster self.assertNotContains(resp, "log") self.assertContains(resp, profile.account_key) self.assertContains(resp, package.identifier) # sign in from WordPress, from new version of plugin from a new website resp = c.post( reverse('api_sign_in'), { 'api_token': '*****@*****.**', 'api_secret': 'holymomma', 'website_url': 'http://testwebsite2.com', }) self.assertContains(resp, "log") self.assertContains(resp, profile.account_key) # create a new website in the cluster (done from getpushmonkey.com Dashboard) website = Website( cluster=cluster, return_url="http://testwebsite2.com/wp-admin/index.php", website_name="Test Website 2", website_url="http://testwebsite2.com") package2 = create_push_package( os.path.join(settings.MEDIA_ROOT, 'test2')) website.account_key = package2.identifier website.save() self.assertEqual(cluster.website_set.count(), 2) # sign in AGAIN from WordPress, from new version of plugin from a new website resp = c.post( reverse('api_sign_in'), { 'api_token': '*****@*****.**', 'api_secret': 'holymomma', 'website_url': 'http://testwebsite2.com', }) self.assertNotContains(resp, "log") self.assertContains(resp, website.account_key) self.assertNotContains(resp, profile.account_key)