Esempio n. 1
0
def messages(request):

    msgs = get_chat_messages()
    msgs_list = pagination(request, msgs, MESSAGES_PER_PAGE)

    dic = {'chatmessages': msgs_list, 'PAG_TITLE': 'Messages List'}
    return render_to_response('whatsapp/chat.html', dic, context_instance=RequestContext(request))
Esempio n. 2
0
def single_chat(request,key):
    
    
    msgs = get_chat_messages(key)
    msgs_list = pagination(request,msgs,MESSAGES_PER_PAGE)
    
    dic = {'activity': get_activity_data(key),
                'chatmessages': msgs_list,
                'gps': Messages.objects.using('msgstore').exclude((Q(longitude = '0.0') | Q(latitude = '0.0'))),
                'media': Messages.objects.using('msgstore').exclude(media_url__isnull = True),
                'PAG_TITLE': 'Conversation'
                }
    return render_to_response('whatsapp/chat.html',dic,context_instance=RequestContext(request))
Esempio n. 3
0
def single_chat(request, key):
    """
    Shows a single chat with a contact given by his jid (key)
    """
    
    if not Messages.objects.using('msgstore').filter(key_remote_jid=key).count() > 0:
        return render_to_response('whatsapp/errors/404.html', context_instance=RequestContext(request)) 

    msgs = get_chat_messages(key)
    msgs_list = pagination(request, msgs, MESSAGES_PER_PAGE)

    dic = {
        'peer': key,
        'chatmessages': msgs_list,
        'gps': Messages.objects.using('msgstore').exclude((Q(longitude='0.0') | Q(latitude='0.0'))),
        'media': Messages.objects.using('msgstore').exclude(media_url__isnull=True),
        'PAG_TITLE': 'Conversation'
        }

    return render_to_response('whatsapp/chat.html', dic, context_instance=RequestContext(request))
Esempio n. 4
0
def load_more_chat(request):
    """
    This method is use for load previous 10 messages when scroll top on chat screen

    :return: http response with response data which required for load next 10 messages
    """
    # get scroll count for identify how many time did scroll top

    scroll_count = request.POST.get('scroll_count')

    # get logged in user and friend object

    logged_in_user = get_user_object(request.user.username)
    friend_obj = get_user_object(request.POST.get('username'))

    # get all chat between logged in user and their friend

    sent_messages = get_chat_messages(logged_in_user, friend_obj)
    recevied_messages = get_chat_messages(friend_obj, logged_in_user)

    all_chats_list = [[m.message, str(m.sent_at), 'sent']
                      for m in sent_messages]

    for r in recevied_messages:
        all_chats_list.append([r.message, str(r.sent_at), 'received'])

    all_chats_list.sort(
        key=lambda x: x[1])  # sort chat as per ascending order of datetime

    # get previous 10 messages

    message_load_count = (int(scroll_count) + 1) * 10

    if message_load_count >= len(all_chats_list):
        if (message_load_count - len(all_chats_list)) > 10:
            load_messages = []
            next_message = "False"
        else:
            load_messages = all_chats_list[:-(int(scroll_count)) * 10]
            next_message = "True"
            more_messages = False
    else:
        load_messages = all_chats_list[-(
            message_load_count):-(message_load_count) + 10]
        next_message = "True"
        more_messages = True

    load_messages.reverse()

    # append 'same_date' or 'new_date' string at last index of load message list for identify that new date start from that message

    for i, msg in enumerate(load_messages):
        if not i == len(load_messages) - 1:
            if not load_messages[i][1].split(' ')[0] == load_messages[
                    i + 1][1].split(' ')[0]:
                load_messages[i].append('new_date')
            else:
                load_messages[i].append('same_date')
        else:
            if more_messages:
                if not load_messages[i][1].split(' ')[0] == all_chats_list[
                        -(message_load_count) - 1][1].split(' ')[0]:
                    load_messages[i].append('new_date')
                else:
                    load_messages[i].append('same_date')
            else:
                load_messages[i].append('new_date')

    response_data = {
        "scroll_count": int(scroll_count) + 1,
        "load_messages": load_messages,
        "next_message": next_message,
    }
    return HttpResponse(json.dumps(response_data),
                        content_type="application/json")
Esempio n. 5
0
def chatscreen(request):
    """
    This view returns last 10 messages between logged in user and the other user.

    :return: http response with response data which required for show chat screen
    """
    if request.method == "POST":

        # get user objects

        logged_in_user = get_user_object(request.user.username)
        friend_obj = get_user_object(request.POST.get('username'))

        # get friend full name and profile image from friend user object

        full_name = friend_obj.first_name + " " + friend_obj.last_name
        profile_pic_src = str(friend_obj.photo.url)

        # get chats between current user and their friend

        sent_messages = get_chat_messages(logged_in_user, friend_obj)
        recevied_messages = get_chat_messages(friend_obj, logged_in_user)

        all_chats_list = [[m.message, str(m.sent_at), 'sent']
                          for m in sent_messages]
        for r in recevied_messages:
            all_chats_list.append([r.message, str(r.sent_at), 'received'])

        # get room name for do chat

        room_obj = Friends.objects.filter(user1=logged_in_user,
                                          user2=friend_obj)
        if room_obj:
            room_name = Friends.objects.get(user1=logged_in_user,
                                            user2=friend_obj).room_name
        else:
            room_name = Friends.objects.get(user1=friend_obj,
                                            user2=logged_in_user).room_name

        all_chats_list.sort(
            key=lambda x: x[1])  # sort chat in ascending order as per datetime

        # if there are more than 10 messages then get last 10 message otherwise get all messages and append 'same_date'
        # or 'new_date' at last index of all_chat for identify that new date start from that message

        same_day = False
        if len(all_chats_list) > 10:
            if all_chats_list[-11][1].split(
                    ' ')[0] == all_chats_list[-10][1].split(' ')[0]:
                same_day = True
            all_chats_list = all_chats_list[-10:]

        if len(all_chats_list):
            all_chats_list[0].append('same_date')

        for i, chat in enumerate(all_chats_list):
            if not i == len(all_chats_list) - 1:
                if not all_chats_list[i][1].split(' ')[0] == all_chats_list[
                        i + 1][1].split(' ')[0]:
                    all_chats_list[i + 1].append('new_date')
                    if not len(all_chats_list[i]) == 4:
                        all_chats_list[i].append('same_date')
                else:
                    if not len(all_chats_list[i]) == 4:
                        all_chats_list[i].append('same_date')
            else:
                if not len(all_chats_list[i]) == 4:
                    all_chats_list[i].append('same_date')

        friend_notify_room = Notifications.objects.get(user=friend_obj).room

        response_data = {
            "name": full_name,
            "profile-pic": profile_pic_src,
            "messages": all_chats_list,
            'room_name_json': mark_safe(json.dumps(room_name)),
            'room_name': room_name,
            'user_name': request.user.username,
            'friend_notify_room': friend_notify_room,
            'same_day': same_day,
            'friend_id': friend_obj.id,
        }
        return HttpResponse(json.dumps(response_data),
                            content_type="application/json")
Esempio n. 6
0
def language_detect(request, key):
    """
    Language detection
    """
    
    LANGUAGES = {
        'af': 'AFRIKAANS',
        'ar': 'ARABIC',
        'be': 'BELARUSIAN',
        'bg': 'BULGARIAN',
        'ca': 'CATALAN',
        'chr': 'CHEROKEE',
        'cs': 'CZECH',
        'cy': 'WELSH',
        'da': 'DANISH',
        'de': 'GERMAN',
        'dv': 'DHIVEHI',
        'el': 'GREEK',
        'en': 'ENGLISH',
        'es': 'SPANISH',
        'et': 'ESTONIAN',
        'fa': 'PERSIAN',
        'fi': 'FINNISH',
        'fil': 'TAGALOG',
        'fr': 'FRENCH',
        'ga': 'IRISH',
        'gu': 'GUJARATI',
        'he': 'HEBREW',
        'hi': 'HINDI',
        'hr': 'CROATIAN',
        'hu': 'HUNGARIAN',
        'hy': 'ARMENIAN',
        'id': 'INDONESIAN',
        'is': 'ICELANDIC',
        'it': 'ITALIAN',
        'iu': 'INUKTITUT',
        'ja': 'JAPANESE',
        'ka': 'GEORGIAN',
        'km': 'KHMER',
        'kn': 'KANNADA',
        'ko': 'KOREAN',
        'lo': 'LAOTHIAN',
        'lt': 'LITHUANIAN',
        'lv': 'LATVIAN',
        'mk': 'MACEDONIAN',
        'ml': 'MALAYALAM',
        'ms': 'MALAY',
        'nb': 'NORWEGIAN',
        'nl': 'DUTCH',
        'or': 'ORIYA',
        'pa': 'PUNJABI',
        'pl': 'POLISH',
        'pt': 'PORTUGUESE',
        'ro': 'ROMANIAN',
        'ru': 'RUSSIAN',
        'si': 'SINHALESE',
        'sk': 'SLOVAK',
        'sl': 'SLOVENIAN',
        'sr': 'SERBIAN',
        'sv': 'SWEDISH',
        'sw': 'SWAHILI',
        'syr': 'SYRIAC',
        'ta': 'TAMIL',
        'te': 'TELUGU',
        'th': 'THAI',
        'tr': 'TURKISH',
        'uk': 'UKRAINIAN',
        'vi': 'VIETNAMESE',
        'yi': 'YIDDISH',
        'zh': 'CHINESE',
        'zh-TW': 'CHINESET',
        'xxx': 'Unknown'
        }

    retval = {}
    msgs = get_chat_messages(key)
    msgs_list = pagination(request, msgs, MESSAGES_PER_PAGE)
    
    try:
        params = urllib.urlencode ( {'key': DLAPIKEY , 'q': '\n'.join(x['data'].encode('ascii','ignore') for x in msgs_list) } )
        conn = urllib.urlopen("http://ws.detectlanguage.com/0.2/detect",params)
        tmp = conn.read()
        data = json.loads(tmp)
        conn.close()
        
        retval['languages'] = []
        value = 100
        for lang in data['data']['detections']:
            retval['languages'].append({'text': "%s %s" % (LANGUAGES[lang['language']],"(Reliable)" if lang['isReliable'] else ""), 'value': "%.3f" % lang['confidence']})
            value -= lang['confidence']
        retval['others'] = {'text': 'Others' , 'value': "%.3f" % value}
    except Exception,e:
        retval['error'] = str(e)