예제 #1
0
파일: views.py 프로젝트: vincehar/Backend
def deleteWish(request, _wish_id):
    """
    Used to delete wish with a wish ID
    :param request:
    :param _wish_id:
    :return:
    """
    try:
        Wishes.delete(Wishes.objects.get(id=_wish_id))
    except Wishes.DoesNotExist:
        raise Http404('Wish id does not exist')
    else:
        return redirect('/upto/wishes/')
예제 #2
0
def get_favorite_tags(request, _email):
    '''
    Get favorite tags for a user
    :param request:
    :param _email:
    :return:
    '''
    try:
        connected_user = App.getCurrentUser(request)
        selected_user = Users.objects.get(user__email=_email)
        lstTags = list()
        lstEvents = Events.objects(
            Q(creator=selected_user.id)
            | Q(participants__contains=connected_user.id))
        lstWeesh = Wishes.objects(creator=selected_user.id)

        for ev in lstEvents:
            if len(ev.tags) != 0:
                lstTags.append(ev.tags[0].title.lower())
        for we in lstWeesh:
            if len(we.tags) != 0:
                lstTags.append(we.tags[0].title.lower())

        a = dict(Counter(lstTags).most_common(4))
        print json.dumps(a)
    except connected_user.DoesNotExist:
        raise Http404('Not logged')
    except selected_user.DoesNotExist:
        raise Http404('User doesnt exists')
    else:
        return Response(json.dumps(a))
예제 #3
0
파일: views.py 프로젝트: vincehar/Backend
def myevents(request):
    try:
        events_matched = list()
        connected_user = App.getCurrentUser(request)
        # - 1 get Events matching with Myweesh
        for weesh in Wishes.objects(user_id=connected_user.id, is_active=True):
            for event in Events.objects(is_active=True, tags__in=weesh.tags):
                events_matched.append(event)

        # - 2 get created events by current user
        for event in Events.objects(is_active=True, user_id=connected_user.id):
            events_matched.append(event)

        context = {
            'user':
            connected_user,
            'events_matched':
            sorted(events_matched,
                   key=methodcaller('get_ref_date'),
                   reverse=True)
        }
    except DoesNotExist:
        form = UsersLoginForm()
        return render(request, 'upto/index.html', {'form': form})
    else:
        # - 3 reset notifications
        return render(request, 'upto/myevents.html', context)
예제 #4
0
def createWish(request):

    try:
        _wish_title = request.POST['weesh']
        _idLevel = request.POST['idLevel']

        selectedLevel = Level.objects.get(idLevel=_idLevel)
        connected_user = App.getCurrentUser(request)
        createdWish = connected_user.create_wish(_wish_title, selectedLevel)
        wishSerializer = WishSerializer(instance=createdWish)

        #TODO : Lancer le code suivant en asynchrone
        #1 - rechercher les weeshes similaires avec Tags
        if (len(createdWish.tags) > 0):
            lstMatchingWishes = Wishes.objects(
                title__icontains=createdWish.tags[0].title)
            geoTool = geolocalisation()
            for aWeesh in lstMatchingWishes:
                if connected_user.user.email != aWeesh.creator.user.email:
                    if geoTool.getDistance(
                            connected_user.current_coordinates,
                            aWeesh.creator.current_coordinates
                    ) <= connected_user.preferences.search_distance:
                        isExisting = Notifications.objects(
                            from_user=aWeesh.creator,
                            to_user=connected_user,
                            referenced_object=aWeesh)
                        if len(isExisting) == 0:
                            notif = WeeshMatchingNotifications()
                            notif.referenced_object = aWeesh
                            notif.from_user = aWeesh.creator
                            notif.to_user = connected_user
                            notif.content = aWeesh.creator.user.username + " post a matching Weesh to : "
                            notif.save()

                    if geoTool.getDistance(
                            connected_user.current_coordinates,
                            aWeesh.creator.current_coordinates
                    ) <= aWeesh.creator.preferences.search_distance:
                        isExisting = Notifications.objects(
                            from_user=connected_user,
                            to_user=aWeesh.creator,
                            referenced_object=createdWish)
                        if len(isExisting) == 0:
                            notif = WeeshMatchingNotifications()
                            notif.referenced_object = createdWish
                            notif.from_user = connected_user
                            notif.to_user = aWeesh.creator
                            notif.content = connected_user.user.username + " post a matching Weesh to : "
                            notif.save()

    except selectedLevel.DoesNotExist:
        raise Http404('Level is not existing. Check DB')
    except connected_user.DoesNotExist:
        raise Http404('Not logged')
    else:
        return Response(wishSerializer.data)
예제 #5
0
파일: Users.py 프로젝트: vincehar/Backend
    def create_wish(self, _title, _level):
        """
        Method used to create a wish
        :param _title:
        :param _creation_date:
        :return: self
        """

        wish = Wishes(creator=self.id,
                      title=_title,
                      creation_date=datetime.datetime.now(),
                      level=_level)

        splitTitle = _title.split(' ')
        for word in splitTitle:
            if word.startswith('#'):
                tag = Tags.objects.get_or_create(title=word)
                wish.tags.append(tag[0])

        wish.save()

        return wish
예제 #6
0
def allweeshes(request):
    '''
    :return:
    '''
    connected_user = App.getCurrentUser(request)
    if connected_user.preferences.display_weeshes:
        AllWishes = list()
        if connected_user.preferences.selected_network == "PUBLIC":
            AllWishes = Wishes.objects(
                Q(title__icontains=connected_user.preferences.search_string)
            ).order_by('-creation_date')[0:4]
        if connected_user.preferences.selected_network == "FRIENDS":
            for relationship in getFriends(connected_user):
                for wish in Wishes.objects(
                        Q(creator=relationship.from_user.id)
                        & Q(title__icontains=connected_user.preferences.
                            search_string)).order_by('-creation_date')[0:4]:
                    AllWishes.append(wish)

        lstWishes = WishSerializer(instance=AllWishes, many=True)
        return Response(lstWishes.data)
    else:
        return None
예제 #7
0
def weeshTimeline(request):
    '''
    Get All Weeshes for profile timeline
    :return:
    '''
    try:
        connected_user = App.getCurrentUser(request)
        lstweesh = Wishes.objects(
            Q(creator=connected_user.id)
            | Q(weeshback__contains=connected_user.id))
        lstWishes = WishSerializer(instance=lstweesh, many=True)

    except connected_user.DoesNotExist:
        raise Http404('Not logged')
    else:
        return Response(lstWishes.data)