From 076e7ec15fed0f244e5a2153d8def6a3c4572a85 Mon Sep 17 00:00:00 2001 From: DJ Gillespie Date: Wed, 16 Sep 2020 13:05:18 -0600 Subject: [PATCH] [QRTR-78] Fixed up some Account and User formatting in the API, added separate post vs get Account method, and fixed plaid_client auth token bug. --- api/mixins.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 api/mixins.py diff --git a/api/mixins.py b/api/mixins.py new file mode 100644 index 0000000..6aa69c9 --- /dev/null +++ b/api/mixins.py @@ -0,0 +1,32 @@ +class ReadWriteSerializerMixin(object): + """ + Overrides get_serializer_class to choose the read serializer + for GET requests and the write serializer for POST requests. + + Set read_serializer_class and write_serializer_class attributes on a + viewset. + """ + + read_serializer_class = None + write_serializer_class = None + + def get_serializer_class(self): + if self.action in ["create", "update", "partial_update", "destroy"]: + return self.get_write_serializer_class() + return self.get_read_serializer_class() + + def get_read_serializer_class(self): + assert self.read_serializer_class is not None, ( + "'%s' should either include a `read_serializer_class` attribute," + "or override the `get_read_serializer_class()` method." + % self.__class__.__name__ + ) + return self.read_serializer_class + + def get_write_serializer_class(self): + assert self.write_serializer_class is not None, ( + "'%s' should either include a `write_serializer_class` attribute," + "or override the `get_write_serializer_class()` method." + % self.__class__.__name__ + ) + return self.write_serializer_class \ No newline at end of file