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})
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})
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})
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})
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})
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})
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})
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})
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})
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})
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})
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})
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})
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})