taskapp/events/request.py
author nishanth
Fri, 26 Feb 2010 01:13:14 +0530
changeset 107 4903b4973fc8
parent 105 091b044a3bf4
child 129 e747da8bc110
permissions -rw-r--r--
completed the process_request part.

from datetime import datetime
from pytask.taskapp.events.task import addCredits, addMentor
from pytask.taskapp.events.user import changeRole

def reply_to_request(request_obj, reply, replied_by):
    """
    makes a request replied with the given reply.
    arguments:
        request_obj - Request object for which change is intended
        reply - a boolean value to be given as reply (True/False)
        replied_by - the user object who replies to the request
    """
    if not request_obj.is_replied:
        request_obj.reply = reply
        request_obj.is_replied = True
        request_obj.reply_date = datetime.now()
        request_obj.replied_by = replied_by
        request_obj.save()

        if request_obj.role == "PY":
            if reply:
                ## note that we are not checking if he is stilla mentor
                ## since we are not allowing removing mentors
                ## if we allow, we have complications like removing unreplied requests made by this mentor and stuff.
                ## but we check if this user is still an admin and put a notification if that you are no longer an admin and hence cannot do this.
                addCredits(request_obj.task, request_obj.sent_by, request_obj.receiving_user, request_obj.pynts)
                print "send yes notifications appropriately"
            else:
                print "send a no notificvaton"
        elif request_obj.role == "MT":
            ## add him as a mentor to the task
            if reply:
                ## check for the current rights of request_obj.sent_by
                ## what if he is no more a mentor to the task
                addMentor(request_obj.task, request_obj.replied_by)
                ## pass on notification of request_obj.sent_by
            else:
                print "request for mentor rejected"
                ## pass on notification to request_obj.sent_by

        elif request_obj.role in ["AD", "MG", "DV"]:
            if reply:
                ## make him the role
                ## here we check for rights just in case to be fine with demoted users. we change only the user who made request has that rights.
                changeRole(role=request_obj.role, user=request_obj.replied_by)
            else:
                ## notify request_obj.sent_by that it has been rejected
                pass
        return True #Reply has been added successfully
    return False #Already replied