def email_on_comment(request, object_id): log = logging.getLogger('pollajax.email_on_comment') comment = ThreadedComment.objects.get(id=object_id) poll = Poll.objects.get(id=comment.object_id) #@UndefinedVariable if comment.parent_id: parent_comment = ThreadedComment.objects.get(id=comment.parent_id) user = parent_comment.user data = UserService(user=user).getUserData() if data.email_on_comment_reply: # someone replied to your comment body = """Hello!<br/>It looks like %s has replied to your comment on the poll <a href="%s">%s</a>. <br/>Just thought you'd like to know! <br/> Thanks! <br/> P.S. If you'd like to turn off these emails you can visit your settings from the user profile page. """ % (comment.user, settings_local.HOST_NAME + "view-poll/" + poll.url + "/", poll.question) subject, from_email, to = '%s has replied to your comment' % comment.user, '*****@*****.**', parent_comment.user.email text_content = 'Hello!\nIt looks like %s has replied to your comment on the poll: %s. Just thought you would like to know!\n\nThanks!\nP.S. If you would like to turn off these emails you can visit your settings from the user profile page.' % ( comment.user, poll.question) html_content = body msg = EmailMultiAlternatives(subject, text_content, from_email, [to]) msg.attach_alternative(html_content, "text/html") try: msg.send() except: # swallow zee exceptions!! log.error("could not send email to %s" % parent_comment.user.email) else: data = UserService(user=poll.user).getUserData() # someone replied to your poll if data.email_on_poll_comment: body = """Hello!<br/>It looks like %s has commented on your poll <a href="%s">%s</a>. <br/>Just thought you'd like to know! <br/> Thanks! <br/> P.S. If you'd like to turn off these emails you can visit your settings from the user profile page. """ % (comment.user, settings_local.HOST_NAME + "view-poll/" + poll.url + "/", poll.question) subject, from_email, to = '%s has commented on your poll' % comment.user, '*****@*****.**', poll.user.email text_content = 'Hello!\nIt looks like %s has commented on your poll: %s.\nJust thought you would like to know!\n\nThanks!\nP.S. If you would like to turn off these emails you can visit your settings from the user profile page.' % ( comment.user, poll.question) html_content = body msg = EmailMultiAlternatives(subject, text_content, from_email, [to]) msg.attach_alternative(html_content, "text/html") try: msg.send() except: # KILL ZEE EXCEPTIONS log.error("could not send email to %s" % poll.user.email) return HttpResponse()
def set_chart_type(request): chart_type = request.GET.get("val", None) if not consts.CHART_TYPES_WHITE_LIST.count(chart_type): return HttpResponse(content="Not Saved") user = request.user data = UserService(user=user).getUserData() data.default_chart_type = chart_type data.save() return HttpResponse(content="Saved your selection: %s" % chart_type)
def which_pic(request): val = int(request.GET.get("val", None)) val = val == 1 data = UserService(user=request.user).getUserData() data.use_profile_pic = val data.save() if val: result = "Pollstruck pic" else: result = "Facebook pic" return HttpResponse(content="Saved your selection: %s" % result)
def email_on_comment_reply(request): user = request.user val = int(request.GET.get("val", None)) val = val == 1 data = UserService(user=user).getUserData() data.email_on_comment_reply = val data.save() if val: result = "You will get an email when someone replies to your comment on a poll" else: result = "You won't get an email when someone replies to your comment on a poll" return HttpResponse(content=result)
def link_new_window(request): user = request.user val = int(request.GET.get("val", None)) val = val == 1 data = UserService(user=user).getUserData() data.link_in_new_window = val data.save() if val: result = "Open in new window" else: result = "Open in same window" return HttpResponse(content="Saved your selection: %s" % result)
def email_on_vote(request): user = request.user val = int(request.GET.get("val", None)) val = val == 1 data = UserService(user=user).getUserData() data.email_on_vote = val data.save() if val: result = "You will get an email when someone votes on your poll" else: result = "You won't receieve an email when someone votes on your poll" return HttpResponse(content="Saved your selection: %s" % result)
def get_user_pic(id, size): u = User.objects.get(id=id) data = UserService(user=u).getUserData() if data.facebook_id and (not data.use_profile_pic): if size == 'big': return '<fb:profile-pic uid="' + str( data.facebook_id ) + '" linked="false" facebook-logo="true" size="normal" height="128"></fb:profile-pic>' elif size == 'medium': return '<fb:profile-pic uid="' + str( data.facebook_id ) + '" linked="false" facebook-logo="true" size="small" height="64"></fb:profile-pic>' elif size == 'small': return '<fb:profile-pic uid="' + str( data.facebook_id ) + '" linked="false" facebook-logo="true" size="small" height="24"></fb:profile-pic>' else: return '<fb:profile-pic uid="' + str( data.facebook_id ) + '" linked="false" facebook-logo="true" size="tiny" height="16"></fb:profile-pic>' else: if size == "big": return '<img alt="' + u.username + '" src="' + settings_local.USER_FILES_URL + settings_local.USER_FILES_THUMBS_BIG + data.profile_pic + '" />' elif size == "medium": return '<img alt="' + u.username + '" src="' + settings_local.USER_FILES_URL + settings_local.USER_FILES_THUMBS_MEDIUM + data.profile_pic + '" />' elif size == "small": return '<img alt="' + u.username + '" src="' + settings_local.USER_FILES_URL + settings_local.USER_FILES_THUMBS_SMALL + data.profile_pic + '" />' else: return '<img alt="' + u.username + '" src="' + settings_local.USER_FILES_URL + settings_local.USER_FILES_THUMBS_TINY + data.profile_pic + '" />'
def render(request, template, vars=None): baseVars = {} baseVars["debug"] = settings.DEBUG baseVars["FACEBOOK_API_KEY"] = settings.FACEBOOK_API_KEY baseVars["FACEBOOK_SECRET_KEY"] = settings.FACEBOOK_SECRET_KEY baseVars["USER_FILES_URL"] = StringUtils.addTrailingSlash( settings_local.USER_FILES_URL) baseVars["USER_FILES_THUMBS_BIG"] = StringUtils.addTrailingSlash( settings_local.USER_FILES_THUMBS_BIG) baseVars["USER_FILES_THUMBS_MEDIUM"] = StringUtils.addTrailingSlash( settings_local.USER_FILES_THUMBS_MEDIUM) baseVars["USER_FILES_THUMBS_SMALL"] = StringUtils.addTrailingSlash( settings_local.USER_FILES_THUMBS_SMALL) baseVars["USER_FILES_THUMBS_TINY"] = StringUtils.addTrailingSlash( settings_local.USER_FILES_THUMBS_TINY) baseVars["POLL_FILES_URL"] = StringUtils.addTrailingSlash( settings_local.POLL_FILES_URL) baseVars["POLL_RESULTS_MAGIC_THRESH"] = consts.POLL_RESULTS_MAGIC_THRESH baseVars["SITE_NAME"] = consts.SITE_NAME baseVars["leader_board_ad"] = adfactory.get_leaderboard() baseVars["med_square_ad"] = adfactory.get_medium_square() baseVars[ "POLL_VOTES_BEFORE_PERMANENTLY_ACTIVE"] = consts.POLL_VOTES_BEFORE_PERMANENTLY_ACTIVE tags = Tag.objects.filter().order_by( '-poll_count')[:100] #@UndefinedVariable baseVars["header_tags"] = tags if request.user.is_authenticated(): user = request.user baseVars["user"] = user us = UserService(user) data = us.getUserData() msgCount = PollsterMessage.objects.filter( read=False, to_user=request.user).count() #@UndefinedVariable baseVars["newMail"] = msgCount > 0 baseVars["newMailCnt"] = msgCount baseVars["profile_pic"] = data.profile_pic # if conflict between child class and base class vars then child wins # so child can override base vars if vars: baseVars.update(vars) return render_to_response(template, baseVars)
def friend(request): id = request.GET.get("id") user = User.objects.get(id=id) if request.user == user: return HttpResponseForbidden("Nope!!") us = UserService(request.user) data = us.getUserData() # add friend data.friends.add(user) data.save() # do reverse as well # TODO: check user settings before auto adding this to_data = UserService(user).getUserData() # add friend to_data .friends.add(request.user) to_data.save() # notify user ps = PollService() subject = "%s added you as friend" % request.user.username body = "Hi, %s has just added you as a friend. As a result %s has been automatically added to your friends list.\n This is because he/she added you to their list. You can change this setting in your settings if you like." % (request.user.username, request.user.username) ps.sendPollsterMessage(to_user=user, from_user=request.user, subject=subject, body=body) return HttpResponse(content="You are now friends!")
def render(request, template, vars=None): baseVars = {} baseVars["debug"] = settings.DEBUG baseVars["FACEBOOK_API_KEY"] = settings.FACEBOOK_API_KEY baseVars["FACEBOOK_SECRET_KEY"] = settings.FACEBOOK_SECRET_KEY baseVars["USER_FILES_URL"] = StringUtils.addTrailingSlash(settings_local.USER_FILES_URL) baseVars["USER_FILES_THUMBS_BIG"] = StringUtils.addTrailingSlash(settings_local.USER_FILES_THUMBS_BIG) baseVars["USER_FILES_THUMBS_MEDIUM"] = StringUtils.addTrailingSlash(settings_local.USER_FILES_THUMBS_MEDIUM) baseVars["USER_FILES_THUMBS_SMALL"] = StringUtils.addTrailingSlash(settings_local.USER_FILES_THUMBS_SMALL) baseVars["USER_FILES_THUMBS_TINY"] = StringUtils.addTrailingSlash(settings_local.USER_FILES_THUMBS_TINY) baseVars["POLL_FILES_URL"] = StringUtils.addTrailingSlash(settings_local.POLL_FILES_URL) baseVars["POLL_RESULTS_MAGIC_THRESH"] = consts.POLL_RESULTS_MAGIC_THRESH baseVars["SITE_NAME"] = consts.SITE_NAME baseVars["leader_board_ad"] = adfactory.get_leaderboard() baseVars["med_square_ad"] = adfactory.get_medium_square() baseVars["POLL_VOTES_BEFORE_PERMANENTLY_ACTIVE"] = consts.POLL_VOTES_BEFORE_PERMANENTLY_ACTIVE tags = Tag.objects.filter().order_by('-poll_count')[:100] #@UndefinedVariable baseVars["header_tags"] = tags if request.user.is_authenticated(): user = request.user baseVars["user"] = user us = UserService(user) data = us.getUserData() msgCount = PollsterMessage.objects.filter(read=False, to_user=request.user).count() #@UndefinedVariable baseVars["newMail"] = msgCount > 0 baseVars["newMailCnt"] = msgCount baseVars["profile_pic"] = data.profile_pic # if conflict between child class and base class vars then child wins # so child can override base vars if vars: baseVars.update(vars) return render_to_response(template, baseVars)
def pic(request, username=None): vars= {} user = User.objects.get(username=username) if user != request.user: return HttpResponseForbidden("NopeLOL!") us = UserService(user) data = us.getUserData() if data.profile_pic: vars["pic"] = data.profile_pic form = ProfilePicForm() if request.method == 'POST': form = ProfilePicForm(request.POST) if form.is_valid(): f = request.FILES['file'] us.uploadUserPic(f) return HttpResponseRedirect("/profile/%s/pic/" % username) vars["form"] = form return base.render(request=request, template="user/profile_pic.html", vars=vars)
def watch_poll(request): """ ajax handler signs up users to watch a poll """ log = logging.getLogger('pollview.watch_poll') pid = request.GET.get("pid", None) type = request.GET.get("type", None) ps = PollService() if type == 'a': # add the poll to request users watch userdata = UserService(request.user).getUserData() poll = Poll.objects.get(id=pid, active=True) #@UndefinedVariable if PollWatch.objects.filter( user=request.user, poll=poll).count() == 0: #@UndefinedVariable pw = PollWatch() pw.poll = poll pw.user = request.user pw.save() userdata.polls_watched.add(pw) userdata.save() else: log.error("User trying to watch poll multiple times, user: %s" % request.user.username) return HttpResponse("Already watching!") if poll.user != request.user: # send message to poll creator # as long as you arent poll creator subject = "%s is watching your poll" % request.user.username body = "Hello. This is just a note to let you know %s is watching your poll '%s'. Thanks, The Mgmt." % ( request.user.username, poll.question) ps.sendPollsterMessage(to_user=poll.user, from_user=request.user, subject=subject, body=body) return HttpResponse("You are watching this poll") elif type == 'd': userdata = UserService(user=request.user).getUserData() poll = Poll.objects.get(id=pid) #@UndefinedVariable pw = PollWatch.objects.get(user=request.user, poll=poll) #@UndefinedVariable userdata.polls_watched.remove(pw) userdata.save() pw.delete() return HttpResponse("You are no longer watching this poll") return HttpResponseForbidden("unauthorized")
def index(request, username=None, polls=None, vars=None, page_num=1, page_link_prefix=None): #if vars == None: # return voted_on(request, username=username, page_num=page_num) #vars = {"class":"index-view"} user_for_profile = None if username == None: # if no username specified then just display # profile of user who is logged in user_for_profile = request.user else: user_for_profile = User.objects.get(username=username) vars["user_for_profile"] = user_for_profile vars['show_ad'] = True # get some sweet user stats! total_polls_count = Poll.objects.filter(active=1).count() #@UndefinedVariable user_polls_count = Poll.objects.filter(user=user_for_profile, active=1).count() #@UndefinedVariable vars["user_polls_count"] = user_polls_count if total_polls_count > 0: vars["user_polls_percent"] = (1.0 * user_polls_count / total_polls_count) * 100 user_comments_count = 0 poll_set = set() for tc in ThreadedComment.objects.filter(user=user_for_profile): poll_set.add(tc.object_id) user_comments_count+=1 vars["user_comments_count"] = user_comments_count vars["user_poll_comments"] = len(poll_set) user_votes_count = PollVote.objects.filter(user=user_for_profile).count() #@UndefinedVariable vars["user_votes_count"] = user_votes_count if total_polls_count > 0: vars["user_votes_percent"] = (1.0 * user_votes_count / total_polls_count) * 100 # check owner owner = user_for_profile.username == request.user.username vars["owner"] = owner # pass in the logged in user if not vars.has_key('activity'): if not page_link_prefix: page_link_prefix = "/profile/%s" % user_for_profile.username polls = PollService().getPollsForLister(polls, request.user, page_num=page_num, page_link_prefix=page_link_prefix) vars.update(polls) else: pass vars["user_prof_data"] = UserService(user_for_profile).getUserData() vars["messageForm"] = MessageForm() return base.render(request, "user/profile.html", vars)
def watch_poll(request): """ ajax handler signs up users to watch a poll """ log = logging.getLogger('pollview.watch_poll') pid = request.GET.get("pid", None) type = request.GET.get("type", None) ps = PollService() if type == 'a': # add the poll to request users watch userdata = UserService(request.user).getUserData() poll = Poll.objects.get(id=pid, active=True) #@UndefinedVariable if PollWatch.objects.filter(user=request.user, poll=poll).count() == 0: #@UndefinedVariable pw = PollWatch() pw.poll = poll pw.user = request.user pw.save() userdata.polls_watched.add(pw) userdata.save() else: log.error("User trying to watch poll multiple times, user: %s" % request.user.username) return HttpResponse("Already watching!") if poll.user != request.user: # send message to poll creator # as long as you arent poll creator subject = "%s is watching your poll" % request.user.username body = "Hello. This is just a note to let you know %s is watching your poll '%s'. Thanks, The Mgmt." % (request.user.username, poll.question) ps.sendPollsterMessage(to_user=poll.user, from_user=request.user, subject=subject, body=body) return HttpResponse("You are watching this poll") elif type == 'd': userdata = UserService(user=request.user).getUserData() poll = Poll.objects.get(id=pid) #@UndefinedVariable pw = PollWatch.objects.get(user=request.user, poll=poll) #@UndefinedVariable userdata.polls_watched.remove(pw) userdata.save() pw.delete() return HttpResponse("You are no longer watching this poll") return HttpResponseForbidden("unauthorized")
def handle_noargs(self, **options): users = [ "yoyo_champion", "speakerbox", "camera-obscura", "chessmstr9000", "beerguy25", "LA girl", "bikethief", "punkyparty", "jonjon", "nkomar", "tracerbullet", "napolean", "polldancer", "answer_master", "slashdot_guy", "power_poller", "stlcl", "smither palmer", "23skidoo", "leslie anne", "mary w", "charleswes", "jerkateer", "band-aid", "cameragirl", "brodeo5000", "mona lisa", "cigbum", "toker", "superdrunkie", "moleskinnotebook", "needanotherbeer", "superbutt", "shopping maniac", "disco stu", "chef", "sgt terry", "wolfshirt", "ted streetcar", "dc", "ew", "dakur", "starpony", "zoop", "higgins", "nineve", "salstress", "mario", "miaux", "theo", "millicent", "moss", "multimind", "sefafim", "dddave", "bukowski", "misses", "xartet", "bougyman", "merreck", "magus", "igor", "furcifer" ] print len(users) raise PollsterException("Are you sure you are creating new users?") for user in users: user = UserService().createUser(username=user, email=user + "@parsworld.com", password="******") self.log.debug('created %s' % user.username)
def index(request, poll_url=None, demographics=None, preview=False): """ index handler """ log = logging.getLogger("POLL VIEW") pollService = PollService() vars = {} vars['show_ad'] = True vars["pollview"] = True vars["preview"] = preview p = None random_poll = pollService.get_random_polls(1, request.user) if len(random_poll) > 0: vars["random_poll"] = random_poll[0] if poll_url == None: return HttpResponseRedirect("/view-poll/%s/" % random_poll.url) else: try: # get the poll and its tags if preview: p = Poll.objects.get(url=poll_url) #@UndefinedVariable if request.user != p.user: log.debug( "User %s trying to preview poll he doesn't own, %s" % (request.user.username, p.url)) raise Http404 else: p = Poll.objects.get(url=poll_url, active=True) #@UndefinedVariable except Poll.DoesNotExist: #@UndefinedVariable log.debug( "Attempt to view poll which is not active or does not exist, trying to send to create, slug: %s" % poll_url) return HttpResponseRedirect("/create-poll/answers/%s/" % poll_url) tags = p.tags.all() vars["tags"] = tags vars["poll"] = p if p.description and p.description != "": vars["poll_desc"] = p.description if p.link: vars["domain"] = urlparse(p.link)[1] if p.total_votes == 0: vars["noVotes"] = True # get the poll files pf = PollFile.objects.filter(poll=p) #@UndefinedVariable vars["pollFiles"] = pollService.get_poll_file_w_icons(pf) # check for content box if len(pf) > 0 or p.video_link or p.link: vars["showContentBox"] = True # do not show voting form if user has already voted form = None results = pollService.get_poll_results(p, drop_zero_results=False) # user is logged in if request.user.is_authenticated(): # check to see if user is watching this us = UserService(request.user) data = us.getUserData() if data.polls_watched.filter(poll=p).count() > 0: vars["watching"] = True if request.user == p.user: vars["creator"] = True # get the answer forms try: # check if user has voted poll_vote = PollVote.objects.get( poll=p, user=request.user) #@UndefinedVariable vars['your_answer'] = poll_vote.poll_answer.answer except PollVote.DoesNotExist: #@UndefinedVariable # they haven't so show them the answer form form = poll_answer_style_factory(consts.PREDEFINED_ANSWERS, p, results) except PollVote.MultipleObjectsReturned: #@UndefinedVariable # oh jesus, somehow they have multiple votes, log it and take their first one poll_vote = PollVote.objects.filter( poll=p, user=request.user)[0] #@UndefinedVariable logging.getLogger("PollView").critical( "user has more than one vote for a poll id: %d and user: %s." % (p.id, request.user.username)) else: form = poll_answer_style_factory(consts.PREDEFINED_ANSWERS, p, results) # open flash chart demographic_url_param = '' if demographics: demographic_url_param = demographics ansForm = AnswerForm() vars["answerForm"] = ansForm vars['form'] = form # poll display type chart_type = consts.DEFAULT_CHART_TYPE vars["link_in_new_window"] = True if request.user.is_authenticated(): data = UserService(request.user).getUserData() vars["link_in_new_window"] = data.link_in_new_window chart_type = data.default_chart_type # get the gchart vars["chart_type"] = chart_type gcf = GChartFactory() res_w_votes = [] res_wo_votes = [] # grab only the results with votes to display on the chart for r in results: if r.votes > 0: res_w_votes.append(r) else: res_wo_votes.append(r) pchart = gcf.get_chart(res_w_votes) vars["gChart"] = pchart.get_url() vars["results"] = res_w_votes vars['results_wo_votes'] = res_wo_votes # create description tag: description = "" description += "Is it: " for i in range(0, len(vars["results"])): a = vars["results"][i] if isinstance(a.answer, PollAnswer): description += a.answer.answer + ", " if i + 1 == len(vars["results"]) - 1: description += "or " description = description.rstrip(", ") description += "? " if p.description: description += p.description vars["meta_desc"] = description if p.link: vars['domain'] = urlparse(p.link) return base.render(request, "pollview.html", vars)
def watching(request, username=None, page_num=1): us = UserService(user=User.objects.get(username=username)) polls = us.getPollsWatched() return index(request, username, polls, {"class":"watch-view"}, page_num=page_num, page_link_prefix="/profile/%s/watching" % username)
def getUserFeed(self, user, owner=False, phase=0, request_user=None): """ Gets the activity feed for a user This method is the hoss method of all methods in methodtown """ us = UserService(user=user) userdata = us.getUserData() userdata_friends = userdata.friends.all() if not owner: request_user_friends = UserService(user=request_user).getFriends() friend_ids = [friend.id for friend in request_user_friends] userdata_friends = userdata_friends.filter(id__in=friend_ids) user_feed = [] # create the motherfuckin window bitches!!!!!! start_index = phase * consts.POLL_ACTIVITY_WINDOW end_index = (phase+1) * consts.POLL_ACTIVITY_WINDOW self.log.debug("start index: %d -- end index: %d" % (start_index, end_index)) self.log.debug("Phase: %d" % phase) if owner: # only show friends stuff on owner feed for f in userdata_friends: # get polls friends created friend_polls = Poll.objects.filter(user=f, active=True).order_by('-date_created') #@UndefinedVariable for fp in friend_polls: timestamp = time.mktime(fp.date_created.timetuple()) ci = CreatedItem(timestamp=timestamp, poll=fp, date=fp.date_created) ci.friend_related = True user_feed.append(ci) # get friends votes friend_votes = PollVote.objects.filter(user=f).order_by('-date_created') #@UndefinedVariable for fv in friend_votes: timestamp = time.mktime(fv.date_created.timetuple()) vi = VoteItem(vote=fv, timestamp=timestamp, poll=fv.poll, date=fv.date_created) vi.friend_related = True vi.friend_voted = True user_feed.append(vi) # get friends comments friend_comments = ThreadedComment.objects.filter(user=f).order_by('-date_modified') for fc in friend_comments: timestamp = time.mktime(fc.date_modified.timetuple()) ci = CommentItem(comment=fc, timestamp=timestamp, poll=fc.content_object, date=fc.date_modified) ci.friend_related = True ci.friend_commented = True user_feed.append(ci) # get polls created by user user_polls = Poll.objects.filter(user=user, active=True).order_by('-date_created') #@UndefinedVariable for poll in user_polls: self.appendPollVotesAndComments(user_feed=user_feed, poll=poll, user_related=True, start_index=start_index, end_index=end_index) # add polls user created timestamp = time.mktime(poll.date_created.timetuple()) ci = CreatedItem(timestamp=timestamp, poll=poll, date=poll.date_created) ci.user_related = True user_feed.append(ci) # get user's watched polls watched_polls = userdata.polls_watched.order_by('-poll__date_modified') for wp in watched_polls: self.appendPollVotesAndComments(user_feed=user_feed, poll=wp.poll, watching=True, start_index=start_index, end_index=end_index) # get users votes user_votes = PollVote.objects.filter(user=user).order_by('-date_created') #@UndefinedVariable for uv in user_votes: timestamp = time.mktime(uv.date_created.timetuple()) vi = VoteItem(vote=uv, timestamp=timestamp, poll=uv.poll, date=uv.date_created) try: vi = user_feed[user_feed.index(vi)] except ValueError: user_feed.append(vi) vi.user_voted = True # get user comments user_comments = ThreadedComment.objects.filter(user=user).order_by('-date_modified') for uc in user_comments: timestamp = time.mktime(uc.date_modified.timetuple()) ci = CommentItem(comment=uc, timestamp=timestamp, poll=uc.content_object, date=uc.date_modified) try: ci = user_feed[user_feed.index(ci)] except ValueError: user_feed.append(ci) ci.user_commented = True # sort that shit out remain = len(user_feed) > end_index user_feed.sort() user_feed.reverse() # TODO: FOR THE LOVE OF GOD CACHE THE F*****G USER_FEED RIGHT HERE!!!!!!!!!!!!!!!!!!!!!!!!!! user_feed = user_feed[start_index:end_index] return user_feed, remain
def facebook_connect(request): next = request.GET.get("next", None) vars = {} form = FacebookConnectForm() vars["form"] = form log = logging.getLogger('facebook_connect') request.session['session_key'] = request.COOKIES.get( settings.FACEBOOK_API_KEY + '_session_key') request.session['uid'] = request.COOKIES.get(settings.FACEBOOK_API_KEY + '_uid') log.debug("session key: " + str(request.session['session_key'])) log.debug("uid: " + str(request.session['uid'])) fb = FacebookService().getFacebookSession(request) if not fb: log.critical("Facebook Service did not initialize") return HttpResponseRedirect(fb.get_login_url()) vars["fb"] = fb uid = fb.users.getLoggedInUser() uid = int(uid) log.debug("user id: " + str(uid)) try: data = UserData.objects.get(facebook_id=uid) #@UndefinedVariable # user already has facebook connected to an account # just log them in and redirect them user = User.objects.get(id=data.user.id) log.debug("User already exists...") if not request.user.is_authenticated(): user = auth.authenticate( username=user.username, password=FacebookService().getUserPassword(uid)) try: auth.login(request, user) except NotImplementedError: # user already had a pollstruck account with a diff password vars["login_block"] = True vars["no_facebook"] = True vars["form"] = LoginForm() return base.render(request=request, template="user/facebook_connect.html", vars=vars) if next: return HttpResponseRedirect(next) return HttpResponseRedirect("/profile/%s/" % user.username) except UserData.DoesNotExist: #@UndefinedVariable if request.user.is_authenticated() and request.user.userdata_set.get( user=request.user).facebook_id == None: log.debug("linking accounts") # user has pollstruck account already but no facebook # link their account to facebook automatically us = UserService(user=request.user) data = us.getUserData() data.facebook_id = uid data.save() if next: return HttpResponseRedirect(next) return HttpResponseRedirect('/profile/%s/' % request.user.username) # they are good to go if request.method == 'POST': form = FacebookConnectForm(request.POST) vars["form"] = form if form.is_valid(): # create a user for the facebook user username = form.cleaned_data["username"] email = form.cleaned_data["email"] if User.objects.filter(username=username).count() > 0: vars["user_error"] = "That username exists" return base.render(request=request, template="user/facebook_connect.html", vars=vars) if User.objects.filter(email=email).count() > 0: vars["email_error"] = "That email exists" return base.render(request=request, template="user/facebook_connect.html", vars=vars) us = UserService() user = us.createUser( username=username, email=email, password=FacebookService().getUserPassword(uid)) auth.login(request, user) data = us.getUserData() data.facebook_id = uid # default all *new* incoming facebook users to use their facebook pic data.use_profile_pic = False data.save() if next: return HttpResponseRedirect(next) return HttpResponseRedirect('/') else: pass return base.render(request=request, template="user/facebook_connect.html", vars=vars)
def getUserFeed(self, user, owner=False, phase=0, request_user=None): """ Gets the activity feed for a user This method is the hoss method of all methods in methodtown """ us = UserService(user=user) userdata = us.getUserData() userdata_friends = userdata.friends.all() if not owner: request_user_friends = UserService(user=request_user).getFriends() friend_ids = [friend.id for friend in request_user_friends] userdata_friends = userdata_friends.filter(id__in=friend_ids) user_feed = [] # create the motherfuckin window bitches!!!!!! start_index = phase * consts.POLL_ACTIVITY_WINDOW end_index = (phase + 1) * consts.POLL_ACTIVITY_WINDOW self.log.debug("start index: %d -- end index: %d" % (start_index, end_index)) self.log.debug("Phase: %d" % phase) if owner: # only show friends stuff on owner feed for f in userdata_friends: # get polls friends created friend_polls = Poll.objects.filter( user=f, active=True).order_by('-date_created') #@UndefinedVariable for fp in friend_polls: timestamp = time.mktime(fp.date_created.timetuple()) ci = CreatedItem(timestamp=timestamp, poll=fp, date=fp.date_created) ci.friend_related = True user_feed.append(ci) # get friends votes friend_votes = PollVote.objects.filter(user=f).order_by( '-date_created') #@UndefinedVariable for fv in friend_votes: timestamp = time.mktime(fv.date_created.timetuple()) vi = VoteItem(vote=fv, timestamp=timestamp, poll=fv.poll, date=fv.date_created) vi.friend_related = True vi.friend_voted = True user_feed.append(vi) # get friends comments friend_comments = ThreadedComment.objects.filter( user=f).order_by('-date_modified') for fc in friend_comments: timestamp = time.mktime(fc.date_modified.timetuple()) ci = CommentItem(comment=fc, timestamp=timestamp, poll=fc.content_object, date=fc.date_modified) ci.friend_related = True ci.friend_commented = True user_feed.append(ci) # get polls created by user user_polls = Poll.objects.filter(user=user, active=True).order_by( '-date_created') #@UndefinedVariable for poll in user_polls: self.appendPollVotesAndComments(user_feed=user_feed, poll=poll, user_related=True, start_index=start_index, end_index=end_index) # add polls user created timestamp = time.mktime(poll.date_created.timetuple()) ci = CreatedItem(timestamp=timestamp, poll=poll, date=poll.date_created) ci.user_related = True user_feed.append(ci) # get user's watched polls watched_polls = userdata.polls_watched.order_by('-poll__date_modified') for wp in watched_polls: self.appendPollVotesAndComments(user_feed=user_feed, poll=wp.poll, watching=True, start_index=start_index, end_index=end_index) # get users votes user_votes = PollVote.objects.filter(user=user).order_by( '-date_created') #@UndefinedVariable for uv in user_votes: timestamp = time.mktime(uv.date_created.timetuple()) vi = VoteItem(vote=uv, timestamp=timestamp, poll=uv.poll, date=uv.date_created) try: vi = user_feed[user_feed.index(vi)] except ValueError: user_feed.append(vi) vi.user_voted = True # get user comments user_comments = ThreadedComment.objects.filter( user=user).order_by('-date_modified') for uc in user_comments: timestamp = time.mktime(uc.date_modified.timetuple()) ci = CommentItem(comment=uc, timestamp=timestamp, poll=uc.content_object, date=uc.date_modified) try: ci = user_feed[user_feed.index(ci)] except ValueError: user_feed.append(ci) ci.user_commented = True # sort that shit out remain = len(user_feed) > end_index user_feed.sort() user_feed.reverse() # TODO: FOR THE LOVE OF GOD CACHE THE F*****G USER_FEED RIGHT HERE!!!!!!!!!!!!!!!!!!!!!!!!!! user_feed = user_feed[start_index:end_index] return user_feed, remain
def getPollsForLister(self, polls=None, user=None, page_num=1, page_link_prefix=""): """ @param user: ALWAYS the request.user given a list of poll objects, this will return a hash with a list of tuples with the following order { "paginator":paginator object, "polls":[(poll, file, tags), ...] } This badboy also returns some major paging shit!!!!! """ if polls == None: return None request_user = user pollListerHash = {} paged_polls = Paginator(polls, consts.POLL_LISTER_RPP) pollListerHash["paginator"] = paged_polls pollListerHash["total"] = len(polls) polls_page = paged_polls.page(page_num) page_hash = paging_utils.setup_page_hash( paginator=paged_polls, page_num=page_num, page_link_prefix=page_link_prefix) pollListerHash.update(page_hash) polls = polls_page.object_list aug_polls = [] # go over db polls for p in polls: file = None poll_files = p.pollfile_set.all() len_pf = len(poll_files) more_pics = None # check the files first # do single or more picture logic if len_pf > 0: more_pics = 1 if len_pf > 1: more_pics = 2 for pf in poll_files: if pf.main_file == True: # set main thumbnail if selected file = pf.file if file == None: file = poll_files[0].file # get the tags tags = p.tags.all() # store the link domain domain = urlparse(p.link) # check if the REQUEST user has voted voted = False watching = False if request_user and request_user.is_authenticated(): count = p.pollvote_set.filter(user=request_user).count() if count > 0: voted = True rqst_us = UserService(user=request_user).getUserData() if rqst_us.polls_watched.filter(poll=p).count() > 0: watching = True # store it all on the super tuple # gets unpacked in the lister icons = False if p.link or more_pics or p.video_link: icons = True poll_user_data = UserService(p.user).getUserData() results = self.get_poll_results(p, drop_zero_results=True) gcf = GChartFactory() gchart = gcf.get_chart(results, 125, 125) pollhash = {} pollhash['poll'] = p pollhash['file'] = file pollhash['more_pics'] = more_pics pollhash['tags'] = tags pollhash['domain'] = domain pollhash['voted'] = voted pollhash['icons'] = icons pollhash['poll_user_data'] = poll_user_data pollhash['watching'] = watching if p.total_votes > 0: pollhash['chart_url'] = gchart.get_url() else: pollhash[ 'chart_url'] = '/i/icons/chart_ph%d.png' % random.randint( 1, 3) aug_polls.append(pollhash) #aug_polls.append((p, file, more_pics, tags, domain[1], voted, icons, poll_user_data, watching)) pollListerHash["polls"] = aug_polls return pollListerHash
def index(request, poll_url=None, demographics=None, preview=False): """ index handler """ log = logging.getLogger("POLL VIEW") pollService = PollService() vars = {} vars['show_ad'] = True vars["pollview"] = True vars["preview"] = preview p = None random_poll = pollService.get_random_polls(1, request.user) if len(random_poll) > 0: vars["random_poll"] = random_poll[0] if poll_url == None: return HttpResponseRedirect("/view-poll/%s/" % random_poll.url) else: try: # get the poll and its tags if preview: p = Poll.objects.get(url=poll_url) #@UndefinedVariable if request.user != p.user: log.debug("User %s trying to preview poll he doesn't own, %s" % (request.user.username, p.url)) raise Http404 else: p = Poll.objects.get(url=poll_url, active=True) #@UndefinedVariable except Poll.DoesNotExist: #@UndefinedVariable log.debug("Attempt to view poll which is not active or does not exist, trying to send to create, slug: %s" % poll_url) return HttpResponseRedirect("/create-poll/answers/%s/" % poll_url) tags = p.tags.all() vars["tags"] = tags vars["poll"] = p if p.description and p.description != "": vars["poll_desc"] = p.description if p.link: vars["domain"] = urlparse(p.link)[1] if p.total_votes == 0: vars["noVotes"] = True # get the poll files pf = PollFile.objects.filter(poll=p) #@UndefinedVariable vars["pollFiles"] = pollService.get_poll_file_w_icons(pf) # check for content box if len(pf) > 0 or p.video_link or p.link: vars["showContentBox"] = True # do not show voting form if user has already voted form = None results = pollService.get_poll_results(p, drop_zero_results=False) # user is logged in if request.user.is_authenticated(): # check to see if user is watching this us = UserService(request.user) data = us.getUserData() if data.polls_watched.filter(poll=p).count() > 0: vars["watching"] = True if request.user == p.user: vars["creator"] = True # get the answer forms try: # check if user has voted poll_vote = PollVote.objects.get(poll=p, user=request.user) #@UndefinedVariable vars['your_answer'] = poll_vote.poll_answer.answer except PollVote.DoesNotExist: #@UndefinedVariable # they haven't so show them the answer form form = poll_answer_style_factory(consts.PREDEFINED_ANSWERS, p, results) except PollVote.MultipleObjectsReturned: #@UndefinedVariable # oh jesus, somehow they have multiple votes, log it and take their first one poll_vote = PollVote.objects.filter(poll=p, user=request.user)[0] #@UndefinedVariable logging.getLogger("PollView").critical("user has more than one vote for a poll id: %d and user: %s." % (p.id, request.user.username)) else: form = poll_answer_style_factory(consts.PREDEFINED_ANSWERS, p, results) # open flash chart demographic_url_param = '' if demographics: demographic_url_param = demographics ansForm = AnswerForm() vars["answerForm"] = ansForm vars['form'] = form # poll display type chart_type = consts.DEFAULT_CHART_TYPE vars["link_in_new_window"] = True if request.user.is_authenticated(): data = UserService(request.user).getUserData() vars["link_in_new_window"] = data.link_in_new_window chart_type = data.default_chart_type # get the gchart vars["chart_type"] = chart_type gcf = GChartFactory() res_w_votes = [] res_wo_votes = [] # grab only the results with votes to display on the chart for r in results: if r.votes > 0: res_w_votes.append(r) else: res_wo_votes.append(r) pchart = gcf.get_chart(res_w_votes) vars["gChart"] = pchart.get_url() vars["results"] = res_w_votes vars['results_wo_votes'] = res_wo_votes # create description tag: description = "" description += "Is it: " for i in range(0, len(vars["results"])): a = vars["results"][i] if isinstance(a.answer, PollAnswer): description += a.answer.answer + ", " if i+1 == len(vars["results"]) - 1: description += "or " description = description.rstrip(", ") description += "? " if p.description: description += p.description vars["meta_desc"] = description if p.link: vars['domain'] = urlparse(p.link) return base.render(request, "pollview.html", vars)
def facebook_connect(request): next = request.GET.get("next", None) vars = {} form = FacebookConnectForm() vars["form"] = form log = logging.getLogger('facebook_connect') request.session['session_key'] = request.COOKIES.get(settings.FACEBOOK_API_KEY + '_session_key') request.session['uid'] = request.COOKIES.get(settings.FACEBOOK_API_KEY + '_uid') log.debug("session key: " + str(request.session['session_key'])) log.debug("uid: " + str(request.session['uid'])) fb = FacebookService().getFacebookSession(request) if not fb: log.critical("Facebook Service did not initialize") return HttpResponseRedirect(fb.get_login_url()) vars["fb"] = fb uid = fb.users.getLoggedInUser() uid = int(uid) log.debug("user id: " + str(uid)) try: data = UserData.objects.get(facebook_id=uid) #@UndefinedVariable # user already has facebook connected to an account # just log them in and redirect them user = User.objects.get(id=data.user.id) log.debug("User already exists...") if not request.user.is_authenticated(): user = auth.authenticate(username=user.username, password=FacebookService().getUserPassword(uid)) try: auth.login(request, user) except NotImplementedError: # user already had a pollstruck account with a diff password vars["login_block"] = True vars["no_facebook"] = True vars["form"] = LoginForm() return base.render(request=request, template="user/facebook_connect.html", vars=vars) if next: return HttpResponseRedirect(next) return HttpResponseRedirect("/profile/%s/" % user.username) except UserData.DoesNotExist: #@UndefinedVariable if request.user.is_authenticated() and request.user.userdata_set.get(user=request.user).facebook_id == None: log.debug("linking accounts") # user has pollstruck account already but no facebook # link their account to facebook automatically us = UserService(user=request.user) data = us.getUserData() data.facebook_id = uid data.save() if next: return HttpResponseRedirect(next) return HttpResponseRedirect('/profile/%s/' % request.user.username) # they are good to go if request.method == 'POST': form = FacebookConnectForm(request.POST) vars["form"] = form if form.is_valid(): # create a user for the facebook user username = form.cleaned_data["username"] email = form.cleaned_data["email"] if User.objects.filter(username=username).count() > 0: vars["user_error"] = "That username exists" return base.render(request=request, template="user/facebook_connect.html", vars=vars) if User.objects.filter(email=email).count() > 0: vars["email_error"] = "That email exists" return base.render(request=request, template="user/facebook_connect.html", vars=vars) us = UserService() user = us.createUser(username=username, email=email, password=FacebookService().getUserPassword(uid)) auth.login(request, user) data = us.getUserData() data.facebook_id = uid # default all *new* incoming facebook users to use their facebook pic data.use_profile_pic = False data.save() if next: return HttpResponseRedirect(next) return HttpResponseRedirect('/') else: pass return base.render(request=request, template="user/facebook_connect.html", vars=vars)
def index(request): next = request.GET.get("next", None) if request.user.is_authenticated(): if next: return HttpResponseRedirect(next) else: return HttpResponseRedirect('/') vars = {} if request.method == 'POST': # If the form has been submitted... cap_image = request.META['REMOTE_ADDR'] + '.jpg' form = RegForm(request.POST) # A form bound to the POST data if form.is_valid(): # All validation rules pass name = form.cleaned_data["name"] if name and name != "": # check the name honey pot, # if it has anything, return a 404, as to confuse # the ... SCUM BAGS! return HttpResponseNotFound(content="Not found") if form.cleaned_data["username"].strip() == "": return base.render( request, "register.html", { "cap_image": cap_image, "form": form, "error": "Please enter a valid username" }) if form.cleaned_data["password"] != form.cleaned_data[ "confirm_password"]: return base.render( request, "register.html", { "cap_image": cap_image, "form": form, "error": "Passwords do not match" }) if models.User.objects.filter( username=form.cleaned_data["username"]).count() > 0: return base.render(request, "register.html", { "cap_image": cap_image, "form": form, "error": "User exists" }) if models.User.objects.filter( email=form.cleaned_data["email"]).count() > 0: return base.render(request, "register.html", { "cap_image": cap_image, "form": form, "error": "Email exists" }) if form.cleaned_data['imghash'] != sha.new( SALT + form.cleaned_data['imgtext']).hexdigest(): return base.render( request, "register.html", { "cap_image": cap_image, "form": form, "error": "Please enter the correct text" }) # register the user username = cleanName(form.cleaned_data["username"]) user = UserService().createUser( username=username, email=form.cleaned_data["email"], password=form.cleaned_data["password"]) if user is not None: auth.login(request, user) # check redirects next = form.cleaned_data.get("next", None) if next.strip() == "": next = None if next: return HttpResponseRedirect(next) # Redirect after POST return HttpResponseRedirect( '/register/thanks/') # Redirect after POST else: imghash, imgname = get_captcha(request) cap_image = imgname initial = {"next": next, "imghash": imghash} form = RegForm(initial=initial) # An unbound form vars["cap_image"] = cap_image vars["form"] = form return base.render(request, "register.html", vars)