taskapp/views/user.py
author anoop
Thu, 04 Feb 2010 23:17:59 +0530
changeset 27 8d52492d3c14
parent 23 f33084ea1361
child 28 e137b605b888
permissions -rw-r--r--
changed the view my profile template.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
     1
from django.http import HttpResponse
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
     2
from django.shortcuts import redirect, render_to_response
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
     3
from pytask.taskapp.models import Task
27
8d52492d3c14 changed the view my profile template.
anoop
parents: 23
diff changeset
     4
from pytask.taskapp.forms.user import RegistrationForm, LoginForm, UserProfileEditForm
23
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
     5
from pytask.taskapp.events.user import createUser, updateProfile
17
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
     6
from django.contrib.auth import login, logout, authenticate
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
     7
from django.contrib.auth.models import User
23
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
     8
from pytask.taskapp.models import Profile
17
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
     9
21
c28774fe7ffd implemented "add another mentor" functionality to a task.
nishanth
parents: 20
diff changeset
    10
def show_msg(message, redirect_url=None, url_desc=None):
17
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    11
    """ simply redirect to homepage """
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    12
    
21
c28774fe7ffd implemented "add another mentor" functionality to a task.
nishanth
parents: 20
diff changeset
    13
    return render_to_response('show_msg.html',{'message':message, 'redirect_url':redirect_url, 'url_desc':url_desc})
17
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    14
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    15
def homepage(request):
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    16
    """ check for authentication and display accordingly. """
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    17
    
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    18
    user = request.user
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    19
    is_guest = False
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    20
    is_mentor = False
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    21
    can_create_task = False
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    22
    task_list = []
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    23
    
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    24
    if not user.is_authenticated():
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    25
        is_guest = True
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    26
        disp_num = 10
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    27
        tasks_count = Task.objects.count()
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    28
        if tasks_count <= disp_num:
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    29
            task_list = Task.objects.order_by('id').reverse()
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    30
        else:
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    31
            task_list = Task.objects.order_by('id').reverse()[:10]
21
c28774fe7ffd implemented "add another mentor" functionality to a task.
nishanth
parents: 20
diff changeset
    32
            
c28774fe7ffd implemented "add another mentor" functionality to a task.
nishanth
parents: 20
diff changeset
    33
        return render_to_response('index.html', {'is_guest':is_guest, 'task_list':task_list})
c28774fe7ffd implemented "add another mentor" functionality to a task.
nishanth
parents: 20
diff changeset
    34
        
17
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    35
    else:
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    36
        user_profile = user.get_profile()
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    37
        is_mentor = True if user.task_mentors.all() else False
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    38
        can_create_task = False if user_profile.rights == u"CT" else True
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    39
        
21
c28774fe7ffd implemented "add another mentor" functionality to a task.
nishanth
parents: 20
diff changeset
    40
        context = {'user':user,
c28774fe7ffd implemented "add another mentor" functionality to a task.
nishanth
parents: 20
diff changeset
    41
                   'is_guest':is_guest,
c28774fe7ffd implemented "add another mentor" functionality to a task.
nishanth
parents: 20
diff changeset
    42
                   'is_mentor':is_mentor,
c28774fe7ffd implemented "add another mentor" functionality to a task.
nishanth
parents: 20
diff changeset
    43
                   'task_list':task_list,
c28774fe7ffd implemented "add another mentor" functionality to a task.
nishanth
parents: 20
diff changeset
    44
                   'can_create_task':can_create_task,
c28774fe7ffd implemented "add another mentor" functionality to a task.
nishanth
parents: 20
diff changeset
    45
                   }
c28774fe7ffd implemented "add another mentor" functionality to a task.
nishanth
parents: 20
diff changeset
    46
                   
c28774fe7ffd implemented "add another mentor" functionality to a task.
nishanth
parents: 20
diff changeset
    47
        return render_to_response('index.html', context)
17
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    48
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    49
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    50
def register(request):
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    51
    """ user registration: gets the user details and create the user and userprofile if data entered is valid"""
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    52
    if request.method == 'POST':
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    53
        form = RegistrationForm(request.POST)
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    54
        if form.is_valid():
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    55
            data = form.cleaned_data
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    56
            if data['password'] == data['repeat_password']:
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    57
                if data['username'].isalnum():
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    58
                    try:
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    59
                        if User.objects.get(username__exact = data['username']):
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    60
                            errors=['Choose some other username']
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    61
                            return render_to_response('user/register.html',{'form':form,'errors':errors})
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    62
                    except:
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    63
                         u = createUser(username=data['username'], email=data['email'], password=data['password'],dob = data['dob'],gender = data['gender'])
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    64
                    return redirect('/accounts/login/')
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    65
                else:
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    66
                    errors = ['Username can contain only alphabets and numbers!']
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    67
                    return render_to_response('user/register.html',{'form':form,'errors':errors})
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    68
            else:
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    69
                errors=['Password do not match']
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    70
                form = RegistrationForm(request.POST)
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    71
                return render_to_response('user/register.html',{'form':form,'errors':errors})#HttpResponse('Password did not match')
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    72
        else:
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    73
            form = RegistrationForm(request.POST)
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    74
    else:
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    75
        form = RegistrationForm()
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    76
    return render_to_response('user/register.html', {'form': form})
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    77
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    78
def user_login(request):
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    79
    if request.method == 'POST':
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    80
        username = request.POST['username']
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    81
        password = request.POST['password']
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    82
        user = authenticate(username=username, password=password)
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    83
        if user is not None:
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    84
            if user.is_active:
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    85
                login(request, user)
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    86
                return redirect('/')# Redirect to a success page.
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    87
            else:
18
a39549bd5b08 implemented create task view which needed task.py in events. added a method show_msg to views/user.py and used it in logoff view.
nishanth
parents: 17
diff changeset
    88
                return show_msg('username is not active, please contact the administrator')# Return a 'disabled account' error message
17
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    89
        else:
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    90
            errors = ['Please check your username and password']
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    91
            form = LoginForm()
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    92
            return render_to_response('user/login.html',{'form':form,'errors':errors})# Return an 'invalid login' error message.
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    93
        return redirect('/')
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    94
    else:
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    95
        form = LoginForm()
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    96
        return render_to_response('user/login.html',{'form': form})
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    97
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    98
def user_logout(request):
aa45fec40e7e renamed users.py to user.py and tasks to task in views folder and updated urls.py accordingly .
nishanth
parents:
diff changeset
    99
    logout(request)
18
a39549bd5b08 implemented create task view which needed task.py in events. added a method show_msg to views/user.py and used it in logoff view.
nishanth
parents: 17
diff changeset
   100
    return show_msg('You have logged off successfully!!!')
23
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   101
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   102
def view_my_profile(request,uid):
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   103
    """ allows the user to view the profiles of users """
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   104
    edit_profile = True if request.user == User.objects.get(pk=uid) else False
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   105
    try:
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   106
        profile = Profile.objects.get(user = User.objects.get(pk=uid))
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   107
    except Profile.DoesNotExist:
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   108
        raise Http404
27
8d52492d3c14 changed the view my profile template.
anoop
parents: 23
diff changeset
   109
    return render_to_response('user/my_profile.html', {'edit_profile':edit_profile,'profile':profile})
23
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   110
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   111
def edit_my_profile(request):
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   112
    """ enables the user to edit his/her user profile """
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   113
    if str(request.user) == 'AnonymousUser':
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   114
        return show_msg('Please register yourself to activate the functionality')
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   115
    if request.method == 'POST':
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   116
        form = UserProfileEditForm(request.POST)
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   117
#        if not form.is_valid():
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   118
#            edit_profile_form = UserProfileEditForm(instance = form)
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   119
#            return render_to_response('user/edit_profile.html',{'edit_profile_form' : edit_profile_form})
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   120
        if request.user.is_authenticated() == True:
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   121
            profile = Profile.objects.get(user = request.user)
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   122
            data = request.POST#form.cleaned_data
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   123
            properties = {'aboutme':data['aboutme'], 'foss_comm':data['foss_comm'], 'phonenum':data['phonenum'], 'homepage':data['homepage'], 'street':data['street'], 'city':data['city'], 'country':data['country'], 'nick':data['nick']}
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   124
            #fields = ['dob','gender','credits','aboutme','foss_comm','phonenum','homepage','street','city','country','nick']
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   125
            updateProfile(profile,properties)
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   126
            return redirect('/user/view/uid='+str(profile.user_id))
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   127
    else:
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   128
        profile = Profile.objects.get(user = request.user)
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   129
        edit_profile_form = UserProfileEditForm(instance = profile)
f33084ea1361 added view profile and edit profile functionalities.
anoop
parents: 21
diff changeset
   130
        return render_to_response('user/edit_profile.html',{'edit_profile_form' : edit_profile_form})