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")
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))
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))
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))
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))
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))
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")
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))
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))
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))
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")
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))
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:
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")
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))
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))
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))
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))
def add_cv_skills_vf(request, cv_id=None): """ display add/delete te 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=43): # manage CV skills data messages.error(request, "Access denied") return redirect("erp_home") cv_skills = [x.skill for x in view_cv.skills.all()] stage = request.REQUEST.get('stage', None) if stage == 'validate': cv_skill_mforms = CVAddSkill_MFormset(request.POST) if cv_skill_mforms.is_valid(): is_add = is_del = False for skill in cv_skill_mforms: cd = skill.cleaned_data if cd['check']: if cd['id'] not in cv_skills: CVSkill.objects.create(cv=view_cv, skill=cd['id']) is_add = True else: if cd['id'] in cv_skills: try: CVSkill.objects.get( cv=view_cv, skill=cd['id']).delete() is_del = True except CVSkill.DoesNotExist: pass if is_add: messages.success( request, 'The Technical Expertise Skills has been added successfully.' ) if is_del: messages.success( request, 'The some Technical Expertise Skills has been deleted successfully.' ) return redirect("erp_cv", cv_id=cv.id) else: # errors in save messages.error( request, 'The Technical Expertise data didn`t update. There were some problems.' ) else: # stage == input skills = [] for skill in Skill.objects.all(): if skill in cv_skills: skills.append({'check': True}) else: skills.append({'check': False}) cv_skill_mforms = CVAddSkill_MFormset(initial=skills) return render_to_response( "cv/add_skills.html", { 'cv': cv, 'nav': "cv", 'view_cv': view_cv, 'cv_skill_mforms': cv_skill_mforms }, 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")
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))
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))
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:
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))
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))
def list_vf(request, fltr=""): """ display list of CVs (all CVs). support filter by active/fired; by offices; by position. """ def build_cvs(req): cvs = {} for cv in req: if cv.id not in cvs: cvs[cv.id] = cv cvs = cvs.values() # ----- MAIN ----- cv = get_cv(request) if not check_permission(cv, perm_index=40): # view CV data messages.error(request, "Access denied") return redirect("erp_home") if fltr == 'full': cvs = CV.actives.fulls().select_related('position').order_by( 'name', 'surname') filter_msg = "Filled in completely CVs" elif fltr == 'position': cvs = CV.actives.empty_positions().select_related('position').order_by( 'name', 'surname') filter_msg = "Empty Position section" elif fltr == 'fls': cvs = CV.actives.empty_fls().select_related('position').order_by( 'name', 'surname') filter_msg = "Empty Foreign Languages section" elif fltr == 'skills': cvs = CV.actives.empty_skills().select_related('position').order_by( 'name', 'surname') filter_msg = "Empty Technical Expertise Skills section" elif fltr == 'projects': cvs = CV.actives.empty_projects().select_related('position').order_by( 'name', 'surname') filter_msg = "Empty Projects section" elif fltr == 'idle': emps_req = [ emp.cv \ for emp in WorkGroup.objects.select_related('project', 'cv', 'cv__position').filter(cv__fired=False).order_by('cv__name', 'cv__surname') \ if emp.project.is_develop() ] cvs = {} for cv in CV.actives.select_related('position').all(): cvs[cv.id] = cv for cv in emps_req: if cv.id in cvs: del cvs[cv.id] cvs = cvs.values() filter_msg = "Employees without projects in develop state" elif fltr == 'prepare': emps_req = [ emp.cv \ for emp in WorkGroup.objects.select_related('project', 'cv', 'cv__position').filter(cv__fired=False).order_by('cv__name', 'cv__surname') \ if emp.project.is_prepare() ] cvs = build_cvs(emps_req) filter_msg = "Employees with projects in prepare state" elif fltr == 'develop': emps_req = [ emp.cv \ for emp in WorkGroup.objects.select_related('project', 'cv', 'cv__position').filter(cv__fired=False).order_by('cv__name', 'cv__surname') \ if emp.project.is_develop() ] cvs = build_cvs(emps_req) filter_msg = "Employees with projects in develop state" elif fltr == 'work': emps_req = [ emp.cv \ for emp in WorkGroup.objects.select_related('project', 'cv', 'cv__position').filter(cv__fired=False).order_by('cv__name', 'cv__surname') \ if emp.project.is_work() ] cvs = build_cvs(emps_req) filter_msg = "Employees with projects in work state" elif fltr == 'pause': emps_req = [ emp.cv \ for emp in WorkGroup.objects.select_related('project', 'cv', 'cv__position').filter(cv__fired=False).order_by('cv__name', 'cv__surname') \ if emp.project.is_pause() ] cvs = build_cvs(emps_req) filter_msg = "Employees with projects in pause state" elif fltr == 'finish': emps_req = [ emp.cv \ for emp in WorkGroup.objects.select_related('project', 'cv', 'cv__position').filter(cv__fired=False).order_by('cv__name', 'cv__surname') \ if emp.project.is_finish() ] cvs = build_cvs(emps_req) filter_msg = "Employees with projects in finish state" else: cvs = CV.actives.select_related('position').order_by('name', 'surname') filter_msg = "All CVs" return render_to_response( "cv/list.html", { 'cv': cv, 'nav': "cv", 'cvs': cvs, 'filter_msg': filter_msg, 'offices': ttOffices.objects.all(), 'positions': Position.objects.all() }, RequestContext(request))
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")
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:
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: