-
Notifications
You must be signed in to change notification settings - Fork 1
/
views.py
135 lines (114 loc) · 4.16 KB
/
views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# -*- coding: utf-8 -*
from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required
from django.contrib.auth import login
from django.contrib.auth import authenticate
from accounts.models import UserProfile
from accounts.models import Transaction
from accounts.forms import UserForm
from accounts.forms import UserProfileForm
from accounts.forms import UserEditForm
from django.shortcuts import render_to_response
from django.template import RequestContext
# from django.http import HttpResponseRedirect
from django.utils.translation import ugettext_lazy as _
from django.db.models import Sum
from django.shortcuts import redirect
import datetime
# Sign Up
def signup(request):
context = {}
context['title'] = _('Register')
user = User()
if request.user.is_authenticated():
return redirect('accounts_accounts')
userProfile = UserProfile()
if request.method == 'POST':
userForm = UserForm(request.POST, instance=user)
userProfileForm = UserProfileForm(request.POST, instance=userProfile)
if userForm.is_valid() and userProfileForm.is_valid():
userData = userForm.cleaned_data
user.username = userData['username']
user.first_name = userData['first_name']
user.last_name = userData['last_name']
user.email = userData['email']
user.set_password(userData['password'])
user.save()
userProfile = user.get_profile()
userProfileData = userProfileForm.cleaned_data
userProfile.gender = userProfileData['gender']
userProfile.birthday = userProfileData['birthday']
userProfile.save()
user = authenticate(username=userData['username'], password=userData['password'])
login(request, user)
return redirect('accounts_accounts')
else:
userForm = UserForm(instance=user)
userProfileForm = UserProfileForm(instance=userProfile)
context['userForm'] = userForm
context['userProfileForm'] = userProfileForm
return render_to_response('accounts/register.html', context, context_instance=RequestContext(request))
# Profile
@login_required
def my_profile(request):
context = {}
user = request.user
context['title'] = user.username
# context['basket'] = Basket.objects.filter(user=user)
# context['payments'] = Pay.objects.filter(user=user)
base = datetime.datetime.today()
dateList = [base + datetime.timedelta(days=x) for x in range(-14, 1)]
days = []
for for_date in dateList:
total = Transaction.objects.filter(
user=user,
public=True,
total__lte=0,
created_at__year=for_date.year,
created_at__month=for_date.month,
created_at__day=for_date.day
).aggregate(Sum('total'))
if total['total__sum']:
total = total['total__sum'] * -1
else:
total = 0
days.append({'date': for_date, 'total': total})
context['days'] = days
context['balance'] = Transaction.objects.filter(user=user, public=True).aggregate(Sum('total'))
context['user'] = user
return render_to_response('accounts/accounts.html', context, context_instance=RequestContext(request))
@login_required
def edit(request):
context = {}
user = request.user
if request.method == 'POST':
AccountsUserEditForm = UserEditForm(request.POST)
if AccountsUserEditForm.is_valid():
form_data = AccountsUserEditForm.cleaned_data
user.username = form_data['username']
user.first_name = form_data['first_name']
user.last_name = form_data['last_name']
user.email = form_data['email']
if form_data['password']:
user.set_password(form_data['password'])
user.save()
userProfile = user.get_profile()
userProfile.gender = form_data['gender']
userProfile.birthday = form_data['birthday']
userProfile.save()
if form_data['password']:
user = authenticate(username=form_data['username'], password=form_data['password'])
login(request, user)
return redirect('accounts_accounts')
else:
AccountsUserEditForm = UserEditForm({
'username': user.username,
'first_name': user.first_name,
'last_name': user.last_name,
'email': user.email,
'gender': user.profile.get().gender,
'birthday': user.profile.get().birthday
})
context['AccountsUserEditForm'] = AccountsUserEditForm
context['user'] = user
return render_to_response('accounts/edit.html', context, context_instance=RequestContext(request))