Example #1
0
        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())))
Example #2
0
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
Example #3
0
    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)