def show_frontpage(request): _user = get_valid_user(request) if not _user: response = get_guest_index_cache(request) return response else: project_agl_flow = get_project_flow_by_type('AGL') # _project_app_flow = get_project_flow_by_type('APP') agl_flow_json = get_project_flow_json_by_id(project_agl_flow.id) # app_flow_json = get_project_flow_json_by_id(_project_app_flow.id) _pages = get_front_pages() _carousel_pages = get_carousel_pages() _projects = _user.current_handler_projects.all() _handler_tasks = _user.current_handler_tasks.filter(project__phase=F( 'done_in_project_phase')) | _user.current_handler_tasks.filter( project__isnull=True) # _future_tasks = _user.current_handler_tasks.filter(project__isnull=False).exclude(project__phase=F('done_in_project_phase')) return render( request, 'index.html', { 'current_user': _user, 'handler_projects': _projects, 'handler_tasks': _handler_tasks, 'agl_flow_json': agl_flow_json, 'pages': _pages, 'carousel_pages': _carousel_pages })
def TaskListForProject(request, pid): _user = get_valid_user(request) if _user: _project = Project.objects.get(id=pid) _default_team = _project.team _to_handle_team_tasks = _user.current_handler_tasks.filter( team=_default_team, project=_project) _to_handle_tasks = _to_handle_team_tasks.filter(project__phase=F( 'done_in_project_phase')) | _to_handle_team_tasks.filter( project__isnull=True) _future_tasks = _to_handle_team_tasks.filter( project__isnull=False).exclude( project__phase=F('done_in_project_phase')) _todo_tasks = _project.project_tasks.filter(status='IN_TODO').filter( project__phase=F('done_in_project_phase')) _process_tasks = _project.project_tasks.filter(status='IN_PROCESS') _done_tasks = _project.project_tasks.filter(status='IN_DONE') return render( request, 'tasklist.html', { 'current_user': _user, 'teams': [_project.team], 'default_team': _default_team, 'handler_tasks': _to_handle_tasks, 'future_tasks': _future_tasks, 'todo_tasks': _todo_tasks, 'process_tasks': _process_tasks, 'done_tasks': _done_tasks, 'project': _project }) return HttpResponseRedirect('/login')
def cache_management(request): _user = get_valid_user(request) if _user: if request.method == "GET": return render(request, 'cache.html', {'current_user': _user}) elif request.method == "POST": time_str = datetime.datetime.now().strftime("%m%d%H%M") passcode = request.POST.get("passcode", "") if time_str == str(passcode): key = request.POST.get("key", "") if key: do = request.POST.get("do", "") if do == "clear": clear_cache_by_key(key) messages.add_message(request, messages.INFO, ('已清除Cache: %s !' % key)) elif do == "view": cache_value = get_cache_value_by_key(key) if not cache_value: messages.add_message(request, messages.INFO, ('Cache for %s 不存在!' % key)) return render(request, 'cache.html', { 'current_user': _user, 'cache_value': cache_value }) else: messages.add_message(request, messages.INFO, ('请输入key!' % key)) else: messages.add_message(request, messages.INFO, ('口令错误!')) return render(request, 'cache.html', {'current_user': _user}) return HttpResponseRedirect('/login')
def show_reminds(request): _user = get_valid_user(request) if not _user: return HttpResponseRedirect('/login') deadline_reminds = DeadlineRemind.objects.filter(create_user=_user, is_finished=False) period_reminds = PeriodRemind.objects.filter(create_user=_user, is_finished=False) onetime_reminds = OneTimeRemind.objects.filter(create_user=_user, is_finished=False) pre_30day_time = timezone.now() - datetime.timedelta(days=31) finished_reminds = Remind.objects.filter( create_user=_user, is_finished=True, finish_time__gte=pre_30day_time).order_by("-finish_time") Remind.objects.filter(create_user=_user, is_finished=True, finish_time__lt=pre_30day_time).delete() return render( request, 'remindmgmt_list.html', { 'current_user': _user, 'deadline_reminds': deadline_reminds, 'period_reminds': period_reminds, 'onetime_reminds': onetime_reminds, 'finished_reminds': finished_reminds })
def MessageList(request): _user=get_valid_user(request) if _user: _received_msgs=Message.objects.filter(receiver=_user, source=None, receiver_delete=False).order_by('-last_reply_time') _sent_msgs=Message.objects.filter(sender=_user, source=None, sender_delete=False).order_by('-last_reply_time') if request.method=='GET': unviewed_msgs=Message.objects.filter(receiver=_user, receiver_delete=False) for msg in unviewed_msgs: if not msg.viewed: msg.viewed=True msg.save() return render(request, 'msglist.html', {'current_user':_user, 'received_msgs':_received_msgs, 'sent_msgs':_sent_msgs}) else: _receiver_id=request.POST.get("receiver_id","") _receiver=User.objects.get(id=_receiver_id) _msg=request.POST.get("msg") _source=None _source_id=request.POST.get("source_id","") if _source_id: _source=Message.objects.get(id=_source_id) _source.sender_delete=False _source.receiver_delete=False _source.save() Message.objects.create(sender=_user, receiver=_receiver, body=to_html_msg(_msg), source=_source) return render(request, 'msglist.html', {'current_user':_user, 'received_msgs':_received_msgs, 'sent_msgs':_sent_msgs}) return HttpResponseRedirect('/login')
def change_corporation(request): _user=get_valid_user(request) if _user: if request.method=="GET": return render(request, 'userchangecorp.html',{'current_user':_user}) elif request.method=="POST": new_email=request.POST.get("new_email","") if not new_email: messages.add_message(request, messages.INFO, '请输入新的Email地址!') return render(request, 'userchangecorp.html',{'current_user':_user}) check_code=request.POST.get("check_code","") if not check_code: check_code=base64.b64encode(os.urandom(6)) _user.check_code=check_code _user.save() _fail_silently=(not pmp.settings.DEBUG) mail_body='''您好! 您的Email地址变更请求已收到,请在当前打开的网页中输入如下验证码(可以复制): %s SDL SaaS''' % (check_code) send_mail('Email校验-SDL SaaS', mail_body, pmp.settings.EMAIL_FROM,[new_email], fail_silently=_fail_silently) return render(request, 'userchangecorp.html',{'current_user':_user, 'new_email':new_email}) if _user.check_code==check_code: change_to_new_email(_user, new_email) messages.add_message(request, messages.INFO, '修改成功,新Email地址已生效!') return render(request, 'userinfo.html', {'current_user':_user, 'query_user':_user}) return HttpResponseRedirect('/login')
def show_all_catalog(request): _user = get_valid_user(request) product_types = get_product_types_catalog() return render(request, 'sec_eco.html', { 'current_user': _user, 'product_types': product_types })
def TeamList(request): _user=get_valid_user(request) if _user: _admin_teams=_user.admin_teams.all() _member_teams=_user.member_teams.all() _company_teams=_user.company.company_teams.all() return render(request,'teamlist.html',{'current_user':_user,'admin_teams':_admin_teams,'member_teams':_member_teams,'company_teams':_company_teams}) return HttpResponseRedirect('/login')
def ip_address(request, ip): addr = get_ip_address(ip) _user = get_valid_user(request) return render(request, 'toolmgmt_ip.html', { 'current_user': _user, 'ip': ip, 'address': addr })
def CircleDelete(request): _user=get_valid_user(request) if _user: _mid=request.POST.get("mid","") if _mid: _message=CircleMessage.objects.get(id=_mid) _message.delete() return HttpResponseRedirect('/circle') return HttpResponseRedirect('/login')
def ChangeDefaultTeam(request): _user=get_valid_user(request) if _user: _tid=request.POST.get("tid","") _team=Team.objects.get(id=_tid) _user.default_team=_team _user.save() referer=request.META['HTTP_REFERER'] return HttpResponseRedirect(referer)
def TeamChange(request): _user=get_valid_user(request) if _user and request.method=="POST": _do=request.POST.get("do","") _tid=request.POST.get("tid") _team=Team.objects.get(id=_tid) if _user not in _team.members.all(): messages.add_message(request, messages.INFO, '您没有权限修改团队资料!') return render(request, 'index.html', {'current_user':_user}) if _do=="addmember": _username=request.POST.get("username") if not _username: messages.add_message(request, messages.INFO, '请输入真实有效的用户名(电子邮件地址中@前面的部分)!') return render(request,'teaminfo.html',{'current_user':_user,'team':_team}) _email=_username+"@"+_user.company.top_domain_name try: _new_member=User.objects.get(email=_email) except: _new_member=User.objects.create(username=_username,email=_email,company=_user.company, need_modify_pwd=True,default_team=_team) _fail_silently=(not pmp.settings.DEBUG) mail_body='''您好! %s 将您添加到团队【%s】 ,初始口令为: Flzx3000c 请及时登录并修改口令: %s SDL SaaS''' % (_user.username, _team.name, pmp.settings.SAAS_PORTAL) send_mail('您已加入【%s】团队!' % _team.name, mail_body, pmp.settings.EMAIL_FROM,[_new_member.email], fail_silently=_fail_silently) if _new_member not in _team.members.all(): _team.members.add(_new_member) send_msg(_user, _new_member, '我已将您加入【%s】团队' % _team.name) send_circle_msg(_user, '热烈欢迎 %s 加入【%s】团队' % (_new_member.username, _team.name)) elif _do=="addadmin": _uid=int(request.POST.get("uid")) _new_admin=User.objects.get(id=_uid) _team.admins.add(_new_admin) elif _do=="removemember": _uid=int(request.POST.get("uid")) _member=User.objects.get(id=_uid) _team.members.remove(_member) elif _do=="removeadmin": _uid=int(request.POST.get("uid")) _admin=User.objects.get(id=_uid) if _team.admins.count()>1: _team.admins.remove(_admin) else: messages.add_message(request, messages.INFO, '请先添加一名管理员然后才能删除!') return render(request,'teaminfo.html',{'current_user':_user,'team':_team}) elif _do=="del": if _user in _team.admins.all() and _team.members.count()<2 and _team.team_projects.count()==0: for member in _team.default_team_users.all(): member.default_team=None member.save() _team.delete() messages.add_message(request, messages.INFO, '已删除指定的团队!') return HttpResponseRedirect("/team") _team.save() return HttpResponseRedirect("/team/"+str(_team.id)) return HttpResponseRedirect('/login')
def ProjectDelete(request): _user = get_valid_user(request) if _user: _pid = request.POST.get("pid", "") if _pid: _project = Project.objects.get(id=_pid) if _project.can_be_deleted_by(_user): _project.delete() return HttpResponseRedirect('projectlist') return HttpResponseRedirect('/login')
def show_ci(request, ci_id): _user = get_valid_user(request) if not _user: return HttpResponseRedirect('/login') (ci, sub_ci_dict)=get_ci_by_id(ci_id) if not ci: messages.add_message(request, messages.INFO, ('未找到相应的配置项(CI) !')) return HttpResponseRedirect('/itsm/configuration-management') ci_stream_json=get_ci_stream_json(ci) return render(request, 'itsm_showci.html', {'current_user': _user, 'ci':ci, 'ci_stream_json':ci_stream_json,'sub_ci_dict':sub_ci_dict})
def Suggest(request): _user=get_valid_user(request) if _user: if request.method=='GET': _receiver=User.objects.get(email='*****@*****.**') return render(request, 'suggest.html', {'current_user':_user, 'receiver':_receiver}) _msg=request.POST.get("msg","") collect_user_suggest(_user, _msg) return HttpResponseRedirect('/msglist') return HttpResponseRedirect('/login')
def show_domain(request, domain_id): _user = get_valid_user(request) if not _user: return HttpResponseRedirect('/login') try: domain=Domain.objects.get(id=domain_id) except: messages.add_message(request, messages.INFO, ('未找到此域名 !')) return HttpResponseRedirect('/itsm/domain-management') permit_delete=permit_delete_domain(_user, domain) return render(request, 'itsm_domaininfo.html', {'domain':domain, 'permit_delete':permit_delete})
def TaskDelete(request): _user = get_valid_user(request) if _user: _tid = request.POST.get("tid") if _tid: _task = Task.objects.get(id=_tid) if _task.can_be_deleted_by(_user): _task.delete() clear_task_cache_by_id(_tid) return HttpResponseRedirect('tasklist') return HttpResponseRedirect('/login')
def show_ip(request, ip_id): _user = get_valid_user(request) if not _user: return HttpResponseRedirect('/login') try: ip=IP.objects.get(id=ip_id) except: messages.add_message(request, messages.INFO, ('未找到此IP !')) return HttpResponseRedirect('/itsm/ip-management') permit_delete=permit_delete_ip(_user, ip) return render(request, 'itsm_ipinfo.html', {'ip':ip, 'permit_delete':permit_delete})
def check_result(request): _user = get_valid_user(request) if _user: _result_id = request.POST.get("result_id") _check_result = CheckResult.objects.get(id=_result_id) if _user == _check_result.task.current_handler: _result = request.POST.get("result") _check_result.result = _result _check_result.save() return HttpResponse("OK", content_type="text/plain") return HttpResponseRedirect('/login')
def show_checklist_as_specifications(request): _user = get_valid_user(request) if _user: sec_design_flow = get_task_flow_by_type('SEC_DESIGN') design_items = sec_design_flow.flow_check_items.all() sec_dev_flow = get_task_flow_by_type('SEC_DEV') dev_items = sec_dev_flow.flow_check_items.all() sec_test_flow = get_task_flow_by_type('SEC_TEST') test_items = sec_test_flow.flow_check_items.all() sec_deploy_flow = get_task_flow_by_type('SEC_DEPLOY') deploy_items = sec_deploy_flow.flow_check_items.all() _user = get_valid_user(request) return render( request, 'specifications.html', { 'current_user': _user, 'design_rules': design_items, 'dev_rules': dev_items, 'test_rules': test_items, 'deploy_rules': deploy_items }) return HttpResponseRedirect('/login')
def show_catalog(request, product_type_pseudo): _user = get_valid_user(request) (product_type, products) = get_products_catalog_by_pseudo_name(product_type_pseudo) if not product_type: messages.add_message(request, messages.INFO, '参数错误!') return HttpResponseRedirect('/catalog') return render(request, 'sec_products.html', { 'current_user': _user, 'product_type': product_type, 'products': products })
def ip_address_portal(request): ip = "" if request.META.has_key('HTTP_X_FORWARDED_FOR'): ip = request.META['HTTP_X_FORWARDED_FOR'] else: ip = request.META['REMOTE_ADDR'] addr = get_ip_address(ip) _user = get_valid_user(request) return render(request, 'toolmgmt_ip.html', { 'current_user': _user, 'ip': ip, 'address': addr })
def TeamCreate(request): _user=get_valid_user(request) if _user and request.method=="POST": _name=request.POST.get("name","") if _name: _abbr=request.POST.get("abbr","") _team=Team.objects.create(name=_name, company=_user.company, abbr=_abbr) _team.admins.add(_user) _team.members.add(_user) _team.save() _user.default_team=_team; _user.save() return HttpResponseRedirect('/team') return HttpResponseRedirect('/login')
def project_approval_view(request): _user = get_valid_user(request) if _user: _pid = request.POST.get("pid") _project = Project.objects.get(id=_pid) if _user == _project.current_handler: _do = request.POST.get("do", "") _trustee_id = request.POST.get("trustee_id", "") _option = _project.status.status_options.get(do=_do) _remarks = request.POST.get("remarks", "") handle_project_approval(_project, _user, _option, _trustee_id, _remarks) return HttpResponseRedirect('/projectlist/' + str(_project.id)) return HttpResponseRedirect('/login')
def UserInfo(request, query_uid): _user=get_valid_user(request) if _user: _quid=int(query_uid) try: _quser=User.objects.get(id=_quid) except: _quser=None if _quser: if _user.company==_quser.company or _quser.email=="*****@*****.**": return render(request, 'userinfo.html', {'current_user':_user, 'query_user':_quser}) messages.add_message(request, messages.INFO, '您没有查看该用户资料的权限!') return HttpResponseRedirect('/') return HttpResponseRedirect('/login')
def TaskList(request, tid): _user = get_valid_user(request) if _user: _teams = _user.member_teams.all() if not _teams: messages.add_message(request, messages.INFO, '您目前不属于任何团队,请先创建团队或加入现有团队!') return render(request, 'teamlist.html', {'current_user': _user}) _default_team = _user.get_default_team() if request.method == "POST": # switch team _team_id = request.POST.get("team_id", "") _default_team = Team.objects.get(id=_team_id) _user.default_team = _default_team _user.save() _to_handle_team_tasks = _user.current_handler_tasks.filter( team=_default_team) _to_handle_tasks = _to_handle_team_tasks.filter(project__phase=F( 'done_in_project_phase')) | _to_handle_team_tasks.filter( project__isnull=True) _future_tasks = _to_handle_team_tasks.filter( project__isnull=False).exclude( project__phase=F('done_in_project_phase')) _todo_tasks_include_future = _default_team.team_tasks.filter( status__ready_state__exact='TODO') _todo_tasks = _todo_tasks_include_future.filter(project__phase=F( 'done_in_project_phase')) | _todo_tasks_include_future.filter( done_in_project_phase__isnull=True) _process_tasks = _default_team.team_tasks.exclude( status__ready_state='TODO').exclude(status__ready_state='DONE') _done_tasks = _default_team.team_tasks.filter( status__ready_state='DONE', done_time__gt=(timezone.now() - datetime.timedelta(days=30))).order_by('-done_time') current_task = get_task_by_id(tid) if tid and not current_task: messages.add_message(request, messages.INFO, '参数错误!') return render( request, 'tasklist.html', { 'current_user': _user, 'teams': _teams, 'default_team': _default_team, 'handler_tasks': _to_handle_tasks, 'future_tasks': _future_tasks, 'todo_tasks': _todo_tasks, 'process_tasks': _process_tasks, 'done_tasks': _done_tasks, 'current_task': current_task }) return HttpResponseRedirect('/login')
def mark_remind_unfinish(request, remind_id): _user = get_valid_user(request) if not _user: return HttpResponseRedirect('/login') try: remind = Remind.objects.get(id=remind_id) if remind.create_user == _user: remind.is_finished = False remind.save() messages.add_message(request, messages.INFO, '指定的提醒已标记为未完成!') else: messages.add_message(request, messages.INFO, '您无权操作!') except: messages.add_message(request, messages.INFO, '提醒不存在!') return HttpResponseRedirect('/reminds')
def password_generation(request): _user = get_valid_user(request) if request.method == "GET": return render(request, 'pwdmgmt_pwd_gen.html', {'current_user': _user}) else: _sentence = request.POST.get("sentence", "") if _sentence: _password = get_password_by_sentence(_sentence) else: _password = get_dice_password() return render(request, 'pwdmgmt_pwd_gen.html', { 'current_user': _user, 'sentence': _sentence, 'password': _password })
def create_wiki(request): _user = get_valid_user(request) if _user: if request.method == "POST": _abbr = request.POST.get("abbr", "") _expression = request.POST.get("expression", "") _description = request.POST.get("description", "") if _abbr or _expression: Wiki.objects.create(contributor=_user, abbr=_abbr, expression=_expression, description=_description, company=_user.company) return HttpResponseRedirect('/wiki') return HttpResponseRedirect('/login')
def MessageDelete(request): _user=get_valid_user(request) if _user: _mid=request.POST.get("mid","") if _mid: _message=Message.objects.get(id=_mid) if _message.sender==_user: _message.sender_delete=True if _message.receiver==_user: _message.receiver_delete=True if _message.sender_delete and _message.receiver_delete: _message.delete() else: _message.save() return HttpResponseRedirect('msglist') return HttpResponseRedirect('/login')