The Open Event Server is using the JSON 1.0 Specification and build on top of Flask Rest Json API (for building Rest APIs) and Marshmallow (for Schema). In this blog, we will talk about how to add feature of System Image for Event Categories on Open Event Server. The focus is on Model updation, Schema updation and migrating the Database.
For adding System Image, we’ll update our Model EventTopic.
In this feature, we are providing rights to the Admin to add a system image for each Event Category so that if no image is given by a organizer of event on event creation then it will use the system image of that Event Category as event image by default.
Here we are adding a Column named system_image_url which is of type String. This value cannot be nullable and having a default value.
Migrating the Database
For the migrating the Database we will use simple commands.
This command runs migrations. If it cause problems naming Multiple Migration Head, then you need to run
This problem is caused when two developers push a migration file without merging two heads to achieve one head.
The above command will give us ids of two migration heads.
This command is merging two migration heads.
This command is upgrading the migrations.
Finally, we migrate the Database using above command.
For the system image, we’ll update the Schema EventTopicSchema as follows
In this feature, to provide system image for each Event Category we’ll add a field named system_image_url in the Schema.
Here we are adding a field named system_image_url which is of marshmallow field type URL. This value cannot be none.
Validating the Event Image and using System Image by default
In this step, we’ll check if a event image is provided by organizer. If that is not provided then we’ll use system image of Event Category as Event Image.
Here, we will first take the event topic of event as added by the organizer. Then we will fetch the the database row in Event Topic model which has id == event_topic_id . Then we will return the system image url of that event topic to the event image.
So we saw how we could provide a default image for any event.
- Documentation | Marshmallow : https://marshmallow-jsonapi.readthedocs.io/en/latest/
- Documentation | Flask Rest JSONAPI : http://flask-rest-jsonapi.readthedocs.io/en/latest/