Merge life-study branch to demo

### Task List

##### General

- [x] beautify the view and make it more intuitive
- [ ] a notification when something is done

##### for TA's

- [x] assign `Discipline` to single `Trainee`
- [x] assign `Discipline` to single `House`
- [x] approve single `Summary`
- [x] approve all `Summary`'s relate to a single `Discipline`
- [x] assign `Discipline` according to `Roll` over a certain period
- [x] hard-copy submission
- [ ] transfer `Discipline` from a single `Trainee` to another
- [ ] A report view that lists all the completed/incompleted `Discipline`
  - [x] list all
  - [ ] sorted according to a choice of `trainee`/`house`/`team`/`term`/`TA`
  - [ ] filtered by inputting a certain `trainee`/`house`/`team`/`term`/`TA`
- [ ] dynamically change `Discipline` upon each change in `attendance` app
  - [ ] sending signal from `attendance` app
  - [ ] capturing it in `lifestudies` app
- [x] "select all" button to check all the `Discipline`'s

##### for Trainees

- [x] submit/edit summary
`return "[{offense}] {name}. Infraction: {infraction}. Quantity: {quantity}. Still need {num_summary_due} summaries. Completed: {is_completed}".format(name=self.trainee.account.get_full_name(), infraction=self.infraction, offense=self.offense, quantity=self.quantity, num_summary_due=self.get_num_summary_due, is_completed=self.is_completed())`