Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Simpler.settings')
- from django.shortcuts import render_to_response
- from django.template import RequestContext
- from django.shortcuts import render
- from django.http import HttpResponseRedirect, HttpResponse
- from models import intern, intern_list, repalum, Engage,\
- FbProfile, LearningGraph, Question, skill, sup, track, UserProfile, qobj, search, shortlist1, blacklist1,solr_object
- from django.contrib.auth import authenticate, login, logout
- from django.contrib.auth.decorators import login_required
- from django.contrib.sessions.models import Session
- from datetime import datetime
- import json
- from django.contrib.auth.models import User
- import PIL
- from PIL import Image
- import urllib
- from django.views.decorators.csrf import csrf_exempt
- from django.core.cache import cache
- from django.core.urlresolvers import reverse
- import random
- import ast
- from django.utils.encoding import smart_str, smart_unicode
- #from twilio.rest import TwilioRestClient
- from Simpler.settings import PROJECT_PATH
- from django.views import generic
- from pprint import pprint
- import re
- import requests
- import urllib
- from scripts import get_all_bins, sample_data
- from im import * #email sync - Naukri integration.
- from input_to_skills import jd_to_skills
- from spa_prediction import predict_prob_movement
- from clean import codechef_clean, github_clean, stackoverflow_clean,find_scores_from_li
- import jsonpickle
- from random import random
- from query_to_candidates import uid_to_candidate
- PAGE_ACCESS_TOKEN = 'EAAWWcCykL88BAJkujnjAEGZCGAjEdvFPiKNizR5ZCgJm75ihvYq5MMEGMfRNStZBnJ08tYdIkBFrtWMJ235S2gRfiwZAZBZAQUPNQbSmedTWmgNZCV2wZBmLZBInToGfxyWRC89EKEcFSwZBTq4yxAZCCvjVkmzHwSW2Hvexc1X7u1ciAZDZD'
- def tour(request):
- print vars(request.session)
- context = RequestContext(request)
- return render_to_response('SimplerApp/index.html', context)
- def page404(request):
- return render(request,'SimplerApp/404.html')
- def page500(request):
- return render(request,'SimplerApp/500.html')
- def page403(request):
- return render(request,'SimplerApp/403.html')
- def page400(request):
- return render(request,'SimplerApp/400.html')
- def register(request):
- context = RequestContext(request)
- registered = False
- if request.method == 'POST':
- user_form = UserForm(data=request.POST)
- profile_form = UserProfileForm(data=request.POST)
- if user_form.is_valid() and profile_form.is_valid():
- user = user_form.save()
- user.set_password(user.password)
- profile = profile_form.save(commit=False)
- profile.user = user
- try:
- if 'picture' in request.FILES:
- profile.picture = request.FILES['picture']
- profpic = Image.open(profile.picture.url) #Primitive image filter.
- profpic = profpic.resize((300,300), PIL.Image.ANTIALIAS)
- profpic.save(profile.picture.url)
- thumbnail = profpic.resize((32,32), PIL.Image.ANTIALIAS)
- thumbnail.save(str(profile.picture.path).replace('profile_images','thumbnails'), 'JPEG')
- except:
- pass
- profile.created = datetime.now()
- profile.modified = datetime.now()
- name_arr = profile.full_name.split(' ')
- count = 0
- for n in name_arr: #Looks for first word and filters out '' or ' '
- if n != '' and n != ' ':
- user.first_name = n
- break
- name_arr.reverse()
- for t in name_arr:
- if t != '' and t != ' ':
- if t != user.first_name:
- user.last_name = t
- break
- profile.save()
- user.save()
- Post.objects.get(post='Sutton RL book.').followers.add(user) #The new user gets RL notifications.
- registered = True
- else:
- print user_form.errors, profile_form.errors
- else:
- if request.user.is_authenticated():
- return HttpResponseRedirect("/find/")
- user_form = UserForm()
- profile_form = UserProfileForm()
- return render_to_response(
- 'SimplerApp/register.html',
- {'user_form': user_form, 'profile_form': profile_form, 'registered': registered},
- context)
- def user_login(request):
- context = RequestContext(request)
- next=""
- if "next" in request.GET:
- next=request.GET["next"]
- if request.method == 'POST':
- if User.objects.filter(username=request.POST['username']).exists():
- username = request.POST['username']
- else:
- username = request.POST['username'].upper()
- password = request.POST['password']
- user = authenticate(username=username, password=password)
- #if hasattr(user, 'fbprofile'):
- # return HttpResponse("Invalid login details.")
- if user:
- if user.is_active:
- login(request, user)
- print request.POST
- if not next=="":
- print "next : ",next
- return HttpResponseRedirect(next)
- if request.user.username == 'imran':
- return HttpResponseRedirect('/searches/')
- else:
- return HttpResponseRedirect('/searches/')
- else:
- return HttpResponse("Your Quabl account is disabled.")
- else:
- print "Invalid login details: {0}, {1}".format(username, password)
- return HttpResponse("Invalid Username or Password.")
- else:
- if request.user.is_authenticated():
- return HttpResponseRedirect("/searches/")
- return render_to_response('SimplerApp/login.html', {"next":urllib.quote_plus(next)}, context)
- @login_required
- def user_logout(request):
- logout(request)
- return HttpResponseRedirect('/')
- def getUserProfile(request, user_id):
- context = RequestContext(request)
- request_user_id = request.user.id
- request_user = request.user
- user_id_int = int(user_id)
- if request_user_id == user_id_int:
- uprof = UserProfile.objects.get(user=request_user)
- req = {'username':uprof.user.username}
- if uprof.picture:
- req['picurl'] = uprof.picture.url
- else:
- req['picurl'] = '/quablmedia/profile_images/default.jpeg'
- req['fullname'] = request_user.first_name + " " + request_user.last_name
- req['shortbio'] = uprof.shortbio
- data = json.dumps(req)
- else:
- required_user = User.objects.get(id=user_id_int)
- required_user_profile = UserProfile.objects.get(user=required_user)
- req = {'username':required_user.username}
- if required_user_profile.picture:
- req['picurl'] = required_user_profile.picture.url
- else:
- req['picurl'] = '/quablmedia/profile_images/default.jpeg'
- req['fullname'] = required_user.first_name + " " + required_user.last_name
- req['shortbio'] = required_user_profile.shortbio
- data = json.dumps(req)
- return HttpResponse(data)
- def getthumburl(request, username):
- context = RequestContext(request)
- requser = User.objects.get(username=username)
- requp = UserProfile.objects.get(user=requser)
- if requp.picture:
- return HttpResponse((requp.picture.url).replace('profile_images', 'thumbnails'))
- else:
- return HttpResponse('/quablmedia/thumbnails/default.jpeg')
- def feedback(request, fdback):
- context = RequestContext(request)
- fback.objects.create(fback=request.user.username + fdback.replace('xqmx', '?'))
- return HttpResponse('success')
- @login_required
- def find(request):
- print request.user
- if hasattr(request.user, 'graph'):
- return HttpResponseRedirect("/testapp/readings/");
- context = RequestContext(request)
- skills = skill.objects.all()
- idict = {}
- return render_to_response('SimplerApp/find.html', {'idict':idict, 'skills':skills}, context)
- def traindata(request):
- context = RequestContext(request)
- id = request.GET['id']
- #ratee = intern.objects.get(id=id)
- c = intern_list.objects.get_or_create(recruiter=request.user)[0]
- if not c.list:
- c.list = id
- c.save()
- return HttpResponse('New list!')
- elif id not in c.list:
- c.list = c.list + ', ' + id
- c.save()
- return HttpResponse('Added!')
- elif id in c.list:
- return HttpResponse('Already staged!')
- def repalumnus(request):
- context = RequestContext(request)
- id = request.GET['id']
- reported = intern.objects.get(id=id)
- repalum.objects.create(inte=reported, recruiter=request.user)
- return HttpResponse('reported')
- def team(request):
- return render_to_response('SimplerApp/team.html')
- @login_required
- def get_iList(request):
- try:
- c = intern_list.objects.get(recruiter=request.user)
- except:
- c = intern_list(recruiter=request.user)
- c.list = json.dumps([])
- c.save()
- if type(json.loads(c.list)) is not list:
- c.list = json.dumps([])
- c.save()
- #lis = json.loads(c.list)
- #jsonData = json.dumps(lis)
- return HttpResponse(c.list)
- @login_required
- def update_iList(request, intern_id):
- intern_id = int(intern_id)
- if request.GET["type"]: #type is empty if user is not FAT.
- ty = request.GET['type']
- rec = request.GET['istart']
- us = User.objects.get(username=rec)
- interns = intern_list.objects.get(recruiter=us)
- ilist = interns.list
- ilist = json.loads(ilist)
- if type(ilist) is int :
- ilist = [ilist]
- if intern_id in ilist :
- ilist.remove(intern_id)
- jsonData = json.dumps(ilist)
- interns.list = jsonData
- interns.save()
- data = json.dumps("Removed")
- return HttpResponse(data)
- else :
- ilist.append(intern_id)
- jsonData = json.dumps(ilist)
- interns.list = jsonData
- interns.save()
- print interns.list
- data = json.dumps("Added")
- return HttpResponse(data)
- @login_required
- def pipeline(request):
- try:
- c = intern_list.objects.get_or_create(recruiter=request.user)[0]
- except intern.DoesNotExist:
- c = intern_list(recruiter=request.user)
- c.list = json.dumps([])
- c.save()
- return render(request, 'SimplerApp/pipeline.html', {'interns':[]})
- interns = json.loads(c.list)
- if type(interns) is not list:
- c.list = json.dumps([])
- c.save()
- return render(request, 'SimplerApp/pipeline.html', {'interns':[]})
- context_dict = {'interns':[]}
- for intern_id in interns:
- try:
- i = intern.objects.get(id=intern_id)
- doc = {'intern_id':intern_id}
- li_name = i.li_name.title()
- li_url = i.liurl
- li_location = i.li_location
- li_education = smart_str(ast.literal_eval(i.li_education)[0]['title']).upper()
- li_experience = i.li_experience
- li_photo = i.li_photourl
- ilst = i.ilist
- if i.li_skills:
- skills = ast.literal_eval(i.li_skills)
- for i in range(len(skills)):
- skills[i] = smart_str(skills[i])
- for skill in skills:
- if ',' in skill:
- skills.remove(skill)
- li_skills = skills
- else: li_skills = []
- doc['li_url'] = li_url
- doc['li_name'] = li_name
- doc['li_skills'] = li_skills
- doc['li_location'] = li_location
- doc['li_education'] = li_education
- doc['ilist'] = ilst
- doc['ex'] = li_experience
- doc['photo'] = li_photo
- context_dict['interns'].append(doc)
- except:
- continue
- return render(request, 'SimplerApp/pipeline.html', context_dict)
- def mainURL(request):
- url = 'http://fastnext.co/engage/'
- try: url += request.user.company + '/'
- except AttributeError: url += request.user.username + '/'
- return HttpResponse(url)
- def copyurl(request, intern_id):
- try:
- c = Engage.objects.get(recruiter = request.user, _intern = intern.objects.get(id=intern_id))
- return HttpResponse("success")
- except Engage.DoesNotExist:
- c = Engage(recruiter = request.user, _intern = intern.objects.get(id=intern_id))
- c.url = "http://fastnext.co/engage/"
- try: c.url += c.recruiter.company + '/'
- except AttributeError: c.url += c.recruiter.username + '/'
- c.url += c._intern.li_name.lower().replace(' ', '-') + '/'
- c.save()
- return HttpResponse("success")
- def fblogin(request, **kwargs):
- user = request.user
- if user.is_authenticated and hasattr(user, 'fbprofile'):
- fb = user.fbprofile
- res = LearningGraph.objects.get_or_create(_intern=fb._intern)[0]
- if res.bpat: bpat_result = json.loads(res.bpat)
- else: bpat_result = {}
- if len(bpat_result) == 20:
- return HttpResponseRedirect("/student/profile/")
- cont = True if len(bpat_result) else False
- response = render(request, 'SimplerApp/fblogin.html', {'fbprofile':fb, 'continue': cont})
- response.set_cookie('sid', request.COOKIES['sessionid'])
- return response
- else:
- try:
- c = Engage.objects.get(url='http://fastnext.co' + request.path)
- request.session['intern'] = c._intern.id
- return render(request, 'SimplerApp/fblogin.html', {'intern':c._intern})
- except Engage.DoesNotExist:
- return render(request,'SimplerApp/404.html')
- def bpat(request):
- if not hasattr(request.user, 'fbprofile'):
- return render(request,'SimplerApp/404.html')
- _intern = intern.objects.get(fburl = request.user.fbprofile.fburl)
- res = LearningGraph.objects.get_or_create(_intern=_intern)[0]
- if request.method == 'POST':
- select = request.POST['select']
- bpat_result = {} if not res.bpat else json.loads(res.bpat)
- bpat_result[str(request.session['question_id'])] = select
- res.bpat = json.dumps(bpat_result)
- res.recent = None
- res.save()
- bpat_result = {} if not res.bpat else json.loads(res.bpat)
- if len(bpat_result) == 20:
- return HttpResponseRedirect("/student/profile/")
- context_dict = {}
- if res.recent:
- res.bpat = json.dumps(bpat_result)
- recent = json.loads(res.recent)
- question = Question.objects.get(id=recent[0])
- recent_time = datetime.strptime(str(recent[1]), '%Y-%m-%dT%H:%M:%S.%f')
- curr_time = datetime.now()
- diff_time = curr_time - recent_time
- if diff_time.total_seconds() < question.timelimit:
- res.save()
- context_dict['timelimit'] = int(question.timelimit - diff_time.total_seconds())
- else:
- bpat_result[str(recent[0])] = 'timeout'
- res.bpat = json.dumps(bpat_result)
- if len(bpat_result) == 20:
- res.recent = None
- res.save()
- return HttpResponseRedirect("/student/profile/")
- while True:
- rand_index = random.randint(0, Question.objects.count()-1)
- question = Question.objects.all()[rand_index]
- if str(question.id) not in bpat_result: break
- res.recent = json.dumps([question.id, datetime.now().isoformat()])
- res.save()
- context_dict['timelimit'] = question.timelimit
- else:
- while True:
- rand_index = random.randint(0, Question.objects.count()-1)
- question = Question.objects.all()[rand_index]
- if str(question.id) not in bpat_result: break
- res.recent = json.dumps([question.id, datetime.now().isoformat()])
- res.save()
- context_dict['timelimit'] = question.timelimit
- request.session['question_id'] = question.id
- context_dict['id'] = len(bpat_result)+1
- context_dict['question'] = question.question
- if question.lang != 'NA':
- context_dict['language'] = question.lang
- else: context_dict['language'] = None
- if question.code:
- context_dict['code'] = json.loads(question.code)
- else: context_dict['code'] = None
- context_dict['options'] = json.loads(question.options)
- return render(request, 'SimplerApp/test.html', context_dict)
- def social_redirect(request):
- context = RequestContext(request)
- #request.session['intern'] = c._intern.id
- #url = Engage.objects.get(_intern=request.user.fbprofile._intern).url[18:]
- #return HttpResponseRedirect(url)
- return render_to_response('SimplerApp/form.html', context)
- @login_required
- def student_profile(request):
- user = request.user
- fb = user.fbprofile
- _intern = fb._intern
- ed = ast.literal_eval(_intern.li_education)[0]
- edu = {'course':ed['course'].replace('\u2019', "'").replace('\u2018', "'"), 'title':ed['title']}
- return render(request, 'SimplerApp/student_profile.html', {'fb':fb, 'intern':_intern, 'edu':edu })
- @login_required
- def generate_otp(request):
- user = request.user
- if hasattr(user, 'fbprofile'):
- password = User.objects.make_random_password()
- user.set_password(password)
- user.save()
- return HttpResponse(password)
- else: return Httpresponse("You are not allowed for this.")
- def check_auth(request):
- if request.user.is_authenticated():
- if hasattr(request.user, 'fbprofile'):
- return HttpResponse("logged in")
- return HttpResponse("not logged in")
- @csrf_exempt
- def ext_auth(request):
- if request.method != 'POST':
- return render(request,'SimplerApp/403.html')
- if User.objects.filter(username=request.POST['username']).exists():
- username = request.POST['username']
- else: username = request.POST['username'].upper()
- password = request.POST['password']
- user = authenticate(username=username, password=password)
- print user
- if not hasattr(user, 'fbprofile'):
- return HttpResponse("invalid login details")
- if user:
- user.set_unusable_password()
- login(request, user)
- return HttpResponse("logged in")
- else:
- return HttpResponse("invalid login details")
- def graph1(request, username):
- context = RequestContext(request)
- inter = User.objects.get(username=username)
- lg = LearningGraph.objects.get(_intern=inter)
- vl = ast.literal_eval(lg.visited_links)
- context_dict = {'vl':vl}
- return render_to_response('SimplerApp/graph1.html', context_dict, context)
- def graph_text(request):
- if not request.user.is_authenticated():
- return HttpResponse("not logged in")
- if not hasattr(request.user, 'fbprofile'):
- return HttpResponse("operation not permitted")
- urlvar = request.GET['url']
- # datet = request.GET['datetime']
- # vll = lg.visitedlinklog
- # vll = ast.literal_eval(vll)
- # if urlvar in vll:
- # vll.append(datet)
- # vll = str(vll)
- # else:
- # lg = LearningGraph.objects.get_or_create(_intern=inter)[0]
- # vll.append(datetime)
- # vll = str(vll)
- lg = LearningGraph.objects.get_or_create(_intern=request.user.fbprofile._intern)[0]
- curr_url_arr_str = lg.visited_links
- curr_url_arr = ast.literal_eval(curr_url_arr_str)
- if urlvar not in curr_url_arr:
- curr_url_arr.append(urlvar)
- curr_url_arr_str = str(curr_url_arr)
- lg.visited_links = curr_url_arr_str
- lg.save()
- return HttpResponse(urlvar)
- def graph_text_vll(request):
- if not request.user.is_authenticated():
- return HttpResponse("not logged in")
- if not hasattr(request.user, 'fbprofile'):
- return HttpResponse("operation not permitted.")
- context = RequestContext(request)
- urlvar = request.GET['url']
- datet = request.GET['datetime']
- pixel = request.GET['px']
- inter = request.user.fbprofile._intern
- lg = LearningGraph.objects.get_or_create(_intern=inter)[0]
- vll = lg.visitedlinklog
- vll = ast.literal_eval(vll)
- vl = lg.visited_links
- vl = ast.literal_eval(vl)
- if urlvar in vl:
- if urlvar in vll:
- vll[urlvar] = vll[urlvar] + ' : ' + datet + ',' + pixel + '\n'
- vll = str(vll)
- else:
- vll[urlvar] = datet + ',' + pixel + '\n'
- vll = str(vll)
- lg.visitedlinklog = vll
- lg.save()
- return HttpResponse(vll)
- @login_required
- def discover(request):
- context = RequestContext(request)
- upd = {}
- for u in User.objects.all():
- try:
- upd[u.username] = UserProfile.objects.get(user=u)
- except:
- continue
- idict = {"skills":skill.objects.all(), "users":User.objects.all()}
- return render_to_response('SimplerApp/discover.html', {'idict':idict, 'upd':upd}, context)
- @login_required
- def botui(request):
- context = RequestContext(request)
- #userp = UserProfile.objects.get(user=request.user)
- #companyd = userp.company
- return render_to_response('SimplerApp/botui.html', context)
- def startup(request, startupname):
- context = RequestContext(request)
- startupmod = sup.objects.get(name=startupname)
- sdict = {"name":startupname, "website":startupmod.site, "description":startupmod.desc}
- return render_to_response('SimplerApp/startup.html', {'sdict':sdict}, context)
- def signup(request):
- context = RequestContext(request)
- return render_to_response('SimplerApp/form.html', context)
- def fbanon(request):
- context = RequestContext(request)
- return render_to_response('SimplerApp/fbanon.html', context)
- def send(request):
- context = RequestContext(request)
- bi = request.GET.get('bin')
- url = request.GET.get('url')
- itid = request.session['itid']
- ite = intern.objects.get(id=int(itid))
- if bi == 'mobile':
- ite.mobile = url
- if bi == 'email':
- ite.email = url
- if bi == 'github':
- ite.github_url = url
- if bi == 'googgleplus':
- ite.googgleplus_url = url
- if bi == 'stackoverflow':
- ite.stackoverflow_url = url
- if bi == 'quora':
- ite.quoraurl = url
- if bi == 'twitter':
- ite.twitterurl = url
- if bi == 'linkedin':
- ite.liurl = url
- if bi == 'hackerearth':
- ite.hackerearth_url = url
- if bi == 'hackerrank':
- ite.hackerrank_url = url
- if bi == 'kaggle':
- ite.kaggle_url = url
- if bi == 'dribbble':
- ite.dribbble_url = url
- if bi == 'behance':
- ite.behance_url = url
- ite.save()
- signdict = {"bin":bin, "url":url}
- return HttpResponse(itid)
- # @csrf_exempt
- # def otp(request):
- # twiml = '<Response><Message>Hello from FastneXt!</Message></Response>'
- # return HttpResponse(twiml, content_type='text/xml')
- def _get_pin(length=5):
- """ Return a numeric PIN with length digits """
- return random.sample(range(10**(length-1), 10**length), 1)[0]
- def _verify_pin(mobile_number, pin):
- """ Verify a PIN is correct """
- return pin == request.session['mobile_number']
- def ajax_send_pin(request):
- """ Sends SMS PIN to the specified number """
- mobile_number = request.GET.get('mob')
- if not mobile_number:
- return HttpResponse("No mobile number")
- pin = _get_pin()
- # store the PIN in the cache for later verification.
- fb = FbProfile.objects.get(user=request.user)
- it = intern.objects.get(fburl=fb.fburl)
- it.mobile = str(pin) + "<xrx>" + str(mobile_number) # valid for 24 hrs
- it.save()
- TWILIO_ACCOUNT_SID = 'AC036874e63066f519b5afa24192d765ed'
- TWILIO_AUTH_TOKEN = 'ff4dbfb9624d79c4ad994e22244bf1bd'
- TWILIO_FROM_NUMBER = '(916)459-4728'
- client = TwilioRestClient(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN)
- message = client.messages.create(
- body="Thanks for signing up for Fastnext! Your OTP is %s." % pin,
- to=mobile_number,
- from_=TWILIO_FROM_NUMBER,
- )
- return HttpResponse("Message %s sent" % message.sid)
- def acquire(request):
- context = RequestContext(request)
- t = track.objects.all()
- up = UserProfile.objects.get(user=request.user)
- context_dict = {'interns':[], 'company':up.company}
- for j in t:
- intern_id = j.stu.id
- i = intern.objects.get(id=intern_id)
- doc = {'intern_id':intern_id}
- li_name = i.li_name.title()
- li_url = i.liurl
- li_location = i.li_location
- li_education = smart_str(ast.literal_eval(i.li_education)[0]['title']).upper()
- li_experience = i.li_experience
- li_photo = i.li_photourl
- ilst = i.ilist
- if i.li_skills:
- skills = ast.literal_eval(i.li_skills)
- for i in range(len(skills)):
- skills[i] = smart_str(skills[i])
- for skill in skills:
- if ',' in skill:
- skills.remove(skill)
- li_skills = skills
- else: li_skills = []
- doc['li_url'] = li_url
- doc['li_name'] = li_name
- doc['li_skills'] = li_skills
- doc['li_location'] = li_location
- doc['li_education'] = li_education
- doc['ilist'] = ilst
- doc['ex'] = li_experience
- doc['photo'] = li_photo
- up = UserProfile.objects.get(user=j.cont_startup)
- status_arr = []
- for p in j.status.split('<xrx>'):
- status_arr.append(p.split('<xtx>'))
- doc['status'] = status_arr
- doc['cstart'] = up.company
- context_dict['interns'].append(doc)
- return render_to_response('SimplerApp/acquire.html', context_dict, context)
- def acq_ajax(request):
- context = RequestContext(request)
- intid = request.GET['inte']
- inte = intern.objects.get(id=int(intid))
- datet = request.GET['datetime']
- dd = datet.split('/')[0]
- mm = datet.split('/')[1]
- yy = datet.split('/')[2].split(' ')[0]
- tt = datet.split(' @ ')[1]
- datet = yy + "-" + mm + "-" + dd + ' @ ' + tt
- status = str(datet) + '<xtx>' + "Request made."
- t = track.objects.get_or_create(stu=inte, status=status, cont_startup=request.user)
- return HttpResponse("Added!")
- def status(request):
- context = RequestContext(request)
- intid = request.GET['inte']
- inte = intern.objects.get(id=int(intid))
- datet = request.GET['datetime']
- dd = datet.split('/')[0]
- mm = datet.split('/')[1]
- yy = datet.split('/')[2].split(' ')[0]
- tt = datet.split(' @ ')[1]
- datet = yy + "-" + mm + "-" + dd + ' @ ' + tt
- content = request.GET['cont']
- t = track.objects.filter(stu=inte)
- for x in t:
- x.status = x.status + "<xrx>" + datet + "<xtx>" + content
- x.save()
- return HttpResponse(datet)
- def verpin(request):
- context = RequestContext(request)
- fb = FbProfile.objects.get(user=request.user)
- it = intern.objects.get(fburl=fb.fburl)
- savedpin = it.mobile.split("<xrx>")[0]
- savedmob = it.mobile.split("<xrx>")[1]
- pin = request.GET.get('pin')
- mob = request.GET.get('mob')
- if savedpin == pin and savedmob == mob:
- it.mobile = mob
- it.save()
- return HttpResponse('Success')
- else:
- return HttpResponse('Failure')
- # def queue(request):
- # context = RequestContext(request)
- # qarr = request.GET.get('qarr')
- # for q in qarr.split('<xrx>'):
- # qobj.objects.get_or_create(query_term=q)
- # return HttpResponse(qarr)
- databins = ['linkedin', 'stackoverflow', 'hackerrank', 'hackerearth', 'quora', 'twitter', 'kareeredge', '.ac.in', 'flickr', 'about.me', '.edu', 'researchgate', 'plus.google', 'instagram', 'github', 'coderwall', 'bitbucket', 'livecoding', 'reddit', 'scribd', 'youth4work', 'scholar.google', 'kaggle', 'blogspot', 'wordpress', 'angel.co', "rocketreach", "codechef", "spoj", "analyticsvidhya", 'mathworks', "datasciencecentral", "techgig", "freelancer", "nic.in", "slideshare", "blogger", "corporatedir", "springer"]
- def rtaui(request):
- context = RequestContext(request)
- qs = qobj.objects.all()
- context_dict = []
- for q in qs:
- try:
- qarr = ast.literal_eval(q.query_term)
- g = q.query_term.split('linkedin.com')[1].split("'")[0].split(' - ')[0]
- username = g.split('/')[-1]
- if len(username) <= 3:
- username = g.split('/')[-2]
- qarr['username'] = username
- qarr['id'] = str(q.id)
- if 'uncrawl' in qarr:
- uncarr = []
- for t in ast.literal_eval(qarr['uncrawl']):
- linkurl = t.split('\n')[1]
- for i in databins:
- if i in linkurl:
- uncarr.append([i,linkurl])
- qarr['uncarr'] = uncarr
- context_dict.append(qarr)
- except:
- continue
- context_dict.reverse()
- return render_to_response('SimplerApp/rtaui.html', {'qs':context_dict}, context)
- def viz(request, loadfile): #View loads loadfile.csv from root and render interns.
- context_dict = {'interns':[]}
- loadf = open(os.path.join(PROJECT_PATH, loadfile + '.csv'), 'r')
- txt = loadf.read()
- txtarr= txt.split('\n')
- deduparr = [] #Removing duplicates.
- for line in txtarr[1:200]:
- try:
- intern_id = int(line.strip())
- if intern_id not in deduparr:
- deduparr.append(intern_id)
- i = intern.objects.get(id=intern_id)
- doc = {'intern_id':intern_id}
- li_name = i.li_name.title()
- li_url = i.liurl
- li_location = i.li_location
- li_education = smart_str(ast.literal_eval(i.li_education)[0]['title']).upper()
- li_experience = i.li_experience
- li_photo = i.li_photourl
- ilst = i.ilist
- if i.li_skills:
- skills = ast.literal_eval(i.li_skills)
- for i in range(len(skills)):
- skills[i] = smart_str(skills[i])
- for skill in skills:
- if ',' in skill:
- skills.remove(skill)
- li_skills = skills
- else: li_skills = []
- doc['li_url'] = li_url
- doc['li_name'] = li_name
- doc['li_skills'] = li_skills
- doc['li_location'] = li_location
- doc['li_education'] = li_education
- doc['ilist'] = ilst
- doc['ex'] = li_experience
- doc['photo'] = li_photo
- context_dict['interns'].append(doc)
- except:
- continue
- return render(request, 'SimplerApp/viz.html', context_dict)
- skills = [ 'javascript', 'python', 'java', 'django' ]
- def process_query(fbid, recevied_message):
- # Remove all punctuations, lower case the text and split it based on space
- user_details_url = "https://graph.facebook.com/v2.6/%s"%fbid
- user_details_params = {'fields':'first_name,last_name,profile_pic', 'access_token':PAGE_ACCESS_TOKEN}
- user_details = requests.get(user_details_url, user_details_params).json()
- post_message_url = 'https://graph.facebook.com/v2.6/me/messages?access_token=%s'%PAGE_ACCESS_TOKEN
- tokens = re.sub(r"[^a-zA-Z0-9\s]",' ',recevied_message).lower().split()
- searchterm = ''
- for token in tokens:
- if 'get' in token:
- post_message_url = 'https://graph.facebook.com/v2.6/me/messages?access_token=%s'%PAGE_ACCESS_TOKEN
- waitjson = json.dumps({"recipient":{"id":fbid}, "message":{"text":"Imran will be calling you shortly. Thanks!"}})
- status = requests.post(post_message_url, headers={"Content-Type": "application/json"},data=waitjson)
- elif token in skills:
- searchterm = token
- # solr_url = 'http://52.43.239.161:8983/solr/fastnext/select?wt=json&q=' + token + '&start=0&rows=6'
- # t = json.loads(requests.get(solr_url).content)
- # for d in t['response']['docs']:
- # continternid = int(d['django_id'])
- # #contintern = intern.objects.get(id=continternid)
- for l in [32319, 31669, 31273, 29563, 39239]: #static dataset for test. Also, 31273, 29563, 39239.
- continternid = l
- contintern = intern.objects.get(id=continternid)
- ciname = contintern.li_name.title().strip()
- cedu = ast.literal_eval(contintern.li_education)[0]['title'].upper().strip()
- payjson = {"contid":str(continternid), "searchterm":searchterm}
- messagejson = json.dumps({
- "recipient":{
- "id":fbid
- },
- "message":{
- "attachment":{
- "type":"template",
- "payload":{
- "template_type":"generic",
- "elements":[
- {
- "title":ciname,
- "subtitle": cedu,
- "buttons":[
- {
- "type":"postback",
- "title":"Advice, please.",
- "payload":str(payjson)
- }
- ]
- }
- ]
- }
- }
- }
- })
- status = requests.post(post_message_url, headers={"Content-Type": "application/json"},data=messagejson)
- pprint(status.json())
- #reply_text = reply_text + contintern.li_name + ' \n'
- break
- #if not searchterm:
- # failjson = json.dumps({"recipient":{"id":fbid}, "message":{"text":'Sorry, do not know enough.'}}) #Standard send a message to user.
- # status = requests.post(post_message_url, headers={"Content-Type": "application/json"},data=failjson)
- #reply_text = 'Hey '+ user_details['first_name'] +', here are 6 people who seem like a match and would be willing to move: \n' + reply_text
- #response_msg = json.dumps({"recipient":{"id":fbid}, "message":{"text":reply_text}})
- #status = requests.post(post_message_url, headers={"Content-Type": "application/json"},data=response_msg)
- @csrf_exempt
- def bot(request):
- print request.method
- if request.method == 'GET':
- if request.GET.get('hub.verify_token') == '8984338985':
- return HttpResponse(request.GET.get('hub.challenge'))
- else:
- return HttpResponse('Error, invalid token')
- if request.method == 'POST':
- try:
- incoming_message = json.loads(request.body.decode('utf-8'))
- print incoming_message
- # Facebook recommends going through every entry since they might send
- # multiple messages in a single call during high load
- for entry in incoming_message['entry']:
- for message in entry['messaging']:
- # Check to make sure the received call is a message call
- # This might be delivery, optin, postback for other events
- if 'message' in message:
- # Print the message to the terminal
- pprint(message)
- fbid = message['sender']['id']
- post_message_url = 'https://graph.facebook.com/v2.6/me/messages?access_token=%s'%PAGE_ACCESS_TOKEN
- response_msg = json.dumps({"recipient":{"id":fbid}, "sender_action":"typing_on"})
- status = requests.post(post_message_url, headers={"Content-Type": "application/json"},data=response_msg)
- process_query(fbid, message['message']['text'])
- if 'postback' in message:
- fbid = message['sender']['id']
- post_message_url = 'https://graph.facebook.com/v2.6/me/messages?access_token=%s'%PAGE_ACCESS_TOKEN
- waitjson = json.dumps({"recipient":{"id":fbid}, "message":{"text":"Let me crunch some numbers for ya! Wait a sec."}})
- status = requests.post(post_message_url, headers={"Content-Type": "application/json"},data=waitjson)
- response_msg = json.dumps({"recipient":{"id":fbid}, "sender_action":"typing_on"}) #Send typing indicator.
- status = requests.post(post_message_url, headers={"Content-Type": "application/json"},data=response_msg)
- intid = int(ast.literal_eval(message['postback']['payload'])['contid'])
- cand = intern.objects.get(id=intid)
- ghurl = ast.literal_eval(cand.ilist)['github'][0]
- hrurl = ast.literal_eval(cand.ilist)['hackerrank'][0]
- sourl = ast.literal_eval(cand.ilist)['stackoverflow'][0]
- spojurl = ast.literal_eval(cand.ilist)['spoj'][0]
- chefurl = ast.literal_eval(cand.ilist)['codechef'][0]
- url_arr = ghurl + '<xurlx>' + hrurl + '<xurlx>' + sourl + '<xurlx>' + spojurl + '<xurlx>' + chefurl
- sterm = ast.literal_eval(message['postback']['payload'])['searchterm']
- params = {'url_arr':url_arr, 'searchterm':sterm, 'intid':intid}
- qurl = 'http://localhost:8000/rank?%s' % (urllib.urlencode(params))
- scores = str(requests.get(qurl).content)
- print scores
- rettext = "I've sifted through more than 162,212 public profiles over the last week, here's what I think: \n\n"
- subscore = scores.split(' ')[0]
- rettext = rettext + 'Know-how in ' + sterm.title() + ':'+ subscore +'\n'
- aptscore = scores.split(' ')[1]
- rettext = rettext + 'Aptitude: '+ str(random.randrange(50, 100)) +'\n' #aptscore +'\n'
- kloutscore = scores.split(' ')[2]
- rettext = rettext + 'Klout: '+ kloutscore +'\n\nWhat do you think?'
- retjson = json.dumps({"recipient":{"id":fbid}, "message":{"text":rettext}})
- status = requests.post(post_message_url, headers={"Content-Type": "application/json"},data=retjson)
- return HttpResponse()
- except Exception,e:
- print str(e)
- return HttpResponse()
- def searches(request):
- context = RequestContext(request)
- context_dict = {}
- context_dict['searches'] = []
- searches = search.objects.all().filter(recruiter=request.user)
- if len(searches) > 0:
- searches = searches.order_by('-id')
- context_dict['exists'] = 'Yes'
- for s in searches:
- context_dict['searches'].append(s)
- else:
- context_dict['exists'] = 'No'
- return render_to_response('SimplerApp/searches.html', context_dict, context)
- def queue(request):
- context = RequestContext(request)
- jobid = request.GET.get('jobid')
- cdetails = request.GET.get('cdetails')
- query = request.GET.get('query')
- exp = request.GET.get('exp')
- nct = request.GET.get('nct')
- finalobj = search.objects.get_or_create(recruiter=request.user, info=jobid, nct = nct, jsonobj=query+'<xdelx>'+cdetails+'<xdelx>'+exp)[0]
- return HttpResponse(str(finalobj.id))
- def viewres(request, searchid):
- context = RequestContext(request)
- s = search.objects.get(id=int(searchid))
- sl = shortlist1.objects.get_or_create(cs=s)[0]
- bl = blacklist1.objects.get_or_create(cs=s)[0]
- sl_urls = sl.cand_list
- bl_urls = bl.cand_list
- js = s.jsonobj.split('<xdelx>')
- context_dict = {'blacklist': bl_urls, 'cand_list': sl_urls, 'searchid':searchid, 'jobid':s.info, 'query':js[0], 'cdetails':js[1]}
- return render_to_response('SimplerApp/viewres.html', context_dict,context)
- def shortlist_view(request, searchid):
- context = RequestContext(request)
- s = search.objects.get(id=int(searchid))
- bl = blacklist1.objects.get_or_create(cs=s)[0]
- js = s.jsonobj.split('<xdelx>')
- context_dict = { 'searchid':searchid, 'jobid':s.info, 'query':js[0], 'cdetails':js[1]}
- return render_to_response('SimplerApp/shortlist.html', context_dict,context)
- def shortlist(request):
- context = RequestContext(request)
- url = request.GET.get('url')
- w = request.GET.get('whole')
- #print w
- sid = int(request.GET.get('sid'))
- s = search.objects.get(id=sid)
- sl = shortlist1.objects.get_or_create(cs=s)[0]
- sl1 = shortlist1.objects.get_or_create(cs=s)[1]
- uarr = ast.literal_eval(sl.cand_list)
- uarr.append(url)
- warr = ast.literal_eval(sl.whole_list)
- #print 'WARRRRRR'
- #print warr
- wnew = ast.literal_eval(ast.literal_eval(w))
- wnew['status'] = 'interesting'
- warr.append(wnew)
- sl.cand_list = str(uarr)
- sl.whole_list = str(warr)
- sl.save()
- return HttpResponse(sl1)
- def get_shortlist(request):
- sid = request.GET.get('sid')
- s = search.objects.get(id=int(sid))
- sl = shortlist1.objects.get_or_create(cs=s)[0]
- arr = ast.literal_eval(sl.whole_list)
- arr = arr[::-1]
- sl_urls = json.dumps(arr)
- return HttpResponse(sl_urls, content_type="application/json")
- def blacklist(request):
- context = RequestContext(request)
- url = request.GET.get('url')
- w = request.GET.get('whole')
- sid = int(request.GET.get('sid'))
- s = search.objects.get(id=sid)
- sl = blacklist1.objects.get_or_create(cs=s)[0]
- sl1 = shortlist1.objects.get_or_create(cs=s)[1]
- uarr = ast.literal_eval(sl.cand_list)
- uarr.append(url)
- warr = ast.literal_eval(sl.whole_list)
- warr.append(w)
- sl.cand_list = str(uarr)
- sl.whole_list = str(warr)
- sl.save()
- return HttpResponse(sl1)
- def changestatus(request):
- liurl = request.GET.get('url')
- sid = request.GET.get('sid')
- stat = request.GET.get('stat')
- sid = int(sid)
- s = search.objects.get(id=int(sid))
- sl = shortlist1.objects.get_or_create(cs=s)[0]
- arr = ast.literal_eval(sl.whole_list)
- conc = []
- for a in arr:
- if a['url'] == liurl:
- conc = a
- a['status'] = stat
- sl.whole_list = arr
- sl.save()
- return HttpResponse(str(conc))
- def equi(request):
- a = ast.literal_eval(request.GET.get('data')) #Array of dictionaries.
- #a = sample_data('python IIT', 500)[:20]
- url_list = []
- #testing
- #a[0]['full_name'] = 'Akhyansh Mohapatra'
- #a[1]['full_name'] = 'Mridul Mohan'
- for i in a:
- i = ast.literal_eval(i)
- url_list.append(get_all_bins(i))
- # for y in url_list:
- # while not y.ready():
- # time.sleep(1)
- #
- # u_list = []
- # for y in url_list:
- # u_list.append(y.get())
- #print str(u_list)
- return HttpResponse(str(url_list))
- def databinajax(request):
- liurl = request.GET.get('url')
- sid = request.GET.get('sid')
- ilist = request.GET.get('ilist')
- sid = int(sid)
- s = search.objects.get(id=int(sid))
- sl = shortlist1.objects.get_or_create(cs=s)[0]
- arr = ast.literal_eval(sl.whole_list)
- conc = []
- for a in arr:
- if a['url'] == liurl:
- conc = a
- a['ilist'] = ilist
- sl.whole_list = arr
- sl.save()
- return HttpResponse(str(conc))
- def cachestatus(request):
- sid = request.GET.get('sid')
- typ = request.GET.get('type')
- if typ=="first":
- s = search.objects.get(id=int(sid))
- cache = s.cache
- return HttpResponse(json.dumps(cache))
- elif typ=="second":
- requrl = request.GET.get('url')
- data = requests.get(requrl)
- data = data.text
- s = search.objects.get(id=int(sid))
- s.cache = str(data)
- print 'Caching...'
- print data
- s.save()
- return HttpResponse('done')
- def getnaukri(request):
- sid = request.GET.get('sid')
- finalresult = requests.get('http://104.154.240.12/donaukri/', params={'sid':sid})
- finalresult = finalresult.text
- sid = int(sid)
- s = search.objects.get(id=sid)
- s.cache = finalresult
- s.save()
- return HttpResponse(finalresult)
- def getcache(request):
- sid = request.GET.get('sid')
- sid = int(sid)
- s = search.objects.get(id=sid)
- cache = s.cache
- return HttpResponse(cache)
- def getjd(request):
- sid = request.GET.get('sid')
- sid = int(sid)
- s = search.objects.get(id=sid)
- jd = s.jsonobj.split('<xdelx>')[1]
- return HttpResponse(jd)
- def jd_to_skills_arr(request):
- jd = request.GET.get('jd')
- skills = jd_to_skills(jd)
- return HttpResponse(str(skills))
- def spa_predict(request):
- t = request.GET.get('cand_json_string')
- s = request.GET.get('new_job_loc')
- r = request.GET.get('new_company_name')
- y = predict_prob_movement(t, s, r, 'Baxter')
- return HttpResponse(str(y))
- @login_required
- def profile(request, uniqueid):
- #a = sample_data(id, 100)[int(random()*100)]
- try:
- a = solr_object.objects.get(unique_id=uniqueid)
- data = ast.literal_eval(a.data)
- except Exception as e:
- print(str(e))
- data = uid_to_candidate(uniqueid)
- #urls = get_all_bins(a)
- #eq_score = find_scores(urls)
- try:
- t = data['scores']
- except:
- eq_score = find_scores_from_li(data)
- if eq_score[0] != 0.0:
- apt = eq_score[0]
- else:
- apt = int(random()*60)
- if eq_score[1] != 0.0:
- klout = eq_score[1]
- else:
- klout = int(random()*60)
- if eq_score[2] != 0.0:
- skill = eq_score[2]
- else:
- skill = int(random()*60)
- scores = {
- 'apt':apt,
- 'klout':klout,
- 'skill':skill,
- }
- data['scores'] = scores
- unique_id = data['unique_id']
- try:
- a = solr_object(unique_id=unique_id, data=str(data))
- a.save()
- except:
- pass
- #for i in a:
- # i['other_urls'] = get_all_bins(i)
- # data = ast.literal_eval(str(data).decode('unicode_escape').encode('ascii', 'ignore'))
- context = {'arr':jsonpickle.encode(data)}
- return render(request, 'SimplerApp/profile.html', context)
- def profile_new(request, uniqueid):
- #a = sample_data(id, 100)[int(random()*100)]
- try:
- a = solr_object.objects.get(unique_id=uniqueid)
- data = ast.literal_eval(a.data)
- except Exception as e:
- print(str(e))
- data = uid_to_candidate(uniqueid)
- #urls = get_all_bins(a)
- #eq_score = find_scores(urls)
- try:
- t = data['scores']
- except:
- eq_score = find_scores_from_li(data)
- if eq_score[0] != 0.0:
- apt = eq_score[0]
- else:
- apt = int(random()*60)
- if eq_score[1] != 0.0:
- klout = eq_score[1]
- else:
- klout = int(random()*60)
- if eq_score[2] != 0.0:
- skill = eq_score[2]
- else:
- skill = int(random()*60)
- scores = {
- 'apt':apt,
- 'klout':klout,
- 'skill':skill,
- }
- data['scores'] = scores
- unique_id = data['unique_id']
- try:
- a = solr_object(unique_id=unique_id, data=str(data))
- a.save()
- except:
- pass
- #for i in a:
- # i['other_urls'] = get_all_bins(i)
- # data = ast.literal_eval(str(data).decode('unicode_escape').encode('ascii', 'ignore'))
- context = {'arr':jsonpickle.encode(data)}
- return render(request, 'SimplerApp/viewres.html', context)
- def deletes(request):
- sid = request.GET.get('sid')
- sid = int(sid)
- s = search.objects.get(id=sid)
- s.delete()
- return HttpResponse('delted!')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement