======================================== OEP-0001: Data Validation at Course Save ======================================== .. list-table:: :widths: 25 75 * - OEP - :doc:`OEP-XXXX ` * * * * - Title - * - Last Modified - * - Authors - * - Arbiter - * - Status - * - Type - * - Created - * - Review Period - Context ------- Data validation in the Django Rest Framework "is performed entirely on the serializer class". Doing validation at the serializer level provides a few key advantages, such as making the data validation code easier to understand and reason about. The Advanced Settings view is a Django view that allows reading and writing course metadata to the modulestore. These data proctored exam settings (e.g. "enable proctored exams", "proctoring provider", etc.). This view leverages the CourseMetadata class to read from and write to the modulestore. The CourseMetada class supports data validation in the validate_and_update_from_json method. The results of calling this method can be saved to the database. We are adding a Django Rest Framework REST API that exposes an endpoint for reading and writing proctored exam settings to the modulestore. This REST API will be used by the course-authoring MFE to support a new Proctored Exam Settings page. Decision -------- We will not implement additional validation Consequences ------------ This section describes the resulting context, after applying the decision. All consequences should be listed here, not just the "positive" ones. A particular decision may have positive, negative, and neutral consequences, but all of them affect the team and project in the future. References ---------- List any additional references here that would be useful to the future reader. See `Documenting Architecture Decisions`_ for further input. .. _Documenting Architecture Decisions: http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions