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")
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))
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')
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')
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")
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')
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')
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')
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')
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')
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')
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')
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')
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')
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')