Пример #1
0
def list_vf(request):
    """
    display the list of project presets forms.
    This page allow delete selected presets.
    Also it keep links to "Add preset", "Create page from preset" & "View preset data".
    """
    cv = get_cv(request)

    if not check_permission(cv, perm_index=25):  # view preset data
        messages.error(request, "Access denied")
        return redirect("erp_home")
    else:
        manage = False
        if check_permission(cv, perm_index=26):  # manage preset data
            manage = True
    stage = request.REQUEST.get('stage', 'input')
    if stage == 'confirm' and request.method == "POST":
        if manage:
            presets_del = request.session.get('presets_del', None)
            for pst in presets_del:
                for prj in Project.objects.filter(preset=pst):
                    prj.preset = None
                pst.delete()
            del request.session['presets_del']
            messages.success(
                request,
                'Selected project presets has been deleted successfully.')
        else:
            messages.error(request, "Access denied")
            return redirect("erp_home")
    if stage == 'validate' and request.method == "POST":
        if manage:
            preset_mforms = PresetBrieflyMFormset(request.POST)
            if preset_mforms.is_valid():
                if preset_mforms.deleted_forms:
                    request.session['presets_del'] = [
                        form.instance for form in preset_mforms.deleted_forms
                    ]
                    return render_to_response(
                        "projects/presets/del.html", {
                            'cv': get_cv(request),
                            'nav': "project",
                            'presets_del': request.session['presets_del'],
                        }, RequestContext(request))
        else:
            messages.error(request, "Access denied")
            return redirect("erp_home")
    # stage == input
    preset_mforms = PresetBrieflyMFormset()
    return render_to_response("projects/presets/list.html", {
        'cv': cv,
        'nav': "project",
        'preset_mforms': preset_mforms,
    }, RequestContext(request))
Пример #2
0
def mod_ss_vf(request, prj_id=None):
    cv = get_cv(request)
    if not check_permission(cv, perm_index=17): # manage project screenshots
        messages.error(request, "Access denied")
        return redirect("erp_home")
    stage = request.REQUEST.get('stage', None)
    if prj_id:
        try:
            project = Project.objects.get(id=int(prj_id))
        except Project.DoesNotExist, Project.MultipleObjectsReturned:
            messages.error(request, 'Project was not found.')
            return redirect("erp_projects")
        if stage == 'validate':
            pss_iforms = ProjectSSIFormset(request.POST, request.FILES, instance=project)
            if pss_iforms.is_valid():
                pss_iforms.save()
                messages.success(request, 'Project Screenshot data saved successfully.')
            else:
                messages.error(request, 'Project Screenshot data didn`t save. You have some errors.')
        # stage == input
        pss_iforms = ProjectSSIFormset(instance=project)
        return render_to_response(
            "projects/mod_ss.html",
            {
                'cv': cv,
                'nav': "project",
                'pss_iforms': pss_iforms,},
            RequestContext(request))
Пример #3
0
def view_cv_vf(request, cv_id=None, output=""):
    """
    view CV full data:
    - personal data (if is the user in the tt-system then wiew tt-data)
    - contact data
    - foreign languages (fl) skills.
    - technical expertise (te) skills.
    - projects data.
    """
    if cv_id:
        try:
            view_cv = CV.objects.get(id=int(cv_id))
            cv = get_cv(request)
            if view_cv != cv:
                if not check_permission(cv, perm_index=40):  # view CV data
                    messages.error(request, "Access denied")
                    return redirect("erp_home")
            return render_to_response(
                "cv/view_cv%s.html" % output, {
                    'cv': cv,
                    'nav': "cv",
                    'view_cv': view_cv,
                    'fls': view_cv.fl.all(),
                    'skills': view_cv.skills.all(),
                    'certificates': view_cv.certificates.all(),
                    'wgs': view_cv.wg.all(),
                    'prev_projects': view_cv.prev_projects.all(),
                }, RequestContext(request))
        except CV.DoesNotExist:
            return None
    else:
        messages.warning(request, 'The CV didn`t found.')
        return redirect("erp_home")
Пример #4
0
def view_vf(request, prj_id=None, output=''):
    """
    display a full info about current project.
    """
    if prj_id:
        try:
            project = Project.objects.get(id=int(prj_id))
        except Project.DoesNotExist, Project.MultipleObjectsReturned:
            messages.error(request, 'Project was not found.')
            return redirect("erp_projects")
        cv = get_cv(request)
        if not check_permission(cv, perm_index=10): # view project data
            messages.error(request, "Access denied")
            return redirect("erp_home")
        return render_to_response(
            "projects/view%s.html" % output,
            {
                'cv': cv,
                'nav': "project",
                'project': project,
                'reqs': project.requirements.all(),
                'sss': project.screenshots.all(),
                'wg': project.wg.all(),
                },
            RequestContext(request))
Пример #5
0
def add_cv_vf(request):
    """
    display add CV template form.
    check data & save.
    """
    cv = get_cv(request)
    if not check_permission(cv, perm_index=49):  # create new CV
        messages.error(request, "Access denied")
        return redirect("erp_home")
    stage = request.REQUEST.get('stage', None)
    if stage == 'validate':
        cv_mform = CVAddMForm(request.POST)
        if cv_mform.is_valid():
            cv_mform.save()
            messages.success(request, 'New CV template created successfully.')
            return redirect("erp_cvs_manage")
        else:  # errors in saving
            messages.error(request, 'CV didn`t save. There were some errors.')
    else:  # stage == input
        cv_mform = CVAddMForm()
    return render_to_response("cv/add_cv.html", {
        'cv': cv,
        'nav': "cv",
        'cv_mform': cv_mform
    }, RequestContext(request))
Пример #6
0
def view_vf(request, cv_id=None, pp_id=None, output=''):
    """
    Display the full data for selected previous project.
    Also display print version of previous project.
    """
    if cv_id and pp_id:
        try:
            view_cv = CV.objects.get(id=int(cv_id))
            pp = PrevProject.objects.get(id=int(pp_id))
        except CV.DoesNotExist:
            messages.error(request, "CV was not found.")
            redirect("erp_home")
        except PrevProject.DoesNotExist:
            messages.error(request, "Previous Project was not found.")
            redirect("erp_home")
    else:
        messages.error(request, "Bad Request.")
        redirect("erp_home")
    cv = get_cv(request)
    if view_cv != cv:
        if not check_permission(cv,
                                perm_index=46):  # manage prev projects data
            messages.error(request, "Access denied")
            return redirect("erp_home")
    return render_to_response('cv/prev_projects/view%s.html' % output, {
        'cv': cv,
        'view_cv': view_cv,
        'pp': pp,
        'sss': pp.screenshots.all(),
    }, RequestContext(request))
Пример #7
0
def mod_permissions_vf(request, pos_id=None):
    """
    display & edit permissions for selected position
    """
    def make_perm_list(perm_str):
        perms = []
        i = 0
        for perm in PERMISSIONS:
            if perm:
                val = False
                if perm_str[i] == "1":
                    val = True
                perms.append((perm, val))
            i += 1
        return perms
    # ----- MAIN -----
    cv = get_cv(request)
    if not check_permission(cv, perm_index=0): # view permissions
        messages.error(request, "Access denied")
        return redirect("erp_home")
    else:
        manage = False
        if check_permission(cv, perm_index=1): # edit permissions
            manage = True
    if not pos_id:
        messages.error(request, 'Bad request')
        return redirect("erp_home")
    try:
        position = Position.objects.get(id=int(pos_id))
    except Position.DoesNotExist, Position.MultipleObjectsReturned:
        messages.error(request, 'Position was not found.')
        return redirect("cv_positions")
Пример #8
0
def list_vf(request):
    cv = get_cv(request)
    if not check_permission(cv, perm_index=2):  # view customer data
        messages.error(request, "Access denied")
        return redirect("erp_home")
    return render_to_response("customers/customers.html", {
        'cv': cv,
        'nav': "customer",
        'customers': Customer.objects.all(),
    }, RequestContext(request))
Пример #9
0
def add_req_vf(request, prj_id=None):
    cv = get_cv(request)
    if not check_permission(cv, perm_index=16): # manage project requirements
        messages.error(request, "Access denied")
        return redirect("erp_home")
    stage = request.REQUEST.get('stage', None)
    if prj_id:
        try:
            project = Project.objects.get(id=int(prj_id))
        except Project.DoesNotExist, Project.MultipleObjectsReturned:
            messages.error(request, 'Project was not found.')
            return redirect("erp_projects")
        prj_reqs = [x.skill for x in project.requirements.all()]
        if stage == 'validate':
            prj_req_mforms = ProjectAddReqMFormset(request.POST)
            if prj_req_mforms.is_valid():
                is_add = is_del = False
                for req in prj_req_mforms:
                    cd = req.cleaned_data
                    if cd['check']:
                        if cd['id'] not in prj_reqs:
                            ProjectRequirement.objects.create(project=project, skill=cd['id'])
                            is_add = True
                    else:
                        if cd['id'] in prj_reqs:
                            try:
                                ProjectRequirement.objects.get(project=project, skill=cd['id']).delete()
                                is_del = True
                            except ProjectRequirement.DoesNotExist:
                                pass
                if is_add:
                    messages.success(request, 'The Project Requirements has been added successfully.')
                if is_del:
                    messages.success(request, 'The some Projects Requirements has been deleted successfully.')
                return redirect("erp_project", prj_id=project.id)
        # stage == input
        reqs = []
        for req in Skill.objects.all():
            if req in prj_reqs:
                reqs.append({'check': True})
            else:
                reqs.append({'check': False})
        prj_req_mforms = ProjectAddReqMFormset(initial=reqs)
        return render_to_response(
            "projects/add_req.html",
            {
                'cv': cv,
                'nav': "project",
                'project': project,
                'prj_req_mforms': prj_req_mforms,
                },
            RequestContext(request))
Пример #10
0
def mod_ss_vf(request, cv_id=None, pp_id=None):
    """
    Save the screenshots for CV previous projects.
    make redirect to previous project modify data page.
    """
    if cv_id and pp_id:
        try:
            view_cv = CV.objects.get(id=int(cv_id))
            pp = PrevProject.objects.get(id=int(pp_id))
        except CV.DoesNotExist:
            messages.error(request, "CV was not found.")
            redirect("erp_home")
        except PrevProject.DoesNotExist:
            messages.error(request, "Previous Project was not found.")
            redirect("erp_home")
    else:
        messages.error(request, "Bad Request.")
        redirect("erp_home")
    cv = get_cv(request)
    if view_cv != cv:
        if not check_permission(cv,
                                perm_index=46):  # manage prev projects data
            messages.error(request, "Access denied")
            return redirect("erp_home")
    stage = request.REQUEST.get('stage', 'input')
    if stage == 'validate':
        pp_ss_iforms = PrevProjectSSIFormset(request.POST,
                                             request.FILES,
                                             instance=pp)
        if pp_ss_iforms.is_valid():
            pp_ss_iforms.save()
            messages.success(
                request,
                'Screenshot(s) for Previous Project saved successfully.')
            return redirect("erp_cv_prevproject_mod",
                            cv_id=view_cv.id,
                            pp_id=pp.id)
        else:
            messages.error(
                request,
                'Screensoot(s) for Previous Project didn`t save. You have some errors.'
            )
    return render_to_response(
        'cv/prev_projects/mod.html', {
            'cv': cv,
            'view_cv': view_cv,
            'pp_mform': PrevProjectMForm(instance=pp),
            'op': "mod",
            'pp_ss_iforms': pp_ss_iforms,
        }, RequestContext(request))
Пример #11
0
def mod_cv_contacts_vf(request, cv_id=None):
    """
    display add/modify/delete fl skills form.
    check data & save.
    """
    if cv_id:
        try:
            view_cv = CV.objects.get(id=int(cv_id))
            cv = get_cv(request)
            if view_cv != cv:
                if not check_permission(
                        cv, perm_index=41):  # edit CV personal data
                    messages.error(request, "Access denied")
                    return redirect("erp_home")
            stage = request.REQUEST.get('stage', 'input')
            if stage == 'validate':
                cvcontact_iforms = CVContactIFormset(request.POST,
                                                     instance=view_cv)
                if cvcontact_iforms.is_valid():
                    cvcontact_iforms.save()
                    messages.success(request, 'The Contact Info updated.')
                    stage = 'input'
                else:  # errors in save
                    messages.error(
                        request,
                        'The Contact Info didn`t update. There were some problems.'
                    )
            # stage == input
            if stage == 'input':
                cvcontact_iforms = CVContactIFormset(instance=view_cv)
            return render_to_response("cv/mod_contacts.html", {
                'cv': cv,
                'nav': "cv",
                'cv_contact_iforms': cvcontact_iforms
            }, RequestContext(request))
        except CV.DoesNotExist:
            messages.error(request, "Bad request")
            return redirect("erp_home")
    else:  # cv is bad or missing
        messages.warning(request, 'The CV didn`t found.')
        return redirect("erp_home")
Пример #12
0
def del_vf(request, cv_id=None):
    """
    Display the list of previous projects for current CV user.
    """
    if cv_id:
        try:
            view_cv = CV.objects.get(id=int(cv_id))
        except CV.DoesNotExist:
            messages.error(request, "CV was not found.")
            redirect("erp_home")
    else:
        messages.error(request, "Bad Request.")
        redirect("erp_home")
    cv = get_cv(request)
    if view_cv != cv:
        if not check_permission(cv,
                                perm_index=46):  # manage prev projects data
            messages.error(request, "Access denied")
            return redirect("erp_home")
    stage = request.REQUEST.get('stage', 'input')
    if stage == 'confirm':
        pp_iforms = PrevProjectIFormset(request.POST, instance=view_cv)
        if pp_iforms.is_valid():
            pp_iforms.save()
            messages.success(
                request,
                'Selected Previous Project(s) have been delete successfully.')
            return redirect("erp_cv", cv_id=view_cv.id)
        else:
            messages.error(
                request,
                'Selected Previous Project(s) haven`t been delete. You have some errors.'
            )
    elif stage == 'input':
        pp_iforms = PrevProjectIFormset(instance=view_cv)
    return render_to_response('cv/prev_projects/del.html', {
        'cv': cv,
        'view_cv': view_cv,
        'pp_iforms': pp_iforms,
    }, RequestContext(request))
Пример #13
0
def mod_vf(request, c_id=None, op=""):
    cv = get_cv(request)
    if not check_permission(cv, perm_index=3):  # manage customer data
        messages.error(request, "Access denied")
        return redirect("erp_home")
    stage = request.REQUEST.get('stage', None)
    if op == 'add':
        if stage == 'validate':
            c_mform = CustomerMForm(request.POST)
            if c_mform.is_valid():
                c_mform.save()
                messages.success(request, 'Customer data saved successfully.')
                return redirect("erp_customers")
            else:
                messages.error(
                    request,
                    'Customer data didn`t save. You have some errors.')
        else:
            c_mform = CustomerMForm()
    else:  # op == 'mod' or 'del'
        if c_id:
            customer = Customer.objects.get(id=int(c_id))
            if stage == 'validate':
                try:
                    c_mform = CustomerMForm(request.POST, instance=customer)
                    if c_mform.is_valid():
                        c_mform.save()
                        messages.success(request,
                                         'Customer data saved successfully.')
                        return redirect("erp_customers")
                    else:
                        messages.error(
                            request,
                            'Customer data didn`t save. You have some errors.')
                except Customer.DoesNotExist, Customer.MultipleObjectsReturned:
                    messages.error(request, 'Customer was not found.')
                    redirect("customers")
            else:
                c_mform = CustomerMForm(instance=customer)
        else:
Пример #14
0
def mod_cv_projects_vf(request, cv_id=None):
    """
    display modify project data form.
    check data & save.
    """
    if cv_id:
        try:
            view_cv = CV.objects.get(id=int(cv_id))
            cv = get_cv(request)
            if view_cv != cv:
                if not check_permission(
                        cv, perm_index=45):  # edit CV projects data
                    messages.error(request, "Access denied")
                    return redirect("erp_home")
            stage = request.REQUEST.get('stage', None)
            if stage == 'validate':
                cv_prj_iforms = CVProject_IFormset(request.POST,
                                                   instance=view_cv)
                if cv_prj_iforms.is_valid():
                    cv_prj_iforms.save()
                    messages.success(request, 'The Project data updated.')
                    return redirect("erp_cv", cv_id=view_cv.id)
                else:  # errors in save
                    messages.error(
                        request,
                        'The Project data didn`t update. There were some problems.'
                    )
            else:  # stage == input
                cv_prj_iforms = CVProject_IFormset(instance=view_cv)
            return render_to_response("cv/mod_projects.html", {
                'cv': cv,
                'nav': "cv",
                'cv_prj_iforms': cv_prj_iforms
            }, RequestContext(request))
        except CV.DoesNotExist:
            return None
    else:  # cv is bad or missing
        messages.warning(request, 'The CV didn`t found.')
        return redirect("erp_home")
Пример #15
0
def list_vf(request):
    """
    display list projects.
    view some projects data, mod pause state, delete projects.
    check & save data
    """
    cv = get_cv(request)

    if not check_permission(cv, perm_index=10): # view project data
        messages.error(request, "Access denied")
        return redirect("erp_home")
    return render_to_response(
        "projects/list.html",
        {
            'cv': cv,
            'nav': "project",
            'tab': request.REQUEST.get('tab', ''),
            'states': ['prepare', 'work', 'pause', 'finish'],
            'presets': Preset.objects.all(),
            'projects': Project.objects.select_related(depth=1).all().order_by('date_start'),
            },
        RequestContext(request))
Пример #16
0
def view_vf(request, pst_id=None, output=''):
    """
    display the full preset data.
    output to screen & printer.
    Also this page keep links to edit preset data, Add/Del & Edit Technical requirements.
    """
    cv = get_cv(request)
    if not check_permission(cv, perm_index=25):  # view preset data
        messages.error(request, "Access denied")
        return redirect("erp_home")
    if pst_id:
        try:
            preset = Preset.objects.get(id=int(pst_id))
        except Preset.DoesNotExist, Preset.MultipleObjectsReturned:
            messages.error(request, 'Project Preset was not found.')
            return redirect("erp_project_presets")
        reqs = preset.requirements.all()
        return render_to_response("projects/presets/view%s.html" % output, {
            'cv': cv,
            'nav': "project",
            'preset': preset,
            'reqs': reqs,
        }, RequestContext(request))
Пример #17
0
def mod_req_vf(request, pst_id=None):
    """
    Display formset with selected requirements for edit theirs description.
    """
    cv = get_cv(request)
    if not check_permission(cv, perm_index=26):  # manage preset data
        messages.error(request, "Access denied")
        return redirect("erp_home")
    stage = request.REQUEST.get('stage', None)
    if pst_id:
        try:
            preset = Preset.objects.get(id=int(pst_id))
        except Project.DoesNotExist, Project.MultipleObjectsReturned:
            messages.error(request, 'Project Preset was not found.')
            return redirect("erp_project_presets")
        if stage == 'validate':
            pst_req_iforms = PresetReqIFormset(request.POST, instance=preset)
            if pst_req_iforms.is_valid():
                pst_req_iforms.save()
                messages.success(
                    request,
                    'Project Preset Requirements data saved successfully.')
                return redirect("erp_project_preset", preset.id)
            else:
                messages.error(
                    request,
                    'Project Preset Requirements data didn`t save. You have some errors.'
                )
        # stage == input
        else:
            pst_req_iforms = PresetReqIFormset(instance=preset)
        return render_to_response("projects/presets/mod_req.html", {
            'cv': cv,
            'nav': "project",
            'pst_req_iforms': pst_req_iforms,
        }, RequestContext(request))
Пример #18
0
def view_vf(request, cv_id=None, cert_id=None, output=''):
    """
    Display the full data for selected certificate.
    Also display print version of certificate.
    """
    if cv_id and cert_id:
        try:
            view_cv = CV.objects.get(id=int(cv_id))
            cert = Certificate.objects.get(id=int(cert_id))
        except CV.DoesNotExist:
            messages.error(request, "CV was not found.")
            redirect("erp_home")
        except Certificate.DoesNotExist:
            messages.error(request, "Certificate was not found.")
            redirect("erp_home")
    else:
        messages.error(request, "Bad Request.")
        redirect("erp_home")
    cv = get_cv(request)
    return render_to_response('cv/certificates/view%s.html' % output, {
        'cv': cv,
        'view_cv': view_cv,
        'certificate': cert,
    }, RequestContext(request))
Пример #19
0
def manage_vf(request):
    """
    display list of CV`s, sorted by offices & name/surname.
    for HRM employees only!!!
    view CV, add a new CV template & delete old CV.
    Also modify login, check/uncheck fired flag, select accessLevel.
    """
    cv = get_cv(request)
    if not check_permission(cv, perm_index=40):  # view CV data
        messages.error(request, "Access denied")
        return redirect("erp_home")
    else:
        manage = False
        if check_permission(cv, perm_index=48):  # manage CV service data
            manage = True
    stage = request.REQUEST.get('stage', 'input')
    if stage == 'confirm' and request.method == "POST":
        if manage:
            cvs_del = request.session.get('cvs_del', None)
            for cv in cvs_del:
                if request.session.get('cv_id', None) == cv.id:
                    messages.warning(
                        request,
                        'You deleted also yours CV record. Now oyu don`t have possibility to work in ERP System.'
                    )
                    del request.session['cv_id']
                    if request.session.get('uid', None):
                        del request.session['uid']
                cv.delete()
            del request.session['cvs_del']
            messages.success(request,
                             'Selected CVs has been deleted successfully.')
            if not request.session.get('cv_id', None):
                return redirect("erp_logout")
            stage = 'input'
        else:
            messages.error(request, "Access denied")
            return redirect("erp_home")
    if stage == 'validate' and request.method == "POST":
        if manage:
            cv_mforms = CVManageMFormset(request.POST)
            if cv_mforms.is_valid():
                if cv_mforms.deleted_forms:
                    request.session['cvs_del'] = [
                        form.instance for form in cv_mforms.deleted_forms
                    ]
                    return render_to_response(
                        "cv/del_cvs.html", {
                            'cv': get_cv(request),
                            'nav': "cv",
                            'cvs_del': request.session['cvs_del'],
                        }, RequestContext(request))
                cv_mforms.save()
                messages.success(request,
                                 'CV settings has been save succesfully.')
            else:  # form is not valid
                messages.error(
                    request,
                    'CV settings didn`t update. There were some errors.')
        else:
            messages.error(request, "Access denied")
            return redirect("erp_home")
    # stage == input
    if stage == 'input':
        cv_mforms = CVManageMFormset(
            queryset=CV.objects.order_by('name', 'surname'))
    return render_to_response(
        "cv/manage.html", {
            'cv': cv,
            'nav': "cv",
            'cv_mforms': cv_mforms,
            'offices': ttOffices.objects.all(),
            'positions': Position.objects.all()
        }, RequestContext(request))
Пример #20
0
def view_vf(request, c_id=None):
    return render_to_response("customers/customers.html", {
        'cv': get_cv(request),
        'nav': "customer",
    }, RequestContext(request))
Пример #21
0
def mod_vf(request, cv_id=None, pp_id=None, op=''):
    """
    Display the full data for selected previous project.
    Also display print version of previous project.
    """
    if cv_id:
        try:
            view_cv = CV.objects.get(id=int(cv_id))
        except CV.DoesNotExist:
            messages.error(request, "CV was not found.")
            redirect("erp_home")
    else:
        messages.error(request, "Bad Request.")
        redirect("erp_home")
    cv = get_cv(request)
    if view_cv != cv:
        if not check_permission(cv,
                                perm_index=46):  # manage prev projects data
            messages.error(request, "Access denied")
            return redirect("erp_home")
    stage = request.REQUEST.get('stage', 'input')
    pp_mform = None
    pp_ss_iforms = None
    # add empty project
    if op == 'add':
        if stage == 'validate':
            if stage == 'validate':
                pp_mform = PrevProjectMForm(request.POST)
                if pp_mform.is_valid():
                    pp_mform.save()
                    messages.success(
                        request, 'Previous Project data saved successfully.')
                    return redirect("erp_cv_prevproject_mod",
                                    cv_id=view_cv.id,
                                    pp_id=pp_mform.instance.id)
                else:
                    messages.error(
                        request,
                        'Project data didn`t save. You have some errors.')
        else:
            pp_mform = PrevProjectMForm(initial={'cv': view_cv})
    # modify data of project or delete
    else:
        if pp_id:
            try:
                pp = PrevProject.objects.get(id=int(pp_id))
                if stage == 'confirm':
                    pp.delete()
                    messages.success(
                        request, 'Previous Project data deleted successfully.')
                    return redirect("erp_cv", cv_id=view_cv.id)
                if stage == 'validate':
                    pp_mform = PrevProjectMForm(request.POST, instance=pp)
                    if pp_mform.is_valid():
                        pp_mform.save()
                        messages.success(
                            request,
                            'Previous Project data saved successfully.')
                        return redirect("erp_cv_prevproject_mod",
                                        cv_id=view_cv.id,
                                        pp_id=pp.id)
                    else:
                        messages.error(
                            request,
                            'Previous Project data didn`t save. You have some errors.'
                        )
                # stage == input
                else:
                    pp_mform = PrevProjectMForm(instance=pp)
                pp_ss_iforms = PrevProjectSSIFormset(instance=pp)
            except PrevProject.DoesNotExist, PrevProject.MultipleObjectsReturned:
                messages.error(request, 'Project was not found.')
                return redirect("erp_cv", cv_id=view_cv.id)
        else:
Пример #22
0
            c_mform = CustomerMForm()
    else:  # op == 'mod' or 'del'
        if c_id:
            customer = Customer.objects.get(id=int(c_id))
            if stage == 'validate':
                try:
                    c_mform = CustomerMForm(request.POST, instance=customer)
                    if c_mform.is_valid():
                        c_mform.save()
                        messages.success(request,
                                         'Customer data saved successfully.')
                        return redirect("erp_customers")
                    else:
                        messages.error(
                            request,
                            'Customer data didn`t save. You have some errors.')
                except Customer.DoesNotExist, Customer.MultipleObjectsReturned:
                    messages.error(request, 'Customer was not found.')
                    redirect("customers")
            else:
                c_mform = CustomerMForm(instance=customer)
        else:
            messages.error(request, 'Bad request')
            return redirect("customers")
    return render_to_response("customers/customer_mod.html", {
        'cv': get_cv(request),
        'nav': "customer",
        'op': op,
        'c_mform': c_mform
    }, RequestContext(request))
Пример #23
0
def filter_vf(request, op=''):
    """
    display list projects by defined filter.
    view some projects data, mod pause state, delete projects.
    check & save data
    """
    results_data = None
    results_data_flag = False
    results_presets = None
    results_presets_flag = False
    preset_value = None
    results_reqs = None
    results_reqs_flag = False
    if op == 'data' and request.method == "POST":
        results_data_flag = True
        project_data_form = ProjectFilterMForm(request.POST)
        if project_data_form.is_valid():
            cd = project_data_form.cleaned_data
            results_data = Project.objects.all()
            if cd.get('title'):
                results_data = results_data.filter(title__icontains=cd['title'])
            if cd.get('service'):
                results_data = results_data.filter(service__icontains=cd['service'])
            if cd.get('industry'):
                results_data = results_data.filter(industry__icontains=cd['industry'])
            if cd.get('date_start'):
                results_data = results_data.filter(date_start__gte=cd['date_start'])
            if cd.get('date_finish'):
                results_data = results_data.filter(date_finish__lte=cd['date_finish'])
    else:
        project_data_form = ProjectFilterMForm()
    if op == 'presets' and request.method == "POST":
        results_presets_flag = True
        if request.POST.get('preset'):
            preset_value = int(request.POST['preset'])
            if preset_value == 0:
                preset_value = None
            results_data = Project.objects.filter(preset=preset_value)
    presets = Preset.objects.all()
    if op == 'reqs' and request.method == "POST":
        results_reqs_flag = True
        project_reqs_forms = ProjectFilterReqsMFormset(request.POST)
        if project_reqs_forms.is_valid():
            results_data = tuple(rec for rec in Project.objects.all())
            for frm in project_reqs_forms:
                cd = frm.cleaned_data
                if cd.get('query'):
                    tags = tuple(map(unicode.strip, cd['query'].split(',')))
                    for tag in tags:
                        results_data = tuple(rec for rec in results_data if rec.has_req(cd['id']) and rec.requirements.get(skill=cd['id']).has_tag(tag))
    else:
        project_reqs_forms = ProjectFilterReqsMFormset()
    return render_to_response(
        "projects/filter.html",
        {
            'cv': get_cv(request),
            'nav': "project",
            'tab': request.REQUEST.get('tab', ''),
            'project_data_form': project_data_form,
            'presets': presets,
            'project_reqs_forms': project_reqs_forms,
            'results_data': results_data,
            'results_data_flag': results_data_flag,
            'results_presets_flag': results_presets_flag,
            'results_reqs_flag': results_reqs_flag,
            'presets_value': preset_value,
            },
        RequestContext(request))
Пример #24
0
def positions_vf(request):
    """
    display position list formset.
    operations are add new position, modify data & delete positions.
    check data & save.
    """
    cv = get_cv(request)
    if not check_permission(cv, perm_index=35): # view position data
        messages.error(request, "Access denied")
        return redirect("erp_home")
    else:
        manage = False
        if check_permission(cv, perm_index=36): # manage position data
            manage = True
    positions = None
    pos_mforms = None
    stage = request.REQUEST.get('stage', None)
    if stage == 'confirm':
        if manage:
            pos_del = request.session.get('pos_del', None)
            for pos in pos_del:
                pos.delete()
            del request.session['pos_del']
        else:
            messages.error(request, "Access denied")
            return redirect("erp_home")
    if stage == 'validate':
        if manage:
            pos_mforms = PositionMFormset(request.POST)
            if pos_mforms.is_valid():
                if pos_mforms.deleted_forms:
                    request.session['pos_del'] = [form.instance for form in pos_mforms.deleted_forms]
                    return render_to_response(
                        "cv/del_positions.html",
                        {
                            'cv': get_cv(request),
                            'nav': "cv",
                            'pos_del': request.session['pos_del'],
                            },
                        RequestContext(request))
                pos_mforms.save()
                messages.success(request, 'Positions updated successfully.')
            else: # errors in saving
                messages.error(request, 'Positions didn`t save. There were some errors.')
        else:
            messages.error(request, "Access denied")
            return redirect("erp_home")
    else: # stage == input
        if manage:
            pos_mforms = PositionMFormset()
        else:
            positions = Position.objects.all()
    return render_to_response(
        "cv/positions.html",
        {
            'cv': cv,
            'nav': "cv",
            'positions': positions,
            'pos_mforms': pos_mforms,
            },
        RequestContext(request))
Пример #25
0
def skills_vf(request):
    """
    display te skills list formset.
    operations are add new skills, modify data & delete skills.
    check data & save.
    """
    cv = get_cv(request)
    if not check_permission(cv,
                            perm_index=30):  # view skills/requirements data
        messages.error(request, "Access denied")
        return redirect("erp_home")
    else:
        manage = False
        if check_permission(cv,
                            perm_index=31):  # manage skills/requirements data
            manage = True
    skills = None
    skill_mforms = None
    stage = request.REQUEST.get('stage', None)
    if stage == 'confirm' and request.method == "POST":
        if manage:
            skills_del = request.session.get('skills_del', None)
            for skill in skills_del:
                skill.delete()
            del request.session['skills_del']
            messages.success(request,
                             'Selected skills has been deleted successfully.')
        else:
            messages.error(request, "Access denied")
            return redirect("erp_home")
    if stage == 'validate' and request.method == "POST":
        if manage:
            skill_mforms = SkillMFormset(request.POST)
            if skill_mforms.is_valid():
                if skill_mforms.deleted_forms:
                    request.session['skills_del'] = [
                        form.instance for form in skill_mforms.deleted_forms
                    ]
                    return render_to_response(
                        "cv/del_skills.html", {
                            'cv': get_cv(request),
                            'nav': "cv",
                            'skills_del': request.session['skills_del'],
                        }, RequestContext(request))
                skill_mforms.save()
                messages.success(request, 'Skills updated successfully.')
            else:  # errors in saving
                messages.error(request,
                               'Skills didn`t save. There were some errors.')
        else:
            messages.error(request, "Access denied")
            return redirect("erp_home")
    # stage == input
    if manage:
        skill_mforms = SkillMFormset()
    else:
        skills = Skill.objects.all()
    return render_to_response("cv/skills.html", {
        'cv': cv,
        'nav': "cv",
        'skills': skills,
        'skill_mforms': skill_mforms,
    }, RequestContext(request))
Пример #26
0
def mod_vf(request, pst_id=None, prj_id=None, op=''):
    """
    display the form for modify preset data & manage theirs.
    """
    cv = get_cv(request)
    if not check_permission(cv, perm_index=25):  # view preset data
        messages.error(request, "Access denied")
        return redirect("erp_home")
    project = None
    stage = request.REQUEST.get('stage', 'input')
    if op == 'add':
        if stage == 'validate':
            p_mform = PresetMForm(request.POST)
            if p_mform.is_valid():
                p_mform.save()
                messages.success(request,
                                 'Project Preset data saved successfully.')
                return redirect("erp_project_presets")
            messages.error(
                request,
                'Project Preset data didn`t save. You have some errors.')
        else:
            p_mform = PresetMForm()
    elif op == 'project':
        if prj_id:
            try:
                project = Project.objects.get(id=int(prj_id))
            except Project.DoesNotExist:
                messages.error(request, "Project didn`t found.")
                redirect("erp_projects")
            if stage == 'validate':
                p_mform = PresetMForm(request.POST)
                if p_mform.is_valid():
                    p_mform.save()
                    preset = Preset.objects.get(id=p_mform.instance.id)
                    for req in project.requirements.all():
                        PresetRequirement.objects.create(preset=preset,
                                                         skill=req.skill,
                                                         desc=req.desc)
                        messages.success(
                            request,
                            'Project Preset data saved successfully.<br>Also to preset were adding all requirements from project "%s"'
                            % project)
                        return redirect("erp_project_preset", pst_id=preset.id)
                messages.error(
                    request,
                    'Project Preset data didn`t save. You have some errors.')
            else:
                p_mform = PresetMForm(
                    initial={
                        'challenge': project.challenge,
                        'service': project.service,
                        'industry': project.industry,
                        'solution': project.solution,
                    })
        else:
            messages.error(request, "Bad request")
            redirect('erp_home')
    else:  # op == 'mod' or 'del'
        if pst_id:
            try:
                preset = Preset.objects.get(id=int(pst_id))
            except Preset.DoesNotExist, Preset.MultipleObjectsReturned:
                messages.error(request, 'Project Preset was not found.')
                return redirect("erp_projects_presets")
            if stage == 'validate':
                if not check_permission(cv,
                                        perm_index=26):  # manage preset data
                    messages.error(request, "Access denied")
                    return redirect("erp_home")
                p_mform = PresetMForm(request.POST, instance=preset)
                if p_mform.is_valid():
                    p_mform.save()
                    messages.success(
                        request, 'Project Preset data saved successfully.')
                    return redirect("erp_project_presets")
                messages.error(
                    request,
                    'Project Preset data didn`t save. You have some errors.')
            else:
                p_mform = PresetMForm(instance=preset)
        else:
Пример #27
0
def mod_wg_vf(request, prj_id=None):
    cv = get_cv(request)
    if not check_permission(cv, perm_index=19): # edit employee role
        messages.error(request, "Access denied")
        return redirect("erp_home")
    stage = request.REQUEST.get('stage', 'input')
    if prj_id:
        try:
            project = Project.objects.get(id=int(prj_id))
        except Project.DoesNotExist, Project.MultipleObjectsReturned:
            messages.error(request, 'Project was not found.')
            return redirect("erp_projects")
        if stage == 'add' and request.method=="POST":
            if not check_permission(cv, perm_index=18): # add/delete employee role
                messages.error(request, "Access denied")
                return redirect("erp_home")
            for key, val in request.POST.items():
                if val=='on':
                    try:
                        emp = CV.objects.get(id=int(key))
                        try:
                            WorkGroup.objects.get(cv=emp, project=project)
                            messages.error(request, "Employee has been already added to this Project Work Group.")
                        except WorkGroup.DoesNotExist:
                            if project.date_start:
                                ds = project.date_start
                            else:
                                ds = date.today()
                            WorkGroup.objects.create(cv=emp, project=project, role="...", date_start=ds)
                            messages.success(request, "Employee %s has been added successfully.<br>Please, edit 'role' & 'Start Date' fields." % cv)
                    except CV.DoesNotExist:
                        messages.error(request, "Employee CV didn`t found.")
            stage = 'input'
        if stage == 'confirm' and request.method == "POST":
            if not check_permission(cv, perm_index=18): # add/delete employee role
                messages.error(request, "Access denied")
                return redirect("erp_home")
            employees_del = request.session.get('employees_del', None)
            for emp in employees_del:
                emp.delete()
            del request.session['employees_del']
            messages.success(request, 'Selected Employees has been deleted successfully from Project Work Group.')
            stage = 'input'
        if stage == 'validate' and request.method=="POST":
            pwg_iforms = ProjectWGIFormset(request.POST, instance=project)
            if pwg_iforms.is_valid():
                if pwg_iforms.deleted_forms:
                    request.session['employees_del'] = [frm.instance for frm in pwg_iforms.deleted_forms]
                    return render_to_response(
                        "projects/del_employees.html",
                        {
                            'cv': cv,
                            'nav': "project",
                            'project': project,
                            'employees_del': request.session['employees_del'],},
                        RequestContext(request))
                pwg_iforms.save()
                messages.success(request, 'Project Work Group data saved successfully.')
            else:
                messages.error(request, 'Project Work Group data didn`t save. You have some errors.')
        # stage == input
        if stage == 'input':
            pwg_iforms = ProjectWGIFormset(instance=project)
            req_tags = project.get_tags()
            req_tags_nums = ProjectRequirementDict(req_tags)
        if check_permission(cv, perm_index=18): # add/delete employee role
            wg_emps = project.get_cvs()
            employees = []
            for pos in Position.projects.all():
                emps = pos.get_cvs()
                emps_finish = ()
                for emp in emps:
                    needed = emp.get_needed_tags(req_tags)
                    if needed:
                        req_tags_nums.add_cv_skills(needed)
                        if emp not in wg_emps:
                            emps_finish = emps_finish + ((emp, needed), )
                if emps_finish:
                    employees.append((pos, emps_finish))
        else:
            employees = None
        return render_to_response(
            "projects/mod_wg.html",
            {
                'cv': cv,
                'nav': "project",
                'project': project,
                'pwg_iforms': pwg_iforms,
                'req_tags_nums': req_tags_nums.source,
                'employees': employees,},
            RequestContext(request))
Пример #28
0
def mod_vf(request, prj_id=None, pst_id=None, op=''):
    stage = request.REQUEST.get('stage', 'input')
    preset = None
    old_project = None
    cv = get_cv(request)
    # make copy of project
    if op == 'copy':
        if prj_id:
            try:
                old_project = Project.objects.get(id=int(prj_id))
            except Project.DoesNotExist:
                messages.error(request, "Project didn`t found. Try again.")
                redirect("erp_projects")
            if not check_permission(cv, perm_index=14): # make copy of project
                messages.error(request, "Access denied")
                return redirect("erp_home")
            if stage == 'validate':
                p_mform = ProjectMForm(request.POST)
                if p_mform.is_valid():
                    p_mform.save()
                    new_project = Project.objects.get(id=p_mform.instance.id)
                    messages.success(request, 'New Project data saved successfully.')
                    for req in old_project.requirements.all():
                        ProjectRequirement.objects.create(project=new_project, skill=req.skill, desc=req.desc)
                    messages.success(request, 'Also to new project were added all requirements from old project "%s"' % old_project)
                    for emp in old_project.wg.all():
                        WorkGroup.objects.create(project=new_project, cv=emp.cv, role=emp.role, desc=emp.desc, date_start=date.today())
                    messages.success(request, 'Also to new project were added all employees from old project "%s" work group.' % old_project)
                    return redirect("erp_project", prj_id=new_project.id)
                else:
                    messages.error(request, 'Project data didn`t save. You have some errors.')
            else: # stage == input
                init = {
                    'id': None,
                    'title': "",
                    'challenge': old_project.challenge,
                    'customer': None,
                    'benefits': old_project.benefits,
                    'feedback': old_project.feedback,
                    'service': old_project.service,
                    'industry': old_project.industry,
                    'solution': old_project.solution,
                    'dev_time': old_project.dev_time,
                    'date_start': date.today(),
                    'date_finish': None,
                    'preset': old_project.preset,
                }
                p_mform = ProjectMForm(initial=init)
        else:
            messages.error(request, "Bad request.")
            redirect("erp_home")
    # add project from preset
    elif op == 'preset':
        if pst_id:
            try:
                preset = Preset.objects.get(id=int(pst_id))
            except Preset.DoesNotExist:
                messages.error(request, "Project Preset didn`t found. Try again.")
                redirect("erp_project_presets")
            if not check_permission(cv, perm_index=26): # manage preset data
                messages.error(request, "Access denied")
                return redirect("erp_home")
            if stage == 'validate':
                p_mform = ProjectMForm(request.POST)
                p_mform.instance.preset = preset
                if p_mform.is_valid():
                    p_mform.save()
                    project = Project.objects.get(id=p_mform.instance.id)
                    for req in preset.requirements.all():
                        ProjectRequirement.objects.create(project=project, skill=req.skill, desc=req.desc)
                    messages.success(request, 'Projects data saved successfully.<br>Also to project were adding all requirements from preset "%s"' % preset)
                    return redirect("erp_project", prj_id=project.id)
                else:
                    messages.error(request, 'Project data didn`t save. You have some errors.')
            elif stage == 'input': # stage == input
                init = {
                    'preset': preset,
                    'challenge': preset.challenge,
                    'service': preset.service,
                    'industry': preset.industry,
                    'solution': preset.solution
                }
                p_mform = ProjectMForm(initial=init)
        else:
            messages.error(request, "Bad request.")
            redirect("erp_home")
    # add empty project
    elif op == 'add':
        if not check_permission(cv, perm_index=12): # create new empty project
            messages.error(request, "Access denied")
            return redirect("erp_home")
        if stage == 'validate':
            p_mform = ProjectMForm(request.POST)
            if p_mform.is_valid():
                p_mform.save()
                messages.success(request, 'Projects data saved successfully.')
                return redirect("erp_project", prj_id=p_mform.instance.id)
            else:
                messages.error(request, 'Project data didn`t save. You have some errors.')
        else:
            p_mform = ProjectMForm()
    elif op == 'mod': # op == 'mod' or 'del'
        if prj_id:
            try:
                project = Project.objects.get(id=int(prj_id))
            except Project.DoesNotExist, Project.MultipleObjectsReturned:
                messages.error(request, 'Project was not found.')
                return redirect("erp_projects")
            if not check_permission(cv, perm_index=15): # edit project data
                messages.error(request, "Access denied")
                return redirect("erp_home")
            if stage == 'validate':
                p_mform = ProjectMForm(request.POST, instance=project)
                if p_mform.is_valid():
                    p_mform.save()
                    messages.success(request, 'Project data saved successfully.')
                    return redirect("erp_project", project.id)
                else:
                    messages.error(request, 'Project data didn`t save. You have some errors.')
            else:
                p_mform = ProjectMForm(instance=project)
        else:
            messages.error(request, 'Bad request')
            return redirect("erp_home")
Пример #29
0
def mod_vf(request, cv_id=None, cert_id=None, op=''):
    """
    Display the full data for selected certificate.
    Manage the operations add/edit/delete.
    """
    if cv_id:
        try:
            view_cv = CV.objects.get(id=int(cv_id))
        except CV.DoesNotExist:
            messages.error(request, "CV was not found.")
            redirect("erp_home")
    else:
        messages.error(request, "Bad Request.")
        redirect("erp_home")
    cv = get_cv(request)
    if view_cv != cv:
        if not check_permission(cv, perm_index=44):  # manage certificate data
            messages.error(request, "Access denied")
            return redirect("erp_home")
    stage = request.REQUEST.get('stage', 'input')
    cert_mform = None
    # add empty project
    if op == 'add':
        if stage == 'validate':
            if stage == 'validate':
                cert_mform = CertificateMForm(request.POST, request.FILES)
                if cert_mform.is_valid():
                    cert_mform.save()
                    messages.success(request,
                                     'Certificate data saved successfully.')
                    return redirect("erp_cv_certificate_mod",
                                    cv_id=view_cv.id,
                                    cert_id=cert_mform.instance.id)
                else:
                    messages.error(
                        request,
                        'Certificate data didn`t save. You have some errors.')
        else:
            cert_mform = CertificateMForm(initial={'cv': view_cv})
    # modify data of project or delete
    else:
        if cert_id:
            try:
                cert = Certificate.objects.get(id=int(cert_id))
                if stage == 'confirm':
                    cert.delete()
                    messages.success(
                        request,
                        'Selected Certificate data deleted successfully.')
                    return redirect("erp_cv", cv_id=view_cv.id)
                if stage == 'validate':
                    cert_mform = CertificateMForm(request.POST,
                                                  request.FILES,
                                                  instance=cert)
                    if cert_mform.is_valid():
                        cert_mform.save()
                        messages.success(
                            request, 'Certificate data saved successfully.')
                        return redirect("erp_cv_certificate_mod",
                                        cv_id=view_cv.id,
                                        cert_id=cert.id)
                    else:
                        messages.error(
                            request,
                            'Certificate data didn`t save. You have some errors.'
                        )
                # stage == input
                else:
                    cert_mform = CertificateMForm(instance=cert)
            except Certificate.DoesNotExist, Certificate.MultipleObjectsReturned:
                messages.error(request, 'Certificate was not found.')
                return redirect("erp_cv", cv_id=view_cv.id)
        else:
Пример #30
0
def manage_vf(request):
    """
    display list projects.
    view some projects data, mod pause state, delete projects.
    check & save data
    """
    def _get_projects():
        """
        build projects list sorted by state & start/finish date.
        state_projects = [
            {'state': "prepare", 'projects': Project.objects.filter(Q(date_start=None)|Q(date_start__gt=date.today()))},
            {'state': "develop", 'projects': Project.objects.filter(Q(date_start__lte=date.today()), Q(date_finish=None) | Q(date_finish__gt=date.today()), is_pause=False)},
            {'state': "pause", 'projects': Project.objects.filter(Q(date_start__lte=date.today()), Q(date_finish=None)|Q(date_finish__gt=date.today()), is_pause=True)},
            {'state': "finish", 'projects': Project.objects.filter(date_start__lte=date.today(), date_finish__lte=date.today())},
            #{'state': "all", 'projects': Project.objects.all()},
        ]
        """
        projects = [
            # ('develop', [prj for prj in Project.objects.all() if prj.is_develop()]),
            ('prepare', ProjectBrieflyMFormset(queryset=Project.objects.filter(Q(date_start=None)|Q(date_start__gt=date.today())), prefix="prepare")),
            ('develop', ProjectBrieflyMFormset(queryset=Project.objects.filter(Q(date_start__lte=date.today()), Q(date_finish=None) | Q(date_finish__gte=date.today())), prefix="develop")),
            #('pause', ProjectBrieflyMFormset(queryset=Project.objects.filter(Q(date_start__lte=date.today()), Q(date_finish=None)|Q(date_finish__gte=date.today()), pause=True), prefix="pause")),
            ('finish', ProjectBrieflyMFormset(queryset=Project.objects.filter(date_start__lte=date.today(), date_finish__lt=date.today()), prefix="finish"))]
        return projects
    # --- MAIN FUNCTION ---
    cv = get_cv(request)
    if not check_permission(cv, perm_index=10): # view project data
        messages.error(request, "Access denied")
        return redirect("erp_home")
    else:
        manage = False
        if check_permission(cv, perm_index=15): # edit project data
            manage = True
    projects = None
    stage = request.REQUEST.get('stage', 'input')
    if stage == 'confirm' and request.method == "POST":
        if manage:
            projects_del = request.session.get('projects_del', None)
            for prj in projects_del:
                prj.delete()
            del request.session['projects_del']
            messages.success(request, 'Selected projects has been deleted successfully.')
            stage = 'input'
        else:
            messages.error(request, "Access denied")
            return redirect("erp_home")
    if stage == 'validate' and request.method == "POST":
        if manage:
            prj_mforms = ProjectBrieflyMFormset(request.POST)
            if prj_mforms.is_valid():
                if prj_mforms.deleted_forms:
                    request.session['projects_del'] = [form.instance for form in prj_mforms.deleted_forms]
                    return render_to_response(
                        "projects/del_projects.html",
                        {
                            'cv': cv,
                            'nav': "project",
                            'projects_del': request.session['projects_del'],
                            },
                        RequestContext(request))
                prj_mforms.save()
                messages.success(request, 'Projects pause data has been updated successfully.')
            else: # errors in saving
                messages.error(request, 'Projects data didn`t update. There were some errors.')
        else:
            messages.error(request, "Access denied")
            return redirect("erp_home")
    # stage == input
    if stage == 'input':
        prj_mforms = ProjectBrieflyMFormset()
    return render_to_response(
        "projects/manage.html",
        {
            'cv': cv,
            'nav': "project",
            'tab': request.REQUEST.get('tab', ''),
            'prj_mforms': prj_mforms,
            },
        RequestContext(request))