Adding convenience methods to the Contract model (and slight __unicode__() tweaks for the others)
Adding convenience methods to the Contract model (and slight __unicode__() tweaks for the others)

- Overrode Contract.save() with checks to ensure that end date snaps to last day of whichever month selected.
- Added Contract.update_with_payment to enable automatic extension of end date of Contract based on a Payment. Eg. if Payment.amount is for 3 x Contract.Tier.fee, then the Contract's end date is correspondingly extended by 3 months.
- Added update_contract_with_payments post_save signal handler on Payment, to call Contract.update_with_payment with each new Payment

hackerspacesg/hackdo