lostplaces-backend/django_lostplaces/docs/developer.md

76 lines
3.2 KiB
Markdown
Raw Normal View History

2020-09-15 21:07:53 +02:00
# django lostplaces documentation for developer
Greetings,
this documentation is for anyone who wants to work with this projects codebase or is just curious about our project.
## Models
The models contain an custom user profile, some abstract base models and the models holding the actual data for this project
### Explorer user profile
The class `lostplaces.models.Explorer` is our custom user profile. It has an ForeignKey pointing at django's default user model instead of providing an entire custom user model. That way this django app does not conflict with any other app that has to bring it's own user model.
You can access the explorer profile by accessing the 'explorer' attribute of any user instance
```python
2020-09-21 21:37:28 +02:00
user.explorer
2020-09-15 21:07:53 +02:00
```
Currently the explorer profile is used by the abstract model 'Submittable' and thus referenced by 'Place' and 'PlaceImage'. The explorer profile therefore has two attributes
```python
user.explorer.places
2020-09-21 21:37:28 +02:00
user.explorer.placeimages
2020-09-15 21:07:53 +02:00
```
`places`
A list containing all (lost) places the user has submitted
`placeimages`
A list containing all images relating a place that a user has submitted
### Taggable
The abstract model Taggable represents an model that is taggable. It depends on the django app [taggit](https://github.com/jazzband/django-taggit). It only consists of one field:
`tag`
TaggableManager, allows the sub class to be tagged, blank=True allows the admin form to be submitted without any tags
### Mapable
The abstract model Mapable represents an model that can be displayed on a map. It consists of tree members
`name`
2020-09-21 21:37:28 +02:00
Name of the object, displayed on the map, max length 50 characters
2020-09-15 21:07:53 +02:00
`latitude`
Latitude of the referenced location, -90 <= value <= 90
`longitude`
Longitude of the referenced location -180 <= value <= 180
2020-09-21 21:37:28 +02:00
A mapable model has to provide its own get_absolute_url, in order to provide a link when clicked.
2020-09-15 21:07:53 +02:00
### Submittable
The abstract model Submittable represents an model that can be submitted by an user. It knows who submitted something and when:
`submitted_by`
Squashed commit of the following: commit 0d62e72d72922a84e41c9f2cc21977b794784d1c Merge: 79fee63 85f2a81 Author: reverend <reverend@reverend2048.de> Date: Tue Sep 22 21:55:18 2020 +0200 Merge branch 'develop' into refactor/models commit 79fee631d7ac28509067ecdd74078f1a2f6e0be2 Author: reverend <reverend@reverend2048.de> Date: Tue Sep 22 21:54:32 2020 +0200 Updating references for related name commit 8e07e79df2de2601f2e2eadfdd37eb7c719c51b0 Author: reverend <reverend@reverend2048.de> Date: Tue Sep 22 21:53:31 2020 +0200 Generating of related names fix commit 5fd804f37a805ae4707e13c3d941bdde3660afea Merge: 8cc1d3e 3b526c9 Author: reverend <reverend@reverend2048.de> Date: Tue Sep 22 21:01:48 2020 +0200 Merge branch 'develop' into refactor/models commit 8cc1d3e690211dba6451e86569f00078b23e0621 Author: reverend <reverend@reverend2048.de> Date: Tue Sep 22 20:21:08 2020 +0200 Tests commit 7c0591e5397f892b1f6fb80725a693c21f90468a Author: reverend <reverend@reverend2048.de> Date: Fri Sep 18 23:53:39 2020 +0200 Testing PlaceAsset commit 2e7b49ad1a15173565c81e7eb8bb3f35b9f622a6 Author: reverend <reverend@reverend2048.de> Date: Fri Sep 18 22:25:08 2020 +0200 Restructuring models commit eb7d03b08b326f9115e70d0fd9ed5d0fc229a362 Author: reverend <reverend@reverend2048.de> Date: Fri Sep 18 22:01:54 2020 +0200 Abstract class Expireable commit 2b51e741bb5734c5a578beeadef7819fe58b2223 Author: reverend <reverend@reverend2048.de> Date: Fri Sep 18 21:54:07 2020 +0200 Abstract Model for PlaceAsset (i.e. Photoalbums)
2020-09-22 21:56:51 +02:00
Referencing the explorer profile, see [Explorer](##explorer-user-profile). If the explorer profile is deleted, this instance is kept (on_delete=models.SET_NULL). The related_name is set to the class name, lower case appending an s (%(class)ss)
2020-09-15 21:07:53 +02:00
`submitted_when`
2020-09-21 21:37:28 +02:00
When the object was submitted, automatically set by django (auto_now_add=True)
2020-09-15 21:07:53 +02:00
### Voucher
A voucher code is needed to sign up using lostplaces sign up form. The model contains
`code`
2020-09-21 21:37:28 +02:00
The voucher code, max length 30 characters
2020-09-15 21:07:53 +02:00
`created_when`
2020-09-21 21:37:28 +02:00
When the voucher was created automatically set by django (auto_now_add=True)
2020-09-15 21:07:53 +02:00
`expires_when`
Till what date the voucher remains valid
### Place
The place model is the heart of this project. It stores all information about a place needed.
`location`
2020-09-21 21:37:28 +02:00
Human readable location description (town, village, street), max length 50 characters
2020-09-15 21:07:53 +02:00
`description`
Describing the place in detail
The place model uses these abstract super classes
- Submittable, see [Submittable](##submittable) for additional fields
- Taggable, see [Taggable](##taggable) for additional fields
- Mapable, see [Mapable](##mapable) for additional fields
The average_latlon function takes a list of places and returns the center point of all these places