def handle(request): try: myself = siteaction.getLoggedInUser(request) if not myself: return ajaxian.getFailureResp('not_logged_in') new_friend_id = dataplus.dictGetVal(request.REQUEST,'userId') new_friend = dataplus.returnIfExists(models.User.objects.filter(id=new_friend_id)) if not new_friend: return ajaxian.getSuccessResp('user_not_exists') #surprise.... you cannot add yourself, as a friend too! if (str(myself.id) == new_friend_id): return ajaxian.getSuccessResp('cannot_add_yourself') #see if such a friend exists #if so, then don't add friend = dataplus.returnIfExists(myself.friends.filter(id=new_friend_id)) if not friend: #see if there is already a pending friend request #if a request exists from the other user lets make them friends friend_req_from = dataplus.returnIfExists(models.FriendRequest.objects.filter(sent_by__id=new_friend_id, sent_to__id=myself.id)) if friend_req_from: myself.friends.add(new_friend) myself.save() friend_req_from.delete() return ajaxian.getSuccessResp('friend_added') #if a request from myself is there #if so don't add.. its pending friend_req_to = dataplus.returnIfExists(models.FriendRequest.objects.filter(sent_to__id=new_friend_id, sent_by__id=myself.id)) if not friend_req_to: friend_req = models.FriendRequest() friend_req.sent_by = myself friend_req.sent_to = new_friend friend_req.sent_on = datetime.datetime.utcnow() friend_req.save() html_mail_content = '<p>Hello ' + new_friend.name + ',</p><p><a href="' + config.server_base_url + \ '/profiles/' + myself.username + '">' + myself.name + '</a> has sent you a friend request. Please <a href="http://www.socialray.org/me/">Login to Socialray</a> to approve or reject the request.</p>' + \ '<p>Regards,<br />from Socialray</p><br /><br /><br /><br /><br />' text_mail_content = 'Hello ' + new_friend.name + ',\r\n\r\n' + myself.name + '(' + config.server_base_url + \ '/profiles/' + myself.username + ') wants to be your friend. Please login to Socialray to approve or reject the request.\r\n\r\n' + \ 'Regards,\r\nfrom Socialray\r\n\r\n\r\n\r\n\r\n' mailman.sendMail('"' + myself.name + '" <' + myself.username + '*****@*****.**>', [new_friend.email], 'Socialray: ' + myself.name + ' wants to add you as a friend', html_mail_content, None, None, text_mail_content, reply_to=myself.email) return ajaxian.getSuccessResp('request_added') else: return ajaxian.getSuccessResp('pending_request') else: return ajaxian.getSuccessResp('already_a_friend') except: return ajaxian.getFailureResp('unknown')
def handle(request): myself = siteaction.getLoggedInUser(request, True) if not myself: return HttpResponseRedirect('/login.htm') action_id, random_key = codejar_invites.getInviteData(request) if not action_id: return HttpResponseRedirect('/me/') invitation = action_id + '=' + random_key if myself.account.account_state == 'I': post_signup_actions = dataplus.returnIfExists(models.PostSignupActions.objects.filter(user=myself)) if not post_signup_actions: post_signup_actions = models.PostSignupActions(user=myself) if post_signup_actions.actions: post_signup_actions.actions += ',' + invitation else: post_signup_actions.actions = invitation post_signup_actions.save() return HttpResponseRedirect('/me/createresume.htm') else: success, response = codejar_invites.processInvitations(myself, [invitation]) return response
def processEmails(email_ids, message, myself): has_valid_emails = False for email_id in email_ids: email_id = (email_id,email_id.strip(',')) [email_id.find(',') >= 0] success, error = codejar_validation.validateEmail(email_id) if success: has_valid_emails = True user = dataplus.returnIfExists(models.User.objects.filter(email=email_id)) if user: if user.username == myself.username: continue #need to add code to add existing user for email to friends list if not added invitation = models.FriendInvitation(sent_by=myself, sent_to_email=email_id) invitation.invite_random_key = dataplus.getUniqueId() invitation.save() subject = myself.name + ' has invited you to Socialray' html_file = '/apps/socialray/website/bigfoot/websitetools/mailtemplates/invitation.html' text_file = '/apps/socialray/website/bigfoot/websitetools/mailtemplates/invitation.txt' mailer.sendInvite(html_file, text_file, myself, subject, (email_id), {'name':lambda x:x.name, 'username':lambda x:x.username, 'message':lambda x:(x.name.split()[1],x.name.split()[0])[len(x.name.split()[0]) > 1] + '... says, "' + message + '"', 'invite_random_key':lambda x:str(invitation.invite_random_key)}) return has_valid_emails
def handle(request): try: myself = siteaction.getLoggedInUser(request) if not myself: return ajaxian.getFailureResp('not_logged_in') invite_email = dataplus.dictGetVal(request.REQUEST,'invite_email') is_valid, err_msg = codejar_validation.validateEmail(invite_email) if not is_valid: return ajaxian.getFailureResp('invalid_email') #see if a user with the same email exists user = dataplus.returnIfExists(models.User.objects.filter(email=invite_email)) if user: if user.username == myself.username: return ajaxian.getSuccessResp('cannot_add_self') invitation = models.FriendInvitation(sent_by=myself, sent_to_email=invite_email) invitation.invite_random_key = dataplus.getUniqueId() invitation.save() subject = myself.name + ' has invited you to Socialray' html_file = '/apps/socialray/website/bigfoot/websitetools/mailtemplates/invitation.html' text_file = '/apps/socialray/website/bigfoot/websitetools/mailtemplates/invitation.txt' mailer.sendInvite(html_file, text_file, myself, subject, (invite_email), {'name':lambda x:x.name, 'username':lambda x:x.username, 'message':lambda x:'', 'invite_random_key':lambda x:str(invitation.invite_random_key)}) return ajaxian.getSuccessResp('') except: return ajaxian.getFailureResp('unknown')
def handle(request): myself = siteaction.getLoggedInUser(request) if not myself: return HttpResponseRedirect('/login.htm') username = dataplus.dictGetVal(request.REQUEST, 'user') if username and username != myself.username: user = dataplus.returnIfExists(models.User.objects.filter(username=username)) if not user: return siteaction.render_to_response('me/showmessage.htm', {'myself':myself, 'msg_heading':'Error', 'msg_html':'Invalid Request'}) heading = user.name + '\'s Friends' else: user = myself heading = '' page = dataplus.dictGetVal(request.REQUEST, 'page', 0, string.atoi) start_friend_num = page * config.friends_per_page last_friend_num = start_friend_num + config.friends_per_page total_friends = user.friends.count() friends = user.friends.all().order_by('-last_access_time')[start_friend_num:last_friend_num] html = '' if user == myself: friends_usernames = [user.username for user in friends] online_status = chat.getOnlineStatus(request, friends_usernames, 'friend') for friend in friends: html += codejar_network.getDescriptiveThumb(friend, True, online_status[friend.username]) else: for friend in friends: html += codejar_network.getDescriptiveThumb(friend) if total_friends == 0: showing_howmany = '0 of 0 friends' else: showing_howmany = str(page*config.friends_per_page + 1) + '-' + str(page*config.friends_per_page + friends.count()) + ' of ' + str(total_friends) prev_btn = '' next_btn = '' page_url = 'friends.htm?' if username: page_url = 'friends.htm?user='******'&' if page != 0: prev_btn = '<input class="medium-btn" type="button" name="prev-button" value="PREV" onclick="javascript:window.location.href=\'' + page_url + 'page=' + str(page-1) + '\'" />' if last_friend_num < total_friends: next_btn = '<input class="medium-btn" type="button" name="next-button" value="NEXT" onclick="javascript:window.location.href=\'' + page_url + 'page=' + str(page+1) + '\'" />' buttons = prev_btn + next_btn return siteaction.render_to_response('me/friends.htm', { 'friends_html': html, 'showing_howmany': showing_howmany, 'heading': heading, 'buttons': buttons, 'myself' : myself })
def handle(request, job_id): myself = siteaction.getLoggedInUser(request) if not myself: return HttpResponseRedirect('/login.htm') if not job_id: return siteaction.render_to_response('showmessage.htm', { 'msg_heading':'Error', 'msg_html':'Access denied.'}) job = dataplus.returnIfExists(models.JobPosition.objects.filter(id=job_id)) if not job: return siteaction.render_to_response('showmessage.htm', { 'msg_heading':'Error', 'msg_html':'Access denied.'}) if job.posted_by: job.posted_by_name = job.posted_by.name elif job.tag: match = re.match('^.*name\=(?P<name>.*?);',job.tag) if match: job.posted_by_name = match.group('name') if request.method == 'GET': action_result = '' if dataplus.dictGetVal(request.REQUEST, 'flashId'): action_result = dataplus.dictGetVal(statix.action_messages, dataplus.dictGetVal(request.REQUEST, 'flashId'), '') if job.min_compensation == job.max_compensation: job.salary = str(job.min_compensation) else: job.salary = str(job.min_compensation) + ' - ' + str(job.max_compensation) return siteaction.render_to_response('jobs/viewjobposition.htm', { 'myself': myself, 'job':job, 'action_result':action_result, }) elif request.method == 'POST': html_message = '<p>Hello ' + job.posted_by_name + ',</p><p>This is in reference to the job you posted titled "' + job.title + '" for ' + job.company_name + '. ' + \ 'I would like to apply for this position and you can find my resume as an attachment.</p><p>You can always download my latest resume from ' + \ '<a href="' + config.server_base_url + config.profiles_url + '/' + myself.username + '">my profile</a>.</p>' + \ '<p>Regards,<br />' + myself.name + '</p><br /><br /><br /><br /><br /><br />'+ \ 'Don\'t want to receive email alerts? Just change your <a href="' + config.server_base_url + \ '/me/editsettings.htm">Email Forwarding Settings</a>' text_message = 'Hello ' + job.posted_by_name + ',\r\nThis is in reference to the job you posted titled "' + job.title + '" for ' + job.company_name + '. ' + \ 'I would like to apply for this position and you can find my resume as an attachment.\r\nYou can always download my latest resume from my profile at ' + \ config.server_base_url + config.profiles_url + '/' + myself.username + '.\r\n' + \ 'Regards,\r\n' + myself.name + '\r\n\r\n\r\n\r\n\r\n\r\n' + + \ 'Don\'t want to receive email alerts? Just change your Email Forwarding Settings, visit - "' + \ config.server_base_url + '/me/editsettings.htm"' resume_file = codejar_resume.getResumeFilePath(myself) mailman.sendMail('"' + myself.name + '" <' + myself.username + '*****@*****.**>', [job.contact_email], 'Re: Job Posting - ' + job.title, html_message, [resume_file], None, text_message, reply_to=myself.email) return HttpResponseRedirect('/jobs/' + str(job.id) + '/?flashId=resume_fwd')
def handle(request): req_id = dataplus.dictGetVal(request.REQUEST, 'reqId', '0', string.atoi) myself = siteaction.getLoggedInUser(request) if not myself: return HttpResponseRedirect('/login.htm?' + urllib.urlencode( {'returnUrl':'/me/approvecommjoinreq.htm?reqId=' + str(req_id)})) join_req = dataplus.returnIfExists(models.CommunityJoinRequest.objects.filter(id=req_id)) if not join_req: return siteaction.render_to_response('me/showmessage.htm', { 'myself':myself, 'msg_heading':'Request not found', 'msg_html':'The community join request does not exist. It must have already been processed.'}) if join_req.community.owner_username != myself.username: return siteaction.render_to_response('me/showmessage.htm', { 'myself':myself, 'msg_heading':'Error', 'msg_html':'Access denied.' }) if request.method == 'GET': return siteaction.render_to_response('me/approvecommjoinreq.htm', {'myself':myself, 'join_req':join_req}) elif request.method == 'POST': allowed = False if dataplus.dictGetVal(request.REQUEST,'result') == 'allow': join_req.sent_by.communities.add(join_req.community) allowed = True flashId = 'comm_join_allowed' else: flashId = 'comm_join_denied' join_req.delete() approved_text = ('denied','approved')[allowed] subject = 'Re: Request to join ' + join_req.community.name html_message = '<p>Your request to join \'' + join_req.community.name + '\' was ' + \ approved_text + ' by the administrator.<p><p>Regards,<br />from Socialray</p>' text_message = 'Your request to join \'' + join_req.community.name + '\' was ' + \ approved_text + ' by the administrator.\r\n\r\nRegards,\r\n from Socialray\r\n\r\n' def internalSender(rcvr_accounts): mailman.sendToInbox(myself.username, rcvr_accounts[0].username, subject, html_message) def externalSender(rcvr_accounts): sender = '"' + myself.name + '" <' + myself.username + '*****@*****.**>' receivers = ['"' + rcvr.name + '" <' + rcvr.email + '>' for rcvr in rcvr_accounts] mailman.sendOneWayMail(sender, receivers, subject, html_message, None, None, text_message) mailman.sendBySettings([join_req.sent_by.account], internalSender, externalSender, 'SocialrayAlert') return HttpResponseRedirect('/me?flashId=' + flashId)
def handle(request, comm_id): if request.method == 'GET': community = models.Community.objects.get(id=comm_id) myself = siteaction.getLoggedInUser(request) if not myself: return HttpResponseRedirect('/login.htm') if community.owner_username != myself.username: return siteaction.render_to_response('me/showmessage.htm', { 'myself':myself, 'msg_heading':'Error', 'msg_html':'Access denied' }) member_id = dataplus.dictGetVal(request.REQUEST, 'memberId', 0, string.atoi) member = dataplus.returnIfExists(community.members.filter(id=member_id)) if not member: return siteaction.render_to_response('me/showmessage.htm', { 'myself':myself, 'msg_heading':'Error', 'msg_html':'Invalid request' }) action = dataplus.dictGetVal(request.REQUEST, 'action') if not request.has_key('action'): return siteaction.render_to_response('communities/managemember.htm', { 'community':community, 'myself':myself, 'member_thumbnail': getUserThumb(member), 'member':member, }) if action == 'transfer_ownership': community.owner_username = member.username community.save() flashId = 'comm_trnsfr_owner' elif action == 'delete_membership': member.communities.remove(community) flashId = 'comm_del_mem' elif action == 'delete_posts': member.community_posts.all().delete() flashId = 'comm_del_posts' return HttpResponseRedirect(config.communities_url + '/' + str(community.id) + '?flashId=' + flashId) else: #should never have a post :) return siteaction.render_to_response('me/showmessage.htm', { 'myself':myself, 'msg_heading':'Error', 'msg_html':'Access denied' })
def handle(request): try: myself = siteaction.getLoggedInUser(request) if not myself: return ajaxian.getFailureResp('not_logged_in') ref_id = dataplus.dictGetVal(request.REQUEST, 'refId', 0, string.atoi) job_ref = dataplus.returnIfExists(models.JobReferral.objects.filter(id=ref_id)) if not job_ref: return ajaxian.getFailureResp('invalid_request') return ajaxian.getSuccessResp( {'subject':job_ref.subject, 'industry_category':job_ref.industry_category.name, 'min_exp':job_ref.min_experience_years, 'text':job_ref.text}) except: return ajaxian.getFailureResp('unknown')
def handle(request): try: myself = siteaction.getLoggedInUser(request) if not myself: return ajaxian.getFailureResp('not_logged_in') user_id = dataplus.dictGetVal(request.REQUEST, 'userId') #see if such a friend exists friend = dataplus.returnIfExists(myself.friends.filter(id=user_id)) if friend: myself.friends.remove(friend) return ajaxian.getSuccessResp('removed_friend') else: return ajaxian.getSuccessResp('not_a_friend') except: return ajaxian.getFailureResp('unknown')
def handle(request): try: myself = siteaction.getLoggedInUser(request) if not myself: return ajaxian.getFailureResp('not_logged_in') msg_id = dataplus.dictGetVal(request.REQUEST,'messageId') msg = dataplus.returnIfExists(models.Message.objects.filter(id=msg_id, account__id=myself.account.id, folder='trashcan')) if msg: msg.folder = 'inbox' msg.save() return ajaxian.getSuccessResp('moved_to_inbox') else: return ajaxian.getFailureResp('invalid_messageId') except: return ajaxian.getFailureResp('unknown')
def handle(request): myself = siteaction.getLoggedInUser(request) if not myself: return HttpResponseRedirect('/login.htm') action_result = '' if dataplus.dictGetVal(request.REQUEST, 'flashId'): action_result = dataplus.dictGetVal(statix.action_messages, dataplus.dictGetVal(request.REQUEST, 'flashId'), '') if request.method == 'GET': return siteaction.render_to_response('me/editmedia.htm', {'media_table_html':getMediaTableHtml(myself), 'action_result':action_result, 'myself': myself }) elif request.method == 'POST': action = dataplus.dictGetVal(request.REQUEST, 'action') if action == 'new': media = models.MediaLink() media.media_type = 'VID' media.media_host = 'youtube' media.user = myself url = dataplus.dictGetSafeVal(request.REQUEST, 'media_url') #Check if a valid youtube video url if re.match('^.*[/|\.]youtube.com\/watch\?v=.*$', url) is None: return siteaction.render_to_response('me/showmessage.htm', {'myself':myself, 'msg_heading':'Error', 'msg_html': 'Invalid user input.'}) media.url = url media.description = dataplus.dictGetSafeVal(request.REQUEST, 'media_desc','') media.is_featured = dataplus.dictGetVal(request.REQUEST, 'is_featured', False, lambda x:True) media.save() flashId = 'ytvid_added' elif action == 'delete': media_id = dataplus.dictGetVal(request.REQUEST, 'media_id', 0, string.atoi) media = dataplus.returnIfExists(models.MediaLink.objects.filter(id=media_id)) if not media: return siteaction.render_to_response('me/showmessage.htm', {'myself':myself, 'msg_heading':'Error', 'msg_html': 'Invalid Url'}) media.delete() flashId = 'media_del' return HttpResponseRedirect('/me/editmedia.htm?flashId=' + flashId)
def handle(request): try: myself = siteaction.getLoggedInUser(request) if not myself: return ajaxian.getFailureResp("not_logged_in") id = dataplus.dictGetVal(request.REQUEST, "id", -1, string.atoi) if id == -1: return ajaxian.getSuccessResp("not_found") testimonial = dataplus.returnIfExists(myself.testimonials_for_me.filter(id=id)) if testimonial: testimonial.delete() return ajaxian.getSuccessResp("deleted") else: return ajaxian.getSuccessResp("not_found") except: return ajaxian.getFailureResp("unknown")
def processInvitations(user, invites): response = None for invitation in invites: invite_data = invitation.split('=') action_id = invite_data[0] random_key = invite_data[1] if action_id == 'inviteId': friend_invite = dataplus.returnIfExists(models.FriendInvitation.objects.filter(invite_random_key=random_key)) elif action_id == 'commInviteId': comm_invite = dataplus.returnIfExists(models.CommunityInvitation.objects.filter(invite_random_key=random_key)) elif action_id == 'commFriendInviteId': friend_invite = dataplus.returnIfExists(models.FriendInvitation.objects.filter(invite_random_key=random_key)) comm_invite = dataplus.returnIfExists(models.CommunityInvitation.objects.filter(invite_random_key=random_key)) else: continue if action_id == 'inviteId' or action_id == 'commFriendInviteId': if friend_invite: try: if user.friends.filter(id=friend_invite.sent_by.id).count() == 0: #Remove any pending friend requests friend_req_from = dataplus.returnIfExists(models.FriendRequest.objects.filter(sent_by__id=friend_invite.sent_by.id, sent_to__id=user.id)) if friend_req_from: friend_req_from.delete() friend_req_to = dataplus.returnIfExists(models.FriendRequest.objects.filter(sent_to__id=friend_invite.sent_by.id, sent_by__id=user.id)) if friend_req_to: friend_req_to.delete() user.friends.add(friend_invite.sent_by) user.save() friend_invite.delete() response = HttpResponseRedirect('/profiles/' + friend_invite.sent_by.username) except: pass if action_id == 'commInviteId' or action_id == 'commFriendInviteId': if comm_invite: try: success, response = addUserToCommunity(comm_invite.community, user, comm_invite) except: pass if response: return True, response else: return True, HttpResponseRedirect('/me/')
def handle(request): myself = siteaction.getLoggedInUser(request) if not myself: return HttpResponseRedirect('/login.htm') username = dataplus.dictGetVal(request.REQUEST, 'user') if username and username != myself.username: user = dataplus.returnIfExists(models.User.objects.filter(username=username)) if not user: return siteaction.render_to_response('me/showmessage.htm', {'myself':myself, 'msg_heading':'Error', 'msg_html':'Invalid Request'}) heading = user.name + '\'s Videos' else: user = myself heading = '' return siteaction.render_to_response('me/videos.htm', { 'videos_html': getVideosHtml(user), 'heading': heading, 'myself' : myself })
def handle(request): #TODO: Check 24 hour validity period passkey = dataplus.dictGetVal(request.REQUEST, 'passwordChangeKey', '') change_req = dataplus.returnIfExists(models.PasswordChangeRequest.objects.filter(req_random_key=passkey,created_at__gte=(datetime.datetime.utcnow() - datetime.timedelta(1)))) if not change_req: return siteaction.render_to_response('showmessage.htm', {'msg_heading': 'Password Reset', 'msg_html': 'Invalid link. The password reset link that you clicked is either invalid or expired. ' + \ 'You can try to <a href="forgotpassword.htm">Reset the Password</a> again.'}) if request.method == 'GET': return siteaction.render_to_response('resetpassword.htm', {'passwordChangeKey': dataplus.dictGetVal(request.REQUEST,'passwordChangeKey')}) elif request.method == 'POST': #Password length >= 6 and <=12 valid, invalid_msg = dataplus.isLengthValid(dataplus.dictGetVal(request.REQUEST,'password1'), 6, 12, 'Password') if not valid: return siteaction.render_to_response('resetpassword.htm', {'error_html': '<p class="error-note">' + invalid_msg + '</p>', 'passwordChangeKey': dataplus.dictGetVal(request.REQUEST,'passwordChangeKey')}) #Passwords should match if dataplus.dictGetVal(request.REQUEST,'password1') != dataplus.dictGetVal(request.REQUEST,'password2'): return siteaction.render_to_response('resetpassword.htm', {'error_html': '<p class="error-note">Passwords do not match.</p>', 'passwordChangeKey': dataplus.dictGetVal(request.REQUEST,'passwordChangeKey')}) account = change_req.account account.password = dataplus.hash(dataplus.dictGetVal(request.REQUEST,'password1')) account.save() change_req.delete() return siteaction.render_to_response('showmessage.htm', {'msg_heading': 'Password Reset', 'msg_html': 'Your password was reset. You can now login with your new password. ' + \ '<a href="/login.htm">Login</a>'})
def handle(request): myself = siteaction.getLoggedInUser(request) if not myself: return HttpResponseRedirect("/login.htm") username = dataplus.dictGetVal(request.REQUEST, "user") if username and username != myself.username: user = dataplus.returnIfExists(models.User.objects.filter(username=username)) if not user: return siteaction.render_to_response( "me/showmessage.htm", {"myself": myself, "msg_heading": "Error", "msg_html": "Invalid Request"} ) heading = user.name + "'s Communities" else: user = myself heading = "" html = "" for community in user.communities.all(): html += codejar_network.getCommunityDescBlock(community) return siteaction.render_to_response( "me/communities.htm", {"communities_html": html, "heading": heading, "myself": myself} )
def handle(request): testimonial_id = dataplus.dictGetVal(request.REQUEST,'testimonialId') test_req = dataplus.returnIfExists(models.TestimonialRequest.objects.filter(req_random_key=testimonial_id)) if test_req is None: return siteaction.render_to_response('me/showmessage.htm', { 'msg_heading':'Error', 'msg_html':'This testimonial request does not exist.' }) if request.method == 'GET': return siteaction.render_to_response('me/writetestimonial.htm', {'from_name':test_req.sent_to_name, 'to_name':test_req.sent_by.name}) elif request.method == 'POST': testimonial = models.Testimonial() testimonial.written_by = dataplus.dictGetSafeVal(request.REQUEST, 'name') testimonial.written_for = test_req.sent_by testimonial.text = dataplus.dictGetSafeVal(request.REQUEST, 'body') testimonial.designation = dataplus.dictGetSafeVal(request.REQUEST, 'designation') testimonial.company = dataplus.dictGetSafeVal(request.REQUEST, 'company') testimonial.relationship = dataplus.dictGetSafeVal(request.REQUEST, 'relationship') testimonial.written_on = datetime.datetime.utcnow() testimonial.writer_email = test_req.sent_to_email testimonial.save() #we need to delete the test-request since it should not be re-used test_req.delete() html_message = '<p>You can see the testimonial ' + testimonial.written_by + ' has written on ' + \ '<a href="' + config.server_base_url + '/profiles/' + testimonial.written_for.username + '">your profile</a>.</p>' + \ '<p>Regards,<br />Socialray</p>' text_message = 'To see the testimonial ' + testimonial.written_by + ' has written, you can visit your profile at ' + \ config.server_base_url + '/profiles/' + testimonial.written_for.username + '.\r\n' + \ 'Regards,\r\nSocialray\r\n\r\n' subject = testimonial.written_by + ' has written a testimonial' def internalSender(rcvr_accounts): mailman.sendToInbox(None, rcvr_accounts[0].username, subject, html_message, 'SA', 'H') def externalSender(rcvr_accounts): receivers = ['"' + rcvr.name + '" <' + rcvr.email + '>' for rcvr in rcvr_accounts] ext_html_message = html_message + \ '<br /><br /><br /><br /><br />' + \ 'If you don\'t want to receive notification emails, change your Account Settings ' + \ '<a href="' + config.server_base_url + '/me/editsettings.htm">here</a>' ext_text_message = text_message + \ '\r\n\r\n\r\n\r\n\r\n' + \ 'If you don\'t want to receive notification emails, change your Account Settings here\r\n' + \ config.server_base_url + '/me/editsettings.htm' mailman.sendOneWayMail(config.system_email, receivers, subject, ext_html_message, None, None, ext_text_message) mailman.sendBySettings([testimonial.written_for.account], internalSender, externalSender, 'SocialrayAlert') myself = siteaction.getLoggedInUser(request) if myself: return HttpResponseRedirect('/me/?flashId=test_added') else: return siteaction.render_to_response('me/showmessage.htm', { 'msg_heading':'Testimonial Added', 'msg_html': '<p>Thanks for adding a testimonial.</p>' + \ '<p><strong>Have you joined Socialray?</strong><br />Socialray is a Professional Networking and Jobs site. ' + \ 'But There is a lot more to Socialray than just being a place where people post their resumes and ' + \ 'hunt for jobs. You can\'t call Socialray a regular Social Networking site either.</p>' + \ '<p>We invite you to <a href="' + config.server_base_url + '/me/signup.htm">Join us</a>.</p>' + \ '<p>To find out more, you can start with the <a href="' + config.server_base_url + '">Home Page</a>.</p>' })
def handle(request): myself = siteaction.getLoggedInUser(request, True) if not myself: return HttpResponseRedirect('/login.htm') if not myself.resume_contents.text: return HttpResponseRedirect('createresume.htm') if request.method == 'GET': settings = models.UserSettings.objects.get(user=myself) industry_cats = models.IndustryCategory.objects.all().order_by('id') industry_cats_html = hotmetal.elemSelect([('Select', '')], industry_cats, lambda x:x.name, lambda x:x.name, '', 'name="industry_category" id="industry_category" style="width:320px"') ## locations = models.Location.objects.all().order_by('name') ## preferred_location = hotmetal.elemSelect([('Select', ''),('Anywhere', 'Anywhere')], locations, ## lambda x:x.name, lambda x:x.name, '', 'name="preferred_location" id="preferred_location" style="width:160px"') ## salary_ranges = statix.getSalaryRanges() ## salary_range_select_html = hotmetal.elemSelect([('Select', '0-0'),('Prefer not to say', '0-0')], salary_ranges, ## lambda x:x[1], lambda x:x[0], '0-0', 'name="salary_range" id="salary_range" style="width:160px"') salary_ranges = codejar_resume.getSalaryRanges(settings.country) salary_range_select_html = hotmetal.elemSelect([('Select', '0-0'),('Prefer not to say', '0-0')], salary_ranges, lambda x:x[1], lambda x:x[0], '0-0', 'name="salary_range" id="salary_range" style="width:160px"') salary_range_select_html += '(' + settings.currency + ')' experience_select_html = hotmetal.elemSelect([('Select', '-1')], range(0,51), lambda x:x, lambda x:x, '', 'name="experience" id="experience" style="width:90px"') settings = models.UserSettings.objects.get(user=myself) interest_in_new_job = hotmetal.elemSelect([('Interested', 'active'), ('Only Terrific! Offers', 'passive'), ('Not Interested', 'no')], [], None, None, settings.interest_in_new_job, 'name="interest_in_new_job" id="interest_in_new_job" style="width:160px"') resume_visibility = hotmetal.elemSelect([('Everyone', 'everyone'), ('Friends only', 'friends'), ('Nobody', 'nobody')], [], None, None, settings.resume_visibility, 'name="resume_visibility" id="resume_visibility" style="width:120px"') action_result = '' if dataplus.dictGetVal(request.REQUEST, 'flashId'): action_result = dataplus.dictGetVal(statix.action_messages, dataplus.dictGetVal(request.REQUEST, 'flashId'), '') return siteaction.render_to_response('me/createjobsettings.htm', {'industry_categories_html': industry_cats_html, 'experience_select_html':experience_select_html, 'salary_range_select_html':salary_range_select_html, ## 'preferred_location':preferred_location, 'resume_visibility':resume_visibility, 'interest_in_new_job': interest_in_new_job, 'action_result':action_result, 'myself': myself}) elif request.method == 'POST': try: str_industry_category = dataplus.dictGetVal(request.REQUEST,'industry_category') industry_category = models.IndustryCategory.objects.get(name=str_industry_category) myself.industry_category = industry_category myself.working_since = datetime.datetime.utcnow() - datetime.timedelta(dataplus.dictGetVal(request.REQUEST,'experience',0,string.atoi) * 365) #salary in the format 'min_salary-max_salary' #this string needs to be split into min and max sal_range = dataplus.dictGetVal(request.REQUEST,'salary_range').split('-') myself.salary_range_lower = string.atoi(sal_range[0]) myself.salary_range_upper = string.atoi(sal_range[1]) myself.phone = dataplus.dictGetVal(request.REQUEST,'phone') settings = models.UserSettings.objects.get(user=myself) settings.resume_visibilty = dataplus.dictGetVal(request.REQUEST,'resume_visibilty') settings.interest_in_new_job = dataplus.dictGetVal(request.REQUEST,'interest_in_new_job') settings.preferred_location = 'Anywhere' ## settings.preferred_location = dataplus.dictGetSafeVal(request.REQUEST,'preferred_location') myself.last_update_time = datetime.datetime.utcnow() myself.save() settings.save() myself.account.account_state = 'A' myself.account.save() redirect_url = '' post_signup_actions = dataplus.returnIfExists(models.PostSignupActions.objects.filter(user=myself)) if post_signup_actions: actions = post_signup_actions.actions.split(',') success, response = codejar_invites.processInvitations(myself, actions) if response: return response except: return HttpResponseRedirect('createjobsettings.htm?flashId=failed_jobset_save') return HttpResponseRedirect('/me/')
def handle(request): action_id = '' random_key = '' if dataplus.dictGetVal(request.REQUEST, 'inviteId'): action_id = 'inviteId' random_key = dataplus.dictGetVal(request.REQUEST, 'inviteId') elif dataplus.dictGetVal(request.REQUEST, 'commInviteId'): action_id = 'commInviteId' random_key = dataplus.dictGetVal(request.REQUEST, 'commInviteId') elif dataplus.dictGetVal(request.REQUEST, 'commFriendInviteId'): action_id = 'commFriendInviteId' random_key = dataplus.dictGetVal(request.REQUEST, 'commFriendInviteId') if not action_id: return HttpResponseRedirect('/') username = dataplus.dictGetVal(request.REQUEST, 'user') if username: myself = siteaction.getLoggedInUser(request) if myself and myself.username == username: success, response = codejar_invites.processInvitations(myself, [action_id + '=' + random_key]) return response else: siteaction.doLogout(request) if action_id == 'inviteId': friend_invite = dataplus.returnIfExists(models.FriendInvitation.objects.filter(invite_random_key=random_key)) elif action_id == 'commInviteId': comm_invite = dataplus.returnIfExists(models.CommunityInvitation.objects.filter(invite_random_key=random_key)) elif action_id == 'commFriendInviteId': friend_invite = dataplus.returnIfExists(models.FriendInvitation.objects.filter(invite_random_key=random_key)) comm_invite = dataplus.returnIfExists(models.CommunityInvitation.objects.filter(invite_random_key=random_key)) invited_by = None if action_id == 'inviteId' or action_id == 'commFriendInviteId': if friend_invite: invited_by = friend_invite.sent_by invited_by.image_url = dataplus.getStaticUrl(invited_by.image_size3_file_path) else: return HttpResponseRedirect('/login.htm') ##TODO: Have to show a better response that invite doesn't exist if action_id == 'commInviteId' or action_id == 'commFriendInviteId': if comm_invite: invited_by = comm_invite.sent_by invited_by.image_url = dataplus.getStaticUrl(invited_by.image_size3_file_path) invited_comm = comm_invite.community invited_comm.image_url = dataplus.getStaticUrl(invited_comm.image_size3_file_path) else: return HttpResponseRedirect('/login.htm') ##TODO: Have to show a better response that invite doesn't exist welcome_text = 'You have been invited to join Socialray by '+ invited_by.name + '. Socialray is a ' + \ 'Professional Networking site, where you can showcase your skills and expertise, ' + \ 'stay in touch with friends and colleagues, and a lot more. Come onboard, and find out!' ## welcome_text = {'inviteId':'You were invited to join Socialray by ' + invited_by.name + '.', ## 'commInviteId':'You were invited to join ' + invited_comm.name + ' by ' + invited_by.name + '.', ## 'commFriendInviteId':'You were invited to join ' + invited_comm.name + ' by ' + invited_by.name + '.'}[action_id] login_url = '/login.htm?returnUrl=' + cgi.escape('/me/processinvites.htm?' + action_id + '=' + random_key) return siteaction.render_to_response('me/acceptinvite.htm', {'welcome_text':welcome_text, 'invited_by':invited_by, 'invited_comm':invited_comm, 'signup_url':'/me/signup.htm?' + action_id + '=' + random_key, 'login_url':login_url, 'invited_by_text':dataplus.getPreviewText(invited_by.hilite,500)})
def handle(request): myself = siteaction.getLoggedInUser(request) if not myself: return HttpResponseRedirect('/login.htm') rcvr = rcvr_comm = None rcvr_id = dataplus.dictGetVal(request.REQUEST, 'rcvrId', 0, string.atoi) rcvr_type = dataplus.dictGetVal(request.REQUEST,'rcvrType') if rcvr_type == 'u': rcvr = dataplus.returnIfExists(models.User.objects.filter(id=rcvr_id)) if not rcvr: return siteaction.render_to_response('me/showmessage.htm', {'myself':myself, 'msg_heading':'Error', 'msg_html':'Invalid Request'}) receivers = [rcvr] elif rcvr_type == 'c': rcvr_comm = dataplus.returnIfExists(models.Community.objects.filter(id=rcvr_id)) if not rcvr_comm: return siteaction.render_to_response('me/showmessage.htm', {'myself':myself, 'msg_heading':'Error', 'msg_html':'Invalid Request'}) if request.method == 'GET': if rcvr: receiver_html = '<a href="' + config.profiles_url + '/' + rcvr.username + '" >' + rcvr.name + '</a>' elif rcvr_comm: receiver_html = 'Members of <a href="' + config.communities_url + '/' + str(rcvr_comm.id) + '" >' + rcvr_comm.name + '</a>' experience_select_html = hotmetal.elemSelect([('Select', '-1')], range(0,30), lambda x:x, lambda x:x, '', 'name="experience" id="experience" style="width:80px"') industry_categories_select_html = hotmetal.elemSelect([('Select', '-1')], models.IndustryCategory.objects.all().order_by('name'), lambda x:x.name, lambda x:x.name, '', 'name="industry_category" id="industry_category" style="width:180px"') old_referrals = myself.posted_referrals.order_by('-created_at')[:20] old_referrals_select_html = hotmetal.elemSelect([('Select', '0')], old_referrals, lambda x:x.subject + ' (' + dataplus.getStrDate(x.created_at) + ')', lambda x:x.id, '', 'name="old_referral" id="old_referral" style="width:280px;" onchange="resetReferral();"') return siteaction.render_to_response('me/sendjobreferral.htm', {'myself': myself, 'rcvrId':rcvr_id, 'rcvrType':rcvr_type, 'receiver_html':receiver_html, 'has_old_referrals': (old_referrals.count() > 0), 'old_referrals_select_html':old_referrals_select_html, 'experience_select_html':experience_select_html, 'sending_to_user': (rcvr_type == 'u'), 'industry_categories_select_html':industry_categories_select_html,}) elif request.method == 'POST': job_ref_id = dataplus.dictGetVal(request.REQUEST, 'referral_id', 0, string.atoi) if job_ref_id > 0: job_ref = models.JobReferral.objects.get(id=job_ref_id) else: job_ref = models.JobReferral() job_ref.sender = myself if rcvr: receivers = [rcvr] job_ref.industry_category = rcvr.industry_category if rcvr.working_since: job_ref.min_experience_years = (datetime.datetime.utcnow() - rcvr.working_since).days/365 else: receivers = [x for x in rcvr_comm.members.all() if x.username != myself.username] job_ref.industry_category = models.IndustryCategory.objects.get(name=dataplus.dictGetVal(request.REQUEST, 'industry_category')) job_ref.min_experience_years = dataplus.dictGetVal(request.REQUEST, 'experience', 0, string.atoi) job_ref.subject = dataplus.dictGetSafeVal(request.REQUEST, 'subject') job_ref.reply_to_email = dataplus.dictGetSafeVal(request.REQUEST, 'reply_to') job_ref.text = dataplus.dictGetSafeVal(request.REQUEST, 'text') job_ref.save() for receiver in receivers: job_ref.receivers.add(receiver) html_message = dataplus.replaceHtmlLineBreaks(job_ref.text) + '<p><a href="' + config.server_base_url + '/me/viewreferral.htm?id=' + str(job_ref.id) + '">Forward your resume</a></p>' text_message = job_ref.text + '\r\n Visit ' + config.server_base_url + '/me/viewreferral.htm?id=' + str(job_ref.id) + ' to forward your resume.\r\n\r\n' subject = 'Job Referral: ' + job_ref.subject def internalSender(rcvr_accounts): mailman.sendMessage(myself.username, [rcvr.username for rcvr in rcvr_accounts], subject, html_message) def externalSender(rcvr_accounts): sender = '"' + myself.name + '" <' + myself.username + '*****@*****.**>' receivers = ['"' + rcvr.name + '" <' + rcvr.email + '>' for rcvr in rcvr_accounts] ext_html_message = html_message + \ '<br /><br /><br /><br /><br />' + \ 'If you don\'t want to receive notification emails, change your Account Settings ' + \ '<a href="' + config.server_base_url + '/me/editsettings.htm">here</a>' ext_text_message = text_message + \ '\r\n\r\n\r\n\r\n\r\n' + \ 'If you don\'t want to receive notification emails, change your Account Settings here\r\n' + \ config.server_base_url + '/me/editsettings.htm' mailman.sendMail(sender, receivers, subject, ext_html_message, None, None, ext_text_message, reply_to=myself.email) mailman.sendBySettings([rcvr.account for rcvr in receivers], internalSender, externalSender, 'JobReferral') return HttpResponseRedirect('/me/?flashId=jobref_sent')