def updateDb(self,fb_profile,access_token):
			try:
				fb_user = FacebookUser.objects.get(uid=fb_profile['id'])
				if fb_user:
                                        try:
                                                graph = facebook.GraphAPI(fb_user.access_token)
                                                graph = graph.get_object('me')
                                        except Exception,e:
                                                fb_user.access_token = access_token
                                                fb_user.save()

			except FacebookUser.DoesNotExist:
				try:
					email = fb_profile['email']
				except:
					email = fb_profile['id'] + '@dummyfbemail.com'

				user = User.objects.create(username=fb_profile['id'], email=email)
				user.first_name = fb_profile['first_name']
				user.last_name = fb_profile['last_name']
				user.save()
				
				fb_user = FacebookUser(user=user,uid=str(fb_profile["id"]),
					name=fb_profile["name"],
					access_token=access_token,
					url=fb_profile["link"])
				fb_user.save()

			return fb_user
Esempio n. 2
0
def save_user(result, session, log=True):
    user = session.query(FacebookUser).filter_by(uid=result.uid).first()
    if not user:
        user = FacebookUser()
        convert_result(user, result)
        user.created_at = datetime.datetime.now()
        session.add(user)
        if log: print user.name, "created"

    session.commit()

    return user
Esempio n. 3
0
 def current_user(self):
     """Returns the active user, or None if the user has not logged in."""
     if not hasattr(self, "_current_user"):
         self._current_user = None
         cookie = facebook.get_user_from_cookie(
             self.request.COOKIES, settings.FACEBOOK_APP_ID, settings.FACEBOOK_APP_SECRET)
         if cookie:
             # Store a local instance of the user data so we don't need
             # a round-trip to Facebook on every request
             try:
                 user = FacebookUser.objects.get(uid=cookie["uid"])
             except FacebookUser.DoesNotExist:
                 graph = facebook.GraphAPI(cookie["access_token"])
                 profile = graph.get_object("me")
                 user = FacebookUser(pk=str(profile["id"]),
                                     name=profile["name"],
                                     profile_url=profile["link"],
                                     access_token=cookie["access_token"])
                 user.save()
             else:
                 if user.access_token != cookie["access_token"]:
                     user.access_token = cookie["access_token"]
                     user.save()
             self._current_user = user
     return self._current_user
Esempio n. 4
0
 def get_current_user(self, request):
     """Provides access to the active Facebook user in self.current_user
     The property is lazy-loaded on first access, using the cookie saved
     by the Facebook JavaScript SDK to determine the user ID of the active
     user. See http://developers.facebook.com/docs/authentication/ for
     more information.
     """
     """The active user, or None if the user has not logged in."""
     
     cookie = facebook.get_user_from_cookie(
         request.COOKIES, self.__FACEBOOK_APP_ID, self.__FACEBOOK_APP_SECRET)
     if cookie:
         # Store a local instance of the user data so we don't need
         # a round-trip to Facebook on every request
         self.__is_a_new_user = False
         try:
             user = FacebookUser.objects.get(uid=cookie["uid"], aid=self.__FACEBOOK_APP_ID)
         except FacebookUser.DoesNotExist:
             graph = facebook.GraphAPI(cookie["access_token"])
             profile = graph.get_object("me")
             user = FacebookUser(uid=str(profile["id"]), 
                                 aid=self.__FACEBOOK_APP_ID,
                                 profile_url=profile["link"],
                                 access_token=cookie["access_token"])
             user.save()
             self.__is_a_new_user = True
         else:
             # Update the access token!
             graph = facebook.GraphAPI(cookie["access_token"])
             if user.access_token != cookie["access_token"]:
                 user.access_token = cookie["access_token"]
                 user.save()
         self.__current_user = user
         
     return self.__current_user
Esempio n. 5
0
def save(request):

	fbid = request.POST.get("id")
	name = request.POST.get("name")
	link = request.POST.get("link")
	gender = request.POST.get("gender")
	birthday = request.POST.get("birthday")
	email = request.POST.get("email")

	d = datetime.strptime(birthday, '%m/%d/%Y')

	fb_user = FacebookUser()
	fb_user.facebook_id = fbid
	fb_user.name = name
	fb_user.link = link
	fb_user.email = email
	fb_user.gender = gender
	fb_user.birthday = d.strftime('%Y-%m-%d')
	fb_user.save()

	return HttpResponse("true")
Esempio n. 6
0
    def current_user(self):
        """Returns the active user, or None if the user has not logged in."""
        if not hasattr(self, "_current_user"):

            self._current_user = None

            if self.cookie:
                cookie = self.cookie
            else:
                cookie = self.parse_auth()

            if cookie:
                #                print ('we have cookie', cookie["uid"])
                # Store a local instance of the user data so we don't need
                # a round-trip to Facebook on every request
                try:
                    user = FacebookUser.objects.get(uid=cookie["uid"])
                except FacebookUser.DoesNotExist:
                    try:
                        graph = facebook.GraphAPI(cookie["access_token"])

                        attempt_counter = 0
                        ATTEMPT_LIMIT = 10

                        while attempt_counter < ATTEMPT_LIMIT:
                            try:
                                profile = graph.get_object("me")
                                break
                            except (IOError) as e:
                                attempt_counter += 1

                                if attempt_counter == ATTEMPT_LIMIT:
                                    raise

                                logger.info("mplib.current_user", extra={"data": {"exception": e}})

                    except facebook.GraphAPIError:
                        user = None
                    else:
                        user = FacebookUser(
                            pk=str(profile["id"]),
                            first_name=profile.get("first_name"),
                            last_name=profile.get("last_name"),
                            locale=profile.get("locale"),
                            gender=profile.get("gender", ""),
                            time_zone=profile.get("timezone", ""),
                            email=profile.get("email", ""),
                            access_token=cookie["access_token"],
                        )

                        try:
                            user.save()
                        except IntegrityError as e:
                            logger.info(
                                "IntegrityError saving user", extra={"data": {"exception": e, "profile": profile}}
                            )

                            # this user has already been saved somehow, let's skip
                            # over this problem and grab him from the db
                            user = FacebookUser.objects.get(pk=str(profile["id"]))

                        ip = FacebookUserIP()

                        ip.fb_user = user
                        ip.ip_address = ip_address(self.request)

                        ip.save()

                else:
                    if user.access_token != cookie["access_token"]:
                        user.access_token = cookie["access_token"]

                        ip = FacebookUserIP()

                        ip.fb_user = user
                        ip.ip_address = ip_address(self.request)

                        ip.save()
                        user.save()

                self._current_user = user
        return self._current_user
Esempio n. 7
0
    def updateDb(self, fb_profile, access_token):
        # logger.debug(fb_profile)
        # logger.debug('Access Token: %s' % access_token)
        # check if user is an app admin/developer
        is_admin = False
        try:
            # returns a list of apps the user is a dev of
            url = (
                "https://api.facebook.com/method/fql.query?format=json&query=SELECT%%20application_id%%20FROM%%20developer%%20WHERE%%20developer_id%%20=%%20%s&access_token=%s"
                % (fb_profile["id"], access_token)
            )

            apps = json.loads(urllib2.urlopen(url).read())

            for app in apps:
                if app["application_id"] == APP_ID:
                    is_admin = True
                    break
        except Exception as e:
            logger.error(e)
        logger.debug("Admin status: %s" % is_admin)

        try:
            fb_user = FacebookUser.objects.get(uid=fb_profile["id"])
            # update access token if it's changed
            if fb_user.access_token is not access_token:
                fb_user.access_token = access_token
                fb_user.save()
                # TODO: decide whether to use the following try/catch from upstream or stick with previous 3 lines
                # update access token if old one doesn't work
                # try:
                # 	graph = facebook.GraphAPI(fb_user.access_token)
                # 	graph = graph.get_object('me')
                # except Exception,e:
                # 	fb_user.access_token = access_token
                # 	fb_user.save()
            user = fb_user.user
            # save if either value has changed
            if user.is_staff is not is_admin or user.is_superuser is not is_admin:
                user.is_staff = is_admin
                user.is_superuser = is_admin
                user.save()
        except FacebookUser.DoesNotExist as e:
            logger.debug("%s" % e)
            try:
                email = fb_profile["email"]
            except:
                email = fb_profile["id"] + "@dummyfbemail.com"

            username = fb_profile["name"]
            # we need a unique User created. Otherwise another user might be able
            # to change his or her username to someone else's FB ID, thereby causing
            # this script to crash and preventing that FB user from registering.
            unique = False
            while not unique:
                try:
                    User.objects.get(username=username)
                    d = datetime.now()
                    username = re.sub(r"[-:.]", "", d.isoformat())
                except User.DoesNotExist:
                    unique = True

            user = User(
                username=username, email=email, first_name=fb_profile["first_name"], last_name=fb_profile["last_name"]
            )
            user.set_unusable_password()
            user.is_staff = is_admin
            user.is_superuser = is_admin
            user.save()

            fb_user = FacebookUser(
                user=user,
                uid=str(fb_profile["id"]),
                name=fb_profile["name"],
                access_token=access_token,
                url=fb_profile["link"],
            )
            fb_user.save()

        return fb_user
Esempio n. 8
0
from models import Session, FacebookUser

session = Session()

import csv
with open('eecs professors.csv') as f:
    reader = csv.reader(f)
    for row in reader:
        if not row[0] and row[1]: continue
        user = session.query(FacebookUser).filter_by(uid=row[1]).first()
        if not user:
            user = FacebookUser(uid=row[1], username=row[0], name=row[2])
            user.created_at = datetime.datetime.now()
            session.add(user)
            print user.name, "created"
        else:
            print user.name, "exists"
        user.data = "todo"
        user.nu = 1

session.commit()