Example #1
0
File: views.py Project: CSIOM/piPi
 def post(self, request):
     profile_form = ProfileForm(request.POST)
     if profile_form.is_valid():
         user = request.user
         first_name = request.POST['first_name']
         last_name = request.POST['last_name']
         gender_id = int(request.POST['gender'])
         skills = request.POST['skills']
         telephone = request.POST['telephone']
         github = request.POST['github']
         bitbucket = request.POST['bitbucket']
         experience = request.POST['experience']
         gender = Gender.objects.get(pk=gender_id)
         profile_obj = Profile.objects.filter(user=user)
         if profile_obj:
             Profile.objects.filter(user=user).update(user=user,
                 first_name=first_name, last_name=last_name,
                 gender=gender, skills=skills, telephone=telephone,
                 github=github, bitbucket=bitbucket, experience=experience)
         else:
             profile = Profile(user=user, first_name=first_name, last_name=last_name,
                 gender=gender, skills=skills, telephone=telephone,
                 github=github, bitbucket=bitbucket, experience=experience)
             profile.save()
         access_var = is_manager(request)
         notice_status = read_unread_notice(request)
         return render(request,'users/profile_success.html',{'access_var':access_var,
             'notice_status':notice_status})
     else:
         profile_form = ProfileForm(request.POST)
         access_var = is_manager(request)
         notice_status = read_unread_notice(request)
         return render(request,'users/add_profile.html',{'profile_form':profile_form,
             'access_var':access_var, 'notice_status':notice_status})
Example #2
0
File: views.py Project: CSIOM/piPi
 def get(self, request):
     team_list = []
     team_id = User.objects.values_list('id', flat=True).filter(is_staff=True).order_by('username')
     if 'edit_id' in request.GET:
         current_team = TeamMembers.objects.values_list('user',flat=True).\
             filter(project=request.GET['edit_id'], is_active=True)
     else:
         current_team = []
     for val in team_id:
         temp = {}
         temp['id'] = val
         username = User.objects.values_list('username',flat=True).filter(id=val)[0]
         temp['username'] = username
         active_projects = TeamMembers.objects.values_list('id',flat=True).\
             filter(user=val).filter(project__is_inactive=False, is_active=True)
         project_count = len(active_projects)
         temp['project_count'] = project_count
         if val in current_team:
             temp['selected'] = 'checked'
         team_list.append(temp)
     if 'edit_id' in request.GET:
         project = ProjectDetails.objects.get(pk=request.GET['edit_id'])
         access_var = is_manager(request)
         notice_status = read_unread_notice(request)
         return render(request,'managers/add_team.html',{'team_list':team_list,
             'project':project, 'access_var':access_var, 
             'notice_status':notice_status})
     else:
         project_form = ProjectSelectForm(manager=request.user)
         access_var = is_manager(request)
         notice_status = read_unread_notice(request)
         return render(request,'managers/add_team.html',{'team_list':team_list,
             'project_form':project_form, 'access_var':access_var, 
             'notice_status':notice_status})
Example #3
0
File: views.py Project: CSIOM/piPi
 def post(self, request):
     form = ProjectDetailForm(request.POST)
     if form.is_valid():
         formdata = form.cleaned_data
         manager = request.user
         title = formdata['title']
         max_id = ProjectDetails.objects.values_list('id', flat=True).\
             order_by("-id")[0]
         code = code_generator(title, manager.username, max_id)
         tech = formdata['technologies_required']
         time_est = formdata['estimated_time']
         summary = formdata['project_summary']
         data = ProjectDetails(title=title, project_code=code, 
             technologies_required=tech, estimated_time=time_est,
             manager=manager,project_summary=summary)
         data.save()
         team = TeamMembers(project=data, user=request.user)
         team.save()
         return self.list_project(request)
     else:
         form = ProjectDetailForm(request.POST)
         access_var = is_manager(request)
         notice_status = read_unread_notice(request)
         return render(request, 'managers/add_project.html',{'form':form,
             'access_var':access_var, 'notice_status':notice_status})
Example #4
0
File: views.py Project: CSIOM/piPi
 def profile_view(self, request):
     user = request.user
     profile_info = Profile.objects.filter(user=user)
     if not profile_info:
         return self.add_profile(request)
     profile_info = Profile.objects.filter(user=user)[0]
     access_var = is_manager(request)
     notice_status = read_unread_notice(request)
     return render(request,'users/profile.html',{'profile_info':profile_info,
         'access_var':access_var, 'notice_status':notice_status})
Example #5
0
File: views.py Project: CSIOM/piPi
 def list_project(self, request):
     project_list = ProjectDetails.objects.filter(manager=request.user).order_by('-id')
     access_var = is_manager(request)
     notice_status = read_unread_notice(request)
     post_method = 0
     if request.POST:
         post_method = 1
     return render(request,'managers/list_project.html',{'list': project_list,
         'access_var':access_var, 'notice_status':notice_status,
         'method':post_method})
Example #6
0
File: views.py Project: CSIOM/piPi
def access_denied(request):
    """
    Function that handels the error display for user where not allowed to visit.
    request: Http Request
    pass: render access_denied.html
    """
    access_var = is_manager(request)
    notice_status = read_unread_notice(request)
    return render(request, 'access_denied.html',{'access_var':access_var,
        'notice_status':notice_status})
Example #7
0
File: views.py Project: CSIOM/piPi
 def post(self, request):
     pro = request.user
     reportform = AddReportForm(pro, request.POST)
     reportitemform = ReportItemForm(request.POST)
     if reportform.is_valid() and reportitemform.is_valid():
         user = request.user
         project = request.POST['project']
         report_id = DailyReport.objects.values_list('id',flat=True).filter(user=request.user.id).\
             filter(project=project).filter(date=datetime.date.today())
         if report_id:
             reportformdata = DailyReport.objects.get(pk=report_id[0])
         else:
             reportformdata = reportform.save()
         self_rating_list = request.POST.getlist('self_rating')
         duration_list = request.POST.getlist('duration_in_hours')
         work_done_list = request.POST.getlist('work_done')
         struggle_list = request.POST.getlist('struggle')
         tags_list = request.POST.getlist('tags')
         i = 0
         dailyreportobject = DailyReport.objects.get(pk=reportformdata.id)
         dailyreportobj = DailyReport.objects.values('project__project__manager').\
         filter(id=reportformdata.id)[0]
         user_obj = User.objects.get(pk=dailyreportobj['project__project__manager'])
         if user != user_obj:
             notification_type = NotificationType.objects.get(name='Report')
             notifications = Notifications(notification_type=notification_type)
             notifications.save()
             notifications_obj = Notifications.objects.get(id=notifications.id)
             report_notifications = ReportNotifications(report=dailyreportobject,
                 notifier=user_obj, notifications=notifications_obj)
             report_notifications.save()
         for self_rate in self_rating_list:
             reportitemobj = DailyReportItem(daily_report=dailyreportobject,
                 self_rating=self_rate, duration_in_hours=duration_list[i],
                 work_done=work_done_list[i], struggle=struggle_list[i],
                 tags=tags_list[i])
             reportitemobj.save()
             i = i + 1
         if i == len(work_done_list):
             message = "Report Added"
             error=0
         else:
             message = 'Error: Try again later'
             error=1
         return render(request,'users/report_success.html',{'message':message,'error':error})
     else:
         pro = request.user
         reportform = AddReportForm(pro, request.POST)
         reportitemform = ReportItemForm(request.POST)
         access_var = is_manager(request)
         notice_status = read_unread_notice(request)
         comment_form = CommentForm()
         return render(request,'users/report_add.html',{'reportform':reportform,
             'reportitemform':reportitemform, 'access_var':access_var,
             'form':comment_form, 'notice_status':notice_status})
Example #8
0
File: views.py Project: CSIOM/piPi
 def get(self, request):
     if 'add_report' in request.GET:
         user = request.user
         reportform = AddReportForm(initial={'user':user}, pro=user)
         reportitemform = ReportItemForm()
         access_var = is_manager(request)
         notice_status = read_unread_notice(request)
         comment_form = CommentForm()
         return render(request,'users/report_add.html',{'reportform':reportform,
             'reportitemform':reportitemform, 'access_var':access_var,
             'form':comment_form, 'notice_status':notice_status})
Example #9
0
File: views.py Project: CSIOM/piPi
 def update_profile(self, request):
     user = request.user
     profile_data = Profile.objects.values('first_name', 'last_name',
         'gender', 'skills', 'telephone', 'github', 'bitbucket',
         'experience').filter(user=user)[0]
     profile_form = ProfileForm(initial={'first_name':profile_data['first_name'],
         'last_name':profile_data['last_name'],'gender':profile_data['gender'],
         'skills':profile_data['skills'], 'telephone':profile_data['telephone'],
         'github':profile_data['github'], 'bitbucket':profile_data['bitbucket'],
         'experience':profile_data['experience']})
     access_var = is_manager(request)
     notice_status = read_unread_notice(request)
     return render(request,'users/add_profile.html',{'profile_form':profile_form,
         'access_var':access_var, 'notice_status':notice_status})
Example #10
0
File: views.py Project: CSIOM/piPi
 def mark_as_started(self,request):
     project_id = request.GET['project']
     now = datetime.date.today()
     ProjectDetails.objects.filter(id=project_id).update(start_date=now)
     project = ProjectDetails.objects.get(pk=project_id)
     start_date=''
     end_date=''
     if project.start_date:
         start_date = 1
     if project.end_date:
         end_date = 1
     access_var = is_manager(request)
     notice_status = read_unread_notice(request)
     return render(request,'managers/project_details.html',
         {'project':project,'start': start_date, 'end':end_date,
         'access_var':access_var, 'notice_status':notice_status})
Example #11
0
File: views.py Project: CSIOM/piPi
    def get(self, request):
        """
        Handels get request and call appropriate function according 
        to arguments in get request.
        Allowed arguments:
        1. mark_as_started: for starting the project
        2. mark_as_finished: for finishing the project
        """
        self.user = request.user
        try:
            request.GET['mark_as_finished']
            return self.mark_as_finished(request)

        except:
            try:
                request.GET['mark_as_started']
                return self.mark_as_started(request)

            except:
                project_id = request.GET['project']
                project = ProjectDetails.objects.get(pk=project_id)
                try:
                    status = StatusOfProject.objects.values_list('status__state',
                        flat=True).filter(project=project_id).order_by('-id')[0]
                except:
                    status = 'Not started yet'

                if 'review' in request.GET:
                    notice = request.GET['notice']
                    Notifications.objects.filter(id=notice).update(is_read=True)
                start_date=0
                end_date=0
                if project.start_date:
                    start_date = 1
                if project.end_date:
                    end_date = 1
                access_var = is_manager_of_project(self.user.id,project_id)
                team_list = TeamMembers.objects.values_list('user__username',flat=True).\
                    filter(project=project_id, is_active=True)
                notice_status = read_unread_notice(request)
                team_size = len(team_list)
                return render(request,'managers/project_details.html',
                    {'project':project,'start': start_date, 'end':end_date,
                    'access_var':access_var, 'notice_status':notice_status,
                    'team_list':team_list,'team_size':team_size,'status':status})
Example #12
0
File: views.py Project: CSIOM/piPi
 def add_profile(self, request):
     profile_form = ProfileForm()
     access_var = is_manager(request)
     notice_status = read_unread_notice(request)
     return render(request,'users/add_profile.html',{'profile_form':profile_form,
         'access_var':access_var, 'notice_status':notice_status})
Example #13
0
File: views.py Project: CSIOM/piPi
 def add_project(self, request):
     form = ProjectDetailForm()
     access_var = is_manager(request)
     notice_status = read_unread_notice(request)
     return render(request, 'managers/add_project.html',{'form':form,
         'access_var':access_var, 'notice_status':notice_status})
Example #14
0
File: views.py Project: CSIOM/piPi
 def post(self, request):
     login_user = request.user
     manager=request.user.id
     project_form = ProjectSelectForm(manager, request.POST)
     if project_form.is_valid() or 'project_id' in request.POST:
         members = request.POST.getlist('select_members')
         try:
             project_id = request.POST['project_id']
             team = TeamMembers.objects.values_list('id',flat=True).\
                 filter(project=project_id).exclude(user = manager)
             current_team = list(TeamMembers.objects.values_list('user__id',flat=True).\
                 filter(project=project_id))
             for val in team:
                 TeamMembers.objects.filter(pk=val).update(is_active=False)
         except:
             project_id = request.POST['project']
             current_team = TeamMembers.objects.values_list('user_id',flat=True).\
                 filter(project=project_id)
         project = ProjectDetails.objects.get(pk=project_id)
         for user_id in members:
             team = TeamMembers.objects.values_list('user__id',flat=True).\
                 filter(project=project).filter(user=user_id)
             if team:
                 TeamMembers.objects.filter(project=project).filter(user=user_id).\
                 update(is_active=True)
             else:
                 user = User.objects.get(pk=user_id)
                 TeamMembers(user=user, project=project).save()
                 if user != login_user:
                     in_previous_team = False
                     for current_team_member in current_team:
                         if int(user_id) == int(current_team_member):
                             in_previous_team = True
                             break
                     if in_previous_team:
                         pass
                     else:
                         notification_type = NotificationType.objects.get(name='Team Added')
                         notifications = Notifications(notification_type=notification_type)
                         notifications.save()
                         notifications_obj = Notifications.objects.get(id=notifications.id)
                         TeamAddedNotifications(project_details=project,
                             notifier=user, notifications=notifications_obj).save()
                         temp = Context({'user':user.username,'title':project.title,
                             'manager':project.manager,'summary':project.project_summary,
                             'domain':domain,'project_id':project.id})
                         plaintext = get_template('managers/team_added_mail.txt')
                         content = get_template('managers/team_added_mail.html')
                         html_content = content.render(temp)
                         subject, from_email, to = 'You are in Team', _SENDER_EMAIL, user.email
                         text_content = plaintext.render(temp)
                         msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
                         msg.attach_alternative(html_content, "text/html")
                         msg.send()
         access_var = is_manager(request)
         notice_status = read_unread_notice(request)
         return render(request,'managers/team_added.html',{'access_var':access_var,
             'notice_status':notice_status})
     else:
         team_list = []
         team_id = User.objects.values_list('id', flat=True).order_by('username')
         for val in team_id:
             temp = {}
             temp['id'] = val
             username = User.objects.values_list('username',flat=True).filter(id=val)[0]
             temp['username'] = username
             active_projects = TeamMembers.objects.values_list('id',flat=True).\
                 filter(user=val).filter(project__is_inactive=False, is_active=True)
             project_count = len(active_projects)
             temp['project_count'] = project_count
             team_list.append(temp)
         project_form = ProjectSelectForm(manager, request.POST)
         access_var = is_manager(request)
         notice_status = read_unread_notice(request)
         return render(request,'managers/add_team.html',{'team_list':team_list,
             'project_form':project_form, 'access_var':access_var, 
             'notice_status':notice_status})