Esempio n. 1
0
def image_like(request):
    """
    :param request:
    :return:
    """
    image_id = request.POST.get('id')
    action = request.POST.get('action')
    print(image_id)
    print(action)
    if image_id and action:
        try:
            image = Image.objects.get(id=image_id)
            #多对多字段的管理
            #使用add和remove方法用来添加和删除多对多关系
            #add方法即使传入已经存在的数据对象,也不会重复建立关系
            #remove方法即使传入不存在的数据对象,也不会报错
            if action == 'like':
                image.user_like.add(request.user)
                create_action(request.user, '喜欢了图片', image)
            else:
                image.user_like.remove(request.user)
            return JsonResponse({'status': 'ok'})
        except:
            pass
    return JsonResponse({'status': 'error'})
Esempio n. 2
0
def serial_like(request):
    """Здесь мы используем два декоратора для функции. Декоратор login_required
    не даст неавторизованным пользователям доступ к этому обработчику. Деко-
    ратор require_POST возвращает ошибку HttpResponseNotAllowed (статус ответа 405),
    если запрос отправлен не методом POST. Таким образом, обработчик будет вы-
    полняться только при POST-запросах. В Django также реализованы декоратор
    required_GET, запрещающий любые методы, кроме GET, и декоратор require_http_
    methods, принимающий список разрешенных методов в качестве аргумента.
    В этом обработчике мы используем два POST-параметра:
      image_id – ID изображения, для которого выполняется действие;
      action – действие, которое хочет выполнить пользователь (строковое
    значение like или unlike).
    Мы используем менеджер отношения «многие ко многим» users_like моде-
    ли Image, чтобы добавлять и удалять пользователей с помощью методов add()
    и remove() соответственно. Если вы вызываете add() и передаете в него поль-
    зователя, который уже связан с текущей картинкой, дубликат не будет создан.
    Аналогично при вызове remove() и попытке удалить пользователя, который не
    связан с изображением, ошибка не появится. Еще один полезный метод ме-
    неджера «многие ко многим» – clear(). Он удаляет все отношения.
    В конце обработчика используем объект JsonResponse, который возвращает
    HTTP-ответ с типом application/json и преобразует объекты в JSON."""
    serial_id = request.POST.get("id")
    action = request.POST.get("action")
    if serial_id and action:
        try:
            serial = Serial.objects.get(id=serial_id)
            if action == "like":
                serial.users_like.add(request.user)
                create_action(request.user, "likes", serial)
            else:
                serial.users_like.remove(request.user)
            return JsonResponse({"status": "ok"})
        except:
            pass
    return JsonResponse({"status": "ok"})
Esempio n. 3
0
    def update(self, request, *args, **kwargs):
        partial = kwargs.pop('partial', False)
        instance = self.get_object()
        serializer = self.get_serializer(instance,
                                         data=request.data,
                                         partial=partial)
        serializer.is_valid(raise_exception=True)
        self.perform_update(serializer)

        order = instance.order
        order.status = serializer.get_status(instance)
        order.save()

        create_action(request.user, '修改复机', order, limit=False)

        if getattr(instance, '_prefetched_objects_cache', None):
            # If 'prefetch_related' has been applied to a queryset, we need to
            # forcibly invalidate the prefetch cache on the instance.
            instance._prefetched_objects_cache = {}

        return Response({
            'id': instance.id,
            'order_id': order.id,
            'status_code': order.status,
            'status': order.get_status_display()
        })
Esempio n. 4
0
 def post(self, *args, **kwargs):
     inside = ''
     collect_block_id = kwargs.get('pk')
     collect_block_id = int(collect_block_id)
     block = Block.objects.get(pk=collect_block_id)
     if collect_block_id:
         try:
             collect_block = self.request.user.collect_block
         except Exception as e:
             from account.models import UserCollectBlock
             collect_block = UserCollectBlock.objects.create(
                 user=self.request.user)
         lst = collect_block.block_list
         if lst is None:
             lst = []
         if collect_block_id not in lst:
             lst.append(collect_block_id)
             self.request.user.collect_block.block_list = lst
             self.request.user.collect_block.save()
             inside = 'yes'
             msg = '已收集'
         else:
             lst.remove(collect_block_id)
             self.request.user.collect_block.block_list = lst
             self.request.user.collect_block.save()
             inside = 'no'
             msg = '从收集中移除'
         verb = f" {msg} {block._meta.verbose_name} {block}#"
         create_action(self.request.user, verb, block)
     return JsonResponse({'state': 'ok', 'inside': inside, 'msg': msg})
def follow(request):
    user1 = request.user
    user2 = request.POST.get('username')
    user2 = User.objects.get(username=user2)
    # user1.following.add(user2)
    Contact.objects.get_or_create(user_from=user1, user_to=user2)
    create_action(user1, 'followed', user2)
    return redirect('user:user_detail', username=user2)
    
Esempio n. 6
0
 def unfollow(self, request):
     serializer = self.get_serializer(data=request.data)
     serializer.is_valid(raise_exception=True)
     user_from = request.user
     user_to = UserModel.objects.get(
         username=serializer.validated_data['user_to'])
     Follow.objects.filter(user_from=user_from, user_to=user_to).delete()
     create_action(user_from, '取消关注', user_to)
     return Response({'status': 'ok'}, status=status.HTTP_204_NO_CONTENT)
Esempio n. 7
0
 def charge(self, request):
     serializer = self.get_serializer(data=request.data)
     serializer.is_valid(raise_exception=True)
     order = serializer.save()
     create_action(request.user, '审核', order, limit=False)
     return Response({
         'id': order.id,
         'status_code': order.status,
         'status': order.get_status_display()
     })
Esempio n. 8
0
def user_follow(request):
    user_id = request.POST.get('id')
    action = request.POST.get('action')
    if user_id and action:
        user = User.objects.get(id=user_id)
        if action == 'follow':
            Content.objects.get_or_create(user_form=request.user,user_to=user)
            create_action(request.user,'关注了用户',user)
        else:
            Content.objects.filter(user_form=request.user,user_to=user).delete()
        return JsonResponse({'status':'ok'})
    return JsonResponse({'status':'error'})
Esempio n. 9
0
 def create(self, request, *args, **kwargs):
     serializer = self.get_serializer(data=request.data)
     serializer.is_valid(raise_exception=True)
     user_from = request.user
     user_to = UserModel.objects.get(
         username=serializer.validated_data['user_to'])
     Follow.objects.get_or_create(user_from=user_from, user_to=user_to)
     create_action(user_from, '关注', user_to)
     headers = self.get_success_headers(serializer.data)
     return Response({'status': 'ok'},
                     status=status.HTTP_201_CREATED,
                     headers=headers)
Esempio n. 10
0
def user_follow(request):
    user_id = request.POST.get("id")
    action = request.POST.get("action")
    if user_id and action:
        user = User.objects.get(id=user_id)
        if action == "follow":
            Contact.objects.get_or_create(user_from=request.user, user_to=user)
            create_action(request.user, '关注了用户', user)
        else:
            Contact.objects.filter(user_from=request.user,
                                   user_to=user).delete()
        return JsonResponse({"status": "ok"})
    return JsonResponse({"status": "error"})
Esempio n. 11
0
 def create(self, request, *args, **kwargs):
     serializer = self.get_serializer(data=request.data)
     serializer.is_valid(raise_exception=True)
     order = self.perform_create(serializer)
     create_action(request.user, '开停机单', order, limit=False)
     # headers = self.get_success_headers(serializer.data)
     return Response(
         {
             'id': order.id,
             'status_code': order.status,
             'status': order.get_status_display()
         },
         status=status.HTTP_201_CREATED)
Esempio n. 12
0
def register(request):
    if request.method == 'POST':
        user_form = UserRegistrationForm(request.POST)
        if user_form.is_valid():
            new_user = user_form.save(commit=False)
            new_user.set_password(user_form.cleaned_data['password'])
            new_user.save()
            Profile.objects.create(user=new_user)
            create_action(request.user, 'Has created an account')
            return render(request, 'account/register_done.html',
                          {'new_user': new_user})
    else:
        user_form = UserRegistrationForm()
    return render(request, 'account/register.html', {'user_form': user_form})
Esempio n. 13
0
def image_like(request):
    image_id = request.POST.get('id')
    action = request.POST.get('action')
    if image_id and action:
        try:
            image = Image.objects.get(id=image_id)
            if action == 'like':
                image.users_like.add(request.user)
                create_action(request.user, 'likes', image)
            else:
                image.users_like.remove(request.user)
            return JsonResponse({'status': 'ok'})
        except:
            pass
    return JsonResponse({'status': 'ko'})
Esempio n. 14
0
def register(request):
    if request.method == 'POST':
        user_form = UserRegistrationForm(request.POST)
        if user_form.is_valid():
            # 建立新数据对象但是不写入数据库
            new_user = user_form.save(commit=False)
            # 设置密码
            new_user.set_password(user_form.cleaned_data['password'])
            # 保存user对象
            new_user.save()
            Profile.objects.create(user=new_user)
            create_action(new_user,'创建了新用户')
            return render(request, 'account/register_done.html', {'new_user': new_user})
    else:
        user_form = UserRegistrationForm()
    return render(request, 'account/register.html', {'user_form': user_form})
Esempio n. 15
0
    def product(self, request):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        recover_audit = serializer.save()
        recover_order = recover_audit.recover_order
        recover_order.order.status = serializer.get_status(recover_audit)
        recover_order.order.save()
        create_action(request.user, '审核', recover_order.order, limit=False)

        return Response(
            {
                'id': recover_order.id,
                'order_id': recover_order.order.id,
                'status': recover_order.order.get_status_display()
            },
            status=status.HTTP_200_OK)
Esempio n. 16
0
def image_create(request):
    if request.method == 'POST':
        form = ImageCreateForm(data=request.POST, files=request.FILES)
        if form.is_valid():
            cd = form.cleaned_data
            new_item = form.save(commit=False)
            new_item.user = request.user
            new_item.save()
            create_action(request.user, 'uploaded an image', new_item)
            return HttpResponse('Image successfully added')
    else:
        form = ImageCreateForm(data=request.GET)
    return render(request, 'images/image/create.html', {
        'section': 'images',
        'form': form
    })
Esempio n. 17
0
def user_follow(request):
    user_id = request.POST.get('id')
    action = request.POST.get('action')
    if user_id and action:
        try:
            user = User.objects.get(id=user_id)
            if action == 'follow':
                Contact.objects.get_or_create(user_from=request.user,
                                              user_to=user)
                create_action(request.user, 'is following', user)
            else:
                Contact.objects.filter(user_from=request.user,
                                       user_to=user).delete()
            return JsonResponse({'status': 'ok'})
        except User.DoesNotExist:
            return JsonResponse({'status': 'ok'})
    return JsonResponse({'status': 'ok'})
Esempio n. 18
0
def image_create(request):
    if request.method == 'POST':
        # 表单被提交
        form = ImageCreateForm(request.POST)
        if form.is_valid():
            # 表单验证通过
            cd = form.cleaned_data
            new_item = form.save(commit=False)
            # 把当前用户附加到数据对象上
            new_item.user = request.user
            new_item.save()
            # 行为流  添加图片动作
            create_action(request.user,'添加了图片',new_item)
            messages.success(request, '图片添加成功')
            return redirect(new_item.get_absolute_url())
    else:
        form = ImageCreateForm(request.GET)
    return render(request, 'images/create.html', {'section': 'images', 'form': form})
Esempio n. 19
0
def image_create(request):
    if request.method == 'POST':
        form = ImageCreateForm(data=request.POST)
        if form.is_valid():
            cd = form.cleaned_data

            new_item = form.save(commit=False)
            new_item.user = request.user
            new_item.save()
            create_action(request.user, 'bookmarked image', new_item)
            messages.success(request, 'Image added successfully')
            return redirect(new_item.get_absolute_url())
    else:
        form = ImageCreateForm(data=request.GET)

    return render(request, 'images/image/create.html', {
        'section': 'imges',
        'form': form
    })
Esempio n. 20
0
    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)

        recover_order = self.perform_create(serializer)
        order = recover_order.order
        # status
        order.status = serializer.get_status(recover_order)
        order.save()

        # 这个地方有问题,两分钟内重复操作不记录
        create_action(request.user, '申请复机', order, limit=False)

        headers = self.get_success_headers(serializer.data)
        return Response(
            {
                'id': recover_order.id,
                'order_id': order.id,
                'status_code': order.status,
                'status': order.get_status_display()
            },
            status=status.HTTP_201_CREATED,
            headers=headers)