No Description

views.py 7.7KB

    # -*- coding: utf-8 -*- from django.db import transaction from django.http import JsonResponse from rest_framework import viewsets from account.models import UserInfo from group.models import GroupInfo, GroupUserInfo, GroupPhotoInfo from group.serializers import GroupInfoSerializer, GroupUserInfoSerializer, GroupPhotoInfoSerializer from utils.ip_utils import ip_addr from curtail_uuid import CurtailUUID from TimeConvert import TimeConvert as tc @transaction.atomic def group_create_api(request): user_id = request.POST.get('user_id', '') try: user = UserInfo.objects.get(user_id=user_id) except UserInfo.DoesNotExist: return JsonResponse({ 'status': 4011, 'message': u'用户不存在', }) group_id = CurtailUUID.uuid(GroupInfo, 'group_id') group = GroupInfo.objects.create( group_id=group_id, admin_id=user_id, group_from=GroupInfo.APP_GROUP, ) GroupUserInfo.objects.create( group_id=group_id, user_id=user_id, nickname=user.username, admin=True, user_status=GroupUserInfo.PASSED, passed_at=tc.utc_datetime(), ) return JsonResponse({ 'status': 200, 'message': u'群组创建成功', 'data': { 'group_id': group_id, 'users': group.users(user_id) }, }) def group_detail_api(request): group_id = request.POST.get('group_id', '') user_id = request.POST.get('user_id', '') try: user = UserInfo.objects.get(user_id=user_id) except UserInfo.DoesNotExist: return JsonResponse({ 'status': 4011, 'message': u'用户不存在', }) try: group = GroupInfo.objects.get(group_id=group_id) except GroupInfo.DoesNotExist: return JsonResponse({ 'status': 4020, 'message': u'群组不存在', }) return JsonResponse({ 'status': 200, 'message': u'获取群组详情成功', 'data': { 'group_id': group_id, 'users': group.users(user_id) }, }) def group_join_api(request): group_id = request.POST.get('group_id', '') user_id = request.POST.get('user_id', '') nickname = request.POST.get('nickname', '') try: user = UserInfo.objects.get(user_id=user_id) except UserInfo.DoesNotExist: return JsonResponse({ 'status': 4011, 'message': u'用户不存在', }) try: group = GroupInfo.objects.get(group_id=group_id) except GroupInfo.DoesNotExist: return JsonResponse({ 'status': 4020, 'message': u'群组不存在', }) if group.group_lock: return JsonResponse({ 'status': 4021, 'message': u'群组已锁定', }) if GroupUserInfo.objects.filter(group_id=group_id, user_id=user_id, user_status__in=[GroupUserInfo.APPLYING, GroupUserInfo.PASSED]).exists(): return JsonResponse({ 'status': 4026, 'message': u'重复加群申请', }) GroupUserInfo.objects.create( group_id=group_id, user_id=user_id, nickname=nickname or user.username, admin=False, user_status=GroupUserInfo.APPLYING, ) return JsonResponse({ 'status': 200, 'message': u'申请已提交', }) def group_lock_api(request): group_id = request.POST.get('group_id', '') user_id = request.POST.get('user_id', '') try: user = UserInfo.objects.get(user_id=user_id) except UserInfo.DoesNotExist: return JsonResponse({ 'status': 4011, 'message': u'用户不存在', }) try: group = GroupInfo.objects.get(group_id=group_id) except GroupInfo.DoesNotExist: return JsonResponse({ 'status': 4020, 'message': u'群组不存在', }) if group.admin_id != user_id: return JsonResponse({ 'status': 4023, 'message': u'没有锁定权限', }) group.group_lock = True group.save() return JsonResponse({ 'status': 200, 'message': u'锁定成功', }) def group_pass_api(request): group_id = request.POST.get('group_id', '') admin_id = request.POST.get('admin_id', '') user_id = request.POST.get('user_id', '') try: admin = UserInfo.objects.get(user_id=admin_id) except UserInfo.DoesNotExist: return JsonResponse({ 'status': 4011, 'message': u'用户不存在', }) try: user = UserInfo.objects.get(user_id=user_id) except UserInfo.DoesNotExist: return JsonResponse({ 'status': 4011, 'message': u'用户不存在', }) try: group = GroupInfo.objects.get(group_id=group_id) except GroupInfo.DoesNotExist: return JsonResponse({ 'status': 4020, 'message': u'群组不存在', }) if group.admin_id != admin_id: return JsonResponse({ 'status': 4024, 'message': u'没有通过权限', }) try: group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.APPLYING) except GroupUserInfo.DoesNotExist: return JsonResponse({ 'status': 4027, 'message': u'加群申请不存在', }) group_user.user_status = GroupUserInfo.PASSED group_user.passed_at = tc.utc_datetime() group_user.save() return JsonResponse({ 'status': 200, 'message': u'申请通过成功', 'data': { 'group_id': group_id, 'users': group.users(user_id) }, }) def group_refuse_api(request): group_id = request.POST.get('group_id', '') admin_id = request.POST.get('admin_id', '') user_id = request.POST.get('user_id', '') try: admin = UserInfo.objects.get(user_id=admin_id) except UserInfo.DoesNotExist: return JsonResponse({ 'status': 4011, 'message': u'用户不存在', }) try: user = UserInfo.objects.get(user_id=user_id) except UserInfo.DoesNotExist: return JsonResponse({ 'status': 4011, 'message': u'用户不存在', }) try: group = GroupInfo.objects.get(group_id=group_id) except GroupInfo.DoesNotExist: return JsonResponse({ 'status': 4020, 'message': u'群组不存在', }) if group.admin_id != admin_id: return JsonResponse({ 'status': 4025, 'message': u'没有拒绝权限', }) try: group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.APPLYING) except GroupUserInfo.DoesNotExist: return JsonResponse({ 'status': 4027, 'message': u'加群申请不存在', }) group_user.user_status = GroupUserInfo.REFUSED group_user.refused_at = tc.utc_datetime() group_user.save() return JsonResponse({ 'status': 200, 'message': u'申请拒绝成功', 'data': { 'group_id': group_id, 'users': group.users(user_id) }, }) class GroupInfoViewSet(viewsets.ModelViewSet): queryset = GroupInfo.objects.all().order_by('-created_at') serializer_class = GroupInfoSerializer class GroupUserInfoViewSet(viewsets.ModelViewSet): queryset = GroupUserInfo.objects.all().order_by('-created_at') serializer_class = GroupUserInfoSerializer class GroupPhotoInfoViewSet(viewsets.ModelViewSet): queryset = GroupPhotoInfo.objects.all().order_by('-created_at') serializer_class = GroupPhotoInfoSerializer