def get(self, request, **kwargs): #import pdb; pdb.set_trace() logger.debug("LogoutHandler.get()") #response = HttpResponseRedirect("/") args = dict(current_user=None) if is_mobile(request): template_dir = 'm' else: template_dir = 'w' response = HttpResponseRedirect("/") #response = render_to_response("%s/login_main.tmpl" % template_dir, args) #whfb.set_cookie(response, "fb_user", "", expires=time.time() - 86400) whfb.set_cookie(response, "fb_user", "", domain=config.WH_DOMAIN, path="/", expires=time.time() - 86400) return response
def get(self, request, **kwargs): logger.debug("HomeViewHandler.get()") #import pdb; pdb.set_trace() c_user = self.current_user if c_user is None or c_user.get('access_token', None) is None: args = dict(current_user=c_user) if is_mobile(request): template_dir = 'm' else: template_dir = 'w' response = render_to_response("%s/login_main.tmpl" % template_dir, args) else: args = dict(access_token=c_user['access_token']) response = HttpResponseRedirect("/view.py?" + urllib.urlencode(args)) if self.request.COOKIES.get("fb_user", None) is not None: user_id = whfb.parse_cookie(self.request.COOKIES.get("fb_user")) whfb.set_cookie(response, "fb_user", str(user_id), domain=config.WH_DOMAIN, path="/", expires=time.time() + 30 * 86400) return response
def get(self, request, **kwargs): logger.debug("LoginHandler.get()") args = dict(client_id=config.FACEBOOK_APP_ID, redirect_uri="%s%s" % ( config.WEBSITE_HOST, request.META.get('PATH_INFO')), state=config.FACEBOOK_APP_ID) if self.request.GET.get("code"): #import pdb; pdb.set_trace() args["client_secret"] = config.FACEBOOK_APP_SECRET args["code"] = self.request.GET.get("code") #response = cgi.parse_qs(urllib.urlopen( response = urlparse.parse_qs(urllib.urlopen( "https://graph.facebook.com/oauth/access_token?" + urllib.urlencode(args)).read()) if response.get('access_token', None) is None: del args["client_secret"] del args["code"] return HttpResponseRedirect( "https://www.facebook.com/dialog/oauth?" + urllib.urlencode(args)) access_token = response["access_token"][-1] access_token_expires = long(response["expires"][-1]) # Download the user profile and cache a local instance of the # basic profile info profile = json.load(urllib.urlopen( "https://graph.facebook.com/me?" + urllib.urlencode(dict(access_token=access_token)))) current_user = self.persistence.get_user(profile['id']) if current_user is None: # no record in db current_user = {} current_user[u'_id'] = profile['id'] current_user[u'name'] = profile['name'] current_user[u'link'] = profile['link'] current_user[u'access_token'] = access_token try: current_user[u'access_token_expires'] = long(access_token_expires) except: current_user[u'access_token_expires'] = 0 self.persistence.save('user', current_user) self.client_loc_longitude = self.request.POST.get('longitude', None) or self.request.GET.get('longitude', None) self.client_loc_latitude = self.request.POST.get('latitude', None) or self.request.GET.get('latitude', None) if (self.client_loc_longitude is None or self.client_loc_latitude is None) and \ self.request.GET.get('geobrowsertried', None) is None: response = render_to_response('coordinate.tmpl', {'app_url': config.WEBSITE_HOST + '/view.py', 'signed_request': None, 'refresh_cnt': self.request.GET.get('c', 0), 'access_token': access_token}) whfb.set_cookie(response, "fb_user", str(profile["id"]), path='/', domain=config.WH_DOMAIN, expires=time.time() + 30 * 86400) return response else: return HttpResponseRedirect( # "https://graph.facebook.com/oauth/authorize?" + "https://www.facebook.com/dialog/oauth?" + urllib.urlencode(args))
def post(self, request, **kwargs): #import pdb; pdb.set_trace() flag_login= True self.uid = whfb.parse_cookie(request.COOKIES.get("fb_user")) if self.uid is None: #return HttpResponseRedirect('/') current_user = None self.access_token = None self.access_token_expires = -1 else: current_user = self.current_user self.access_token = current_user['access_token'] self.access_token_expires = current_user['access_token_expires'] # extend access token if expiring within a day self.access_token, self.access_token_expires = self.fb.get_extended_access_token_w_timeout(self.access_token, self.access_token_expires, DAY_IN_SECS) logger.debug("access_token: %s, expires:%s", self.access_token, self.access_token_expires) redirect = self.get_coordinate() if redirect is not None: user_id = whfb.parse_cookie(request.COOKIES.get("fb_user")) if user_id is not None: whfb.set_cookie(redirect, "fb_user", str(user_id), domain=config.WH_DOMAIN, path="/", expires=time.time() + 30 * 86400) return redirect place_list = self.get_queryset() app_url = config.WEBSITE_HOST + '/view.py' if is_mobile(request): template_dir = 'm' else: template_dir = 'w' if len(place_list) == 0: flag_first_time = True template_name = "%s/location_main_first_time_user.tmpl" % template_dir place_list = self.get_general_queryset() else: flag_first_time = False template_name = "%s/location_main.tmpl" % template_dir #import pdb; pdb.set_trace() location_paginator, page, page.object_list, is_paginated = self.paginate_queryset(place_list, kwargs['paginate_by']) # Make sure page request is an int. If not, deliver first page. try: page_num = int(request.GET.get('page', '1')) except ValueError: page_num = 1 # If page request (9999) is out of range, deliver last page of results. try: page = location_paginator.page(page_num) except (EmptyPage, InvalidPage): page = location_paginator.page(location_paginator.num_pages) places = page.object_list recommend_list = [] checkin_list = [] if self.flag_recommend or flag_first_time: recommend_list = places wh_q = 'recommend' else: checkin_list = places wh_q = 'checkin' return render_to_response(template_name, {'checkin_list': checkin_list, 'recommend_list': recommend_list, 'app_url': app_url, 'agent': request.META.get('HTTP_USER_AGENT', None), 'client_country': self.client_loc_country, 'client_state': self.client_loc_state, 'client_city': self.client_loc_city, 'flag_geobrowsertried': request.GET.get('geobrowsertried', False), 'client_lat': self.client_loc_latitude, 'client_long': self.client_loc_longitude, 'ec2_page': config.EC2_APP_PAGE, 'access_token': self.access_token, 'is_paginated': is_paginated, 'page': page, 'paginator': location_paginator, 'flag_login': flag_login, 'current_user': current_user, 'sort_by': self.sort_by, 'wh_q': wh_q })