コード例 #1
0
ファイル: views.py プロジェクト: panuta/thaihealthsms
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})
コード例 #2
0
ファイル: views.py プロジェクト: panuta/thaihealthsms
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})
コード例 #3
0
ファイル: views.py プロジェクト: panuta/thaihealthsms
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})
コード例 #4
0
ファイル: views.py プロジェクト: panuta/thaihealthsms
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})
コード例 #5
0
 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
コード例 #6
0
    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
コード例 #7
0
ファイル: core_tags.py プロジェクト: panuta/thaihealthsms
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> &#187; <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
コード例 #8
0
ファイル: views.py プロジェクト: panuta/thaihealthsms
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))
コード例 #9
0
ファイル: core_tags.py プロジェクト: panuta/thaihealthsms
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 ''
コード例 #10
0
ファイル: views.py プロジェクト: panuta/thaihealthsms
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))