def post_process(self,userid,displayname,serializer): try: club = serializer.object.club #curTimeticks = int(time.mktime(datetime.now().timetuple())*1000) #term = Term.objects.filter(club_id__exact=club.id,finished__exact=False,\ # startdate__lt=curTimeticks, enddate__gt=curTimeticks).order_by("startdate")[0] term = Term.objects.get(id=club.curterm) person = Person.objects.get(id__exact=userid) #P1 update person profile if required if len(displayname) > 2: person.displayname = displayname person.save() #P2 get_or_create Membership ms, created = Membership.objects.get_or_create(club=club, term=term, person=person) ms.type = MemberType.Applicant ms.access=UserUtil.getExpectedAccess(MemberType.Applicant) ms.status = True ms.save() #P3 send club to person notification try: msgfname = club.fullname except: msgfname = club.briefname msgcontent = "Your request to join club {} is being handled.".format(msgfname) MessageUtil.sendClubToPersonNty(club.id,msgfname,userid, msgcontent) except: pass
def reject_ccr(ccrid,reason): ccr = None try: ccr = CreateClubRequest.objects.get(id__exact=ccrid) except: pass if ccr: try: msgcontent = "Sorry, the request to create the Club {} has been rejected as '{}'.".format(ccr.fullname,reason) MessageUtil.sendClubToPersonNty(0, "System", ccr.user.id, msgcontent) CreateClubRequest.objects.filter(id__exact=ccrid).delete() print("The create request is deleted!") except: pass else: print("The create request is not existed!") return False
def post(self, request, *args, **kwargs): respData = {"errorcode":""} try: clubid = int(kwargs['clubid']) pk = int(kwargs['pk']) except: respData["errorcode"] = "Invalid club or request!" return Response(respData, status=status.HTTP_400_BAD_REQUEST) try: action = int(request.GET.get("action")) except: pass joinreq = self.get_object(pk) requestDATA = {} requestDATA["id"] = pk if action == 1: requestDATA["status"] = JoinClubReqStatus.APPROVED elif action == 2: requestDATA["status"] = JoinClubReqStatus.REJECTED requestDATA["comment"] = request.DATA["comment"] else: requestDATA["status"] = JoinClubReqStatus.DETAILED serializer = JoinClubUpdateSerializer(joinreq, data=requestDATA) if serializer.is_valid(): serializer.save() club = serializer.object.club person = Person.objects.get(id__exact=serializer.object.user.id) #curTimeticks = int(time.mktime(datetime.now().timetuple())*1000) #term = Term.objects.filter(club_id__exact=club.id,finished__exact=False,\ # startdate__lt=curTimeticks, enddate__gt=curTimeticks).order_by("startdate")[0] term = Term.objects.get(id=club.curterm) if action == 1: access = UserUtil.getExpectedAccess(joinreq.type) Membership.objects.filter(club_id__exact=club.id, term_id__exact=term.id,\ person_id__exact=person.id).update(access=access,type=joinreq.type) #the first club if Membership.objects.filter(person=person).count()==1: person.defclub = club.id person.save() #send club notification to all club member try: msgfname = club.fullname except: msgfname = club.briefname msgcontent = "Welcome! {} has joined {}.".format(person.get_identification(),msgfname) MessageUtil.sendClubNty(club.id,msgfname,club.id, msgcontent) elif action == 2: Membership.objects.filter(club_id__exact=club.id, term_id__exact=term.id,person_id__exact=person.id).delete() #send club notification to person try: msgfname = club.fullname except: msgfname = club.briefname msgcontent = "Your request to join {} has been rejected.".format(msgfname) if "comment" in request.DATA and len(request.DATA["comment"])>0: msgcontent += "The reason is '{}'.".format(request.DATA["comment"]) MessageUtil.sendClubToPersonNty(club.id, msgfname,person.id, msgcontent) return Response(serializer.data) else: respData["errorcode"] = "Invalid club or request!" return Response(respData, status=status.HTTP_400_BAD_REQUEST)