예제 #1
0
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')        
예제 #2
0
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  
예제 #3
0
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, &quot;' + message + '&quot;',
                'invite_random_key':lambda x:str(invitation.invite_random_key)})
            
    return has_valid_emails
예제 #4
0
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')
예제 #5
0
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 })
예제 #6
0
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')
예제 #7
0
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' })
예제 #9
0
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')
예제 #10
0
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')
예제 #11
0
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')
예제 #12
0
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)
예제 #13
0
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")
예제 #14
0
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/')
예제 #15
0
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 })
예제 #16
0
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>'})
예제 #17
0
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}
    )
예제 #18
0
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>'            
            })
예제 #19
0
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/')
예제 #20
0
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)})
    
예제 #21
0
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')