Fix members pep8 and add docstrings

This commit is contained in:
henu
2017-09-20 21:00:58 +03:00
parent ecc0ac965e
commit 08710b3705
10 changed files with 271 additions and 83 deletions
+28 -16
View File
@@ -1,31 +1,36 @@
"""File containing Members app models."""
from django.db import models
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from datetime import datetime
import csv
import logging
class BaseMember(models.Model):
'''
Base model for member.
'''
"""Abstract base model for member."""
first_name = models.CharField(_("First name"), max_length=127)
last_name = models.CharField(_("Last name"), max_length=127)
email = models.EmailField(_("Email"))
POR = models.CharField(_("Place of residence"), max_length=255) # place of residence
POR = models.CharField(_("Place of residence"),
max_length=255) # place of residence
AYY = models.BooleanField(_("AYY"), default=False)
jas = models.BooleanField(_("JAS"), default=False)
class Meta:
"""Meta for base member model."""
abstract = True
def __str__(self):
"""Return member last name, first name and email."""
return "{} {}, {}".format(self.last_name, self.first_name, self.email)
@staticmethod
def from_csv(data):
"""Construct member model from csv data."""
print("Imported CSV data: {}".format(data))
clean_data = data.strip().split('\n')
csv_reader = csv.reader(clean_data)
@@ -50,6 +55,7 @@ class BaseMember(models.Model):
return True
def as_array(self):
"""Return member model as an array."""
return [
self.first_name,
self.last_name,
@@ -61,21 +67,20 @@ class BaseMember(models.Model):
class Request(BaseMember):
'''
Member request model represents one member request.
'''
"""Member request model represents one member request."""
submitted = models.DateTimeField(_('Submitted'), default=timezone.now)
def to_member(self):
"""Convert array to member model."""
member = Member.from_array(self.as_array())
return member
class Payment(models.Model):
'''
Payment model representing one payment event
'''
"""Payment model representing one payment event."""
date = models.DateTimeField(_('Date'), default=datetime.now)
source = models.CharField(_('Source'), choices=[
('AYY', _('AYY')),
@@ -90,16 +95,17 @@ class Payment(models.Model):
related_name='payments')
def __str__(self):
"""Return payment id and date."""
return 'Payment no. {}, {}'.format(self.id, str(self.date))
class Member(BaseMember):
'''
Member model represets one member on the registry.
'''
"""Member model represets one member on the registry."""
created = models.DateTimeField(_('Created'), default=datetime.now)
def last_paid(self):
"""Return member's last payment."""
try:
payments = Payment.objects.filter(member=self)
latest = payments.latest('date')
@@ -110,6 +116,7 @@ class Member(BaseMember):
@staticmethod
def from_array(array):
"""Create member from array."""
if len(array) != 6:
raise Exception("Invalid array length for member instantiation")
@@ -124,16 +131,21 @@ class Member(BaseMember):
class MemberConflict(models.Model):
"""Model representing member conflict situation."""
first_member = models.ForeignKey('Member', related_name='%(class)s_first_member')
second_member = models.ForeignKey('Member', related_name='%(class)s_second_member')
first_member = models.ForeignKey(
'Member', related_name='%(class)s_first_member')
second_member = models.ForeignKey(
'Member', related_name='%(class)s_second_member')
@property
def first_member_form(self):
"""Get first member form."""
return MemberForm(instance=self.first_member)
@property
def second_member_form(self):
"""Get second member form."""
return MemberForm(instance=self.second_member)