def view_budget_overview(request, schedule_id): schedule = get_object_or_404(BudgetSchedule, pk=schedule_id) # if permission.access_obj(request.user, 'program budget remark edit', schedule.program): if (schedule.project.plan and permission.has_role_with_obj(request.user, ('sector_manager', 'sector_manager_assistant', 'sector_specialist'), schedule.project.plan.master_plan)) or (not schedule.project.plan and permission.access_obj(request.user, 'program budget remark edit', schedule.program)): if request.method == 'POST': form = ModifyBudgetRemarkForm(request.POST) if form.is_valid(): schedule.remark = form.cleaned_data['remark'] schedule.save() messages.success(request, 'แก้ไขหมายเหตุเรียบร้อย') return redirect('view_budget_overview', (schedule.id)) else: form = ModifyBudgetRemarkForm(initial={'remark':schedule.remark}) else: form = None ref_projects = [] ref_report_submissions = [] for reference in BudgetScheduleReference.objects.filter(schedule=schedule): if reference.project: ref_projects.append(reference) elif reference.report_submission: ref_report_submissions.append(reference) revisions = BudgetScheduleRevision.objects.filter(schedule=schedule).order_by('-revised') return render_page_response(request, 'overview', 'page_kpi/budget_overview.html', {'schedule':schedule, 'ref_projects':ref_projects, 'ref_report_submissions':ref_report_submissions, 'revisions':revisions, 'form':form})
def view_activity_edit_activity(request, activity_id): activity = get_object_or_404(Activity, pk=activity_id) project = activity.project if project.plan and not permission.has_role_with_obj(request.user, ('sector_manager', 'sector_manager_assistant', 'sector_specialist'), project.plan.master_plan): return access_denied(request) if project.program and not permission.access_obj(request.user, 'program activity edit', project.program): return access_denied(request) if request.method == 'POST': form = ActivityModifyForm(request.POST) if form.is_valid(): activity.name = form.cleaned_data['name'] activity.start_date = form.cleaned_data['start_date'] activity.end_date = form.cleaned_data['end_date'] activity.description = form.cleaned_data['description'] activity.location = form.cleaned_data['location'] activity.result_goal = form.cleaned_data['result_goal'] activity.result_real = form.cleaned_data['result_real'] activity.save() messages.success(request, u'แก้ไขกิจกรรมเรียบร้อย') return redirect('view_activity_overview', (activity.id)) else: form = ActivityModifyForm(initial=activity.__dict__) return render_page_response(request, '', 'page_program/activity_edit_activity.html', {'activity':activity, 'form':form})
def view_project_add_activity(request, project_id): project = get_object_or_404(Project, pk=project_id) if project.plan and not permission.has_role_with_obj(request.user, ('sector_manager', 'sector_manager_assistant', 'sector_specialist'), project.plan.master_plan): return access_denied(request) if project.program and not permission.access_obj(request.user, 'program activity add', program): return access_denied(request) if request.method == 'POST': form = ActivityModifyForm(request.POST) if form.is_valid(): activity = Activity.objects.create(project=project, name=form.cleaned_data['name'], start_date=form.cleaned_data['start_date'], end_date=form.cleaned_data['end_date'], description=form.cleaned_data['description'], location=form.cleaned_data['location'], result_goal=form.cleaned_data['result_goal'], result_real=form.cleaned_data['result_real'], created_by=request.user.get_profile(), ) messages.success(request, u'เพิ่มกิจกรรมเรียบร้อย') return redirect('view_project_activities', (project.id)) else: form = ActivityModifyForm() return render_page_response(request, 'activities', 'page_program/project_activities_modify_activity.html', {'project':project, 'form':form})
def view_project_edit_project(request, project_id): project = get_object_or_404(Project, pk=project_id) if project.plan and not permission.has_role_with_obj(request.user, ('sector_manager', 'sector_manager_assistant', 'sector_specialist'), project.plan.master_plan): return access_denied(request) if project.program and not permission.access_obj(request.user, 'program project edit', program): return access_denied(request) if request.method == 'POST': form = ProjectModifyForm(request.POST) if form.is_valid(): project.ref_no = form.cleaned_data.get('ref_no') project.contract_no = form.cleaned_data.get('contract_no') project.name = form.cleaned_data.get('name') project.abbr_name = form.cleaned_data.get('abbr_name') project.description = form.cleaned_data.get('description') project.start_date = form.cleaned_data.get('start_date') project.end_date = form.cleaned_data.get('end_date') project.save() messages.success(request, u'แก้ไขโครงการเรียบร้อย') return redirect('view_project_overview', (project.id)) else: if project.program: form = ProjectModifyForm(initial={'program_id':project.program.id, 'project_id':project.id, 'ref_no':project.ref_no, 'contract_no':project.contract_no, 'name':project.name, 'description':project.description, 'start_date':project.start_date, 'end_date':project.end_date}) else: form = ProjectModifyForm(initial={'program_id':'', 'project_id':project.id, 'ref_no':project.ref_no, 'contract_no':project.contract_no, 'name':project.name, 'description':project.description, 'start_date':project.start_date, 'end_date':project.end_date}) project.removable = Activity.objects.filter(project=project).count() == 0 return render_page_response(request, '', 'page_program/project_edit_project.html', {'project':project, 'form':form})
def render(self, context): user = self.user.resolve(context) role_names = self.role_names obj = self.obj.resolve(context) roles = [role_name.strip() for role_name in role_names.split(',')] if permission.has_role_with_obj(user, roles, obj): output = self.nodelist_true.render(context) return output else: output = self.nodelist_false.render(context) return output
def display_activity_header(user, activity): if activity.project.plan: header_html = unicode('<div class="supertitle"><a href="%s">โครงการ %s - %s</a></div><h1>กิจกรรม %s</h1>', 'utf-8') % (reverse('view_project_overview', args=[activity.project.id]), activity.project.ref_no, activity.project.name, activity.name) if permission.has_role_with_obj(user, ('sector_manager', 'sector_manager_assistant', 'sector_specialist'), activity.project.plan.master_plan): header_html = header_html + unicode('<div class="subtitle"><img src="%s/images/icons/edit.png" class="icon"/> <a href="%s">แก้ไขกิจกรรม</a></div>', 'utf-8') % (settings.MEDIA_URL, reverse('view_activity_edit_activity', args=[activity.id])) else: header_html = unicode('<div class="supertitle"><a href="%s">แผนงาน %s</a> » <a href="%s">โครงการ %s - %s</a></div><h1>กิจกรรม %s</h1>', 'utf-8') % (reverse('view_program_overview', args=[activity.project.program.id]), activity.project.program.ref_no, reverse('view_project_overview', args=[activity.project.id]), activity.project.ref_no, activity.project.name, activity.name) if permission.access_obj(user, 'program activity edit', activity.project.program): header_html = header_html + unicode('<div class="subtitle"><img src="%s/images/icons/edit.png" class="icon"/> <a href="%s">แก้ไขกิจกรรม</a></div>', 'utf-8') % (settings.MEDIA_URL, reverse('view_activity_edit_activity', args=[activity.id])) return header_html
def view_activity_delete_activity(request, activity_id): activity = get_object_or_404(Activity, pk=activity_id) project = activity.project if project.plan and not permission.has_role_with_obj(request.user, ('sector_manager', 'sector_manager_assistant', 'sector_specialist'), project.plan.master_plan): return access_denied(request) if project.program and not permission.access_obj(request.user, 'program activity delete', project.program): return access_denied(request) activity.delete() messages.success(request, u'ลบโครงการเรียบร้อย') return redirect('view_project_activities', (project.id))
def display_budget_header(user, schedule): if schedule.program: return unicode('<div class="supertitle"><a href="%s">แผนงาน %s - %s</a></div><h1>งวดเบิกจ่ายวันที่ %s</h1>', 'utf-8') % (reverse('view_program_overview', args=[schedule.program.id]), schedule.program.ref_no, schedule.program.name, utilities.format_full_date(schedule.schedule_on)) elif schedule.project: if schedule.project.plan: header_html = unicode('<div class="supertitle"><a href="%s">แผน %s - %s</a></div><h1>โครงการ (%s) %s</h1>', 'utf-8') % (reverse('view_master_plan_overview', args=[schedule.project.plan.master_plan.id]), schedule.project.plan.master_plan.ref_no, schedule.project.plan.master_plan.name, schedule.project.ref_no, schedule.project.name) if permission.has_role_with_obj(user, ('sector_manager', 'sector_manager_assistant', 'sector_specialist'), schedule.project.plan.master_plan): header_html = header_html + unicode('<div class="subtitle"><img src="%s/images/icons/edit.png" class="icon"/> <a href="%s">แก้ไขโครงการ</a></div>', 'utf-8') % (settings.MEDIA_URL, reverse('view_project_edit_project', args=[schedule.project.id])) else: header_html = unicode('<div class="supertitle"><a href="%s">แผนงาน %s - %s</a></div><h1>โครงการ (%s) %s</h1>', 'utf-8') % (reverse('view_program_overview', args=[schedule.project.program.id]), schedule.project.program.ref_no, schedule.project.program.name, schedule.project.ref_no, schedule.project.name) if permission.access_obj(user, 'program project edit', schedule.project.program): header_html = header_html + unicode('<div class="subtitle"><img src="%s/images/icons/edit.png" class="icon"/> <a href="%s">แก้ไขโครงการ</a></div>', 'utf-8') % (settings.MEDIA_URL, reverse('view_project_edit_project', args=[schedule.project.id])) return ''
def view_project_delete_project(request, project_id): project = get_object_or_404(Project, pk=project_id) if project.plan and not permission.has_role_with_obj(request.user, ('sector_manager', 'sector_manager_assistant', 'sector_specialist'), project.plan.master_plan): return access_denied(request) if project.program and not permission.access_obj(request.user, 'program project delete', program): return access_denied(request) if not Activity.objects.filter(project=project).count(): project.delete() messages.success(request, u'ลบโครงการเรียบร้อย') else: messages.error(request, 'ไม่สามารถลบโครงการที่มีกิจกรรมอยู่ได้') if project.plan: return redirect('view_master_plan_programs', (project.plan.master_plan.id)) else: return redirect('view_program_projects', (program.id))