def read_notification(request, noti_id):
    result = dict()
    result["success"] = True
    result["message"] = "success"
    result["notifications"] = list()
    try:
        user = User.objects.get(username=request.user.username)
        try:
            noti = UserNotification.objects.filter(user=user, id=noti_id)[0]
            noti.is_read = True
            noti.save()
        except Exception as e:
            print str(e)
            return my_utils.return_error("Invalid action")

        if noti.related_type == "Message":
            try:
                feed = Message.objects.filter(id=noti.related_id, is_deleted=False)
                result["feed"] = my_utils.process_messages(request, feed)[0]
            except Exception as e:
                print str(e)
                pass
        elif noti.related_type == "DM" or noti.related_type == "DM_Reply":
            try:
                message = DirectMessage.objects.filter(id=noti.related_id, is_deleted=False)
                result["dm"] = process_messages(request, message)[0]
            except Exception as e:
                print str(e)
                pass

    except:
        return my_utils.return_error("Please Sign in First")

    return HttpResponse(json.dumps(result, indent=4), mimetype="application/json")
Ejemplo n.º 2
0
def picture_upload(request):
    result = dict()
    result['code'] = 0
    result['success'] = True
    try:
        if request.method == 'POST':
            user=User.objects.get(id=request.user.id)
            user_profile = UserProfile.objects.get(user=user)
            if user:
                file_content = ContentFile(request.FILES['photo'].read())
                fileExtension=request.POST.get('fileExtension','')
                file_name=request.FILES['photo'].name
                new_file = File(file_type=fileExtension,file_name=file_name, uploader=user)
                fileName2 = user.username + "_" + str(uuid.uuid1()) +'.'+ fileExtension
                
                
                user_profile.picture.save(request.FILES['photo'].name, file_content)
                user_profile.save()
                result['changed_picture']=user_profile.picture.url
            else:
                return my_utils.return_error('No User')
    except Exception as e:
        print str(e)
        return my_utils.return_error('Empty Message')
    return HttpResponse(json.dumps(result))
Ejemplo n.º 3
0
def load_dialog(request):
    result=dict()
    result['success']=True
    result['message']='success'
    result['dialogs']=list()
    if not request.user:
        return my_utils.return_error('Please Sign in First')
    
    try:
        base_id = request.GET.get("base_id",False)
        additional = Q()
        if base_id:
            additional = Q(id__lt=base_id)
        
        dialogs = Dialog.objects.filter(additional,is_deleted=False).order_by('-reg_date')[:DEFAULT_LOAD_LENGTH]
        result['dialogs']=process_dialogs(dialogs)
        
        if len(dialogs) == DEFAULT_LOAD_LENGTH:
            result['load_more']=True
        
    except Exception as e:
        print str(e)
        return my_utils.return_error('Internal Error')
    
    return HttpResponse(json.dumps(result, indent=4), mimetype='application/json')
Ejemplo n.º 4
0
def add_dialog(request):
    result=dict()
    result['success']=True
    result['message']='success'
    
    dialog=request.POST.get('dialog',False)
    if not dialog:
        return my_utils.return_error('Invalid Access')
    
    dialog=smart_unicode(dialog, encoding='utf-8', strings_only=False, errors='strict')
    
    try:
        user = User.objects.get(username=request.user.username)
    except:
        return my_utils.return_error('Sign in first')
    
    try: 
        new_dialog = Dialog(author=user,contents=dialog)
        new_dialog.save()
        dialog = Dialog.objects.get(id=new_dialog.id)
        result['dialog']=process_dialogs([dialog])[0]
    except:
        return my_utils.return_error('Send Message Failure')
    
    return HttpResponse(json.dumps(result, indent=4), mimetype='application/json')
Ejemplo n.º 5
0
def detail(request,username):
    result=dict()
    result['success']=True
    result['message']='success'
    result['user']=dict()
    try:
        user_info=dict()
        user = User.objects.get(username=username)
        try:
            user_profile = UserProfile.objects.get(user=user)
        except:
            return my_utils.return_error('Empty User')
        try:
            user_info['last_login']=str(user.last_login)
            user_info['email']=user.email
            user_info['userID']=user.username
            user_info['name']=user.last_name
            user_info['dept']=user_profile.dept
            user_info['position']=user_profile.position
            user_info['picture']= user_profile.picture.url
        except:
            user_info['author_picture']='/media/default.png'
        
        user_info['related_topics']=get_related_topics(user.username)
        
        result['user']=user_info
    except Exception as e:
        print str(e)
        return my_utils.return_error('Empty User')
        
    return HttpResponse(json.dumps(result, indent=4), mimetype='application/json')
def get_notifications(request):
    result = dict()
    result["success"] = True
    result["message"] = "success"
    result["unread_notis"] = list()
    try:
        user = User.objects.get(username=request.user.username)
        try:
            unread_notis = UserNotification.objects.filter(
                ~Q(notification_type="new_event_invite"), user=user, is_read=False
            ).order_by("-reg_date")
            unread_notis_count = (
                UserNotification.objects.filter(~Q(notification_type="new_event_invite"), user=user, is_read=False)
                .order_by("-reg_date")
                .count()
            )
            read_notis = UserNotification.objects.filter(user=user, is_read=True).order_by("-reg_date")[:10]
            result["unread_notis_count"] = unread_notis_count

            result["unread_notis"] = process_notis(request, unread_notis)
            result["read_notis"] = process_notis(request, read_notis)
        except Exception as e:
            print str(e)
            result["success"] = True
            result["message"] = "Invalid action"

    except:
        return my_utils.return_error("Please Sign in First")
    return HttpResponse(json.dumps(result, indent=4), mimetype="application/json")
Ejemplo n.º 7
0
def detail(request, topic_id):
    result=dict()
    result['success']=True
    result['message']='success'
    try:
        topic = Topic.objects.get(id=topic_id)
        
        topic_info = dict()
        topic_info['id']=topic.id
        topic_info['topic_name']=topic.topic_name
        topic_info['topic_desc']=topic.topic_detail
        related_users=my_utils.get_related_users(topic.topic_name)
        result['topic']=topic_info
        topic_info['related_users']=list()
        for user in related_users:
            user_info = dict()
            user_info['userID']=user.username
            user_info['picture']=user.picture_url
            topic_info['related_users'].append(user_info)
            
            
    except Exception as e:
        print str(e)
        return my_utils.return_error('Empty Message')
        
    return HttpResponse(json.dumps(result, indent=4), mimetype='application/json')
Ejemplo n.º 8
0
def delete(request, feed_id):
    result=dict()
    result['success']=True
    result['message']='success'
    print feed_id
    try:
        user = User.objects.get(username=request.user.username)
        try:
            message = Message.objects.get(author=user, id=feed_id)
            message.is_deleted=True
            message.save()
            
            try:
                related_topics = message.related_topics.split(",")
                for topic_name in related_topics:
                    if topic_name:
                        topic = Topic.objects.get(topic_name=topic_name)
                        topic.reference_count -=1
                        topic.save()
                
                related_topic_timelines = TopicTimeline.objects.filter(message=message)
                for timeline in related_topic_timelines:
                    timeline.delete()
            
            except Exception as e:
                print str(e)+"[11234]"
                pass
        except:
            result['success']=True
            result['message']='Invalid action'
    except:
            return my_utils.return_error('Please Sign in First')
            
    return HttpResponse(json.dumps(result, indent=4), mimetype='application/json')
Ejemplo n.º 9
0
def login_test(request):
    result=dict()
    result['success']=True
    result['message']='success'
    if not request.user.id:
        return my_utils.return_error('Sign In First')
    try:
        user = User.objects.get(id=request.user.id)
        print user.username
        profile=UserProfile.objects.get(user=user)
        result['picture'] = profile.picture.url
        result['username'] = user.last_name
        result['dept'] = profile.dept
        result['position'] = profile.position
        return HttpResponse(json.dumps(result, indent=4), mimetype='application/json')
    except Exception as e:
        print str(e)
        pass
    return my_utils.return_error('Error Occured')
Ejemplo n.º 10
0
def signin(request):
    result=dict()
    result['success']=True
    result['message']='success'
    
    userID = request.POST.get('userID',False)
    userPW = request.POST.get('userPW',False)
    deviceToken = request.POST.get('deviceToken',False)
    print deviceToken
    if not userID or not userPW:
        return my_utils.return_error('Check Inputs')
    
    try:
        user = authenticate(username=userID,password=userPW)
        if user is not None:
            user_profile = UserProfile.objects.get(user=user)
            if user.is_active and not user_profile.is_deactivated:
                login(request, user)
                try:
                    user_profile = UserProfile.objects.get(user=user)
                    user_profile.device_id = deviceToken
                    user_profile.save()
                except Exception as e:
                    print str(e)

            else:
                return my_utils.return_error('That User is not Active')
            user_profile = UserProfile.objects.get(user=user)
            result['profile']=dict()
            try:
                result['profile']['username']= user.last_name
                result['profile']['picture']= user_profile.picture.url
            except:
                 result['profile']['picture']='/media/default.png'
            
        else:
            return my_utils.return_error('Signin Failed')
    except Exception as e:
        print str(e)
        return my_utils.return_error('Error Occured')
        
    
    return HttpResponse(json.dumps(result, indent=4), mimetype='application/json')
Ejemplo n.º 11
0
def get_feed(request,feed_id):
    result=dict()
    result['success']=True
    result['message']='success'
    try:
        feed = Message.objects.filter(id=feed_id)
        result['feed']=my_utils.process_messages(request, feed)
    except Exception as e:
        print str(e)
        return my_utils.return_error('Empty Message')
        
    return HttpResponse(json.dumps(result, indent=4), mimetype='application/json')
Ejemplo n.º 12
0
def load_poll(request):
    result=dict()
    result['success']=True
    result['message']='success'
    result['dialogs']=list()
    if not request.user:
        return my_utils.return_error('Please Sign in First')
    
    try:
        base_id = request.GET.get("base_id",False)
        additional = Q()
        if base_id:
            additional = Q(id__lt=base_id)
        
        polls = Poll.objects.filter(additional,is_deleted=False).order_by('-reg_date')[:DEFAULT_LOAD_LENGTH]
        
        polls_list = list()
        for poll in polls:
            poll_item = dict()
            poll_item['id'] = poll.id
            poll_item['title'] = poll.title
            poll_item['author'] = poll.author.username
            poll_item['author_name'] = poll.author.last_name
            poll_item['reg_date'] = str(poll.reg_date)
            polls_list.append(poll_item)
        
        result['polls']=polls_list
        
        if len(polls_list) == DEFAULT_LOAD_LENGTH:
            result['load_more']=True
        
    except Exception as e:
        print str(e)
        return my_utils.return_error('Internal Error')
    
    return HttpResponse(json.dumps(result, indent=4), mimetype='application/json')
Ejemplo n.º 13
0
def delete_dialog(request):
    result=dict()
    result['success']=True
    result['message']='success'
    
    if request.method != "POST" or not request.user:
        return my_utils.return_error('Invalid Access')
    
    dialog_id = request.POST.get('dialog_id',False)
    if not dialog_id:
        return my_utils.return_error('Invalid ID')
    try:
        user = User.objects.get(username=request.user.username)
        try:
            dialog = Dialog.objects.get(author=user, id=dialog_id)
            dialog.is_deleted=True
            dialog.save()
        except:
            result['success']=True
            result['message']='Invalid action'
    except:
            return my_utils.return_error('Please Sign in First')
    
    return HttpResponse(json.dumps(result, indent=4), mimetype='application/json')
Ejemplo n.º 14
0
def load_topic_timeline(request,topic_id):
    result=dict()
    result['success']=True
    result['message']='success'
    
    try:
        base_id = request.GET.get("base_id",False)
        additional = Q()
        if base_id:
            additional = Q(id__lt=base_id)
        
        topic = Topic.objects.get(id=topic_id)
        try:
            timelines = TopicTimeline.objects.filter(additional, topic=topic).order_by('-update_date')[:DEFAULT_LOAD_LENGTH]
            if not timelines:
                result['feeds']=my_utils.process_messages(request, list())
                return HttpResponse(json.dumps(result, indent=4), mimetype='application/json')
            messages = list()
            for timeline in timelines:
                try:
                    if not timeline.message.is_deleted:
                        timeline.message.base_id=timeline.id
                        messages.append(timeline.message)
                except:
                    pass
            
            if len(timelines) == DEFAULT_LOAD_LENGTH:
                result['load_more']=True
            
            result['feeds']=my_utils.process_messages(request, messages)
                
        except Exception as e:
            print str(e)
            result['success']=True
            result['message']='Do not have any message'
    except:
            return my_utils.return_error('No Such Topic')
            
    return HttpResponse(json.dumps(result, indent=4), mimetype='application/json')
Ejemplo n.º 15
0
def update(request):
    result=dict()
    result['success']=True
    result['message']='success'
    message=''
    attach_list=''
    location_info=''
    lat = ''
    lng = ''
    if request.method == 'POST':
        if request.POST.get('message',False):
            message=smart_unicode(request.POST['message'], encoding='utf-8', strings_only=False, errors='strict')
        if request.POST.get('attach_list',False):
            attach_list=request.POST['attach_list']
        if request.POST.get('location_info',False):
            location_info=request.POST['location_info']
            try:
                location = location_info.split("|")
                lat = location[0]
                lng = location[1]
            except:
                pass
    if message is not '':
        try:
            user = User.objects.get(username=request.user.username)
            print location_info
            try: 
                new_message = Message(author=user,contents=message,lat=lat,lng=lng,attach_files=attach_list)
                new_message.save()   
            except:
                return my_utils.return_error('Insert Failed')
                     
            try:
                author_timeline_new = UserTimeline(message=new_message,user=user)
                author_timeline_new.save()
            except:
                return my_utils.return_error('Timelilne Failed')
                
            target_users=parser.detect_users(message)
            target_users=my_utils.remove_duplicates(target_users)
            count = len(target_users)
            for i, user_name in enumerate(target_users):
                try:
                    if user_name != request.user.username:
                        target_user = User.objects.get(username=user_name)
                        target_user_timeline_new = UserTimeline(message=new_message,user=target_user)
                        target_user_timeline_new.save()
                        new_message.related_users+=user_name+','
                        
                        #SEND NOTIFICATION
                        info = dict()
                        info['from'] = user
                        info['to'] = target_user
                        info['target_object'] = new_message
                        register_noti(request, "new_at_feed",info)
                except:
                    pass
            
            new_message.save()
            
            #TODO: UPDATE TARTGET_USER TIMELINE & TOPIC TIMELINE
            target_topics=parser.detect_topics(message)
            target_topics=my_utils.remove_duplicates(target_topics)
            count = len(target_topics)
            for i,topic_name in enumerate(target_topics):
                try:
                    topic = Topic.objects.get_or_create(topic_name=topic_name)[0]
                    topic.reference_count +=1
                    topic.save()
                    
                    topic_timeline_new = TopicTimeline(message=new_message, topic=topic)
                    topic_timeline_new.save()
                    
                    new_message.related_topics+=topic_name+','
                except Exception as e:
                    print "QWER: "+str(e)
                    pass
                    
            new_message.save()
            
            
            #FILE CHECK
            attach_arr = attach_list.split('.')
            for attach_id in attach_arr:
                try:
                    if attach_id is '':
                        continue
                    attach = File.objects.get(id=attach_id)
                    attach.is_attached=True
                    attach.save()
                except Exception as e:
                    print str(e)
        except Exception as e:
            return my_utils.return_error('No such User')
    else:
        return my_utils.return_error('Empty Message')
    
    return HttpResponse(json.dumps(result, indent=4), mimetype='application/json')
Ejemplo n.º 16
0
def update_comment(request):
    result=dict()
    result['success']=True
    result['message']='success'
    
    input_message=''
    if request.method == 'POST':
        if request.POST['message']:
            input_message=smart_unicode(request.POST['message'], encoding='utf-8', strings_only=False, errors='strict')
        if request.POST['feed_id']:
            feed_id = request.POST['feed_id']

    if input_message is not '':
        try:
            user = User.objects.get(username=request.user.username)
        except:
            return my_utils.return_error('Please Sign in first')
        
        try:
            message = Message.objects.filter(id=feed_id,is_deleted=False)[0]
        except:
            return my_utils.return_error('No such Message')
            
        try: 
            new_comment = Comment(author=user,contents=input_message,message=message)
            new_comment.save()
            message.save()
        except:
            return my_utils.return_error('Insert Failed')
        
        #Add To author Timeline
        try:
            author_timeline_new = UserTimeline.objects.filter(message=message,user=user)[0]
        except:
            #현재 없는 경우에만 넣는다.
            try:
                print 'hi'
                author_timeline_new = UserTimeline.objects.get_or_create(message=message,user=user)[0]
                author_timeline_new.save()
            except:
                pass
        
        try:
            related_timelines = UserTimeline.objects.filter(message=message)
            if not related_timelines:
                pass
            for timeline in related_timelines:
                try:
                    if timeline.user.username != request.user.username:
                        timeline.save()
                        
                        #SEND NOTIFICATION
                        info = dict()
                        info['from'] = request.user
                        info['to'] = timeline.user
                        info['comment'] = input_message
                        info['target_object'] = message
                        register_noti(request, "new_comment",info)
                except:
                    pass
        except Exception as e:
            print str(e)
            return my_utils.return_error('Related Timelilne Failed')
            
        #Question! Should do insert into related Topic timeline?
    else:
        return my_utils.return_error('Empty Message')
    
    try:
        item = dict()
        item['id']=new_comment.id
        item['author']=new_comment.author.username
        item['author_picture']=UserProfile.objects.get(user=new_comment.author).picture.url
        item['author_name']=new_comment.author.last_name
        item['contents']= parser.parse_text(new_comment.contents)
        item['reg_date']= str(new_comment.reg_date)
        result['comment']=item
    except Exception as e:
        print str(e)
    return HttpResponse(json.dumps(result, indent=4), mimetype='application/json')