Exemple #1
0
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
            })
Exemple #2
0
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')
Exemple #3
0
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')
Exemple #4
0
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
        })
Exemple #5
0
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')
Exemple #6
0
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')
Exemple #7
0
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
    })
Exemple #8
0
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')
Exemple #9
0
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
    })
Exemple #10
0
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')
Exemple #11
0
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)
Exemple #12
0
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')
Exemple #13
0
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')
Exemple #14
0
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})
Exemple #15
0
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')
Exemple #16
0
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})
Exemple #17
0
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')
Exemple #18
0
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})
Exemple #19
0
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')
Exemple #20
0
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')
Exemple #21
0
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
    })
Exemple #22
0
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
    })
Exemple #23
0
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')
Exemple #24
0
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')
Exemple #25
0
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')
Exemple #26
0
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')
Exemple #27
0
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')
Exemple #28
0
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
        })
Exemple #29
0
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')
Exemple #30
0
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')