Advertisement
rafiya

Code review

Feb 4th, 2018
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.43 KB | None | 0 0
  1. class Register(TimeProfiling, ExceptionLoging, View):
  2.  
  3.     def post(self, request, *value_tuple, **value_dict):
  4.         self.set_resp_type('xml')
  5.  
  6.         logr.info("Incoming request for corporate register()")
  7.         # Read the request body
  8.         xmlData = urllib.unquote_plus(request.body)
  9.         #logr.info("xmlData: '%s'" % xmlData)
  10.  
  11.         # Hack -- UI sends as 'key=value'
  12.         if xmlData.startswith('data='):
  13.             xmlData = xmlData[5:]
  14.  
  15.         h = XmlHandler()
  16.         xml.sax.parseString(xmlData, h)
  17.  
  18.         # Data validation: all required fields must be present.
  19.         if not h.params.has_key("name"):
  20.             logr.info("Error: Company name can not be empty")
  21.             return HttpResponse(EMPTY_FIELD_ERR % 'Company Name', content_type="text/xml")
  22.         if not h.params.has_key("location"):
  23.             logr.info("Error: Company location can not be empty")
  24.             return HttpResponse(EMPTY_FIELD_ERR % 'Company location', content_type="text/xml")
  25.         if not h.params.has_key("url"):
  26.             logr.info("Error: Company URL can not be empty")
  27.             return HttpResponse(EMPTY_FIELD_ERR % 'Company URL', content_type="text/xml")
  28.         if not h.params.has_key("phone"):
  29.             logr.info("Error: Company User Phone can not be empty")
  30.             return HttpResponse(EMPTY_FIELD_ERR % 'Phone of corporate user', content_type="text/xml")
  31.         if not h.params.has_key("password"):
  32.             logr.info("Error: Company User Password can not be empty")
  33.             return HttpResponse(EMPTY_FIELD_ERR % 'Password of corporate user', content_type="text/xml")
  34.         '''
  35.         if not h.params.has_key("g-recaptcha-response"):
  36.                     logr.info("Error: recaptcha response field 'g-recaptcha-respcorporate/changeToPaidAccount/?name=SAXhonse' cannot be empty")
  37.                     return HttpResponse(BAD_REQUEST % "Missing recaptcha response field", content_type="text/xml")
  38.        
  39.         captcha_rs = h.params["g-recaptcha-response"]
  40.             #captcha_pk = "6LdvNhUTAAAAAGrestjqoQLlPuivaa3M53b1fuje"
  41.         captcha_pk = settings.RECAPTCHA_SECRET_KEY[socket.gethostbyname(socket.gethostname())]
  42.  
  43.             url = "https://www.google.com/recaptcha/api/siteverify"
  44.             params = {
  45.                 'secret': captcha_pk,
  46.                 'response': captcha_rs
  47.             }
  48.             verify_rs = requests.get(url, params=params, verify=True)
  49.             verify_rs = verify_rs.json()
  50.             status = verify_rs.get("success", False)
  51.             message = verify_rs.get('error-codes', None) or "Unspecified error."
  52.             logr.info("status is %s, error code is %s" %(status, message))
  53.             if not status:
  54.                     logr.info("Error: recaptcha validation failed")
  55.                     return HttpResponse(BAD_REQUEST % "recaptcha validation failed", content_type="text/xml")  
  56.         '''
  57.         existingCorps = Corporate.objects.filter(name = h.params["name"])
  58.         if existingCorps.count() != 0:
  59.             logr.info("Error: Corporate with name %s already exists!" % h.params["name"])
  60.             qualifier = 'with name "%s"' % h.params["name"]
  61.             return HttpResponse(DUPLICATE_OBJECT_ERR % ('A company', qualifier), content_type="text/xml")
  62.  
  63.         err = _validate_email(h.params["email"])
  64.         if err:
  65.             return HttpResponse(err, content_type="text/xml")
  66.  
  67.         # It is possible to have common office number among multiple users.  So, we won't impose
  68.         # uniqueness of phone numbers for corporate users.
  69.  
  70.         # First of all, create the Corporate (company) object.  Keep is inactive, till an admin approves.
  71.         corp = Corporate()
  72.         corp.is_active = False
  73.         corp.name = h.params["name"]
  74.         corp.hq_location = h.params["location"]
  75.         corp.url = h.params["url"]
  76.         if h.params.has_key("description"):
  77.             corp.description = h.params["description"]
  78.         if h.params.has_key("size"):
  79.             corp.company_size = h.params["size"]
  80.         if h.params.has_key("industry"):
  81.             corp.industry = h.params["industry"]
  82.         if h.params.has_key("isrecruiter") and h.params["isrecruiter"].lower() == 'true':
  83.             corp.is_recruiter = True
  84.        
  85.         corp.save()
  86.  
  87.         #Creating a Subscription
  88.         subscription = Subscription()
  89.         subscription.corporate = corp
  90.         subscription.package = SalesPackage.objects.get(pkg_type = 'Free')
  91.         subscription.activation_time = datetime.now()
  92.         subscription.activator = CorpUser.objects.filter(user__email = 'vishnuprasad@flocareer.com')[0]
  93.         subscription.save()
  94.  
  95.         corp.credit = subscription.package.max_public_questions_credit
  96.         corp.save()
  97.  
  98.         #Creating a Subscription History
  99.         history = SubscriptionHistory()
  100.         history.corporate = corp
  101.         history.old_package = subscription.package
  102.         history.new_package = subscription.package
  103.         history.create_time = datetime.now()
  104.         history.activator = subscription.activator
  105.         history.save()
  106.  
  107.         # Create the first (super) user for the corporate
  108.         username = _username_from_email(h.params["email"])
  109.         #user = User.objects.create_user(username=username, email=h.params["email"], password=h.params["password"])
  110.         user = User.objects.create_user(username=username, email=h.params["email"])
  111.         #user.set_unusable_password()
  112.         if h.params.has_key("firstname"):
  113.             user.first_name = h.params["firstname"]
  114.         if h.params.has_key("lastname"):
  115.             user.last_name = h.params["lastname"]
  116.         user.save()
  117.  
  118.         protocol, site_name = _get_ip(self.request)
  119.         url = 'reset_password.html'
  120.         token = default_token_generator.make_token(user)
  121.         password_link = "%s%s/reset_password.html?token=%s&email=%s&new_corpuser=True"%(protocol, site_name, token, user.email)
  122.  
  123.         corpUser = CorpUser()
  124.         corpUser.user = user
  125.         corpUser.corporate = corp
  126.         corpUser.is_super_user = True
  127.         corpUser.phone_number = h.params["phone"]
  128.         corpUser.last_login = datetime.now()
  129.         if h.params.has_key("title"):
  130.             corpUser.title = h.params["title"]
  131.         corpUser.save()
  132.  
  133.         # Finally, initialize the analytics for the company
  134.         analytics = CorpAnalytics()
  135.         analytics.corporate = corp
  136.         analytics.save()
  137.         resp = ""
  138.         activator_company_name = activator_user_name = ""
  139.         is_created_by_logged_in_user = False
  140.         if request.user.is_authenticated():
  141.             auth = ""
  142.             if _isCorpUser(request.user):
  143.                 is_created_by_logged_in_user = True
  144.                 corp_user = CorpUser.objects.get(user_id=request.user.id)
  145.                 activator_company_name = corp_user.corporate.name
  146.                 activator_user_name = _get_name(corp_user.user)
  147.                 if (not corp_user.corporate.is_recruiter and corp.is_recruiter) or\
  148.                    (corp_user.corporate.is_recruiter and not corp.is_recruiter):
  149.                     corp.is_active = True
  150.                         corp.save()
  151.                    
  152.                     if h.params.has_key("auth"):
  153.                         auth = h.params["auth"]
  154.                    
  155.                     if not corp_user.corporate.is_recruiter and corp.is_recruiter:
  156.                         resp = _connect_recruiter_client_helper(corp_user.corporate.id,corp.id,False,auth)
  157.                     elif corp_user.corporate.is_recruiter and not corp.is_recruiter:
  158.                         resp = _connect_recruiter_client_helper(corp.id,corp_user.corporate.id,True,auth)
  159.        
  160.         # when hiring company invites recruiting company they connect automatically by default.
  161.         if corpUser.corporate.is_recruiter == True:
  162.             recruiting_clients  = corp.recruitingclient_set.all()
  163.             if recruiting_clients.exists():
  164.                 for recruiting_client in recruiting_clients:
  165.                     recruiting_client.status = "connected"
  166.                     recruiting_client.create_time = datetime.now()
  167.                     recruiting_client.save()
  168.  
  169.         ctx = { 'corpUser_FN':corpUser.user.first_name,
  170.             'auth_corp_name': activator_company_name,
  171.             'creator_name': activator_user_name,
  172.             'resp':True if resp else False,
  173.             'to_list':[corpUser.user.email],
  174.             }
  175.         notify (FEC_COMPANY_REG, ctx)  
  176.  
  177.             ctx = { 'company_name':corp.name,
  178.             'company_location':corp.hq_location,
  179.             'company_url':corp.url,
  180.             'company_description': corp.description,
  181.             'company_size': corp.company_size,
  182.             'company_industry': corp.industry,
  183.             'is_recruiter': "Yes" if corp.is_recruiter else "No",
  184.                         'is_created_internally': is_created_by_logged_in_user,
  185.                         'creator_name': activator_user_name,
  186.                         'auth_corp_name': activator_company_name,
  187.             'corpUser_name': _get_name(corpUser.user),
  188.             'corpUser_email': corpUser.user.email,
  189.             'corpUser_phone': corpUser.phone_number,
  190.             'corpUser_title': corpUser.title,
  191.             'corp_id': corp.id,
  192.             'to_list': _SALES_SU_LIST,
  193.             }
  194.         notify(FEC_COMPANY_REG_TO_FLO_ADMIN,ctx)
  195.  
  196.         resp = '<?xml version="1.0" encoding="UTF-8"?>\r\n'
  197.         resp += '<company>\r\n'
  198.         resp += '\t<id>%d</id>\r\n' % corp.id
  199.         resp += '\t<user>\r\n'
  200.         resp += '\t\t<name>%s</name>\r\n' % _get_name(user)
  201.         resp += '\t\t<id>%d</id>\r\n' % user.id
  202.         resp += '\t</user>\r\n'
  203.         resp += '</company>\r\n'
  204.        
  205.             return HttpResponse(resp, content_type="text/xml")
  206. #End of register()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement