def destroy(self, request, *args, **kwargs): """ This method is used to Decline a Partnership or to delete a Partner. :param request: :param args: :param kwargs: :return: """ instance = self.get_object() mail_str ="accept_dec" # we use a mail_string since this method # will also be called when declineing the Partnership if instance.has_accepted: instance.registrant.partner_has_accepted = False instance.registrant.save() mail_str = "reg_del_partner" for inst in instance.institutes.all(): inst.places += 1 inst.save() self.perform_destroy(instance) send_email(instance.registrant, mail_str) return Response(status=status.HTTP_204_NO_CONTENT)
def destroy(self, request, *args, **kwargs): instance = self.get_object() if not instance.partner_has_accepted: # if a Partner doesn't exist or hasn't accepted yet delete both try: instance.partner except FpUserPartner.DoesNotExist: places = 1 else: places = 2 for inst in instance.institutes.all(): inst.places += places inst.save() send_email(instance, "reg_del") self.perform_destroy(instance) return Response(status=status.HTTP_204_NO_CONTENT) partner = instance.partner # make Partner a Registrant if he already has accepted try: FpUserRegistrant.create_from_partner(partner) except Exception: return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR) for inst in instance.institutes.all(): inst.places += 1 inst.save() self.perform_destroy(instance) send_email(instance, "reg_del_partner_stays") return Response(status=status.HTTP_204_NO_CONTENT)
def update(self, request, *args, **kwargs): """ This method is used to Accept the so called Partnership. In the future we might want to be reutilize this methode for more update possibilities. Yet it's kind of static. :param request: :param args: :param kwargs: :return: """ serializer = self.get_serializer_class() instance = self.get_object() # set the accept instance.has_accepted = True instance.save() instance.registrant.partner_has_accepted = True instance.registrant.save() send_email(instance.registrant, "accept_acc") return Response(data=serializer(instance).data)
def perform_destroy(self, instance): send_email(instance, "waitlist_del") instance.delete()
def perform_create(self, serializer): user = serializer.save() send_email(user, "waitlist_reg")