Add/ Complete docstring for every models.

This commit is contained in:
Pierre-antoine Comby 2020-01-21 22:06:06 +01:00
parent 7764abc0c0
commit 5a7d779a90
4 changed files with 56 additions and 12 deletions

View File

@ -9,7 +9,12 @@ from django.utils.translation import gettext_lazy as _
class ActivityType(models.Model): class ActivityType(models.Model):
""" """
Type of Activity, (e.g "Pot", "Soirée Club") and associated properties Type of Activity, (e.g "Pot", "Soirée Club") and associated properties.
Activity Type are used as a search field for Activity, and determine how
some rules about the activity:
- Can people be invited
- What is the entrance fee.
""" """
name = models.CharField( name = models.CharField(
verbose_name=_('name'), verbose_name=_('name'),
@ -32,7 +37,9 @@ class ActivityType(models.Model):
class Activity(models.Model): class Activity(models.Model):
""" """
An IRL event organized by a club for others. An IRL event organized by a club for other club.
By default the invited clubs should be the Club containing all the active accounts.
""" """
name = models.CharField( name = models.CharField(
verbose_name=_('name'), verbose_name=_('name'),
@ -73,7 +80,7 @@ class Activity(models.Model):
class Guest(models.Model): class Guest(models.Model):
""" """
People who are not current members of any clubs, and invited by someone who is a current member. People who are not current members of any clubs, and are invited by someone who is a current member.
""" """
activity = models.ForeignKey( activity = models.ForeignKey(
Activity, Activity,
@ -92,6 +99,7 @@ class Guest(models.Model):
null=True, null=True,
) )
entry_transaction = models.ForeignKey( entry_transaction = models.ForeignKey(
null=True,
'note.Transaction', 'note.Transaction',
on_delete=models.PROTECT, on_delete=models.PROTECT,
) )

View File

@ -13,8 +13,9 @@ class Profile(models.Model):
""" """
An user profile An user profile
We do not want to patch the Django Contrib Auth User class We do not want to patch the Django Contrib :model:`auth.User`model;
so this model add an user profile with additional information. so this model add an user profile with additional information.
""" """
user = models.OneToOneField( user = models.OneToOneField(
settings.AUTH_USER_MODEL, settings.AUTH_USER_MODEL,
@ -53,7 +54,8 @@ class Profile(models.Model):
class Club(models.Model): class Club(models.Model):
""" """
A student club A club is a group of people, whose membership is handle by their
:model:`member.Membership`, and gives access to right defined by a :model:`member.Role`.
""" """
name = models.CharField( name = models.CharField(
verbose_name=_('name'), verbose_name=_('name'),
@ -101,7 +103,10 @@ class Club(models.Model):
class Role(models.Model): class Role(models.Model):
""" """
Role that an user can have in a club Role that an :model:`auth.User` can have in a :model:`member.Club`
TODO: Integrate the right management, and create some standard Roles at the
creation of the club.
""" """
name = models.CharField( name = models.CharField(
verbose_name=_('name'), verbose_name=_('name'),
@ -117,6 +122,7 @@ class Role(models.Model):
class Membership(models.Model): class Membership(models.Model):
""" """
Register the membership of a user to a club, including roles and membership duration. Register the membership of a user to a club, including roles and membership duration.
""" """
user = models.ForeignKey( user = models.ForeignKey(
settings.AUTH_USER_MODEL, settings.AUTH_USER_MODEL,

View File

@ -18,7 +18,11 @@ Defines each note types
class Note(PolymorphicModel): class Note(PolymorphicModel):
""" """
An model, use to add transactions capabilities Gives transactions capabilities. Note is a Polymorphic Model, use as based
for the models :model:`note.NoteUser` and :model:`note.NoteClub`.
A Note principaly store the actual balance of someone/some club.
A Note can be searched find throught an :model:`note.Alias`
""" """
balance = models.IntegerField( balance = models.IntegerField(
verbose_name=_('account balance'), verbose_name=_('account balance'),
@ -94,7 +98,7 @@ class Note(PolymorphicModel):
class NoteUser(Note): class NoteUser(Note):
""" """
A Note associated to an User A :model:`note.Note` associated to an unique :model:`auth.User`.
""" """
user = models.OneToOneField( user = models.OneToOneField(
settings.AUTH_USER_MODEL, settings.AUTH_USER_MODEL,
@ -116,7 +120,7 @@ class NoteUser(Note):
class NoteClub(Note): class NoteClub(Note):
""" """
A Note associated to a Club A :model:`note.Note` associated to an unique :model:`member.Club`
""" """
club = models.OneToOneField( club = models.OneToOneField(
'member.Club', 'member.Club',
@ -133,17 +137,18 @@ class NoteClub(Note):
return str(self.club) return str(self.club)
def pretty(self): def pretty(self):
return _("Note for %(club)s club") % {'club': str(self.club)} return _("Note of %(club)s club") % {'club': str(self.club)}
class NoteSpecial(Note): class NoteSpecial(Note):
""" """
A Note for special account, where real money enter or leave the system A :model:`note.Note` for special accounts, where real money enter or leave the system
- bank check - bank check
- credit card - credit card
- bank transfer - bank transfer
- cash - cash
- refund - refund
This Type of Note is not associated to a :model:`auth.User` or :model:`member.Club` .
""" """
special_type = models.CharField( special_type = models.CharField(
verbose_name=_('type'), verbose_name=_('type'),
@ -161,7 +166,13 @@ class NoteSpecial(Note):
class Alias(models.Model): class Alias(models.Model):
""" """
An alias labels a Note instance, only for user and clubs points toward a :model:`note.NoteUser` or :model;`note.NoteClub` instance.
Alias are unique, but a :model:`note.NoteUser` or :model:`note.NoteClub` can
have multiples aliases.
Aliases name are also normalized, two differents :model:`note.Note` can not
have the same normalized alias, to avoid confusion when referring orally to
it.
""" """
name = models.CharField( name = models.CharField(
verbose_name=_('name'), verbose_name=_('name'),

View File

@ -15,6 +15,11 @@ Defines transactions
class TransactionTemplate(models.Model): class TransactionTemplate(models.Model):
"""
Defined a reccurent transaction
associated to selling something (a burger, a beer, ...)
"""
name = models.CharField( name = models.CharField(
verbose_name=_('name'), verbose_name=_('name'),
max_length=255, max_length=255,
@ -44,6 +49,15 @@ class TransactionTemplate(models.Model):
class Transaction(models.Model): class Transaction(models.Model):
"""
General transaction between two :model:`note.Note`
amount is store in centimes of currency, making it a positive integer
value. (from someone to someone else)
TODO: Ensure source != destination.
"""
source = models.ForeignKey( source = models.ForeignKey(
Note, Note,
on_delete=models.PROTECT, on_delete=models.PROTECT,
@ -112,6 +126,11 @@ class Transaction(models.Model):
class MembershipTransaction(Transaction): class MembershipTransaction(Transaction):
"""
Special type of :model:`note.Transaction` associated to a :model:`member.Membership`.
"""
membership = models.OneToOneField( membership = models.OneToOneField(
'member.Membership', 'member.Membership',
on_delete=models.PROTECT, on_delete=models.PROTECT,