Ejemplo n.º 1
0
 def _authorize(current_user, current_page_owner):
     try:
         current_user_dept = userprofile.objects.get(user = current_user).department.Dept_Name
         current_page_owner_dept = userprofile.objects.get(user = current_page_owner).department.Dept_Name
         if current_user_dept == 'Webops':
         #Everything allowed for Webops
             return True
         elif current_user_dept==current_page_owner_dept:
             #Both from same department
             if is_core(current_user):
                 #Core wants to see either coord's or fellow core's page, which is allowed   
                 return True
             else:
                 #User is a coord, only allowed to see another coord
                 if is_core(current_page_owner):
                     return False
                 else:
                 #Coord wants to see coord, allow
                     return True    
         elif current_user_dept == 'QMS':
             #QMS core can see everyone's dashboard
             if is_core(current_user):
                 return True
             #working on QMS coord
             else:
                 return True
         else:
             #Either the current_user and current_page owner are not in the same dept, or something went wrong.
             return False    
     except:
         return True
Ejemplo n.º 2
0
def ReportGen(request, owner_name):
    buff=StringIO()      
    response = HttpResponse(mimetype='application/pdf')
    response['Content-Disposition'] = 'attachment; filename=ReportOnShaastra.pdf'
    sno=1
    elements=[]
    toc = TableOfContents()
   
    # For conciseness we use the same styles for headings and TOC entries
    toc.levelStyles = [h1, h2]
    elements.append(Paragraph('Shaastra Report',centered))
    elements.append(Paragraph('Table Of Contents',centered))
    elements.append(toc)
    elements.append(PageBreak())

    position_on_page=PAGE_HEIGHT-FRAME_BORDER
    
    users_in_department=userprofile.objects.filter(department = request.user.get_profile().department )
    if is_core(request.user):    
        tasks=Task.objects.filter(creator__in = users_in_department ).order_by('creation_date')
        elements.append(Paragraph('Tasks made by your Department',h1))
        elements.append(big_spacer)
        position_on_page = position_on_page - h1.fontSize - big_spacer_height
        for task in tasks:
            position_on_page,sno=ShowTask(request,elements,position_on_page,sno,task)
        elements.append(PageBreak())    
        position_on_page=PAGE_HEIGHT-FRAME_BORDER
        elements.append(Paragraph('SubTasks given to your Department',h1))
        elements.append(big_spacer)
        tasks=SubTask.objects.filter(department = request.user.get_profile().department ).order_by('creation_date')
        position_on_page = position_on_page - h1.fontSize - big_spacer_height
    
        for task in tasks:
            position_on_page,sno=ShowSubTask(request,elements,position_on_page,sno,task)
        elements.append(PageBreak())
    

    position_on_page=PAGE_HEIGHT-FRAME_BORDER
    
    sno=1
    if is_core(request.user):
        subtasks=SubTask.objects.filter(creator__in = users_in_department).order_by('creation_date')  
      
        elements.append(Paragraph('Sub-Tasks given to your coords',h1))
        elements.append(big_spacer)
        position_on_page = position_on_page - h1.fontSize - big_spacer_height          
        
    elif is_coord(request.user):         
        subtasks = request.user.subtask_set.all().order_by('creation_date')         
        elements.append(Paragraph('Sub-Tasks given to you',h1))
        elements.append(big_spacer)
        position_on_page = position_on_page - h1.fontSize - big_spacer_height
       
    for subtask in subtasks:
        position_on_page,sno=ShowSubTask(request,elements,position_on_page,sno,subtask)
            
    doc  = MyDocTemplate(buff)     
    doc.multiBuild(elements)
    response.write(buff.getvalue())
    return response
Ejemplo n.º 3
0
 def _authorize(current_user, current_page_owner):
     current_user_dept = userprofile.objects.get(
         user=current_user).department.Dept_Name
     current_page_owner_dept = userprofile.objects.get(
         user=current_page_owner).department.Dept_Name
     if current_user_dept == 'Webops':
         #Everything allowed for Webops
         return True
     elif current_user_dept == current_page_owner_dept:
         #Both from same department
         if is_core(current_user):
             #Core wants to see either coord's or fellow core's page, which is allowed
             return True
         else:
             #User is a coord, only allowed to see another coord
             if is_core(current_page_owner):
                 return False
             else:
                 #Coord wants to see coord, allow
                 return True
     elif current_user_dept == 'QMS':
         #QMS core can see everyone's dashboard
         if is_core(current_user):
             return True
         #working on QMS coord
         else:
             return True
     else:
         #Either the current_user and current_page owner are not in the same dept, or something went wrong.
         return False
Ejemplo n.º 4
0
 def is_owner(self, user):
     """
     user is the owner of the current Task if
     - user is a Core in the Task's department
     """
     print 'User Dept : ', user.get_profile().department
     print 'Is Core : ', is_core(user)
     print 'Task Dept : ', self.creator.get_profile().department
     return user.get_profile().department == self.creator.get_profile(
     ).department and is_core(user)
Ejemplo n.º 5
0
Archivo: util.py Proyecto: pandaops/ERP
def global_context(request):
    # The try...except blocks are there for the case when an anonymous
    # user visits any page (esp the login page)
    try:
        user_dept_name = request.user.get_profile ().department.Dept_Name
    except:
        user_dept_name = False
    try:
        user_name = request.user.get_profile ().name
    except:
        user_name = False

    try:
        photo_list=userphoto.objects.filter()           
    except:
        photo_list=False    

    page_owner = request.session.get ('page_owner', request.user)

    try:
        po_dept_name = page_owner.get_profile ().department.Dept_Name
    except:
        po_dept_name = False

    try:
        po_name = page_owner.get_profile ().name
    except:
        po_name = False

    if page_owner != request.user:
        is_visitor = True
    else:
        is_visitor = False

    context =  RequestContext (request,
            {'user':request.user,
            'SITE_URL':settings.SITE_URL,
             'user_dept_name': user_dept_name,
             'user_name': user_name,
             'is_core' : is_core (request.user),
             'is_coord' : not is_core (request.user),
             'po_is_core' : is_core (page_owner),
             'po_is_coord' : not is_core (page_owner),
             'is_visitor' : is_visitor,
             'page_owner' : page_owner,
             'po_name' : po_name,
             'po_dept_name' : po_dept_name,
             'photo_list':photo_list,

            })
    return context
Ejemplo n.º 6
0
def global_context(request):
    # The try...except blocks are there for the case when an anonymous
    # user visits any page (esp the login page)
    try:
        user_dept_name = request.user.get_profile().department.Dept_Name
    except:
        user_dept_name = False
    try:
        user_name = request.user.get_profile().name
    except:
        user_name = False

    try:
        photo_list = userphoto.objects.filter()
    except:
        photo_list = False

    page_owner = request.session.get('page_owner', request.user)

    try:
        po_dept_name = page_owner.get_profile().department.Dept_Name
    except:
        po_dept_name = False

    try:
        po_name = page_owner.get_profile().name
    except:
        po_name = False

    if page_owner != request.user:
        is_visitor = True
    else:
        is_visitor = False

    context = RequestContext(
        request, {
            'user': request.user,
            'SITE_URL': settings.SITE_URL,
            'user_dept_name': user_dept_name,
            'user_name': user_name,
            'is_core': is_core(request.user),
            'is_coord': not is_core(request.user),
            'po_is_core': is_core(page_owner),
            'po_is_coord': not is_core(page_owner),
            'is_visitor': is_visitor,
            'page_owner': page_owner,
            'po_name': po_name,
            'po_dept_name': po_dept_name,
            'photo_list': photo_list,
        })
    return context
Ejemplo n.º 7
0
 def is_owner(self, user):
     """
     user is the owner of the current SubTask if
     - user is a Core in the department which created the Task
       which SubTask is related to
     - user is a Core in the department to which SubTask is assigned
     """
     print 'User Dept : ', user.get_profile().department
     print 'Is Core : ', is_core(user)
     print 'Task Dept : ', self.task.creator.get_profile().department
     print 'SubTask Dept : ', self.department
     user_dept = user.get_profile().department
     return is_core(user) and (
         (user_dept == self.task.creator.get_profile().department) or
         (user_dept == self.department))
Ejemplo n.º 8
0
 def is_owner (self, user):
     """
     user is the owner of the current SubTask if
     - user is a Core in the department which created the Task
       which SubTask is related to
     - user is a Core in the department to which SubTask is assigned
     """
     print 'User Dept : ', user.get_profile ().department
     print 'Is Core : ', is_core (user)
     print 'Task Dept : ', self.task.creator.get_profile ().department
     print 'SubTask Dept : ', self.department
     user_dept = user.get_profile().department
     return is_core (user) and (
         (user_dept == self.task.creator.get_profile ().department) or
         (user_dept == self.department))
Ejemplo n.º 9
0
def multiple_login(request, owner_name=None, department=None):
    if is_core(request.user):
        group_name='Core'
    else:
        group_name='Coord'
    dept=Department.objects.filter(Dept_Name=department)[0]
    if (request.user.get_profile().department):
            multiple_user = False
    else:
        auth.logout(request)
        try:
            response.set_cookie('logged_out', 1)
        except:
            pass
        print "THe department is", department
        dept = Department.objects.get(Dept_Name=department)
        multiple = userprofile.objects.filter(department=dept)
        for each in multiple:              
            
            if each.user.username.startswith(owner_name.lower()) and each.user.username.endswith(re.sub('[^a-zA-Z0-9]', '', department).lower()):
                # Hard code this or write a backend?
                auth.logout(request)
                each.user.backend = 'django.contrib.auth.backends.ModelBackend'
                auth.login (request, each.user)
                request.session['logged_in'] = True
                try:
                    response.set_cookie('logged_out', 0)
                except:
                    pass
                #HttpResponseRedirect('/')    
                return redirect ('erp.tasks.views.display_portal',
                                 owner_name = each.user.username)
    return HttpResponseRedirect('/')                
Ejemplo n.º 10
0
 def edit_task_wrapper(*__args, **__kwargs):
     request = __args[0]
     curr_task_id = __kwargs.get('task_id', None)
     curr_page_owner = User.objects.get(
         username=__kwargs.get('owner_name', None))
     if curr_task_id is None:
         # Creation of Task
         if is_core(request.user):
             if request.user == curr_page_owner:
                 # Go ahead
                 return func(*__args, **__kwargs)
             else:
                 # You can't create Tasks while visiting some
                 # other user's pages
                 # (use case : manually typing erp/coord_name/edit/)
                 print 'Go create Tasks in your own page, dude.'
                 print 'Redirecting... to visited User\'s portal'
                 return redirect('erp.tasks.views.display_portal',
                                 owner_name=__kwargs.get(
                                     'owner_name',
                                     request.user.username))
         else:
             # User is not a Core
             print 'You aren\'t authorized to create Tasks.'
             print 'Redirecting... to visited User\'s portal'
             return redirect('erp.tasks.views.display_portal',
                             owner_name=__kwargs.get(
                                 'owner_name', request.user.username))
     return handle_existing_object(Task, curr_task_id, request.user,
                                   curr_page_owner, func, __args,
                                   __kwargs)
Ejemplo n.º 11
0
def togglereview(request, owner_name = None):
    feedback_tab=True
    curr_userprofile=userprofile.objects.get(user=request.user)
    if is_core(request.user) and str(curr_userprofile.department) == "QMS":
        openreview=OpenReview.objects.filter(id=1)
        if openreview:
            curr_review=OpenReview.objects.get(id=1)
        else:
            curr_review=OpenReview(review=False)
            curr_review.save()

        openfeedback=OpenFeedback.objects.filter(id=1)
        if openfeedback:
            curr_feedback=OpenFeedback.objects.get(id=1)
        else:
            curr_feedback=OpenFeedback(feedback=False)
            curr_feedback.save()
           
        if curr_review.review==False:
            curr_review.review=True
            curr_review.save()
            if curr_feedback.feedback==True:
                curr_feedback.feedback=False
                curr_feedback.save()             
            return redirect('erp.feedback.views.answer', owner_name = request.user)
    
        if curr_review.review==True:
            curr_review.review=False
            curr_review.save()
            return redirect('erp.feedback.views.answer', owner_name = request.user)        
    else:
        raise Http404                          
Ejemplo n.º 12
0
def ShowSubTask(request,elements,position_on_page,sno,task):
    styles=getSampleStyleSheet()["Normal"]  
    coord_subtask = 0 
    is_task = 0
    assignee_list=[]
    assignee_string=''
    if is_core(request.user):
        if task.creator.get_profile().department == request.user.get_profile().department:  
        
                ''' This is when the core tries to find the SubTasks given to his coords. Assigner is creator and a list of coords is the
                assignee'''

                
                assigner_string = str(task.creator.get_profile().name)
                assignee_list = task.coords.all()               
                coord_subtask = 1
        elif request.user.get_profile().department == task.department :
            ''' In this case it is a task as the user belongs to the recieving department. So assigner is the creator - the guy from that
                department and this core's department is the assignee'''
            assigner_string = str(task.creator.get_profile().name)
            assignee_string = task.department.Dept_Name
        

    else : 
        ''' This is when the coord tries to find the SubTasks given to his coords. Assigner is creator and a list of coords is the 
            assignee'''
        coord_subtask = 1
        assigner_string = str(task.creator.get_profile().name)
        assignee_list = task.coords.all()         
    
    position_on_page,sno = Show(request,elements,position_on_page,sno,task,
                                is_task,coord_subtask,assigner_string,assignee_string,assignee_list)
    return position_on_page,sno 
Ejemplo n.º 13
0
def get_timeline (user):
    """
    If user is a Core, return all Tasks created by user.
    Else, return all Tasks for user's Department

    Should it be based on Department instead of Core?
    """
    # Get user's department name
    user_dept = user.userprofile_set.all()[0].department
    if is_core (user):
        tasks = []
        subtasks =  SubTask.objects.filter (department = user_dept)
        for subtask in subtasks:
            if subtask.task not in tasks:
                tasks.append(subtask.task)
        for x in Task.objects.filter (creator = user).all():
            if x not in tasks:
                tasks.append(x)
        return tasks
    else:
        tasks = []
        subtasks = SubTask.objects.filter (department = user_dept)
        for subtask in subtasks:
            if subtask.task not in tasks:
                tasks.append (subtask.task)
        for x in Task.objects.filter (creator__userprofile__department = user_dept).all():
            if x not in tasks:
                tasks.append(x)
        return tasks
Ejemplo n.º 14
0
def submit(request, event):
    feedback_tab=True
    page_owner = get_page_owner (request, owner_name=request.user)
    department = page_owner.get_profile ().department 
    if is_core(request.user) and str(department) == "Finance":
        openportal=OpenBudgetPortal.objects.filter(id=1)
        if openportal:
            curr_portal=OpenBudgetPortal.objects.get(id=1)
        else:
            curr_portal=OpenBudgetPortal(opened=False)
            curr_portal.save()
        
        if curr_portal.opened==False:
            event1 = Department.objects.get(id=event)
            plans = Budget.objects.filter(department=event1)
            if plans:
                plan_finance=Budget.objects.get(name='F',department=event1)
                
                if plan_finance.submitted==False:
                    plan_finance.submitted=True
                    plan_finance.save()
                    return HttpResponseRedirect(reverse('erp.finance.views.display', kwargs={'event_name': event,}))
                if plan_finance.submitted==True:
                    plan_finance.submitted=False
                    plan_finance.save()
                    return HttpResponseRedirect(reverse('erp.finance.views.budget_portal', kwargs={'plan': 'budget',}))
    else:
        raise Http404
Ejemplo n.º 15
0
Archivo: util.py Proyecto: pandaops/ERP
 def edit_task_wrapper (*__args, **__kwargs):
     request = __args[0]
     curr_task_id = __kwargs.get('task_id', None)
     curr_page_owner = User.objects.get(
         username = __kwargs.get('owner_name', None))
     if curr_task_id is None:
         # Creation of Task
         if is_core (request.user):
             if request.user == curr_page_owner:
                 # Go ahead
                 return func (*__args, **__kwargs)
             else:
                 # You can't create Tasks while visiting some
                 # other user's pages
                 # (use case : manually typing erp/coord_name/edit/)
                 print 'Go create Tasks in your own page, dude.'
                 print 'Redirecting... to visited User\'s portal'
                 return redirect (
                     'erp.tasks.views.display_portal',
                     owner_name = __kwargs.get('owner_name',
                                               request.user.username))
         else:
             # User is not a Core
             print 'You aren\'t authorized to create Tasks.'
             print 'Redirecting... to visited User\'s portal'
             return redirect ('erp.tasks.views.display_portal',
                              owner_name = __kwargs.get('owner_name',
                                                        request.user.username))
     return handle_existing_object (Task, curr_task_id,
                                    request.user, curr_page_owner,
                                    func, __args, __kwargs)
Ejemplo n.º 16
0
 def is_owner (self, user):
     """
     user is the owner of the current Task if
     - user is a Core in the Task's department
     """
     print 'User Dept : ', user.get_profile ().department
     print 'Is Core : ', is_core (user)
     print 'Task Dept : ', self.creator.get_profile ().department
     return user.get_profile ().department == self.creator.get_profile ().department and (not is_coord (user))
Ejemplo n.º 17
0
def display_portal (request, owner_name = None):
    """
    Display owner's portal.
    """
    page_owner = get_page_owner (request, owner_name)

    if page_owner=='Invalid':
        return HttpResponseRedirect('/erp/home/login')
    if is_core (page_owner):
        return display_core_portal (request, page_owner)
    else:
        return display_coord_portal (request, page_owner)
Ejemplo n.º 18
0
def get_timeline (user):
    """
    If user is a Core, return all Tasks created by user.
    Else, return all Tasks for user's Department

    Should it be based on Department instead of Core?
    """
    # Get user's department name
    user_dept = user.userprofile_set.all()[0].department
    if is_core (user):
        return Task.objects.filter (creator = user)
    else:
        return Task.objects.filter (creator__userprofile__department = user_dept)
Ejemplo n.º 19
0
def display_portal (request, owner_name = None):
    """
    Display owner's portal.
    """
    page_owner = get_page_owner (request, owner_name)

    if is_multiple_user (page_owner):
        return display_multiple_portal (request, page_owner)
    elif is_core (page_owner):
        return display_core_portal (request, page_owner)
    elif is_supercoord(page_owner):
        return display_supercoord_portal (request, page_owner)
    elif is_coord(page_owner):
        return display_coord_portal (request, page_owner)       
Ejemplo n.º 20
0
def display_multiple_portal (request, user):
    """
    Display the portal so Core/coord can login into respective events
    """
    if is_core (request.user):
        depts = list(user.department_set.all())
    else:
        depts=[]
        multiple = userprofile.objects.all()
        for each in multiple:              
            if each.user.username.startswith(user.username.lower()+'_'):
                dept_name = each.department.Dept_Name
                depts.append(dept_name)
    return render_to_response("tasks/multiple.html",locals(), context_instance=global_context(request))
Ejemplo n.º 21
0
def multiple_logout(request, owner_name=None):
    superuser = request.user
    if owner_name==request.user.username:
        if is_core (request.user):
            supercorelist = request.user.get_profile().department.owner.all()

            for each in supercorelist:
                print owner_name, each
                if owner_name.startswith(each.username.lower()):
                    superuser=each
                    print superuser
                    auth.logout(request)
                    superuser.backend = 'django.contrib.auth.backends.ModelBackend'
                    auth.login(request, superuser)
                    request.session['logged_in'] = True
                    try:
                        response.set_cookie('logged_out', 0)
                    except:
                        pass
                    break

        else:
            dept = request.user.get_profile().department
            if request.user.username.endswith(re.sub('[^a-zA-Z0-9]', '', dept.Dept_Name).lower()):
                multiple_coord = request.user.username.split('_')[0]
                superuser = User.objects.get(username = multiple_coord)
                auth.logout(request)
                superuser.backend = 'django.contrib.auth.backends.ModelBackend'
                auth.login(request, superuser)
                request.session['logged_in'] = True
                try:
                    response.set_cookie('logged_out', 0)
                except:
                    pass
    else:
        superuser=request.user
    return redirect ('erp.tasks.views.display_portal',
                                 owner_name = superuser.username)
Ejemplo n.º 22
0
def question_for(request, owner_name = None):
    feedback_tab=True
    curr_user=request.user
    curr_userprofile=userprofile.objects.get(user=request.user)
    owner_name=None
    page_owner = get_page_owner (request, owner_name)
    Core='Core'
    Coord='Coord'
    
    if str(curr_userprofile.department) == "QMS":
        if is_core(curr_user):
            qms_core=True
            is_core1=True
            is_visitor1=False
        if is_supercoord(curr_user):
            qms_supercoord=True
            is_visitor1=False
        if is_coord(curr_user):
            qms_coord=True
            is_visitor1=False

    else:
        return Http404
    
    #Get Department Members' image thumbnails
    department = page_owner.get_profile ().department      
    dept_cores_list = User.objects.filter (
        groups__name = 'Cores',
        userprofile__department = department)
    dept_supercoords_list = User.objects.filter (
        groups__name = 'Supercoords',
        userprofile__department = department)
    dept_coords_list = User.objects.filter (
        groups__name = 'Coords',
        userprofile__department = department)

             
    return render_to_response('feedback/questions_for.html',locals(),context_instance=global_context(request))
Ejemplo n.º 23
0
def toggle(request):
    feedback_tab=True
    page_owner = get_page_owner (request, owner_name=request.user)
    department = page_owner.get_profile ().department 
    if is_core(request.user) and str(department) == "Finance":
        openportal=OpenBudgetPortal.objects.filter(id=1)
        if openportal:
            curr_portal=OpenBudgetPortal.objects.get(id=1)
        else:
            curr_portal=OpenBudgetPortal(opened=False)
            curr_portal.save()
            
        if curr_portal.opened==False:
            curr_portal.opened=True
            curr_portal.save() 
            return HttpResponseRedirect(reverse('erp.finance.views.budget_portal', kwargs={'plan': 'budget',}))
    
        if curr_portal.opened==True:
            curr_portal.opened=False
            curr_portal.save()
            return HttpResponseRedirect(reverse('erp.finance.views.budget_portal', kwargs={'plan': 'budget',}))       
    else:
        raise Http404  
Ejemplo n.º 24
0
def permissions(request):
    curr_userprofile=userprofile.objects.get(user=request.user)
    feedback_tab=True
    page_owner = get_page_owner (request, owner_name=request.user)
    #Get Department Members' image thumbnails
    department = page_owner.get_profile ().department      
    dept_cores_list = User.objects.filter (
        groups__name = 'Cores',
        userprofile__department = department)
    dept_supercoords_list = User.objects.filter (
        groups__name = 'Supercoords',
        userprofile__department = department)
    dept_coords_list = User.objects.filter (
        groups__name = 'Coords',
        userprofile__department = department)

    #To display Add Tasks and Feedback options
    if is_core(request.user):
        is_core1=True
        is_visitor1=False  
        if str(department) == "QMS":
            qms_core=True
            qms_dept=True
        if str(department) == "Finance":
            finance_core=True 
            finance=True   

    if is_supercoord(request.user):
        user_supercoord=True
        if str(department) == "QMS":
            qms_supercoord=True
            qms_dept=True             
        if str(department) == "Finance":
            finance=True
                
    if is_coord(request.user):
        user_coord=True
        if str(department) == "QMS":
            qms_coord=True
            qms_dept=True 
        if str(department) == "Finance":
            finance=True            
            
    """
    Get instances already created of Permission model 
    create instances of Permission model with coord name and permission
    Note: There will be as many objects as finance coords.
    """ 
    if is_core(request.user) and str(department) == "Finance":
        coords=Permission.objects.all()
        if coords:
            print 'coords exist'
            finance_coords=Permission.objects.all()
        else:
            finance_coords=userprofile.objects.filter(department=department)
            for eachcoord in finance_coords:
                if is_coord(eachcoord.user):
                    curr_coord=Permission(coord=eachcoord.name)
                    curr_coord.save()               
                               
                
        PermissionFormset=modelformset_factory(Permission, extra=0, form=PermissionForm) 
        qset = Permission.objects.all()
        perms = False
        if request.method == 'POST':
            permissionformset=PermissionFormset(request.POST, queryset=qset)            
            if permissionformset.is_valid():
                for form in permissionformset.forms:
                    if form.has_changed:
                        form.save()
                qset = Permission.objects.all() 
                permissionformset=PermissionFormset(queryset=qset) 
                perms=True 
                return render_to_response('finance/permissions.html',locals(),context_instance=global_context(request))
        else:
            permissionformset=PermissionFormset(queryset=qset)
                
    else:
        raise Http404 
    return render_to_response('finance/permissions.html',locals(),context_instance=global_context(request))
Ejemplo n.º 25
0
def budget_portal(request, plan="None"):
    feedback_tab=True
    finance_core=False
    total_amount1=0
    curr_userprofile=userprofile.objects.get(user=request.user)
    page_owner = get_page_owner (request, owner_name=request.user)
    qms_dept=False
    events_core=False
    advance=False	
    #Get Department Members' image thumbnails
    department = page_owner.get_profile ().department      
    dept_cores_list = User.objects.filter (
        groups__name = 'Cores',
        userprofile__department = department)
    dept_supercoords_list = User.objects.filter (
        groups__name = 'Supercoords',
        userprofile__department = department)
    dept_coords_list = User.objects.filter (
        groups__name = 'Coords',
        userprofile__department = department)

    #To display Add Tasks and Feedback options
    if is_core(request.user):
        is_core1=True
        is_visitor1=False  
        if str(department) == "QMS":
            qms_core=True
            qms_dept=True
        if str(department) == "Finance":
            finance_core=True    

    if is_supercoord(request.user):
        user_supercoord=True
        if str(department) == "QMS":
            qms_supercoord=True
            qms_dept=True             
    
    if is_coord(request.user):
        user_coord=True
        if str(department) == "QMS":
            qms_coord=True
            qms_dept=True 
    
	#Check if instance of open portal present. Otherwise make one.                
    openportal=OpenBudgetPortal.objects.filter(id=1)
    if openportal:
        curr_portal=OpenBudgetPortal.objects.get(id=1)
    else:
        curr_portal=OpenBudgetPortal(opened=False)
        curr_portal.save()

    curr_user=request.user
    event=False
    finance=False
    deadline=Deadline.objects.filter(id=1)
    if deadline:
        deadline=Deadline.objects.get(id=1)
    if not deadline:
        deadline=Deadline(budget_portal_deadline=date.today())
  
    if finance_core:
        deadlines=Deadline.objects.all()
        if not deadlines:
            deadline1=Deadline(budget_portal_deadline=date.today())
            deadline1.save()
        deadline=Deadline.objects.get(id=1)
        
    if (department.is_event):
        event=True
        if is_core(request.user):
            events_core=True 
            item_exist=False
            submitted = False
            plans = Budget.objects.filter(department=department)
            items = Item.objects.filter(department=department)
            if items:
                item_exist=True
                if curr_portal.opened == True:
                    budgets = plans.exclude(name='F')
                if curr_portal.opened == False:
                    plan_finance = Budget.objects.get(name='F',department=department)
                    if plan_finance.submitted == True:
                        submitted = True
                    budgets = plans.exclude(name='F') 
                return render_to_response('finance/event_core_view.html',locals(),context_instance=global_context(request))        
            else:
                return render_to_response('finance/event_core_view.html',locals(),context_instance=global_context(request))            
            
                           
        if curr_portal.opened==True:

            """
            First check if plans exist in database for the particular department
            else create three plans.
            """
            plans = Budget.objects.filter(department=department)
            if plans:
                print "plans exist"
            else: 
                curr_plan = Budget(name='A', total_amount=0, department=department)
                curr_plan.save() 
                curr_plan = Budget(name='B', total_amount=0, department=department)
                curr_plan.save() 
                curr_plan = Budget(name='C', total_amount=0, department=department)
                curr_plan.save()
                curr_plan = Budget(name='F', total_amount=0, department=department)
                curr_plan.save()
                plans = Budget.objects.filter(department=department)  
            description='Description'
            form_selected = False

        
    	    """
    	    Let the user choose the Plan to be updated and accordingly prepopulate 
    	    the form with the data.
    	    """    
    	    if plan=='A' or plan=='B' or plan=='C':
    	        for p in plans:
    	            if p.name == plan:
    	                curr_plan = Budget.objects.get(id=p.id)
    	                form_selected=True
    	     
    	        qset = Item.objects.filter(department=department, budget=curr_plan)
                if len(qset)<5:
                    extra1=5-len(qset)
                else:
                    extra1=2
                ItemFormset=modelformset_factory(Item, fields=('name', 'description','quantity', 'original_amount'),extra=extra1, can_delete=True)
    	        if request.method == 'POST':
                    budgetclaimform=BudgetClaimForm(request.POST, instance=curr_plan) 
                    itemformset=ItemFormset(request.POST, queryset=qset)            
                    form_saved = False
                    if itemformset.is_valid():
                        for form in itemformset.forms:
                            if form.has_changed():
                                if not form in itemformset.deleted_forms:
                                    tempform = form.save(commit=False)
                                    tempform.department=department
                                    tempform.budget=curr_plan
                                    tempform.save()
                                if form in itemformset.deleted_forms:
                                    if item.objects.filter(id=form.instance.id):
                                        curr_item = Item.objects.get(id=form.instance.id)
                                        curr_item.delete()   
                            form_saved = True 
                        qset = Item.objects.filter(department=department, budget=curr_plan)
                        if 'add_more_items' in request.POST: 
                         
                            if len(qset)<5:
                                extra1=5-len(qset)
                            else:
                                extra1=2
                        else:
                            if len(qset)<5:
                                extra1=5-len(qset)
                            else:
                                extra1=0
                        ItemFormset=modelformset_factory(Item, fields=('name', 'description','quantity','original_amount'),extra=extra1, can_delete=True)
                        itemformset=ItemFormset(queryset=qset)               
                        
                    else:
                        error=True
                    if budgetclaimform.is_valid():
    	                budgetclaimform1=budgetclaimform.save(commit=False)
    	                for qset1 in qset:
    	                    total_amount1+=qset1.original_amount
    	                budgetclaimform1.total_amount=float(total_amount1)
    	                budgetclaimform1.save()
    	            else:
                        error=True
    	        else:
    	            budgetclaimform=BudgetClaimForm(instance=curr_plan)
    	            itemformset=ItemFormset(queryset=qset)
                  
            
        else:
            items=Item.objects.all()
            curr_plans = Budget.objects.filter(department=department)
            if curr_plans:
                item_exist=True
                plan_finance=Budget.objects.get(name='F',department=department)
                if plan_finance.submitted == True:
                    
                    submitted=True            
                    """ADVANCE"""
                    """
                    Create an instance of request model associated with each item in the
                    finance department approved plan
                    """
                    advance=True
                    curr_items = Item.objects.filter(budget=plan_finance,department=department)
                    request_items = Request.objects.filter(department=department)
                    if not request_items:
                        for item in curr_items:
                            new_request=Request(request_amount=0.0, granted_amount=0.0, balance_amount=item.original_amount, item=item, department=department)
                            new_request.save() 
                        request_items = Request.objects.filter(department=department)
                        
                    
                    """ADVANCE PORTAL FORM"""
                    if request.method == 'POST':
                        requested_amount = request.POST['request']
                        if requested_amount:
                            try:
                                requested_amount1=float(requested_amount)
                                curr_request = Request.objects.get(id=request.POST['id'])
                                curr_request.request_amount=requested_amount
                                curr_request.request_status=True
                                #new line not happening?
                                curr_request.history = str(curr_request.history) + '\n' +'requested amount: '+str(requested_amount)+' on '+str(datetime.date.today())      
                                curr_request.save() 
                                #if Response Redirect is not given then the history will be lagging 
                                #return HttpResponseRedirect(reverse('erp.finance.views.budget_portal', kwargs={'plan': 'budget',}))
                            except:
                                request_error=True
                                              
                        request_items = Request.objects.filter(department=department)
        return render_to_response('finance/budget_portal.html',locals(),context_instance=global_context(request))    
        
    elif str(department) == "Finance":
        finance=True
        event=False
        departments=Department.objects.filter(is_event=True).order_by('Dept_Name')
        has_perms = False
        
        """
        Checking is the finance coord logged in has permission
        to update plan from finance department.
        """
        finance_coords=Permission.objects.all()
        for eachcoord in finance_coords:
            if curr_userprofile.name == eachcoord.coord:        
                if eachcoord.budget_sanction==True:
                    has_perms = True
              
        if is_core(request.user):
            has_perms=True 
            
        """
        Make a list of all the budget plans which have already been
        approved. Note that this happens only when the portal is 
        closed.
        """    
            
        if curr_portal.opened == False: 
            submittedplans = []
            plans = Budget.objects.all()
            if plans:
                for dept in departments:
                    curr_plans = Budget.objects.filter(department=dept)
                    if curr_plans:
                        plan_finance=Budget.objects.get(name='F',department=dept)
                        if plan_finance.submitted == True:
                            submittedplans.append(dept.Dept_Name)
                submitted_plans=Budget.objects.filter(name='F', submitted=True)
                if submitted_plans:
                    advance=True
                    curr_items = Item.objects.filter(budget=plan_finance,department=department)
                    request_items = Request.objects.filter(department=department)
                    if not request_items:
                        for item in curr_items:
                            new_request=Request(request_amount=0.0, granted_amount=0.0, balance_amount=item.original_amount, item=item, department=department)
                            new_request.save() 
                        request_items = Request.objects.filter(department=department)
                        
                    
                    """ADVANCE PORTAL FORM
                    if request.method == 'POST':
                        requested_amount = request.POST['request']
                        curr_request = Request.objects.get(id=request.POST['id'])
                        curr_request.request_amount=requested_amount
                        curr_request.request_status=True
                        #new line not happening?
                        curr_request.history = str(curr_request.history) + '\n' +'requested amount: '+str(requested_amount)+' on '+str(datetime.date.today())      
                        curr_request.save() 
                        #if Response Redirect is not given then the history will be lagging 
                        return HttpResponseRedirect(reverse('erp.finance.views.budget_portal', kwargs={'plan': 'budget',}))"""                                
                            
                            
        """
        Finance core has the option to set deadline.
        """                            
        if finance_core:
            form_saved=False                
            if request.method=='POST':
                deadlineform=DeadlineForm(request.POST,instance=deadline)
                if deadlineform.is_valid():
                    deadlineform.save()
                    form_saved=True
       
            else:
    	        deadlineform=DeadlineForm(instance=deadline)
    
        return render_to_response('finance/budget_portal.html',locals(),context_instance=global_context(request))
        
    """
    If user is part of QMS department then, he/she has the pemission to
    view all plans from all departments, like a finance coord without
    permission.
    """    	        
    if qms_dept or events_core:
        departments=Department.objects.filter(is_event=True).order_by('Dept_Name')
    	has_perms=False
        if curr_portal.opened == False: 
            submittedplans = []
            plans = Budget.objects.all()
            if plans:
                for dept in departments:
                    curr_plans = Budget.objects.filter(department=dept)
                    if curr_plans:
                        plan_finance=Budget.objects.get(name='F',department=dept)
                        if plan_finance.submitted == True:
                            submittedplans.append(dept.Dept_Name)
                                	
        return render_to_response('finance/budget_portal.html',locals(),context_instance=global_context(request))
    else:
        raise Http404 
Ejemplo n.º 26
0
def advance(request, dept):
    feedback_tab=True
    finance_core=False
    total_amount1=0
    curr_userprofile=userprofile.objects.get(user=request.user)
    page_owner = get_page_owner (request, owner_name=request.user)
    qms_dept=False
    events_core=False
    advance=False	
    #Get Department Members' image thumbnails
    department = page_owner.get_profile ().department      
    dept_cores_list = User.objects.filter (
        groups__name = 'Cores',
        userprofile__department = department)
    dept_supercoords_list = User.objects.filter (
        groups__name = 'Supercoords',
        userprofile__department = department)
    dept_coords_list = User.objects.filter (
        groups__name = 'Coords',
        userprofile__department = department)

    #To display Add Tasks and Feedback options
    if is_core(request.user):
        is_core1=True
        is_visitor1=False  
        if str(department) == "QMS":
            qms_core=True
            qms_dept=True
        if str(department) == "Finance":
            finance_core=True    

    if is_supercoord(request.user):
        user_supercoord=True
        if str(department) == "QMS":
            qms_supercoord=True
            qms_dept=True             
    
    if is_coord(request.user):
        user_coord=True
        if str(department) == "QMS":
            qms_coord=True
            qms_dept=True 
    
	#Check if instance of open portal present. Otherwise make one.                
    openportal=OpenBudgetPortal.objects.filter(id=1)
    if openportal:
        curr_portal=OpenBudgetPortal.objects.get(id=1)
    else:
        curr_portal=OpenBudgetPortal(opened=False)
        curr_portal.save()

    curr_user=request.user
    event=False
    finance=False
    event_chosen=False
        
    if (department.is_event):
        event=True
        if is_core(request.user):
            events_core=True 
        """
        if is_core(request.user):
            events_core=True 
            item_exist=False
            submitted = False
            plans = Budget.objects.filter(department=department)
            items = Item.objects.filter(department=department)
            if items:
                item_exist=True
                if curr_portal.opened == True:
                    budgets = plans.exclude(name='F')
                if curr_portal.opened == False:
                    plan_finance = Budget.objects.get(name='F',department=department)
                    if plan_finance.submitted == True:
                        submitted = True
                    budgets = plans.exclude(name='F') 
                return render_to_response('finance/event_core_view.html',locals(),context_instance=global_context(request))        
            else:
                return render_to_response('finance/event_core_view.html',locals(),context_instance=global_context(request)) 
        """                   
                          

        if curr_portal.opened==False:
            items=Item.objects.all()
            curr_plans = Budget.objects.filter(department=department)
            if curr_plans:
                item_exist=True
                plan_finance=Budget.objects.get(name='F',department=department)
                if plan_finance.submitted == True:
                    
                    submitted=True 
                    """
                    Create an instance of request model associated with each item in the
                    finance department approved plan
                    """
                    advance=True
                    curr_items = Item.objects.filter(budget=plan_finance,department=department)
                    request_items = Request.objects.filter(department=department)
                    for item in curr_items:
                        request_item1=Request.objects.filter(item=item)
                        if not request_item1:
                            new_request=Request(request_amount=0.0, granted_amount=0.0, balance_amount=item.original_amount, item=item, department=department)
                            new_request.save() 
                    request_items = Request.objects.filter(department=department)
                        
                    
                    """ADVANCE PORTAL FORM"""
                    if request.method == 'POST':
                        request_error=False
                        requested_amount = request.POST['request']
                        if requested_amount:
                            try:
                                requested_amount1=float(requested_amount)
                                curr_request = Request.objects.get(id=request.POST['id'])
                                curr_request.request_amount=requested_amount
                                curr_request.request_status=True
                                curr_request.granted_status=False
                                curr_request.read_status=False
                                curr_request.history = str(curr_request.history) + 'requested: '+str(requested_amount)+' on '+str(datetime.date.today())+'<br>'
                                curr_request.save()
                            except:
                                request_error=True
                        else:
                            request_error=True
                        #return HttpResponseRedirect(reverse('erp.finance.views.advance', kwargs={'dept': dept,}))
                        #check for error                                              
                        request_items = Request.objects.filter(department=department)
        return render_to_response('finance/advance_portal.html',locals(),context_instance=global_context(request))    
        
    elif str(department) == "Finance":
        no_request=False
        finance=True
        event=False
        departments=Department.objects.filter(is_event=True).order_by('Dept_Name')
        has_perms = False
        
        """
        Checking is the finance coord logged in has permission
        to update plan from finance department.
        """
        finance_coords=Permission.objects.all()
        for eachcoord in finance_coords:
            if curr_userprofile.name == eachcoord.coord:        
                if eachcoord.budget_sanction==True:
                    has_perms = True
              
        if is_core(request.user):
            has_perms=True 
            
        """
        Make a list of all the budget plans which have already been
        approved. Note that this happens only when the portal is 
        closed.
        """    
            
        if curr_portal.opened == False: 
            plans = Budget.objects.all()
            if plans:
                submitted_plans=Budget.objects.filter(name='F', submitted=True)
                if submitted_plans:
                    advance=True
                    pending_approval = []                    
                    if dept!='0':
                        for plan in submitted_plans:
                            if str(plan.department.id)==dept:
                                event_chosen = True
           
                    request_items = Request.objects.all() 
                    if request_items:
                        for req in request_items:
                            if req.request_status:
                                pending_approval.append(req.department.Dept_Name)
                    if event_chosen:
                        event_name = Department.objects.get(id=dept)
                        plan_finance = Budget.objects.get(name='F',department=event_name)
                        items=Item.objects.filter(department=event_name)
                        curr_items = Item.objects.filter(budget=plan_finance,department=event_name)
                        request_items = Request.objects.filter(department=event_name)
                        if request_items:
                            if request.method == 'POST':
                                approved_error=False
                                approved_amount = request.POST['request']
                                if approved_amount:
                                    try:
                                        approved_amount1=float(approved_amount)
                                        curr_request = Request.objects.get(id=request.POST['id'])
                                        curr_request.granted_amount=approved_amount
                                        curr_request.balance_amount=float(curr_request.balance_amount)-float(curr_request.granted_amount)
                                        curr_request.request_status=False
                                        curr_request.granted_status=True
                                        curr_request.read_status=False
                                        #new line not happening?
                                        curr_request.history = str(curr_request.history)+'approved: '+str(approved_amount)+' on '+str(date.today())+ '<br>'       
                                        curr_request.save()
                                        #if Response Redirect is not given then the history will be lagging
                                        #return HttpResponseRedirect(reverse('erp.finance.views.advance', kwargs={'dept': dept,}))
                                    except:
                                            approved_error=True
                                else:
                                    approved_error=True
                        else:
                            no_request=True    

                        request_items = Request.objects.filter(department=event_name)   
                        if request_items:
                            pending_approval = []
                            for req in request_items:
                                if req.request_status:
                                    pending_approval.append(req.department.Dept_Name)                                                      
        return render_to_response('finance/advance_portal.html',locals(),context_instance=global_context(request))
    
    if qms_dept:
        if curr_portal.opened == False: 
            plans = Budget.objects.all()
            if plans:
                submitted_plans=Budget.objects.filter(name='F', submitted=True)
                if submitted_plans:
                    advance=True
                    if dept!='0':
                        for plan in submitted_plans:
                            if str(plan.department.id)==dept:
                                event_chosen = True
           
                    request_items = Request.objects.all() 
                    if request_items:
                        pending_approval = []
                        for req in request_items:
                            if req.request_status:
                                pending_approval.append(req.department.Dept_Name)                                

        if event_chosen:
            event_name = Department.objects.get(id=dept)
            plan_finance = Budget.objects.get(name='F',department=event_name) 
            request_items = Request.objects.filter(department=event_name)  
            items=Item.objects.all()
        return render_to_response('finance/advance_portal.html',locals(),context_instance=global_context(request))
         
    """
Ejemplo n.º 27
0
def display(request,question_for, owner_name = None):
    feedback_tab=True
    curr_user=request.user
    curr_userprofile=userprofile.objects.get(user=request.user)
    users_profile=userprofile.objects.all()
    owner_name=None
    page_owner = get_page_owner (request, owner_name)
    Core='Core'
    Coord='Coord'

    #Get Department Members' image thumbnails
    department = page_owner.get_profile ().department      
    dept_cores_list = User.objects.filter (
        groups__name = 'Cores',
        userprofile__department = department)
    dept_supercoords_list = User.objects.filter (
        groups__name = 'Supercoords',
        userprofile__department = department)
    dept_coords_list = User.objects.filter (
        groups__name = 'Coords',
        userprofile__department = department)
    
    if is_core(curr_user):
        if str(curr_userprofile.department) == "QMS":
            is_core1=True
            is_visitor1=False
            qms_core=True
            if question_for=='Core':
                question_for_core=True
                questions=Question.objects.filter(feedback_for='Core')
            else:
                questions=Question.objects.filter(feedback_for='Coord')	
                question_for_coord=True		
        else:
            raise Http404

    if is_supercoord(curr_user):
        if str(curr_userprofile.department) == "QMS":
            is_core1=True
            is_visitor1=False
            qms_core=True
            if question_for=='Core':
                question_for_core=True
                questions=Question.objects.filter(feedback_for='Core')
            else:
                questions=Question.objects.filter(feedback_for='Coord')	
                question_for_coord=True		
        else:
            raise Http404
    if is_coord(curr_user):
        if str(curr_userprofile.department) == "QMS":
            qms_coord=True
            if question_for=='Core':
                question_for_core=True
                questions=Question.objects.filter(feedback_for='Core')
            else:
                question_for_coord=True
                questions=Question.objects.filter(feedback_for='Coord')			
        else:
            raise Http404

    return render_to_response('feedback/display.html',locals(),context_instance=global_context(request))
Ejemplo n.º 28
0
def edit_question(request,question_id, question_for, owner_name = None):
    feedback_tab=True
    q = Question.objects.get(id=question_id)
    
    #Get Department Members' image thumbnails
    page_owner = get_page_owner (request, owner_name=None)
    department = page_owner.get_profile ().department      
    dept_cores_list = User.objects.filter (
        groups__name = 'Cores',
        userprofile__department = department)
    dept_supercoords_list = User.objects.filter (
        groups__name = 'Supercoords',
        userprofile__department = department)
    dept_coords_list = User.objects.filter (
        groups__name = 'Coords',
        userprofile__department = department)
    
    if is_core(request.user):
        curr_userprofile=userprofile.objects.get(user=request.user)
        if str(curr_userprofile.department) == "QMS":
            is_core1=True
            is_visitor1=False
            qms_core=True
            if question_for== 'Coord':
                if request.method == 'POST':
                    questionform=QuestionFormCoord(request.POST, instance=q)
                    question_added=False
                    if questionform.is_valid():
                        questionform1=questionform.save(commit=False)
                        questionform1.edited_last=curr_userprofile
                        questionform1.feedback_for='Coord'
                        questionform1.save()
                        questionform.save_m2m()
                        question_added= True
                        return redirect('erp.feedback.views.display', question_for=question_for, permanent=True, owner_name = request.user)
                    else:
                        error=True
                questionform=QuestionFormCoord(instance=q)
                return render_to_response('feedback/question.html',locals(),context_instance=global_context(request))
            if question_for== 'Core':
                if request.method == 'POST':
                    questionform=QuestionFormCore(request.POST, instance=q)
                    question_added=False
                    if questionform.is_valid():
                        questionform1=questionform.save(commit=False)
                        questionform1.edited_last=curr_userprofile
                        questionform1.feedback_for='Core'
                        questionform1.answered_by='Coord'
                        questionform1.save()
                        questionform.save_m2m()
                        question_added= True
                        return redirect('erp.feedback.views.display', question_for=question_for, permanent=True, owner_name = request.user)
                    else:
                        error=True
                questionform=QuestionFormCore(instance=q)
                return render_to_response('feedback/question.html',locals(),context_instance=global_context(request))
        else:
            raise Http404

    if is_supercoord(request.user):
        curr_userprofile=userprofile.objects.get(user=request.user)
        if str(curr_userprofile.department) == "QMS":
            is_core1=True
            is_visitor1=False
            qms_core=True
            if question_for== 'Coord':
                if request.method == 'POST':
                    questionform=QuestionFormCoord(request.POST, instance=q)
                    question_added=False
                    if questionform.is_valid():
                        questionform1=questionform.save(commit=False)
                        questionform1.edited_last=curr_userprofile
                        questionform1.feedback_for='Coord'
                        questionform1.save()
                        questionform.save_m2m()
                        question_added= True
                        return redirect('erp.feedback.views.display', question_for=question_for, permanent=True, owner_name = request.user)
                    else:
                        error=True
                questionform=QuestionFormCoord(instance=q)
                return render_to_response('feedback/question.html',locals(),context_instance=global_context(request))
            if question_for== 'Core':
                if request.method == 'POST':
                    questionform=QuestionFormCore(request.POST, instance=q)
                    question_added=False
                    if questionform.is_valid():
                        questionform1=questionform.save(commit=False)
                        questionform1.edited_last=curr_userprofile
                        questionform1.feedback_for='Core'
                        questionform1.answered_by='Coord'
                        questionform1.save()
                        questionform.save_m2m()
                        question_added= True
                        return redirect('erp.feedback.views.display', question_for=question_for, permanent=True, owner_name = request.user)
                    else:
                        error=True
                questionform=QuestionFormCore(instance=q)
                return render_to_response('feedback/question.html',locals(),context_instance=global_context(request))
        else:
            raise Http404

    if is_coord(request.user):
        owner_name=None
        page_owner = get_page_owner (request, owner_name)
        curr_userprofile=userprofile.objects.get(user=request.user)
        if str(curr_userprofile.department) == "QMS":
            qms_coord=True
            if question_for== 'Coord':
                if request.method == 'POST':
                    questionform=QuestionFormCoord(request.POST,instance=q)
                    question_added=False
                    if questionform.is_valid():
                        questionform1=questionform.save(commit=False)
                        questionform1.edited_last=curr_userprofile
                        questionform1.feedback_for='Coord'
                        questionform1.save()
                        questionform.save_m2m()
                        question_added= True
                        return redirect('erp.feedback.views.display', question_for=question_for, permanent=True, owner_name = request.user)
                    else:
                        error=True
                questionform=QuestionFormCoord(instance=q)
                return render_to_response('feedback/question.html',locals(),context_instance=global_context(request))
            else:
                if request.method == 'POST':
                    questionform=QuestionFormCore(request.POST, instance=q)
                    question_added=False
                    if questionform.is_valid():
                        questionform1=questionform.save(commit=False)
                        questionform1.edited_last=curr_userprofile
                        questionform1.feedback_for='Core'
                        questionform1.answered_by='Coord'
                        questionform1.save()
                        questionform.save_m2m()
                        question_added= True
                        return redirect('erp.feedback.views.display', question_for=question_for, permanent=True, owner_name = request.user)
                    else:
                        error=True
                questionform=QuestionFormCore(instance=q)
                return render_to_response('feedback/question.html',locals(),context_instance=global_context(request))
        else:
            raise Http404
Ejemplo n.º 29
0
def qms_review(request, dept_id, is_all, owner_name = None):
    feedback_tab=True
    owner_name=None
    curr_userprofile=userprofile.objects.get(user=request.user)
    qms_department=curr_userprofile.department
    all_departments=Department.objects.all().order_by('Dept_Name')
    page_owner = get_page_owner (request, owner_name)
    curr_department = Department.objects.get(id=dept_id)
    yes='yes'
    no='no'
    
    #Get Department Members' image thumbnails
    department = page_owner.get_profile ().department      
    dept_cores_list = User.objects.filter (
        groups__name = 'Cores',
        userprofile__department = department)
    dept_supercoords_list = User.objects.filter (
        groups__name = 'Supercoords',
        userprofile__department = department)
    dept_coords_list = User.objects.filter (
        groups__name = 'Coords',
        userprofile__department = department)
    
    if is_core(request.user):
        is_core1=True
        is_visitor1=False    
        if str(qms_department) == "QMS":
            qms_core=True
            qms_dept=True
    if is_supercoord(request.user) and str(qms_department) == "QMS":
        qms_dept=True
        qms_supercoord=True
    if is_coord(request.user) and str(qms_department) == "QMS":
        qms_dept=True
        qms_coord=True
    if is_coord(request.user) or is_supercoord(request.user) or is_core(request.user) and str(qms_department) == "QMS":            
        core_profiles=userprofile.objects.filter(department=curr_department,user__groups__name='Cores')
        coord_profiles = userprofile.objects.filter (department= curr_department,user__groups__name = 'Coords')
        for coord in coord_profiles:
            questions=Question.objects.filter(departments=curr_department).filter(feedback_for='Coord')
            for q in questions:
                answers = Answer.objects.filter(owner=coord).filter(question=q)
                if answers:
                    existing = Answeravg.objects.filter(owner=coord).filter(question=q)
                    if existing:
                        for i in existing:
                            curr_id = i.id
                        existing_average = Answeravg.objects.get(id=curr_id)
                        add=0
                        number=0
                        for a in answers:
                            number +=1
                            add += a.rating
                        average=Decimal(add/number)
                        existing_average.avg = average
                        existing_average.num = number
                        existing_average.save()                                    

                    else:
                        add=0
                        number=0
                        for a in answers:
                            number +=1
                            add += a.rating
                        average=Decimal(add/number)
                        saveavg = Answeravg(question=q,owner=coord,avg=average, num=number)
                        saveavg.save()
        
        for core in core_profiles:
            questions=Question.objects.filter(departments=curr_department).filter(feedback_for='Core')
            for q in questions:
                answers = Answer.objects.filter(owner=core).filter(question=q)
                if answers:
                    existing = Answeravg.objects.filter(owner=core).filter(question=q)
                    if existing:
                        for i in existing:
                            curr_id = i.id
                        existing_average = Answeravg.objects.get(id=curr_id)
                        add=0
                        number=0
                        for a in answers:
                            number +=1
                            add += a.rating
                        average=Decimal(add/number)
                        existing_average.avg = average
                        existing_average.num = number
                        existing_average.save()                                    

                    else:
                        add=0
                        number=0
                        for a in answers:
                            number +=1
                            add += a.rating
                        average=Decimal(add/number)
                        saveavg = Answeravg(question=q,owner=core,avg=average, num=number)
                        saveavg.save()        
        questions=Question.objects.filter(departments=curr_department)       
        averages = Answeravg.objects.all()
    else:
        raise Http404
    return render_to_response('feedback/qms_review.html',locals(),context_instance=global_context(request))    
Ejemplo n.º 30
0
def approve_event(request, round_id, form_saved=0, error=0):
    curr_userprofile = userprofile.objects.get(user=request.user)
    qms_coord = 0
    editable = 0
    print "a"
    rounder = EventRound.objects.get(id=round_id)
    dept = rounder.department
    facilities_coord = 0
    items = FacilitiesObject.objects.filter(event_round=rounder)

    if is_core(request.user) and is_facilities_coord(request.user):
        editable = 1
    if request.user.username == "ch10b090":
        editable = 1
    if request.user.username == "ce10b084":
        editable = 1
    if request.user.username == "ee11b075":
        editable = 1
    if curr_userprofile.department.id == 57:
        editable = 1
    if curr_userprofile.department.id == dept.id:
        event_editable = 1
    if curr_userprofile.department.Dept_Name == "QMS":
        event_editable = 1

    form_saved
    if request.method == "POST":
        form_saved = 0
        error = 0
        try:
            round_form = RoundForm(request.POST)
            form = round_form.save(commit=False)
            form.department = rounder.department
            form.number = rounder.number
            form.id = rounder.id
            form.save()
            form_saved = 1

            rounder = form
        except:
            error = 1
        return HttpResponseRedirect(
            SITE_URL + "erp/facilities/approve_event/%d/%d/%d/" % (rounder.id, form_saved, error)
        )
    round_form = RoundForm(instance=rounder)
    request_form = ApprovalForm()
    return render_to_response("facilities/approve_event.html", locals(), context_instance=global_context(request))

    """
    request_form = ApprovalForm()
    ItemFormset=modelformset_factory(EventRound, fields=('name','date','hour','minute'))
    qset=EventRound.objects.filter(id=round_id)
    if request.method=="POST":
        itemform=ItemFormset(request.POST, queryset=qset)            
        form_saved = False
        if itemform.is_valid():
            if itemform.has_changed():
                tempform = itemform.save(commit=False)
                tempform.number = rounder.number
                tempform.department = rounder.department
                tempform.save()
                form_saved=1
        else:
            error=1
    itemform=ItemFormset(queryset=qset)"""

    """if is_facilities_coord(request.user):
Ejemplo n.º 31
0
def answer(request, owner_name=None):
    feedback_tab=True
    curr_user=request.user
    curr_userprofile=userprofile.objects.get(user=request.user)
    users_profile=userprofile.objects.all()
    owner_name=None
    page_owner = get_page_owner (request, owner_name)
    yes='yes'
    no='no'
    
    #Get Department Members' image thumbnails
    department = page_owner.get_profile ().department      
    dept_cores_list = User.objects.filter (
        groups__name = 'Cores',
        userprofile__department = department)
    dept_supercoords_list = User.objects.filter (
        groups__name = 'Supercoords',
        userprofile__department = department)
    dept_coords_list = User.objects.filter (
        groups__name = 'Coords',
        userprofile__department = department)

    if is_core(curr_user):
        is_core1=True
        is_visitor1=False  
        if str(curr_userprofile.department) == "QMS":
            qms_core=True
            qms_dept=True

    if is_supercoord(curr_user):
        user_supercoord=True
        if str(curr_userprofile.department) == "QMS":
            qms_supercoord=True
            qms_dept=True             
    
    if is_coord(curr_user):
        user_coord=True
        if str(curr_userprofile.department) == "QMS":
            qms_coord=True
            qms_dept=True             
    
    openfeedback=OpenFeedback.objects.filter(id=1)
    if openfeedback:
        curr_feedback=OpenFeedback.objects.get(id=1)
    else:
        curr_feedback=OpenFeedback(feedback=False)
        curr_feedback.save()
    
    openreview=OpenReview.objects.filter(id=1)
    if openreview:
        curr_review=OpenReview.objects.get(id=1)
    else:
        curr_review=OpenReview(review=False)
        curr_review.save()
                
    if curr_feedback.feedback==True:
   
        if is_core(curr_user):
            is_core1=True
            is_visitor1=False
            if str(curr_userprofile.department) == "QMS":
                qms_core=True 
                qms_dept=True   
            curr_department=curr_userprofile.department
            coord_profiles = userprofile.objects.filter (department= curr_department,user__groups__name = 'Coords')
            questions=Question.objects.filter(departments=curr_department).exclude(answered_by='Coord').exclude(answered_by='Vol')
            answers=Answer.objects.filter(creator=curr_userprofile)

        if is_coord(curr_user):
            user_coord=True
            if str(curr_userprofile.department) == "QMS":
                qms_coord=True
                qms_dept=True
            curr_department=curr_userprofile.department
            core_profiles=userprofile.objects.filter(department=curr_department,user__groups__name='Cores')
            coord_profiles = userprofile.objects.filter (department= curr_department,user__groups__name = 'Coords').exclude(user=request.user)
            questions=Question.objects.filter(departments=curr_department).exclude(answered_by='Core').exclude(answered_by='Vol')
            answers=Answer.objects.filter(creator=curr_userprofile)           
            return render_to_response('feedback/feedback.html',locals(),context_instance=global_context(request))
    
    return render_to_response('feedback/feedback.html',locals(),context_instance=global_context(request))    
Ejemplo n.º 32
0
def global_context(request):
    # The try...except blocks are there for the case when an anonymous
    # user visits any page (esp the login page)
    try:
        user_dept_name = request.user.get_profile ().department.Dept_Name

    except:
        user_dept_name = False

    try:
        user_name = request.user.get_profile ().name
    except:
        user_name = False

    try:
        photo_list=userphoto.objects.filter()           
    except:
        photo_list=False    

    page_owner = request.session.get ('page_owner', request.user)

    try:
        po_dept_name = page_owner.get_profile ().department.Dept_Name

    except:
        po_dept_name = False


    try:
        po_name = page_owner.get_profile ().name

    except:
        po_name = False

    
    try:
        if (request.user.get_profile().department.owner.all()):
            supercore = True
        else:
            supercore = False
    except:
        supercore = False
       
    try:
        department = request.user.get_profile().department
        if request.user.username.endswith(department.Dept_Name.replace(' ','').lower()):
            multiple_coord = True
        else:
            multiple_coord = False
    except:
        multiple_coord = False
            


    qms_core = False
    qms_supercoord = False
    qms_coord = False
    finance_tab=False
    facilities_tab=False
    hospi=False
    finance=False

    if page_owner != request.user:
        is_visitor = True
    else:
        is_visitor = False
        try:        
            po_name = page_owner.get_profile ().name
            curr_user=request.user
            curr_userprofile=userprofile.objects.get(user=request.user)
            department = page_owner.get_profile ().department
            if is_core(curr_user):
                if str(curr_userprofile.department) == 'QMS':
                    qms_core= True
                    finance_tab=True
                    facilities_tab=True
                if str(curr_userprofile.department) == 'Finance':
                    finance_tab=True
                    finance=True
                if str(curr_userprofile.department) == 'Hospitality':
                    hospi=True
                if is_facilities_coord(curr_user):
                    facilities_tab=True
                if department.is_event:
                    facilities_tab=True
                    finance_tab=True

            if is_supercoord(curr_user):
                if str(curr_userprofile.department) == 'QMS':
                    qms_supercoord= True
                    finance_tab=True
                    facilities_tab=True
                if str(curr_userprofile.department) == 'Finance':
                    finance_tab=True
                    finance=True
                if str(curr_userprofile.department) == 'Hospitality':
                    hospi=True
                if is_facilities_coord(curr_user):
                    facilities_tab=True
                if department.is_event:
                    finance_tab=True     
                    facilities_tab=True       
            if is_coord(curr_user):
                if str(curr_userprofile.department) == 'QMS':
                    qms_coord= True
                    finance_tab=True
                    facilities_tab=True
                if str(curr_userprofile.department) == 'Finance':    
                    finance=True
                if str(curr_userprofile.department) == 'Hospitality':
                    hospi=True
                if is_facilities_coord(curr_user):
                    facilities_tab=True
                if department.is_event:
                    finance_tab=True
                    print "foo"
                    facilities_tab=True
                if str(curr_userprofile.department) == 'Finance':
                    finance_tab=True
            if request.user.username=="ee11b075":
                facilities_tab=True
        except:
                qms_core = False
                qms_supercoord = False
                qms_coord = False
                finance_tab=False
                facilities_tab=False
        
        qms=qms_coord or qms_core or qms_supercoord
        
    context =  RequestContext (request,
            {'user':request.user,
            'SITE_URL':settings.SITE_URL,
             'user_dept_name': user_dept_name,
             'user_name': user_name,
             'is_core' : is_core (request.user),
             'is_multiple_user' : is_multiple_user (request.user),
             'is_supercoord' : is_supercoord (request.user),
             'is_coord' : is_coord (request.user),
             'po_is_core' : is_core (page_owner),
             'po_is_supercoord' : is_supercoord (page_owner),
             'po_is_coord' : is_coord (page_owner),
             'is_visitor' : is_visitor,
             'page_owner' : page_owner,
             'po_name' : po_name,
             'po_dept_name' : po_dept_name,
             'photo_list':photo_list,
             'supercore':supercore,
             'multiple_coord':multiple_coord,                 
             'qms_core':qms_core,
             'qms_coord':qms_coord,
             'qms_supercoord':qms_supercoord,
             'finance_tab':finance_tab,
             'facilities_tab':facilities_tab,
             'hospi':hospi,
             'finance':finance,
             'qms':qms,

            })
    return context
Ejemplo n.º 33
0
def display_department_portal (request, owner_name = None, department_name = None):
    """
    Display all basic info about user's Department.
    """
    print 'Department name :', department_name
    # #added by vivek
    print "departmental portal here"
    shout_form=shout_box_form()
    shouts=shout_box.objects.all()
    print "done"

    page_owner = get_page_owner (request, owner_name)

    if request.method == 'POST':
        shout_form=shout_box_form (request.POST)            
        if shout_form.is_valid():
            new_shout = shout_form.save (commit = False)
            new_shout.user=page_owner
            new_shout.nickname=page_owner.get_profile ().nickname
            new_shout.timestamp=datetime.datetime.now()
            new_shout.save ()
            shout_form = shout_box_form ()
        
    if department_name is None:
        department = page_owner.get_profile ().department
    else:
        department = Department.objects.get (department_name)
    display_dict = dict ()
    display_dict['shouts']=shouts
    display_dict['shout_form']=shout_form
    display_dict['all_Tasks'] = get_timeline (page_owner)
    display_dict['updates'] = get_all_updates (department)
    
    #Get Department Members' image thumbnails
    display_dict ['dept_cores_list'] = User.objects.filter (
        groups__name = 'Cores',
        userprofile__department = department)
    display_dict ['dept_supercoords_list'] = User.objects.filter (
        groups__name = 'Supercoords',
        userprofile__department = department)
    display_dict ['dept_coords_list'] = User.objects.filter (
        groups__name = 'Coords',
        userprofile__department = department)
    qms_core=False
    if is_core(request.user):
        if str(department) == 'QMS':
            display_dict['qms_core']=True
            display_dict['finance_tab']=True

    qms_supercoord = False
    if is_supercoord(request.user):
        if str(department) == 'QMS':
            display_dict['qms_supercoord']= True
            display_dict['finance_tab']=True        
    qms_coord=False
    if is_coord(request.user):
        if str(department) == 'QMS':
            display_dict['qms_coord']=True
            display_dict['finance_tab']=True
    finance_tab=False
    if department.is_event:
        display_dict['finance_tab']=True

    return render_to_response('tasks/department_portal.html',
                              display_dict,
                              context_instance = global_context (request))
Ejemplo n.º 34
0
def display(request, event_name):
    """
    Display the plans and items.
    """
    display=True
    finance=False
    feedback_tab=True
    form_saved=False
    total_amount1=0
    page_owner = get_page_owner (request, owner_name=request.user)
    curr_userprofile=userprofile.objects.get(user=request.user)
    #Get Department Members' image thumbnails
    department = page_owner.get_profile ().department      
    dept_cores_list = User.objects.filter (
        groups__name = 'Cores',
        userprofile__department = department)
    dept_supercoords_list = User.objects.filter (
        groups__name = 'Supercoords',
        userprofile__department = department)
    dept_coords_list = User.objects.filter (
        groups__name = 'Coords',
        userprofile__department = department)

    #To display Add Tasks and Feedback options
    if is_core(request.user):
        is_core1=True
        is_visitor1=False  
        if str(department) == "QMS":
            qms_core=True
            qms_dept=True

    if is_supercoord(request.user):
        user_supercoord=True
        if str(department) == "QMS":
            qms_supercoord=True
            qms_dept=True             
    
    if is_coord(request.user):
        user_coord=True
        if str(department) == "QMS":
            qms_coord=True
            qms_dept=True     
         
	#Check if instance of open portal present. Otherwise make one.                
    openportal=OpenBudgetPortal.objects.filter(id=1)
    if openportal:
        curr_portal=OpenBudgetPortal.objects.get(id=1)
    else:
        curr_portal=OpenBudgetPortal(opened=False)
        curr_portal.save()  

    if(department.is_event):
        event=True
        budgets = Budget.objects.filter(department=department)
        items = Item.objects.all()
        item_exist = False
        if items:
            item_exist = True
        return render_to_response('finance/budget_display.html',locals(),context_instance=global_context(request))
    
  
    first_time=False
    item_exist=False
    event1 = Department.objects.get(id=event_name)
    if str(department) == "Finance" or "QMS":
   
        finance_core=False
        if str(department) == "Finance":
            finance=True
        else:
            qms_dept=True    
        event1 = Department.objects.get(id=event_name)
        plans = Budget.objects.filter(department=event1)
        if plans:
            item_exist=True
            budgets=Budget.objects.filter(department=event1)
            items = Item.objects.all()
            planF = False
            has_perms = False
            if curr_portal.opened==False:
                finance_coords=Permission.objects.all()
                for eachcoord in finance_coords:
                    if curr_userprofile.name == eachcoord.coord:        
                        if eachcoord.budget_sanction==True:
                            has_perms = True
                        
                if is_core(request.user) and str(department) == "Finance":
                    has_perms=True                  
                    finance_core=True
                planF = True
                plan_finance=Budget.objects.get(name='F',department=event1)
                submitted = False
                
                if plan_finance.submitted ==False:
                    qset = Item.objects.filter(department=event1, budget=plan_finance)
                    for qset1 in qset:
    	                        total_amount1+=qset1.original_amount 
                    if len(qset)<5:
                        extra1=5-len(qset)
                    else:
                        extra1=0
                    ItemFormset=modelformset_factory(Item, fields=('name', 'description','quantity', 'original_amount'), extra=extra1, can_delete=True)
                    if request.method== "POST":
                        budgetclaimform=BudgetClaimForm(request.POST, instance=plan_finance) 
                        itemformset=ItemFormset(request.POST, queryset=qset)            
                        form_saved = False
                        if itemformset.is_valid():
                            for form in itemformset.forms:
                                if form.has_changed():
                                    if not form in itemformset.deleted_forms:
                                        tempform = form.save(commit=False)
                                        tempform.department=event1
                                        tempform.budget=plan_finance
                                        tempform.save()
                                    if form in itemformset.deleted_forms:
                                        if Item.objects.filter(id=form.instance.id):
                                            curr_item = Item.objects.get(id=form.instance.id)
                                            curr_item.delete()      	                
                                    form_saved = True 
                            qset = Item.objects.filter(department=event1, budget=plan_finance) 
                        else:
                            error=True
                        if budgetclaimform.is_valid():
                            total_amount1=0
    	                    budgetclaimform1=budgetclaimform.save(commit=False)
    	                    for qset1 in qset:
    	                        total_amount1+=qset1.original_amount
    	                    budgetclaimform1.total_amount=float(total_amount1)
    	                    budgetclaimform1.save()
    	                else:
                            error=True
                        if 'add_more_items' in request.POST: 
                            if len(qset)<5:
                                extra1=5-len(qset)
                            else:
                                extra1=2
                        else:
                            if len(qset)<5:
                                extra1=5-len(qset)
                            else:
                                extra1=0
                        ItemFormset=modelformset_factory(Item, fields=('name', 'description','quantity','original_amount'),extra=extra1, can_delete=True)
                        itemformset=ItemFormset(queryset=qset) 
                    else:
                        budgetclaimform=BudgetClaimForm(instance=plan_finance)
                        itemformset=ItemFormset(queryset=qset)
                    return render_to_response('finance/budget_display.html',locals(),context_instance=global_context(request))
                else:
                    submitted = True
                    return render_to_response('finance/budget_display.html',locals(),context_instance=global_context(request))               
            else:
                return render_to_response('finance/budget_display.html',locals(),context_instance=global_context(request))    
                        
        else:
            first_time = True
            return render_to_response('finance/budget_display.html',locals(),context_instance=global_context(request)) 
Ejemplo n.º 35
0
def answer_questions(request,userprofile_id,question_id,rating=None, owner_name = None):
    feedback_tab=True
    if str(rating) == '20':
        rating=None
    rating_choice=[i for i in range(11)]
    curr_user=request.user

    curr_userprofile=userprofile.objects.get(user=request.user)
    owner_name=None
    is_core1=False
    qms_core=False
    page_owner = get_page_owner (request, owner_name)
    
    #Get Department Members' image thumbnails
    department = page_owner.get_profile ().department      
    dept_cores_list = User.objects.filter (
        groups__name = 'Cores',
        userprofile__department = department)
    dept_supercoords_list = User.objects.filter (
        groups__name = 'Supercoords',
        userprofile__department = department)
    dept_coords_list = User.objects.filter (
        groups__name = 'Coords',
        userprofile__department = department)
    
    if is_core(curr_user):
        is_core1=True
        is_visitor1=False  
        if str(curr_userprofile.department) == "QMS":
            qms_core=True
    if is_supercoord(curr_user):
        user_supercoord=True
        if str(curr_userprofile.department) == "QMS":
            qms_supercoord=True      
    if is_coord(curr_user):
        user_coord=True
        if str(curr_userprofile.department) == "QMS":
            qms_coord=True      

    openfeedback=OpenFeedback.objects.filter(id=1)
    if openfeedback:
        curr_feedback=OpenFeedback.objects.get(id=1)
    else:
        curr_feedback=OpenFeedback(feedback=False)
        curr_feedback.save()
    
    if curr_feedback.feedback==True:    
        
        curr_department=curr_userprofile.department
        answers=Answer.objects.filter(creator=curr_userprofile)
        question1=Question.objects.filter(id=question_id)
        if question1:
            question2=Question.objects.get(id=question_id)
        curr_feedbackuser_userprofile=userprofile.objects.get(id=userprofile_id)
        
        if is_core(curr_user):
            question_no_answer=[]
            if str(curr_userprofile.department) == "QMS":
                is_core1=True
                is_visitor1=False
                qms_core=True
            questions=Question.objects.filter(departments=curr_department).exclude(answered_by='Coord').exclude(answered_by='Vol')
    
            if rating != None:	
                answer=Answer.objects.filter(question = question2).filter(creator=curr_userprofile).filter(owner=curr_feedbackuser_userprofile)
                if answer:
                    for answer1 in answer:
                        answer1.rating=rating
                        answer1.save()
                else:
                    answer1=Answer(rating=rating,question=question2,owner=curr_feedbackuser_userprofile,creator=curr_userprofile,answered=True)
                    answer1.save()
            for question_one in questions:
                answer_present=False
                for answer_one in answers:
                    if answer_one.question==question_one and answer_one.creator==curr_userprofile and answer_one.owner==curr_feedbackuser_userprofile:
                        answer_present=True
                if not answer_present:
                    question_no_answer.append(question_one)
            return render_to_response('feedback/answer_questions.html',locals(),context_instance=global_context(request))
            
        if is_coord(curr_user):
            if str(curr_userprofile.department) == "QMS":
                qms_coord=True
            question_no_answer=[]
            if is_coord(curr_feedbackuser_userprofile.user):
                questions=Question.objects.filter(departments=curr_department).filter(feedback_for='Coord').exclude(answered_by='Core').exclude(answered_by='Vol')
            else:
                questions=Question.objects.filter(departments=curr_department).filter(feedback_for='Core')
            if rating != None:
                answer=Answer.objects.filter(question=question2).filter(creator=curr_userprofile).filter(owner=curr_feedbackuser_userprofile)
                if answer:
                    for answer1 in answer:
                        answer1.rating=rating
                        answer1.save()
                else:
                    answer1=Answer(rating=rating,question=question2,owner=curr_feedbackuser_userprofile,creator=curr_userprofile,answered=True)
                    answer1.save()
    
            for question_one in questions:
                answer_present=False
                for answer_one in answers:
                    if answer_one.question==question_one and answer_one.creator==curr_userprofile and answer_one.owner==curr_feedbackuser_userprofile:
                        answer_present=True
                if not answer_present:
                    question_no_answer.append(question_one)
            return render_to_response('feedback/answer_questions.html',locals(),context_instance=global_context(request))
                           
    return render_to_response('feedback/feedback.html',locals(),context_instance=global_context(request))    
Ejemplo n.º 36
0
def review(request, owner_name = None):
    feedback_tab=True
    curr_userprofile=userprofile.objects.get(user=request.user)
    curr_department=curr_userprofile.department
    owner_name=None
    page_owner = get_page_owner (request, owner_name)
    qms_core=False
    owner_answers=Answer.objects.filter(owner=curr_userprofile)
    curr_averages = Answeravg.objects.filter(owner=curr_userprofile)

    #Get Department Members' image thumbnails
    department = page_owner.get_profile ().department      
    dept_cores_list = User.objects.filter (
        groups__name = 'Cores',
        userprofile__department = department)
    dept_supercoords_list = User.objects.filter (
        groups__name = 'Supercoords',
        userprofile__department = department)
    dept_coords_list = User.objects.filter (
        groups__name = 'Coords',
        userprofile__department = department)

    if is_core(request.user):
        is_core1=True
        is_visitor1=False
        if str(curr_department) == "QMS":
            qms_core=True
        questions=Question.objects.filter(departments=curr_department).filter(feedback_for='Core')
    if is_coord(request.user):
        is_coord1=True
        if str(curr_userprofile.department) == "QMS":
            qms_coord=True
        questions=Question.objects.filter(departments=curr_department).filter(feedback_for='Coord')
    
    openfeedback=OpenFeedback.objects.filter(id=1)
    if openfeedback:
        curr_feedback=OpenFeedback.objects.get(id=1)
    else:
        curr_feedback=OpenFeedback(feedback=False)
        curr_feedback.save()
                    
    openreview=OpenReview.objects.filter(id=1)
    if openreview:
        curr_review=OpenReview.objects.get(id=1)
    else:
        curr_review=OpenReview(review=False)
        curr_review.save()
    illegal=True
    if curr_review.review==True:        
        if is_core(request.user) or is_coord(request.user):
            for q in questions:            
                answers = Answer.objects.filter(owner=curr_userprofile).filter(question=q)
                if answers:
                    existing = Answeravg.objects.filter(owner=curr_userprofile).filter(question=q)
                    if existing:
                        for i in existing:
                            curr_id = i.id
                        existing_average = Answeravg.objects.get(id=curr_id)
                        add=0
                        number=0
                        for a in answers:
                            number +=1
                            add += a.rating
                        average=Decimal(add/number)
                        existing_average.avg = average
                        existing_average.num = number
                        existing_average.save()                                    
                    else:
                        add=0
                        number=0
                        for a in answers:
                            number +=1
                            add += a.rating
                        average=Decimal(add/number)            
                        saveavg = Answeravg(question=q,owner=curr_userprofile,avg=average, num=number)
                        saveavg.save()        
            averages = Answeravg.objects.filter(owner=curr_userprofile)
            return render_to_response('feedback/review.html',locals(),context_instance=global_context(request))        
        else:
            raise Http404    
    return render_to_response('feedback/feedback.html',locals(),context_instance=global_context(request))