def verify_email(): #Check authentications keys userid = int(request.json['userid']) token = request.json['token'] email = request.json['email'] findUser = User.find_one({ "userid": userid, "token": token, "email": request.json['email'], "active": True }) if findUser is not None: emailhash = CommonUtils.getHashValue() result = User.update( { "userid": userid, "token": token, "email": request.json['email'] }, {"$set": { "emailhash": emailhash }}) # Send email verification reset_password_link = str(URL) + "emailverify__" + str(emailhash) subject = "Your SAVEonJOBS.comAccount Email Verification" msg = Message(subject, sender=("SAVEonJOBS", "*****@*****.**"), recipients=[email]) msg.html = render_template( '/emailTemplates/email_verification_template.html', name=findUser['firstname'], resetLink=reset_password_link, email=email) Mail.send(msg) EmailTracks.insert({ "emailtrackid": CommonUtils.generateRandomNo(EmailTracks, "emailtrackid"), "userid": userid, "email": request.json['email'], "subject": subject, "emailtext": msg.html, "createdatetime": datetime.now(), "updatedatetime": datetime.now() }) return jsonify({'status': 200, 'message': 'Send Successfully.'}) else: return jsonify({'status': 201, 'message': "Email doesn't match."})
def notify_onboard(cls, userid, fullname, device_token): if device_token: notificationtext = "Hello " + str(fullname) + " SaveOnJobs welcomes you !!" data_message = { "body": notificationtext, } push_service.notify_single_device(registration_id=device_token, message_title="Welcome!", message_body=notificationtext, data_message=data_message, click_action="FCM_PLUGIN_ACTIVITY") from jobwork.models.notification import Notifications Notifications.insert({ "notificationid": CommonUtils.generateRandomNo(Notifications, "notificationid"), "notificationtext": notificationtext, "notificationtype": "welcome", "notificationtouserid": int(userid), "notificationfromuserid": -1, "jobid": -1, "bidid": -1, "commentid": -1, "createddatetime": datetime.datetime.now(), "updatedatetime": datetime.datetime.now(), "isread": False })
def notify_bid_accepted(cls, userid, jobid, bidid, job_collection, jobberfullname, final_bid): notificationtext = "Your Bid on job title '" + job_collection[ 'title'] + "' is accepted by Jobber : " + jobberfullname from jobwork.models.user import User registration_id = User.find_FCM_id(final_bid['userid']) if registration_id: data_message = { "body": notificationtext, } push_service.notify_single_device(registration_id=registration_id, message_title="Bid Accepted", message_body=notificationtext, data_message=data_message) # Notification entry from jobwork.models.notification import Notifications Notifications.insert({ "notificationid": CommonUtils.generateRandomNo(Notifications, "notificationid"), "notificationtext": notificationtext, "notificationtype": "Bid", "notificationtouserid": int(final_bid['userid']), "notificationfromuserid": userid, "jobid": int(jobid), "jobbidid": int(bidid), "commentid": -1, "createddatetime": datetime.datetime.now(), "updatedatetime": datetime.datetime.now(), "isread": False })
def notify_bid_reverse(cls, userid, jobid, bidid, job_collection, bidderfullname, job_bid_detail): notificationtext = "You reverse bid on the job title " + job_collection[ 'title'] + " for bidder : " + str(bidderfullname) from jobwork.models.user import User registration_id = User.find_FCM_id(job_bid_detail['userid']) if registration_id: data_message = { "body": notificationtext, } push_service.notify_single_device(registration_id=registration_id, message_title="Reverse Bid", message_body=notificationtext, data_message=data_message) from jobwork.models.notification import Notifications Notifications.insert({ "notificationid": CommonUtils.generateRandomNo(Notifications, "notificationid"), "notificationtext": notificationtext, "notificationtype": "Bid", "notificationtouserid": int(job_bid_detail['userid']), "notificationfromuserid": userid, "jobid": int(jobid), "jobbidid": int(bidid), "commentid": -1, "createddatetime": datetime.datetime.now(), "updatedatetime": datetime.datetime.now(), "isread": False })
def send_onboard_email(cls, userid, email, email_hash, firstname): subject = "Your SAVEonJOBS.comAccount Email Verification" sender = ("SAVEonJOBS", "*****@*****.**") recipients = [email] reset_password_link = str( Constants.URL) + "/user/emailverify__" + str(email_hash) template = render_template(Constants.ONBOARD_EMAIL_TEMPLATE, name=firstname, resetLink=reset_password_link, email=email) cls.send_mail(subject, sender, recipients, template) from jobwork.models.emailtrack import EmailTracks EmailTracks.insert({ "emailtrackid": CommonUtils.generateRandomNo(EmailTracks, "emailtrackid"), "userid": userid, "email": email, "subject": subject, "emailtext": template, "createdatetime": datetime.datetime.now(), "updatedatetime": datetime.datetime.now() })
def send_reverse_bid_mail(cls, userid, bidder_email, job_title, bidder_name, jobber_name, txn_amount): if bidder_email: subject = "Reverse Bid on Job." sender = ("SAVEonJOBS", "*****@*****.**") recipients = [bidder_email] template = render_template(Constants.BID_REVERSE_EMAIL_TEMPLATE, name=bidder_name, title=job_title, jobber=jobber_name, amount=int(float(txn_amount))) cls.send_mail(subject, sender, recipients, template) from jobwork.models.emailtrack import EmailTracks EmailTracks.insert({ "emailtrackid": CommonUtils.generateRandomNo(EmailTracks, "emailtrackid"), "userid": userid, "email": bidder_email, "subject": subject, "emailtext": template, "createdatetime": datetime.datetime.now(), "updatedatetime": datetime.datetime.now() }) else: print("No email of bidder.") return
def addCity(): CityCollections.insert({"city" :"Vancouver" ,"countryid" : 647010771 ,"stateid" : 719887913 ,"cityid" : CommonUtils.generateRandomNo(CityCollections ,"cityid"), "active" : True ,"createddatetime" : datetime.now(), "updateddatetime" : datetime.now() ,"gpsJSON" : {"lat" : 49.246292 ,"lng" : -123.116226 ,"lnglat" : [-123.116226 ,49.246292] ,"radius" : ""}}) return "success"
def reportjob(): userid = int(request.json['userid']) token = request.json['token'] jobid = request.json['jobid'] reporteddatetime = datetime.now() reportresolveddatetime = datetime.now() if (userid != None) and (jobid != None): reportedJSON = { "reportid": CommonUtils.generateRandomNo(Report, "reportid"), "byuserid": userid, "reportresolved": False, "reporteddatetime": reporteddatetime, "reportresolveddatetime": reportresolveddatetime, "active": True } temp = [] temp.append(reportedJSON) Jobs.update({"jobid": jobid}, {"$set": {"reportedJSON": temp}}) return jsonify({ "status": 200, "message": "Successfully Report Created." }) else: return jsonify({"status": 400, "message": "No Data Recevied."})
def reportuser(): userid = int(request.json['userid']) token = request.json['token'] touserid = int(request.json['touserid']) userreportedJSON = [] if (userid != None) and (token != None) and (touserid != None): userData = User.find_one({"userid": touserid}, {"_id": 0}) if userData is not None: userreportedJSON = userreportedJSON + userData['reportedJSON'] newReportedJSON = { "reportid": CommonUtils.generateRandomNo(Report, "reportid"), "byuserid": userid, "reportresolved": False, "reporteddatetime": datetime.now(), "reportresolveddatetime": -1, "active": True } userreportedJSON.append(newReportedJSON) User.update({"userid": touserid}, {"$set": { "reportedJSON": userreportedJSON }}) return jsonify({ "status": 200, "message": "Successfully Report Created." }) else: return jsonify({"status": 400, "message": "No data Recevied"})
def verify_mobile_otp(): userid = int(request.json['userid']) token = request.json['token'] findUser = User.find_one({ "userid": userid, "token": token, "mobile": str(request.json['mobile']), "mobileotp": int(request.json['mobileotp']), "isdcode": int(request.json['isdcode']), "mobileverified": False, "active": True }) if findUser is not None: result = User.update( { "userid": userid, "token": token, "mobile": str(request.json['mobile']) }, {"$set": { "mobileverified": True, "proJSON.mobileverified": True }}) sendText = "Your Mobile Number is registered to SAVEonJOBS." full_mobile_number = "+" + str(request.json['isdcode']) + str( request.json['mobile']) message = msgclient.messages.create(body=sendText, to=full_mobile_number, from_=Constants.MSG_SEND_FROM) print(message.sid) MessageTracks.insert({ "messagetrackid": CommonUtils.generateRandomNo(MessageTracks, "messagetrackid"), "userid": userid, "mobile": full_mobile_number, "messagetext": sendText, "messagesid": message.sid, "createdatetime": datetime.now(), "updatedatetime": datetime.now() }) userdata = list(User.find({"userid": userid}, {"_id": 0})) return jsonify({ 'status': 200, 'message': 'Verify Successfully.', "userdata": userdata }) else: return jsonify({ 'status': 201, 'message': "OTP and Mobile Number doesn't match." })
def user_forgotpassword_email(): try: email = request.json['email'] if email is not None: getuserdata = User.find_one({"email": email, "active": True}, {"_id": 0}) # data = user.find_one({"$or" : {"email" : email},{"mobile" : mobile}}) addforgotpasswordJSON = [] if getuserdata is not None: oldJSON = getuserdata['forgotpasswordJSON'] forgotpassworduseddatetime = -1 forgopassworddatetime = datetime.now() forgotpasswordhash = CommonUtils.getHashValue() addforgotpasswordJSON = addforgotpasswordJSON + oldJSON addforgotpasswordJSON.append({"forgopassworddatetime": forgopassworddatetime, "forgotpasswordhash": forgotpasswordhash, "forgotpassworduseddatetime": forgotpassworduseddatetime }) User.update({"email": email}, {"$set": {"forgotpasswordJSON": addforgotpasswordJSON}}) reset_password_link = str(URL) + "forgotpassword__" + str(forgotpasswordhash) subject = "Your SAVEonJOBS Password" msg = Message(subject, sender=("SAVEonJOBS", "*****@*****.**"), recipients=[email]) msg.html = render_template('/emailTemplates/Reset_password_template.html', name=getuserdata['firstname'], resetLink=reset_password_link) mail.send(msg) EmailTracks.insert( {"emailtrackid": CommonUtils.generateRandomNo(EmailTracks, "emailtrackid"), "userid": getuserdata['userid'], "email": email, "subject": subject, "emailtext": msg.html, "createdatetime": datetime.now(), "updatedatetime": datetime.now()}) return jsonify({"status": 200, "message": "Successfully mail sent."}) else: return jsonify({"status": 200, "message": "No data."}) else: return jsonify({"status": 200, "message": "email not found."}) except Exception as e: print(e) return jsonify({"status": 500, "message": "error"})
def invoice_year_invoicenumber(): InvoiceNumbers.insert({ "invoicenumberid": CommonUtils.generateRandomNo(InvoiceNumbers, "invoicenumberid"), "invoicenumber": 0, "financialyear": "2016 - 2017", "startyear": 2016, "endyear": 2017, "createdatetime": datetime.now(), "updatedatetime": datetime.now() }) return jsonify({"status": "ok"})
def get_otp(): try: userid = int(request.json['userid']) token = request.json['token'] # response = User.find_one({"userid" : userid, "token": token, "mobile":str(request.json['mobile']), "isdcode":int(request.json['isdcode']), "active":True},{"_id":0}) mobileotp = CommonUtils.generateOTP() '''result = User.update({"userid": userid, "token": token, "isdcode": int(request.json['isdcode']), "mobile": str(request.json['mobile'])}, {"$set": { "mobileotp": int(mobileotp), "mobileverified": False }})''' sendText = "SAVEonJOBS Mobile Verify OTP is " + str(mobileotp) full_mobile_number = "+" + str(request.json['isdcode']) + str( request.json['mobile']) time = datetime.now() message = msgclient.messages.create(body=sendText, to=full_mobile_number, from_=Constants.MSG_SEND_FROM) MessageTracks.insert({ "messagetrackid": msgtrckid, "userid": userid, "mobile": full_mobile_number, "messagetext": sendText, "messagesid": message.sid, "createdatetime": datetime.now(), "updatedatetime": datetime.now() }) return jsonify({'status': 200, 'message': 'OTP send Successfully.'}) except Exception as e: print(e) return make_response( jsonify({ "status": 500, "message": "Something went wrong, Please try again!" }), 500)
def temp_transaction(): try: userid = int(request.json['userid']) result_transaction = TransactionTrack.find_one( {"userid": userid, "jobid": int(request.json['jobid']), "jobbid": int(request.json['jobbid'])}) if result_transaction: created_transactionid = CommonUtils.generateRandomNo(TransactionTrack, "transactionid") TransactionTrack.insert({ "transactionid": created_transactionid, "requestdatetime": datetime.datetime.now(), "amount": request.json['amount'], "transactionstatus": request.json['transactionstatus'], "transactionresponse": "", "userid": userid, "jobid": int(request.json['jobid']), "jobbid": int(request.json['jobbid']), "responsedatetime": "", "type": "manual" }) else: created_transactionid = result_transaction['transactionid'] TransactionTrack.update({ "transactionid": created_transactionid }, { "$set": { "requestdatetime": datetime.datetime.now() } }) return make_response(jsonify({"status": 200, "transactionid": created_transactionid}), 200) except Exception as e: print(e) return make_response(jsonify({"status": 500, "message": "Something went wrong, Please try again!"}), 500)
def reportcomment(): userid = int(request.json['userid']) token = request.json['token'] commentid = request.json['commentid'] reporteddatetime = datetime.now() reportresolveddatetime = datetime.now() if (userid != None) and (token != None) and (commentid != None): reportedJSON = { "reportid": CommonUtils.generateRandomNo(Report, "reportid"), "byuserid": userid, "reportresolved": False, "reporteddatetime": reporteddatetime, "reportresolveddatetime": reportresolveddatetime, "active": True } commentsreportedJSON = [] commentsreportedJSON = JobComments.find({"commentid": commentid}, { "_id": 0, "reportedJSON": 1 }) reportData = commentsreportedJSON['reportedJSON'] temp = [] temp.append(reportData) temp.append(reportedJSON) JobComments.update({"commentid": commentid}, {"$set": { "reportedJSON": temp }}) return jsonify({ "status": 200, "message": "Successfully Report Created." }) else: return jsonify({"status": 400, "message": "No Data Recevied."})
def send_onboard_sms(cls, userid, mobileotp, mobile): sendText = "Mobile Verify OTP is " + str(mobileotp) message = msgclient.messages.create(body=sendText, to=mobile, from_=sendFrom) print(message.sid) from jobwork.models.messagetrack import MessageTracks MessageTracks.insert({ "messagetrackid": CommonUtils.generateRandomNo(MessageTracks, "messagetrackid"), "userid": userid, "mobile": mobile, "messagetext": sendText, "messagesid": message.sid, "createdatetime": datetime.datetime.now(), "updatedatetime": datetime.datetime.now() })
def get_or_create_user(user_data, user_type, facebook_token): email = user_data.get("email", "") if email: is_user_exists = User.count({"signupJSON.email": email}) if is_user_exists == 0: mobile, mobileotp = "", "" # emailhash = send_email(email) emailhash = CommonUtils.getHashValue() firstname = user_data.get('first_name', "") lastname = user_data.get('last_name', "") usertype = user_type city, location, device_token = "", "", "" fullname = user_data.get("name", "") password = CommonUtils.generateRandomName() if fullname and usertype: salt = CommonUtils.generateRandomName() # random.randrange(1000, 9999) signupJSON = SignupUtils.get_signup_json(email, fbid=user_data.get("id", ""), fbaccesstoken=facebook_token) addressJSON = SignupUtils.get_user_address_json(city) proJSON = SignupUtils.get_pro_json() paymentdetailsJSON = SignupUtils.get_payment_detail_json() if password: password = CommonUtils.password_hash(password, salt) token = request.json.get('token', "") userid = request.json.get('userid', "") if not userid: userid = CommonUtils.generateRandomNo(User, "userid") if not token: token = CommonUtils.generateRandomName() User.insert({ "userid": userid, "email": email, "mobile": mobile, "mobileotp": str(mobileotp), "emailhash": emailhash, "password": password, "salt": salt, "token": token, "usertype": usertype, "firstname": firstname, "lastname": lastname, "device_token": device_token, "signupJSON": signupJSON, "emailverified": False, "mobileverified": False, "isdcode": None, "fbid": "", "fbaccesstoken": "", "isadmin": False, "createddatetime": datetime.datetime.now(), "updateddatetime": datetime.datetime.now(), "addressJSON": addressJSON, "paymentdetailsJSON": paymentdetailsJSON, "skillsJSON": [], "languagesJSON": [], "educationCSV": [], "workplaceCSV": [], "certificateJSON": [], "proJSON": proJSON, "forgotpasswordJSON": [], "gender": "", "dob": "", "locationid": location, "aboutme": "", "picurl": "user-no-image.jpg", "reportedJSON": [], "notificationJSON": [], "socaillogin": False, "facebookpicurl": "", "active": True, "paypal_id": "" }) session['cookiesUserid'] = int(userid) session['userValid'] = str(salt) session['cookiesToken'] = str(token) session['city'] = str(city) session['userloginName'] = str(fullname) session['location'] = str(location) session.permanent = True # Onboard Push notification PushNotificationUtils.notify_onboard(userid, fullname, device_token) # Onboard Email EmailUtils.send_onboard_email(userid, email, emailhash, firstname) return { 'status': 200, 'message': 'Successfull Register', 'userid': userid, 'token': token, 'city': city, 'location': location, "firstname": firstname, "lastname": lastname, "picurl": "user-no-image.jpg", "picPath": Constants.PROFIL_PIC_STATIC_PATH } else: return {'status': 400, 'message': 'Data can not be null.'} else: user = User.find_one({"email": email}, {"_id": 0, "userid": 1, "token": 1, "city": 1, "location": 1, "firstname": 1, "lastname": 1, "picurl": 1, "picPath": Constants.PROFIL_PIC_STATIC_PATH}) return { 'status': 200, 'message': 'Successfull Register', }.update(user) else: return {'status': 202, 'message': 'Data can not be null.'}
from jobwork.utils.common_utils import CommonUtils from jobwork.utils.register_utils import userDataResponse from jobwork.constants import Constants from jobwork.models.messagetrack import MessageTracks from twilio.rest import Client from datetime import datetime from bson import json_util, ObjectId import json from jobwork.db_connection import db from flask_mail import Mail, Message from jobwork.models.emailtrack import EmailTracks user_register_all = Blueprint('user_register_all', __name__, url_prefix='') msgclient = Client(Constants.MSG_ACCOUNT_SID, Constants.MSG_AUTH_TOKEN) msgtrckid = CommonUtils.generateRandomNo(MessageTracks, "messagetrackid") URL = Constants.URL app = Flask(__name__) mail = Mail() app.config["MAIL_SERVER"] = "jobwork.io" app.config["MAIL_PORT"] = 25 app.config["MAIL_DEBUG"] = True app.config["MAIL_USERNAME"] = '******' ## CHANGE THIS app.config["MAIL_PASSWORD"] = '******' app.config["MAIL_DEFAULT_SENDER"] = ("SAVEonJOBS", "*****@*****.**") mail.init_app(app) mail = Mail(app)
def register(): try: firstname = request.json['fname'] lastname = request.json['lname'] email = request.json['email'] regtype = int(request.json['regtype']) mobile = request.json['mobile'] cityid = request.json['city'] skill = request.json['skill'] stateid = request.json['state'] countryid = request.json['country'] picurl = request.json['picurl'] gender = request.json['gender'] locationid = request.json['locationid'] if locationid != "": locationid = int(locationid) if picurl == '': picurl = "default-image.jpg" ''' if city!="": citylist=db.city.find_one({"city":city},{"_id":0,"cityid":1}) cityid=citylist['cityid'] else: cityid="" if state!="": statelist=db.state.find_one({"state":state},{"_id":0,"stateid":1}) stateid=statelist['stateid'] else: stateid="" if country!="": countrylist=db.country.find_one({"country":country},{"_id":0,"countryid":1}) countryid=countrylist['countryid'] else: countryid="" ''' addressJSON = { "address1": request.json['address1'], "address2": request.json['address2'], "city": cityid, "state": stateid, "country": countryid, "pincode": request.json['pincode'] } salt = CommonUtils.generateRandomName() emailhash = CommonUtils.getHashValue() token = CommonUtils.generateRandomName() if regtype == 0: password = request.json['password'] password = CommonUtils.password_hash(password, salt) sociallogin = False emailverified = False fbid = "" fbaccesstoken = "" registeredfrom = "jobwork" else: password = "" sociallogin = True emailverified = True fbid = request.json['fbid'] fbaccesstoken = request.json['fbaccesstoken'] if regtype == 1: registeredfrom = "facebook" elif regtype == 2: registeredfrom = "gmail" #return jsonify({"ok":1}) userdata = list(User.find({"email": email}, {"_id": 0})) if User.count({"email": email}) == 0: userid = CommonUtils.generateRandomNo(User, "userid") User.insert({ "userid": userid, "signupJSON": "", "email": email, "emailverified": emailverified, "emailhash": emailhash, "mobile": mobile, "mobileverified": False, "mobileotp": "", "isdcode": None, "fbid": fbid, "fbaccesstoken": fbaccesstoken, "password": password, "salt": salt, "token": token, "firstname": firstname, "lastname": lastname, "isadmin": False, "createddatetime": datetime.now(), "updateddatetime": datetime.now(), "addressJSON": addressJSON, "paymentdetailsJSON": [], "skillsJSON": skill, "languagesJSON": [], "educationCSV": [], "workplaceCSV": [], "certificateJSON": [], "proJSON": [], "forgotpasswordJSON": [], "gender": gender, "dob": "", "locationid": locationid, "aboutme": "", "picurl": picurl, "reportedJSON": [], "notificationJSON": [], "socaillogin": sociallogin, "facebookpicurl": "", "active": True, "paypal_id": "", "registeredfrom": registeredfrom }) if regtype != 0: response = userDataResponse(email) # user = list(User.find({"email": email}, {"_id": 0})) return jsonify({ "status": 200, "response": response, "message": "", "error": False, "registedfrom": registeredfrom }) else: emailhash = CommonUtils.getHashValue() result = User.update( { "userid": userid, "token": token, "email": request.json['email'] }, {"$set": { "emailhash": emailhash }}) # Send email verification reset_password_link = str(URL) + "emailverify/" + str( emailhash) subject = "Your jobwork.io Account Email Verification" msg = Message(subject, sender=("JobWork", "*****@*****.**"), recipients=[email]) msg.html = render_template( '/emailTemplates/email_verification_template.html', name=firstname, resetLink=reset_password_link, email=email) mail.send(msg) EmailTracks.insert({ "emailtrackid": CommonUtils.generateRandomNo(EmailTracks, "emailtrackid"), "userid": userid, "email": request.json['email'], "subject": subject, "emailtext": msg.html, "createdatetime": datetime.now(), "updatedatetime": datetime.now() }) return jsonify({ "status": 200, "response": {}, "message": "verification mail sent", "error": True, "registedfrom": registeredfrom }) elif userdata[0]['emailverified'] == False: emailhash = CommonUtils.getHashValue() userid = CommonUtils.generateRandomNo(User, "userid") db.user.remove({"email": email}) User.insert({ "userid": userid, "signupJSON": "", "email": email, "emailverified": emailverified, "emailhash": emailhash, "mobile": mobile, "mobileverified": False, "mobileotp": "", "isdcode": None, "fbid": fbid, "fbaccesstoken": fbaccesstoken, "password": password, "salt": salt, "token": token, "firstname": firstname, "lastname": lastname, "isadmin": False, "createddatetime": datetime.now(), "updateddatetime": datetime.now(), "addressJSON": addressJSON, "paymentdetailsJSON": [], "skillsJSON": skill, "languagesJSON": [], "educationCSV": [], "workplaceCSV": [], "certificateJSON": [], "proJSON": [], "forgotpasswordJSON": [], "gender": gender, "dob": "", "locationid": locationid, "aboutme": "", "picurl": picurl, "reportedJSON": [], "notificationJSON": [], "socaillogin": sociallogin, "facebookpicurl": "", "active": True, "paypal_id": "", "registeredfrom": registeredfrom }) if regtype != 0: response = userDataResponse(email) return jsonify({ "status": 200, "response": response, "message": "existed now updated", "error": False, "registedfrom": registeredfrom }) else: emailhash = CommonUtils.getHashValue() result = User.update( { "userid": userid, "token": token, "email": request.json['email'] }, {"$set": { "emailhash": emailhash }}) # Send email verification reset_password_link = str(URL) + "emailverify/" + str( emailhash) subject = "Your jobwork.io Account Email Verification" msg = Message(subject, sender=("JobWork", "*****@*****.**"), recipients=[email]) msg.html = render_template( '/emailTemplates/email_verification_template.html', name=firstname, resetLink=reset_password_link, email=email) mail.send(msg) EmailTracks.insert({ "emailtrackid": CommonUtils.generateRandomNo(EmailTracks, "emailtrackid"), "userid": userid, "email": request.json['email'], "subject": subject, "emailtext": msg.html, "createdatetime": datetime.now(), "updatedatetime": datetime.now() }) return jsonify({ "status": 200, "response": {}, "message": "mail id exist but not verified yet verification mail sent", "error": True, "registedfrom": registeredfrom }) elif regtype != 0: verify = False user = list(User.find({"email": email}, {"_id": 0})) if regtype == 1 and user[0]['registeredfrom'] == "facebook": verify = True elif regtype == 2 and user[0]['registeredfrom'] == "gmail": verify = True else: message = "account already registered from " + user[0][ 'registeredfrom'] return jsonify({ "status": 200, "messsage": message, "registedfrom": user[0]['registeredfrom'], "response": {}, "error": True }) #user = list(User.find({"email": email}, {"_id": 0})) if verify == True: #print(userdata[0]['cityname'][0]) response = userDataResponse(email) print((response)) return jsonify({ "status": 200, "response": response, "message": "", "error": False, "registedfrom": user[0]['registeredfrom'] }) else: return jsonify({ "status": 200, "messsage": "email id already used", "response": {}, "error": True, "registedfrom": userdata[0]['registeredfrom'] }) except Exception as e: return json.dumps(e, indent=4, default=json_util.default)
def bid_selection_entries(cls, userid, jobid, bidid, final_bid, payment_details): total_bid_amount = float(final_bid['bidamount']) commission = float(total_bid_amount * 0.1) final_bidamount = float(total_bid_amount - commission) cls.insert({ "userid": userid, "ledgerid": CommonUtils.generateRandomNo(Ledgers, "ledgerid"), "amount": float(total_bid_amount) * (-1), "datetime": datetime.datetime.now(), "type": "ESCROW", "jobid": int(jobid), "jobbidid": int(bidid), "paymentdetailsJSON": payment_details, "refunddetailsJSON": "", "refundcompletiondatetime": "", "payingdatetime": "", "remark": "", "active": True }) cls.insert({ "userid": userid, "ledgerid": CommonUtils.generateRandomNo(Ledgers, "ledgerid"), "amount": float(commission), "datetime": datetime.datetime.now(), "type": "COMMISSION", "jobid": int(jobid), "jobbidid": int(bidid), "paymentdetailsJSON": "", "refunddetailsJSON": "", "refundcompletiondatetime": "", "payingdatetime": "", "remark": "", "active": True }) cls.insert({ "userid": final_bid["userid"], "ledgerid": CommonUtils.generateRandomNo(Ledgers, "ledgerid"), "amount": float(final_bidamount), "datetime": datetime.datetime.now(), "type": "PAID", "jobid": int(jobid), "jobbidid": int(bidid), "paymentdetailsJSON": "", "refunddetailsJSON": "", "refundcompletiondatetime": "", "payingdatetime": "", "remark": "", "active": True })
def job_bid_create(): userid = request.json['userid'] userInfo = User.find_one({"userid": int(userid)}, {"_id": 0}) if userInfo is not None: if userInfo['emailverified'] is False: return jsonify({ "status": 202, "message": "Email not verified. Please verify your email to bid" }) jobCollection = Jobs.find_one( { "jobid": int(request.json['jobid']), "active": True }, {"_id": 0}) #if jobCollection['personsselected'] >= jobCollection['personsrequired']: # return jsonify({"status": 203, "message": "Jobber's requirement has already been fulfilled"}) jobberUser = User.find_one({"userid": jobCollection['creatinguserid']}, {"_id": 0}) userCollection = User.find_one({"userid": userid}, {"_id": 0}) if userCollection is not None: fullname = userCollection['firstname'] + " " + userCollection[ 'lastname'] bidderEmail = userCollection['email'] else: fullname = "" bidderEmail = None if jobberUser is not None: jobberfullname = jobberUser['firstname'] + " " + jobberUser['lastname'] jobberEmail = jobberUser['email'] else: jobberfullname = None jobberEmail = None if jobCollection is not None: if request.json['bidid'] == "": check_status = JobBids.find( { "jobid": int(request.json['jobid']), "userid": userid, "active": True }, {"_id": 0}) if check_status.count() == 0: reverseBidData = { "reversebidamount": None, "reversebiddatetime": None } bidid = CommonUtils.generateRandomNo(JobBids, "bidid") JobBids.insert({ "jobid": int(request.json['jobid']), "bidid": bidid, "userid": userid, "selected": False, "bidamount": float(request.json['bidamount']), "finalbidamount": None, "bidcomment": request.json['bidcomment'], "createdatetime": datetime.now(), "bidcanceldatetime": "", "bidcancellationreason": "", "status": "pending", "reversebid": reverseBidData, "completionstatus": "pending", "completionremarks": "", "active": True }) notificationtext = "Your job title " + jobCollection[ 'title'] + " is bid by : " + fullname '''registration_id = find_FCM_id(jobCollection['creatinguserid']) if (registration_id): data_message = { "body": notificationtext, } result = push_service.notify_single_device(registration_id=registration_id, message_title="New Bid", message_body=notificationtext, data_message=data_message, click_action="FCM_PLUGIN_ACTIVITY")''' Notifications.insert({ "notificationid": CommonUtils.generateRandomNo(Notifications, "notificationid"), "notificationtext": notificationtext, "notificationtype": "Bid", "notificationtouserid": int(jobCollection['creatinguserid']), "notificationfromuserid": userid, "jobid": jobCollection['jobid'], "bidid": bidid, "commentid": -1, "createddatetime": datetime.now(), "updatedatetime": datetime.now(), "isread": False }) ''' # Sending Email if jobberEmail is not None: subject = "Bid Created." msg = Message(subject, sender=("SAVEonJOBS", "*****@*****.**"), recipients=[jobberEmail]) msg.html = render_template('/emailTemplates/bid-receive.html', name=jobberfullname, title=str(jobCollection['title']), bidder=fullname, amount=int(request.json['bidamount'])) mail.send(msg) emailtracks.insert({"emailtrackid": generateRandomNo(emailtracks, "emailtrackid"), "userid": int(jobCollection['creatinguserid']), "email": jobberEmail, "subject": subject, "emailtext": msg.html, "createdatetime": datetime.now(), "updatedatetime": datetime.now()}) else: print "No email of jobber." ''' new_bid = list(JobBids.find({"bidid": bidid}, {"_id": 0})) return jsonify({ "status": 200, "message": "Successfully created.", "response": new_bid, "error": False }) else: new_bid = list( JobBids.find({"bidid": check_status['bidid']}, {"_id": 0})) return jsonify({ "status": 200, "message": "bid status intercepted.", "bidUpdate": new_bid }) else: job_bid_detail = JobBids.find_one( {"bidid": int(request.json['bidid'])}, {"_id": 0}) if job_bid_detail is not None: if job_bid_detail['status'] == 'pending': finalbidamount = float(request.json['reversebid']) # updating bidamount array and reverse bid array reverseBidData = { "reversebidamount": request.json['reversebid'], "reversebiddatetime": datetime.now() } JobBids.update({"bidid": int(request.json['bidid'])}, { "$set": { "status": "reversebid", "bidcomment": request.json['bidcomment'], "reversebid": reverseBidData, "finalbidamount": finalbidamount } }) commission = float(finalbidamount * 0.1) finalbidamount = float(finalbidamount - commission) Ledgers.insert({ "userid": userid, "ledgerid": CommonUtils.generateRandomNo(Ledgers, "ledgerid"), "amount": float(finalbidamount), "datetime": datetime.now(), "type": "escrow", "jobid": int(jobCollection['jobid']), "paymentdetailsJSON": "", "refundinitateddatetime": "", "refunddetailsJSON": "", "refundcompletiondatetime": "", "payingdatetime": "", "remark": "", "active": True }) Ledgers.insert({ "userid": userid, "ledgerid": CommonUtils.generateRandomNo(Ledgers, "ledgerid"), "amount": float(commission), "datetime": datetime.now(), "type": "commission", "jobid": int(jobCollection['jobid']), "paymentdetailsJSON": datetime.now(), "refundinitateddatetime": "", "refunddetailsJSON": "", "refundcompletiondatetime": "", "active": True }) notificationtext = "Jobber reverse bid on the job title " + jobCollection[ 'title'] + " for bidder : " + fullname '''registration_id = find_FCM_id(job_bid_detail['userid']) if (registration_id): data_message = { "body": notificationtext, } result = push_service.notify_single_device(registration_id=registration_id, message_title="Reverse Bid", message_body=notificationtext, data_message=data_message, click_action="FCM_PLUGIN_ACTIVITY")''' Notifications.insert({ "notificationid": CommonUtils.generateRandomNo(Notifications, "notificationid"), "notificationtext": notificationtext, "notificationtype": "Bid", "notificationtouserid": int(job_bid_detail['userid']), "notificationfromuserid": userid, "jobid": jobCollection['jobid'], "bidid": int(request.json['bidid']), "commentid": -1, "createddatetime": datetime.now(), "updatedatetime": datetime.now(), "isread": False }) ''' if bidderEmail is not None: subject = "Reverse Bid on Job." msg = Message(subject, sender=("SAVEonJOBS", "*****@*****.**"), recipients=[bidderEmail]) msg.html = render_template('/emailTemplates/reverse-bid.html', name=bidderfullname, title=jobCollection['title'], jobber=jobberfullname, amount=int(request.form['payment'])) mail.send(msg) emailtracks.insert({"emailtrackid": generateRandomNo(emailtracks, "emailtrackid"), "userid": finalBid['userid'], "email": bidderEmail, "subject": subject, "emailtext": msg.html, "createdatetime": datetime.now(), "updatedatetime": datetime.now()}) else: print "No email of bidder." ''' update_bid = list( JobBids.find({"bidid": int(request.json['bidid'])}, {"_id": 0})) return jsonify({ "status": 200, "message": "Bid Successfully set.", "response": update_bid, "error": False }) else: update_bid = list( JobBids.find({"bidid": int(request.json['bidid'])}, {"_id": 0})) return jsonify({ "status": 200, "message": "bid update", "Response": update_bid, "error": False }) else: return jsonify({ "status": 200, "message": "Bid not found.", "response": [], "error": True }) else: return jsonify({ "status": 402, "message": "Job Not Found.", "response": [], "error": True })
def user_update_image(): try: userid = int(request.form['userid']) token = request.form['token'] secdatetime = datetime.utcnow() - timedelta(minutes=1) createdatetimeinseconds = calendar.timegm(secdatetime.utctimetuple()) findUser = User.find_one({ "userid": userid, "token": token, "active": True }) certificateJSON = findUser['certificateJSON'] if findUser is not None: print(request.form['type']) # Profile Pic Upload if request.form['type'] == "profileimage": file = request.files['myimage'] fileNameContain = str(userid) + str( findUser['salt']) + "profile_" + str( createdatetimeinseconds) if file and allowed_file_image(file.filename): print(file.filename) filename = secure_filename(file.filename) ext = file.filename.rsplit('.', 1)[1] filename = fileNameContain + "." + ext file.save( os.path.join(jw_upload.config['UPLOAD_FOLDER_PROFILE'], filename)) User.update({ 'userid': userid, 'token': token }, {"$set": { 'picurl': filename }}) profilePic = URL + imagePath + filename message = { 'status': 200, 'message': 'Image successfully uploaded', "profilePic": profilePic } # Police Documents Upload if request.form['type'] == "police": file = request.files['myimage'] fileNameContain = str(userid) + str( findUser['salt']) + "police_" + str( createdatetimeinseconds) if file and (allowed_file_image(file.filename) or allowed_file_doc_pdf(file.filename)): filename = secure_filename(file.filename) ext = file.filename.rsplit('.', 1)[1] filename = fileNameContain + "." + ext file.save( os.path.join(jw_upload.config['UPLOAD_FOLDER_DOC'], filename)) proDocuments = URL + Constants.DOC_PATH + filename certificateJSONDATA = { "type": ext, "certificateid": CommonUtils.generateRandomNo(Certificate, "certificateid"), "certificateimageurl": filename, "certificatestatus": "pending", "certificatecaption": request.form['certificatecaption'], "ispoliceverification": True } certificateJSON.append(certificateJSONDATA) User.update({ 'userid': userid, 'token': token }, {"$set": { 'certificateJSON': certificateJSON }}) message = { 'status': 200, 'message': 'Image successfully uploaded', "certificateJSON": certificateJSON } # Pro Documents Uploads if request.form['type'] == "certificateimage": file = request.files['myimage'] fileNameContain = str(userid) + str( findUser['salt']) + "pro_docs_" + str( createdatetimeinseconds) if file and (allowed_file_image(file.filename) or allowed_file_doc_pdf(file.filename)): filename = secure_filename(file.filename) ext = file.filename.rsplit('.', 1)[1] filename = fileNameContain + "." + ext file.save( os.path.join(jw_upload.config['UPLOAD_FOLDER_DOC'], filename)) proDocuments = URL + Constants.DOC_PATH certificateJSONDATA = { "type": ext, "certificateid": CommonUtils.generateRandomNo(Certificate, "certificateid"), "certificateimageurl": filename, "certificatestatus": "pending", "certificatecaption": request.form['certificatecaption'], "ispoliceverification": False } certificateJSON.append(certificateJSONDATA) User.update({ 'userid': userid, 'token': token }, {"$set": { 'certificateJSON': certificateJSON }}) message = { 'status': 200, 'message': 'Image successfully uploaded', "certificateJSON": certificateJSON } # Portfolio Images Uploads if request.form['type'] == "portfolioimage": file = request.files['myimage'] fileNameContain = str(userid) + str( findUser['salt']) + "portfolio_" + str( createdatetimeinseconds) if file and allowed_file_image(file.filename): filename = secure_filename(file.filename) ext = file.filename.rsplit('.', 1)[1] filename = fileNameContain + "." + ext file.save( os.path.join( jw_upload.config['UPLOAD_FOLDER_PORTFOLIO'], filename)) portfolioDataPath = URL + Constants.PORTFOLIO_PATH UserPortfolio.insert({ "portfolioid": CommonUtils.generateRandomNo(UserPortfolio, "portfolioid"), "portfolioimage": filename, "userid": userid, "active": True, "createddatetime": datetime.now(), "updatedatetime": datetime.now() }) portfolioData = list( UserPortfolio.find({ "userid": userid, "active": True, }, {"_id": 0})) message = { 'status': 200, 'message': 'Image successfully uploaded', "portfolioData": portfolioData, "portfolioDataPath": portfolioDataPath } User.update({ "userid": userid, "token": token, "active": True }, {"$set": { "updateddatetime": datetime.now() }}) return jsonify(message) else: return jsonify({"status": 402, "message": "No User found."}) except Exception as e: return jsonify({"status": 500, "message": e.message})
def job_comment_create(): # Check authentications keys if request.json.has_key('userid') == False or request.json.has_key( 'token') == False: return jsonify({ "status": 401, "message": "Authentication keys are missing." }) userid = int(request.json['userid']) token = request.json['token'] # Authenticate credentials if authentication(userid, token) == False: return jsonify({"status": 400, "message": "Authentication Failed."}) jobData = Jobs.find_one({"jobid": int(request.json['jobid'])}, {"_id": 0}) if jobData is not None: userCollection = User.find_one({"userid": userid}, {"_id": 0}) if userCollection is not None: fullname = userCollection['firstname'] + " " + userCollection[ 'lastname'] if userCollection['picurl'] != "": picurl = URL + imagePath + userCollection['picurl'] else: picurl = URL + imagePath + "user-no-image.jpg" else: fullname = "" commentid = CommonUtils.generateRandomNo(JobComments, "commentid") JobComments.insert({ "commentid": commentid, "jobid": int(request.json['jobid']), "userid": userid, "comment": request.json['comment'], "reportedJSON": [], "createdatetime": datetime.now(), "updatedatetime": datetime.now(), "active": True, "picurl": picurl }) commentData = list( JobComments.find({"jobid": int(request.json['jobid'])}, { "_id": 0, "userid": 1 })) if len(commentData) > 0: userArray = [] for commentCollection in commentData: if commentCollection['userid'] != jobData[ 'creatinguserid'] and commentCollection[ 'userid'] != userid: userArray.append(commentCollection['userid']) userArrayList = list(set(userArray)) if jobData['creatinguserid'] != userid: notificationtext = fullname + " commented on your job - title " + jobData[ 'title'] registration_id = find_FCM_id(jobData['creatinguserid']) if (registration_id): data_message = { "body": notificationtext, } result = push_service.notify_single_device( registration_id=registration_id, message_title="New comment", message_body=notificationtext, data_message=data_message, click_action="FCM_PLUGIN_ACTIVITY") Notifications.insert({ "notificationid": CommonUtils.generateRandomNo(Notifications, "notificationid"), "notificationtext": notificationtext, "notificationtype": "Comment", "notificationtouserid": int(jobData['creatinguserid']), "notificationfromuserid": userid, "jobid": jobData['jobid'], "bidid": -1, "commentid": commentid, "createddatetime": datetime.now(), "updatedatetime": datetime.now(), "isread": False }) else: print("job created userid and userid is same.") for userArrayListData in userArrayList: notificationtext = fullname + " commented on your job - title " + jobData[ 'title'] registration_id = find_FCM_id(userArrayListData) if (registration_id): data_message = { "body": notificationtext, } result = push_service.notify_single_device( registration_id=registration_id, message_title="New Comment", message_body=notificationtext, data_message=data_message, click_action="FCM_PLUGIN_ACTIVITY") Notifications.insert({ "notificationid": CommonUtils.generateRandomNo(Notifications, "notificationid"), "notificationtext": notificationtext, "notificationtype": "Comment", "notificationtouserid": int(userArrayListData), "notificationfromuserid": userid, "jobid": jobData['jobid'], "bidid": -1, "commentid": commentid, "createddatetime": datetime.now(), "updatedatetime": datetime.now(), "isread": False }) else: print("No comment data.") print(commentid) getNewJobComment = list( JobComments.find({"commentid": commentid}, {"_id": 0})) print(getNewJobComment) return jsonify({ "status": 200, "message": "Comments created.", "getNewJobComment": getNewJobComment }) else: return jsonify({ "status": 200, "message": "No Job Found.", "getNewJobComment": [] })
def conversation_create(): userid = int(request.json['userid']) token = request.json['token'] check_status = JobBids.find({ "jobid": int(request.json['jobid']), "userid": userid, "active": True, "status": { "$in": ["selectedbyjobber", "approvedbybidder"] } }).count() if check_status == 1: secdatetime = datetime.utcnow() - timedelta(minutes=1) jobData = Jobs.find_one( { "jobid": int(request.json['jobid']), "active": True, "jobstatus": { "$ne": "completed" }, "expired": False }, {"_id": 0}) if jobData is not None: if jobData['creatinguserid'] != userid: conversationData = Conversations.find_one( { "userid1": jobData['creatinguserid'], "userid2": userid, "jobid": jobData['jobid'] }, {"_id": 0}) if conversationData is None: conversationid = CommonUtils.generateRandomNo( Conversations, "conversationid") Conversations.insert({ "userid1": jobData['creatinguserid'], "userid2": userid, "lastdatetime": datetime.now(), "lastmessages": None, "lastmessagesuserid": None, "conversationid": conversationid, "jobid": jobData['jobid'], "createddatetime": datetime.now(), "createdatetimeinseconds": calendar.timegm(secdatetime.utctimetuple()), "updatedatetime": datetime.now(), "jobexpired": False, "active": True }) conversationList = list( Conversations.find({ "conversationid": conversationid }, { "_id": 0 }).sort("createddatetime", -1)) return jsonify({ "status": 200, "message": "Conversation Created.", "conversationList": conversationList }) else: return jsonify({ "status": 402, "message": "Conversation already Exist.", "conversationData": conversationData['conversationid'] }) else: return jsonify({ "status": 402, "message": "Conversation not on same user.", "conversationData": [] }) else: return jsonify({ "status": 402, "message": "No job data Found.", "conversationList": [] }) else: return jsonify({ "status": 402, "message": "status not correct", "conversationList": [] })
def user_forgotpassword_set(): try: email = request.json['email'] if request.json is not None: if request.json['hashData'] != "" and request.json[ 'email'] != "" and request.json['password'] != "": getuserdata = User.find_one \ ({"forgotpasswordJSON.forgotpasswordhash" : request.json['hashData'] ,"email" :request.json['email']}, {"_id" :0}) if getuserdata is not None: salt = getuserdata['salt'] if request.json['password'].strip() != "": password = hashlib.md5(request.json['password'].strip( )).hexdigest() + salt User.update( { "userid": getuserdata['userid'], "email": request.json['email'] }, {"$set": { "password": password }}) subject = "Your SAVEonJOBS password has changed" msg = Message(subject, sender=("SAVEonJOBS", "*****@*****.**"), recipients=[email]) msg.html = render_template( '/emailTemplates/password_changed.html', name=getuserdata['firstname'] + " " + getuserdata['lastname']) Mail.send(msg) EmailTracks.insert({ "emailtrackid": CommonUtils.generateRandomNo( EmailTracks, "emailtrackid"), "userid": getuserdata['userid'], "email": email, "subject": subject, "emailtext": msg.html, "createdatetime": datetime.now(), "updatedatetime": datetime.now() }) return jsonify({ "status": 200, "message": "Password Successfully changed." }) else: return jsonify({ "status": 402, "message": "No user is found." }) else: return jsonify({"status": 402, "message": "Data is empty."}) else: return jsonify({"status": 402, "message": "No Data."}) except Exception as e: return jsonify({"status": 500, "message": e.message})
def createJob(): try: userid = int(request.json['userid']) token = request.json['token'] userInfo = User.find_one({"userid": int(userid)}, {"_id": 0}) if userInfo is not None: if userInfo['emailverified'] is False: return jsonify({ "status": 202, "message": "Email not verified. Please verify your email to enable this feature" }) jobid = request.json['jobid'] originaljobid = None if (jobid != ""): originaljobid = jobid draft = request.json['draft'] title = request.json['title'] description = request.json['description'] duedate = request.json['duedate'] jobOnline = request.json['jobOnline'] city = int(request.json['city']) location = int(request.json['location']) if duedate == "today": duedate = "" duedate = datetime.now() if duedate == "week": duedate = "" duedate = datetime.now() + timedelta(days=7) if duedate == "certain_day": duedate = "" format = '%d-%m-%Y %H:%M:%S' certaindatetime = request.json['certaindatetime'] duedate = datetime.strptime(certaindatetime, format) citydetail = CityCollections.find_one({"cityid": city}, {"_id": 0}) statedetail = StateCollections.find_one( {"stateid": citydetail['stateid']}, {"_id": 0}) countrydetail = CountryCollections.find_one( {"countryid": citydetail['countryid']}, {"_id": 0}) addressJSON = { "address1": "", "address2": "", "city": city, "state": citydetail['stateid'], "country": countrydetail['countryid'], "pincode": "" } person = request.json['person'] budgettype = request.json['budgettype'] budget = float(request.json['budget']) if budgettype == "hourly": totalhours = int(request.json['hours']) totalbudget = int(budget * totalhours) else: totalhours = -1 totalbudget = budget if draft == False: publisheddatetime = datetime.now() else: publisheddatetime = None if (request.json['draft_data'] == False): jobid = CommonUtils.generateRandomNo(Jobs, "jobid") result = Jobs.insert({ "jobid": jobid, "title": title, "description": description, "creatinguserid": userid, "duedate": duedate, "budget": budget, "budgettype": budgettype, "totalbudget": totalbudget, "totalhours": totalhours, "jobstatus": "pending", "draft": draft, "publisheddatetime": publisheddatetime, "personsrequired": int(person), "reportedJSON": [], "active": True, "cancellationreason": None, "cityid": city, "online": jobOnline, "addressJSON": addressJSON, "locationid": location, "personsselected": 0, "originaljobid": originaljobid, "adminapprovalforcancellation": None, "skillid": None, "tags": None, "updatedatetime": datetime.now(), "createdatetime": datetime.now(), "expired": False }) return jsonify({ 'status': 200, 'message': 'Job Created.', 'jobid': jobid }) else: Jobs.update({"jobid": jobid}, { "$set": { "title": title, "description": description, "creatinguserid": userid, "duedate": duedate, "budget": budget, "budgettype": budgettype, "totalbudget": totalbudget, "totalhours": totalhours, "jobstatus": "pending", "draft": draft, "publisheddatetime": publisheddatetime, "personsrequired": int(person), "reportedJSON": [], "active": True, "cancellationreason": None, "cityid": city, "online": jobOnline, "addressJSON": addressJSON, "locationid": location, "personsselected": 0, "originaljobid": originaljobid, "adminapprovalforcancellation": None, "skillid": None, "tags": None, "updatedatetime": datetime.now(), "expired": False } }) return jsonify({ 'status': 200, 'message': 'Job Updated.', 'jobid': jobid }) except Exception as e: return jsonify({'status': 500, 'message': "error"})
def job_all_list(): try: allDataCollections = [] sortDataAccording = request.json['sortDataAccording'] city = request.json.get('city', "") location = request.json.get('location', "") radius = request.json.get('radius', "") jobType = request.json.get('jobType', "") budgetMin = request.json.get('budgetMin', "") budgetMax = request.json.get('budgetMax', '') searchstring = request.json.get('searchstring', '') page_offset = request.json.get('page_offset', 0) result = [] lat = 0 lng = 0 job_location = [] filterstring = { "active": True, "draft": False, "jobstatus": { "$in": ["pending", "reversebid"] } } sort_filter = [] distance_filter_string = { "active": True, "draft": False, "jobstatus": { "$in": ["pending", "reversebid"] } } distance_job = [] startCity = "252347228" if len(searchstring) != 0: stringData = '.*' + searchstring + '.*' getall = [] # for OR conditionOR = { '$options': 'i', '$regex': stringData } # regex condition serchdatainarray = {'title': conditionOR} # for title singleget = {"description": conditionOR} # for description getall.append(serchdatainarray) getall.append(singleget) filterstring['$or'] = getall filterstring['expired'] = False distance_filter_string['expired'] = False mapCoordinate = {} cityResult = CityCollections.find_one({"cityid": int(startCity)}, {"_id": 0}) if cityResult is not None: lat = cityResult['gpsJSON']['lat'] lng = cityResult['gpsJSON']['lng'] mapCoordinate = {"lat": lat, "lng": lng} if radius != "": if location != "": location_result = Locations.find_one( {"locationid": int(location)}, {"_id": 0}) if location_result is not None: lat = location_result['gpsJSON']['lat'] lng = location_result['gpsJSON']['lng'] mapCoordinate = {"lat": lat, "lng": lng} print(mapCoordinate) location_gps_result = Locations.find({ "gpsJSON.lnglat": { "$near": { "$geometry": { "type": "Point", "coordinates": [lng, lat] }, "$maxDistance": int(radius) * 1000 } } }) if location_gps_result is not None: for location_gps in location_gps_result: job_location.append(int(location_gps['locationid'])) elif city != "": city_result = CityCollections.find_one({"cityid": int(city)}, {"_id": 0}) if city_result is not None: lat = city_result['gpsJSON']['lat'] lng = city_result['gpsJSON']['lng'] mapCoordinate = {"lat": lat, "lng": lng} print(mapCoordinate) city_gps_result = Locations.find({ "gpsJSON.lnglat": { "$near": { "$geometry": { "type": "Point", "coordinates": [lng, lat] }, "$maxDistance": int(radius) * 1000 } } }) if city_gps_result is not None: for city_gps in city_gps_result: job_location.append(int(city_gps['locationid'])) elif mapCoordinate: city_gps_result = Locations.find({ "gpsJSON.lnglat": { "$near": { "$geometry": { "type": "Point", "coordinates": [ mapCoordinate.get("lng"), mapCoordinate.get("lat") ] }, "$maxDistance": int(radius) * 1000 } } }) if city_gps_result is not None: for city_gps in city_gps_result: job_location.append(int(city_gps['locationid'])) print(job_location) if jobType != "allJobs": filterstring.update({"online": jobType}) distance_filter_string.update({"online": jobType}) if budgetMin or budgetMax: budget_filter = {"budget": {}} if budgetMin: budget_filter['budget']['$gte'] = int(budgetMin) if budgetMax: budget_filter['budget']['$lte'] = int(budgetMax) filterstring.update(budget_filter) distance_filter_string.update(budget_filter) if job_location: if city: filterstring.update({ "cityid": int(city), "locationid": { "$in": job_location } }) else: filterstring.update({ "cityid": int(startCity), "locationid": { "$in": job_location } }) else: if location: filterstring.update({"locationid": int(location)}) if city: filterstring.update({"cityid": int(city)}) else: filterstring.update({"cityid": int(startCity)}) print(type(location)) print(filterstring) if sortDataAccording == "" or sortDataAccording == "recent": sort_filter.append(("publisheddatetime", -1)) elif sortDataAccording == "price_asc": sort_filter.append(("budget", 1)) elif sortDataAccording == "distance": dist_centre = location if location else city if city else "252347228" dist_city_result = Locations.find_one( {"locationid": int(dist_centre)}, {"_id": 0}) if dist_city_result: dist_lat = dist_city_result['gpsJSON']['lat'] dist_lng = dist_city_result['gpsJSON']['lng'] mapCoordinate = {"lat": dist_lat, "lng": dist_lng} print(mapCoordinate) radius = radius if radius else 50000 distance_gps_result = Locations.aggregate([{ "$geoNear": { "near": { "type": "Point", "coordinates": [dist_lng, dist_lat] }, "maxDistance": radius * 1000, "spherical": True, "distanceField": "distance" } }]) if distance_gps_result is not None: for distance_job_location in distance_gps_result: distance_job.append({ "locationid": distance_job_location['locationid'], "distance": distance_job_location['distance'] }) distance_job = sorted(distance_job, key=lambda k: k['distance']) if city: distance_filter_string.update({ "cityid": int(city), "locationid": int(dist_centre) }) distance_result = Jobs.find(distance_filter_string, { "_id": 0 }).skip(page_offset).limit(Constants.PAGE_LIMIT) if distance_result: for distance in distance_result: result.append(distance) else: for distance in distance_job: distance_filter_string.update({ "cityid": int(dist_centre), "locationid": distance['locationid'] }) print(distance_filter_string) distance_result = Jobs.find(distance_filter_string, { "_id": 0 }).skip(page_offset).limit(Constants.PAGE_LIMIT) if distance_result: for dist in distance_result: result.append(dist) else: sort_filter.append(("budget", -1)) if sortDataAccording != "distance": result = Jobs.find(filterstring, { "_id": 0 }).sort(sort_filter).skip(page_offset).limit(Constants.PAGE_LIMIT) print(result.count()) if result: for resultData in result: # Job bidding Detail jobBids = list( JobBids.find({"jobid": resultData['jobid']}, {"_id": 0})) if resultData.get('creatinguserid', None): if resultData['creatinguserid']: userData = User.find_one( {"userid": int(resultData['creatinguserid'])}, {"_id": 0}) if userData: fullname = userData['firstname'] + " " + userData[ 'lastname'] if resultData['cityid']: cityName = CityCollections.find_one( {"cityid": resultData['cityid']}, { "_id": 0, "city": 1 }) cityName = cityName['city'] else: cityName = "" if userData.get('picurl', ""): picurl = Constants.PROFIL_PIC_STATIC_PATH + userData[ 'picurl'] else: picurl = Constants.PROFIL_PIC_STATIC_PATH + "user-no-image.jpg" location_name = "" if resultData['cityid'] and resultData[ 'locationid']: jobMapResult = Locations.find_one( { "locationid": int( resultData['locationid']) }, {"_id": 0}) location_name = jobMapResult[ 'locationname'] + " - " + jobMapResult[ 'under'] else: if not resultData['cityid']: jobMapCity = 252347228 else: jobMapCity = int(resultData['cityid']) jobMapResult = CityCollections.find_one( {"cityid": jobMapCity}, {"_id": 0}) jobMapCoordinate = {} if jobMapResult is not None: lat = jobMapResult['gpsJSON']['lat'] lng = jobMapResult['gpsJSON']['lng'] jobMapCoordinate = {"lat": lat, "lng": lng} MapResult = CityCollections.find_one( {"cityid": int(resultData['cityid'])}, {"_id": 0}) if MapResult is not None: city_lat = MapResult['gpsJSON']['lat'] city_lng = MapResult['gpsJSON']['lng'] mapCoordinate = { "lat": city_lat, "lng": city_lng } userDataCollection = { "fullname": fullname, "cityname": cityName, "locationname": location_name, "picurl": picurl, "totalJobBids": len(jobBids), "jobMapCoordinate": jobMapCoordinate, "mapCoordinate": mapCoordinate } resultData.update(userDataCollection) allDataCollections.append(resultData) return jsonify({ "status": 200, "message": "Job List.", "allTask": allDataCollections, "countData": len(allDataCollections) }) else: return jsonify({ "status": 200, "message": "No data.", "allTask": result, "countData": len(allDataCollections) }) except Exception as e: CommonUtils.print_exception() return jsonify({"status": 500, "message": str(e)})
def user_register(): email = request.json['email'] if email: is_user_exists = User.count({"signupJSON.email": email}) if is_user_exists == 0: mobile, mobileotp = "", "" # emailhash = send_email(email) emailhash = CommonUtils.getHashValue() firstname = request.json['firstname'] lastname = request.json['lastname'] usertype = request.json['usertype'] city = int(request.json['city']) location = int(request.json['location']) device_token = request.json.get('device_token', "") fullname = firstname + " " + lastname password = request.json['password'].strip() if firstname and lastname and usertype and city: salt = CommonUtils.generateRandomName() # random.randrange(1000, 9999) signupJSON = SignupUtils.get_signup_json(email) addressJSON = SignupUtils.get_user_address_json(city) proJSON = SignupUtils.get_pro_json() paymentdetailsJSON = SignupUtils.get_payment_detail_json() if password: password = CommonUtils.password_hash(password, salt) token = request.json.get('token', "") userid = request.json.get('userid', "") if not userid: userid = CommonUtils.generateRandomNo(User, "userid") if not token: token = CommonUtils.generateRandomName() User.insert({ "userid": userid, "email": email, "mobile": mobile, "mobileotp": str(mobileotp), "emailhash": emailhash, "password": password, "salt": salt, "token": token, "usertype": usertype, "firstname": firstname, "lastname": lastname, "device_token": device_token, "signupJSON": signupJSON, "emailverified": False, "mobileverified": False, "isdcode": None, "fbid": "", "fbaccesstoken": "", "isadmin": False, "createddatetime": datetime.datetime.now(), "updateddatetime": datetime.datetime.now(), "addressJSON": addressJSON, "paymentdetailsJSON": paymentdetailsJSON, "skillsJSON": [], "languagesJSON": [], "educationCSV": [], "workplaceCSV": [], "certificateJSON": [], "proJSON": proJSON, "forgotpasswordJSON": [], "gender": "", "dob": "", "locationid": location, "aboutme": "", "picurl": "user-no-image.jpg", "reportedJSON": [], "notificationJSON": [], "socaillogin": False, "facebookpicurl": "", "active": True, "paypal_id": "" }) session['cookiesUserid'] = int(userid) session['userValid'] = str(salt) session['cookiesToken'] = str(token) session['city'] = str(city) session['userloginName'] = str(fullname) session['location'] = str(location) session.permanent = True # Onboard Push notification PushNotificationUtils.notify_onboard(userid, fullname, device_token) # Onboard Email EmailUtils.send_onboard_email(userid, email, emailhash, firstname) return make_response( jsonify({ 'status': 200, 'message': 'Successfull Register', 'userid': userid, 'token': token, 'city': city, 'location': location, "firstname": firstname, "lastname": lastname, "picurl": "user-no-image.jpg", "picPath": picPath }), 200) else: return make_response( jsonify({ 'status': 202, 'message': 'Data can not be null.' }), 400) else: return make_response( jsonify({ 'status': 201, 'message': 'Email already exits.' }), 400) else: return make_response( jsonify({ 'status': 202, 'message': 'Data can not be null.' }), 400)
def jobadd(): if request.method == 'POST': try: #return "ok" # Check authentications keys ''' if request.form['userid'] == "" or request.form['token'] =="": return jsonify({"status": 401, "message": "Authentication keys are missing."}) ''' userid = request.form['userid'] #return userid token = request.form['token'] # Authenticate credentials userInfo = User.find_one({"userid": int(userid)}, {"_id": 0}) if userInfo is not None: if userInfo['emailverified'] is False: return jsonify({ "status": 202, "message": "Email not verified. Please verify your email to enable this feature" }) jobid = request.form['jobid'] originaljobid = None if (jobid != ""): originaljobid = jobid draft = request.form['draft'] title = request.form['title'] description = request.form['description'] duedate = request.form['duedate'] #return jsonify({"ok": 1}) jobOnline = request.form['jobonline'] #return "ok" print("1") city = int(request.form['city']) print("2") location = int(request.form['location']) print("3") if duedate == "today": duedate = "" duedate = datetime.now() if duedate == "week": duedate = "" duedate = datetime.now() + timedelta(days=7) if duedate == "certain_day": duedate = "" format = '%d-%m-%Y %H:%M:%S' certaindatetime = request.form['certaindatetime'] duedate = datetime.strptime(certaindatetime, format) citydetail = CityCollections.find_one({"cityid": city}, {"_id": 0}) statedetail = StateCollections.find_one( {"stateid": citydetail['stateid']}, {"_id": 0}) countrydetail = CountryCollections.find_one( {"countryid": citydetail['countryid']}, {"_id": 0}) addressJSON = { "address1": "", "address2": "", "city": city, "state": citydetail['stateid'], "country": countrydetail['countryid'], "pincode": "" } person = request.form['person'] print("5") budgettype = request.form['budgettype'] print("6") budget = float(request.form['budget']) print("7") if budgettype == "hourly": totalhours = int(request.form['hours']) totalbudget = int(budget * totalhours) else: totalhours = -1 totalbudget = budget print("8") if draft == False: publisheddatetime = datetime.now() else: publisheddatetime = None target = os.path.join(Constants.APP_ROOT, 'static/jobdocument/') index = 0 filelist = [] thumblist = [] print("9") jobidno = CommonUtils.generateRandomNo(Jobs, "jobid") for file in request.files.getlist("file"): index = index + 1 try: filename = str(jobidno) + "_" + str(index) + ".jpg" destination = "original/".join([target, filename]) file.save(destination) im = Image.open(file) size = 45, 45 im.thumbnail(size, Image.ANTIALIAS) background = Image.new('RGBA', size, (255, 255, 255, 0)) background.paste(im, (int((size[0] - im.size[0]) / 2), int((size[1] - im.size[1]) / 2))) tname = target + "/thumbnail/" + str(jobidno) + "_" + str( index) + ".png" background.save(tname) thumblist.append(tname) except Exception as e: fname = str(jobidno) + "_" + str(index) + file.filename destination = "original/".join([target, fname]) file.save(destination) tname = target + "/thumbnail/pdf.png" thumblist.append(tname) #thumblist.append(tpath) filelist.append(destination) #return jsonify({"t":thumblist,"l":filelist}) print("10") jobdocs = {} jobdocs.update({"thumbnails": thumblist}) jobdocs.update({"doc": filelist}) print("11") if (request.form['draft_data'] == "false"): jobid = jobidno result = Jobs.insert({ "jobid": jobid, "title": title, "description": description, "creatinguserid": userid, "duedate": duedate, "budget": budget, "budgettype": budgettype, "totalbudget": totalbudget, "totalhours": totalhours, "jobstatus": "pending", "draft": draft, "publisheddatetime": publisheddatetime, "personsrequired": int(person), "reportedJSON": [], "active": True, "cancellationreason": None, "cityid": city, "online": jobOnline, "addressJSON": addressJSON, "locationid": location, "personsselected": 0, "originaljobid": originaljobid, "adminapprovalforcancellation": None, "skillid": None, "tags": None, "jobdocs": jobdocs, "updatedatetime": datetime.now(), "createdatetime": datetime.now(), "expired": False }) return jsonify({ 'status': 200, 'message': 'Job Created.', 'jobid': jobid }) else: Jobs.update({"jobid": jobid}, { "$set": { "title": title, "description": description, "creatinguserid": userid, "duedate": duedate, "budget": budget, "budgettype": budgettype, "totalbudget": totalbudget, "totalhours": totalhours, "jobstatus": "pending", "draft": draft, "publisheddatetime": publisheddatetime, "personsrequired": int(person), "reportedJSON": [], "active": True, "cancellationreason": None, "cityid": city, "online": jobOnline, "addressJSON": addressJSON, "locationid": location, "personsselected": 0, "originaljobid": originaljobid, "adminapprovalforcancellation": None, "skillid": None, "tags": None, "jobdocs": jobdocs, "updatedatetime": datetime.now(), "expired": False } }) return jsonify({ 'status': 200, 'message': 'Job Updated.', 'jobid': jobid }) except Exception as e: print(e) return "error"
def user_update(): try: userid = int(request.json['userid']) token = request.json['token'] location = request.json['location'] if location != "": location = int(location) find_user = User.find_one({"userid": userid, "active": True}) if find_user is not None: skills = request.json['skills'] print(skills) print(type(skills)) if request.json['dob'] != "": birth = request.json['dob'] print(birth) format = '%d-%m-%Y' dob = datetime.datetime.strptime(birth, format) else: dob = "" if request.json['city'] != "": citydetail = CityCollections.find_one( {"cityid": int(request.json['city'])}, {"_id": 0}) addressJSON = { "address1": request.json['address1'], "address2": request.json['address2'], "city": int(request.json['city']), "state": citydetail['stateid'], "country": citydetail['countryid'], "pincode": request.json['pincode'] } else: addressJSON = { "address1": request.json['address1'], "address2": request.json['address2'], "city": "", "state": "", "country": "", "pincode": request.json['pincode'] } if request.json['isdcode'] != "" and request.json[ 'isdcode'] is not None: isdcode = int(request.json['isdcode']) else: isdcode = "" # locationData = location.find_one({"cityid" : int(request.json['city'])},{"_id":0,"locationid":1}) # skillsJSON = [] # for skillDataJSON in skills: # stringData = '.*'+skillDataJSON+'.*' # skillsData = skills.find_one({"skillname" : { "$regex" : skillDataJSON, "$options" : 'i' }},{"_id":0,"skillid":1,"skillname":1}) # if skillsData is not None: # for skillsCollections in skillsData : # skillDict = {"skillid" : skillsCollections['skillid'], # "skillname" : skillsCollections['skillname']} # skillsJSON.append(skillDict) randomNameForFile = "" # if request.json['imageFlag']: # randomNameForFile = "image_"+str(int(time.time()))+".jpg" # fh = open("static/images/profile/"+randomNameForFile, "wb") # fh.write(request.json['picurl'].decode('base64')) # fh.close() # languagesJSON = request.json['languagesJSON'] # educationCSV = request.json['educationCSV'] # workplaceCSV = request.json['workplaceCSV'] # certificateJSON = request.json['certificateJSON'] # reportedJSON = list(report.find({ "userid" : userid, "token" : token }, {"_id":0})) if find_user['mobile'] != str(request.json['mobile']): User.update({"userid": userid}, { "$set": { "signupJSON.mobile": str(request.json['mobile']), "mobile": str(request.json['mobile']), "mobileverified": False, "proJSON.mobileverified": False } }) if find_user['email'] != str(request.json['email']): User.update({"userid": userid}, { "$set": { "signupJSON.email": str(request.json['email']), "email": str(request.json['email']), "emailverified": False } }) result = User.update({"userid": userid}, { "$set": { "firstname": request.json['firstname'], "lastname": request.json['lastname'], "aboutme": request.json['aboutme'], "languagesJSON": [], "educationCSV": [], "workplaceCSV": [], "updateddatetime": datetime.datetime.now(), "isdcode": isdcode, "addressJSON": addressJSON, "skillsJSON": skills, "gender": request.json['gender'], "dob": dob, "locationid": location } }) userdata_array = list( User.find({ "userid": userid, "active": True }, {"_id": 0})) resultArray = {} responseArr = [] if len(userdata_array) > 0: for collectionInfo in userdata_array: # cityname = citycollections.find_one({"cityid":collectionInfo['addressJSON']['city']},{"_id":0}) # allCityData = list(CityCollections.find({}, {"_id": 0, "cityid": 1, "city": 1})) # allcity = [] # if len(allCityData) > 0: # for getAllCityData in allCityData: # allcity.append({"cityid" : getAllCityData['cityid'], "city" : getAllCityData['city']}) location_name = "" if collectionInfo['addressJSON']['city'] != "": citynamedata = CityCollections.find_one( {"cityid": collectionInfo['addressJSON']['city']}, {"_id": 0}) city_name = citynamedata['city'] countrynamedata = CountryCollections.find_one( { "countryid": collectionInfo['addressJSON']['country'] }, {"_id": 0}) country_name = countrynamedata['country'] else: city_name = "" country_name = "" if collectionInfo['locationid'] != "": location_name_data = Locations.find_one( {"locationid": int(collectionInfo['locationid'])}, { "_id": 0, "locationname": 1, "under": 1 }) if location_name_data is not None: if location_name_data['under'] != "": location_name = str( location_name_data['under']) + " - " + str( location_name_data['locationname']) else: location_name = str( location_name_data['locationname']) else: location_name = "" skill_data = collectionInfo['skillsJSON'] skillNameData = [] if len(skill_data) > 0: for skillDataCollections in skill_data: skillNameData.append( skillDataCollections['skillname']) rating = 0 # Rating Initially 0 userReview = list( JobReviews.find( { "touserid": collectionInfo['userid'], "active": True }, { "_id": 0, "rating": 1 })) if len(userReview) > 0: totalUserReview = len(userReview) if userReview is not None: for userRating in userReview: rating = rating + userRating['rating'] tatalRating = int(rating / totalUserReview) else: tatalRating = 0 allCityData = list( CityCollections.find({}, { "_id": 0, "cityid": 1, "city": 1 })) picurlPath = Constants.PROFIL_PIC_STATIC_PATH + collectionInfo[ 'picurl'] portfolioData = list( UserPortfolio.find({ "userid": userid, "active": True, }, {"_id": 0})) documentsPath = Constants.URL + Constants.DOC_PATH portfolioDataPath = Constants.URL + Constants.PORTFOLIO_PATH updateJSON = { "cityname": city_name, "locationName": location_name, "countryname": country_name, "allcity": allCityData, "skillName": skillNameData, "portfolioData": portfolioData, "picurlPath": picurlPath, "userrating": tatalRating, "documentsPath": documentsPath, "portfolioDataPath": portfolioDataPath } collectionInfo.update(updateJSON) responseArr.append(collectionInfo) resultArray['data'] = responseArr else: resultArray['data'] = responseArr return make_response( jsonify({ 'status': 200, 'message': 'Successfull Updated', 'userid': userid, 'token': token, 'updateData': responseArr }), 200) else: return make_response( jsonify({ 'status': 402, 'message': 'No User Found.', 'userid': userid, 'token': token, 'updateData': [] }), 400) except Exception as e: CommonUtils.print_exception() return make_response(jsonify({"status": 500, "message": str(e)}), 500)