def post(self):
     user = users.get_current_user()
     if user:
         system_name = self.request.get('project_profile_system_name')
         application_name = self.request.get('project_profile_application_name')
         mesurement_type = self.request.get('project_profile_mesurement_type')
         
         project = FunctionPointProject(system_name=system_name,
                                        application_name=application_name,
                                        mesurement_type=mesurement_type,
                                        data_communications=0,       
                                        distoributed_processing=0,   
                                        performance=0,
                                        heavily_used_configuration=0,
                                        transaction_rate=0,
                                        online_data_entry=0,       
                                        enduser_efficiency=0,      
                                        online_update=0,     
                                        complex_processing=0,        
                                        reusability=0,     
                                        installation_ease=0,         
                                        operational_ease=0,      
                                        multiple_sites=0,       
                                        facilitate_change=0,         
                                        sort_order=0,
                                        )
         project.put();
         return self.response.out.write(json.write(project.to_dict()))
     else:
         err = {'error':common.message('login_err',common.AppSettings('/fp'))}
         return self.response.out.write(json.write(err))
     
     err = {'error':'Unknown Error'}
     return self.response.out.write(json.write(err))
Пример #2
0
def list_projects(user):
    projects = []
    q = FunctionPointProject.gql("WHERE owner=:1 ORDER BY sort_order", user)
    results = q.fetch(MAX_PROJECT)
    for result in results:
        projects.append(result.to_dict())
    return projects
Пример #3
0
    def post(self):
        user = users.get_current_user()
        if user:
            project_key = self.request.get('project_key')

            if project_key <> '':
                key = db.Key(project_key)
                q = FunctionPointProject.gql("WHERE __key__ =:1", key)
                projects = q.fetch(1)
                project = None
                for p in projects:
                    project = p
                    break

                functions = list_functions(project_key)

                return self.response.out.write(
                    json.write({
                        'project': project.to_dict(),
                        'items': functions
                    }))
            else:
                err = {'error': common.message('project_not_selected')}
                return self.response.out.write(json.write(err))
        else:
            err = {
                'error': common.message('login_err', common.AppSettings('/fp'))
            }
            return self.response.out.write(json.write(err))

        err = {'error': 'Unknown Error'}
        return self.response.out.write(json.write(err))
Пример #4
0
    def post(self):
        user = users.get_current_user()
        if user:
            key_str = self.request.get('project_profile_key')
            key = db.Key(key_str)
            q_parent = FunctionPointProject.gql("WHERE __key__ =:1", key)

            projects = q_parent.fetch(1)
            for project in projects:
                q_child = FunctionEntity.gql("WHERE project_key =:1", key_str)
                entities = q_child.fetch(MAX_FUNCTION)
                for entity in entities:
                    entity.delete()
                project.delete()

            projects = list_projects(user)
            return self.response.out.write(json.write({'items': projects}))
        else:
            err = {
                'error': common.message('login_err', common.AppSettings('/fp'))
            }
            return self.response.out.write(json.write(err))

        err = {'error': 'Unknown Error'}
        return self.response.out.write(json.write(err))
Пример #5
0
    def post(self):
        user = users.get_current_user()
        if user:
            key_str = self.request.get('project_profile_key')
            if key_str.strip() == '':
                err = {'error': common.message('project_not_selected')}
                return self.response.out.write(json.write(err))

            #
            data_communications = self.request.get('data_communications')
            distoributed_processing = self.request.get(
                'distoributed_processing')
            performance = self.request.get('performance')
            heavily_used_configuration = self.request.get(
                'heavily_used_configuration')
            transaction_rate = self.request.get('transaction_rate')
            online_data_entry = self.request.get('online_data_entry')
            enduser_efficiency = self.request.get('enduser_efficiency')
            online_update = self.request.get('online_update')
            complex_processing = self.request.get('complex_processing')
            reusability = self.request.get('reusability')
            installation_ease = self.request.get('installation_ease')
            operational_ease = self.request.get('operational_ease')
            multiple_sites = self.request.get('multiple_sites')
            facilitate_change = self.request.get('facilitate_change')
            #

            key = db.Key(key_str)
            q = FunctionPointProject.gql("WHERE __key__ =:1", key)

            projects = q.fetch(1)
            for project in projects:
                project.data_communications = to_idx(data_communications)
                project.distoributed_processing = to_idx(
                    distoributed_processing)
                project.performance = to_idx(performance)
                project.heavily_used_configuration = to_idx(
                    heavily_used_configuration)
                project.transaction_rate = to_idx(transaction_rate)
                project.online_data_entry = to_idx(online_data_entry)
                project.enduser_efficiency = to_idx(enduser_efficiency)
                project.online_update = to_idx(online_update)
                project.complex_processing = to_idx(complex_processing)
                project.reusability = to_idx(reusability)
                project.installation_ease = to_idx(installation_ease)
                project.operational_ease = to_idx(operational_ease)
                project.multiple_sites = to_idx(multiple_sites)
                project.facilitate_change = to_idx(facilitate_change)

                project.put()

            return self.response.out.write(json.write(project.to_dict()))
        else:
            err = {
                'error': common.message('login_err', common.AppSettings('/fp'))
            }
            return self.response.out.write(json.write(err))

        err = {'error': 'Unknown Error'}
        return self.response.out.write(json.write(err))
Пример #6
0
    def post(self):
        user = users.get_current_user()
        if user:
            key_str = self.request.get('project_profile_key')
            system_name = self.request.get('project_profile_system_name')
            application_name = self.request.get(
                'project_profile_application_name')
            mesurement_type = self.request.get(
                'project_profile_mesurement_type')

            key = db.Key(key_str)
            q = FunctionPointProject.gql("WHERE __key__ =:1", key)

            projects = q.fetch(1)
            for project in projects:
                project.system_name = system_name
                project.application_name = application_name
                project.mesurement_type = mesurement_type
                project.put()

            projects = list_projects(user)
            return self.response.out.write(json.write({'items': projects}))
        else:
            err = {
                'error': common.message('login_err', common.AppSettings('/fp'))
            }
            return self.response.out.write(json.write(err))

        err = {'error': 'Unknown Error'}
        return self.response.out.write(json.write(err))
def list_projects(user):
    projects = []
    q = FunctionPointProject.gql("WHERE owner=:1 ORDER BY sort_order", user)
    results = q.fetch(MAX_PROJECT)
    for result in results:
        projects.append(result.to_dict()) 
    return projects
 def post(self):
     user = users.get_current_user()
     if user:
         project_key   = self.request.get('project_key')
         
         if project_key <> '':    
             key = db.Key(project_key)
             q = FunctionPointProject.gql("WHERE __key__ =:1", key)
             projects = q.fetch(1)
             project = None
             for p in projects:
                 project = p
                 break
             
             functions = list_functions(project_key)
             
             return self.response.out.write(json.write({'project':project.to_dict(),
                                                        'items':functions}))
         else:
             err = {'error':common.message('project_not_selected')}
             return self.response.out.write(json.write(err))
     else:
         err = {'error':common.message('login_err',common.AppSettings('/fp'))}
         return self.response.out.write(json.write(err))
     
     err = {'error':'Unknown Error'}
     return self.response.out.write(json.write(err))
   def post(self):
       user = users.get_current_user()
       if user:
           key_str = self.request.get('project_profile_key')
           system_name = self.request.get('project_profile_system_name')
           application_name = self.request.get('project_profile_application_name')
           mesurement_type = self.request.get('project_profile_mesurement_type')
 
           key = db.Key(key_str)
           q = FunctionPointProject.gql("WHERE __key__ =:1", key)
           
           projects = q.fetch(1)
           for project in projects:
               project.system_name                =  system_name
               project.application_name           =  application_name
               project.mesurement_type            =  mesurement_type
               project.put()
           
           projects = list_projects(user) 
           return self.response.out.write(json.write({'items':projects}))
       else:
           err = {'error':common.message('login_err',common.AppSettings('/fp'))}
           return self.response.out.write(json.write(err))
       
       err = {'error':'Unknown Error'}
       return self.response.out.write(json.write(err))
    def post(self):
        user = users.get_current_user()
        if user:
            key_str = self.request.get('project_profile_key')
            if key_str.strip() == '':
                err = {'error':common.message('project_not_selected')}
                return self.response.out.write(json.write(err))

            #
            data_communications           =      self.request.get('data_communications')
            distoributed_processing       =      self.request.get('distoributed_processing')
            performance                   =      self.request.get('performance')
            heavily_used_configuration    =      self.request.get('heavily_used_configuration')
            transaction_rate              =      self.request.get('transaction_rate')
            online_data_entry             =      self.request.get('online_data_entry')
            enduser_efficiency            =      self.request.get('enduser_efficiency')
            online_update                 =      self.request.get('online_update')
            complex_processing            =      self.request.get('complex_processing')
            reusability                   =      self.request.get('reusability')
            installation_ease             =      self.request.get('installation_ease')
            operational_ease              =      self.request.get('operational_ease')
            multiple_sites                =      self.request.get('multiple_sites')
            facilitate_change             =      self.request.get('facilitate_change')
            #

            key = db.Key(key_str)
            q = FunctionPointProject.gql("WHERE __key__ =:1", key)
            
            projects = q.fetch(1)
            for project in projects:
                project.data_communications        =  to_idx(data_communications)
                project.distoributed_processing    =  to_idx(distoributed_processing)
                project.performance                =  to_idx(performance)
                project.heavily_used_configuration =  to_idx(heavily_used_configuration)
                project.transaction_rate           =  to_idx(transaction_rate)
                project.online_data_entry          =  to_idx(online_data_entry)
                project.enduser_efficiency         =  to_idx(enduser_efficiency)
                project.online_update              =  to_idx(online_update)
                project.complex_processing         =  to_idx(complex_processing)
                project.reusability                =  to_idx(reusability)
                project.installation_ease          =  to_idx(installation_ease)
                project.operational_ease           =  to_idx(operational_ease)
                project.multiple_sites             =  to_idx(multiple_sites)
                project.facilitate_change          =  to_idx(facilitate_change)
                
                project.put()
            
            return self.response.out.write(json.write(project.to_dict()))
        else:
            err = {'error':common.message('login_err',common.AppSettings('/fp'))}
            return self.response.out.write(json.write(err))
        
        err = {'error':'Unknown Error'}
        return self.response.out.write(json.write(err))
Пример #11
0
    def post(self):
        user = users.get_current_user()
        if user:
            system_name = self.request.get('project_profile_system_name')
            application_name = self.request.get(
                'project_profile_application_name')
            mesurement_type = self.request.get(
                'project_profile_mesurement_type')

            project = FunctionPointProject(
                system_name=system_name,
                application_name=application_name,
                mesurement_type=mesurement_type,
                data_communications=0,
                distoributed_processing=0,
                performance=0,
                heavily_used_configuration=0,
                transaction_rate=0,
                online_data_entry=0,
                enduser_efficiency=0,
                online_update=0,
                complex_processing=0,
                reusability=0,
                installation_ease=0,
                operational_ease=0,
                multiple_sites=0,
                facilitate_change=0,
                sort_order=0,
            )
            project.put()
            return self.response.out.write(json.write(project.to_dict()))
        else:
            err = {
                'error': common.message('login_err', common.AppSettings('/fp'))
            }
            return self.response.out.write(json.write(err))

        err = {'error': 'Unknown Error'}
        return self.response.out.write(json.write(err))
 def post(self):
     user = users.get_current_user()
     if user:
         key_str = self.request.get('project_profile_key')
         key = db.Key(key_str)
         q_parent = FunctionPointProject.gql("WHERE __key__ =:1", key)
         
         projects = q_parent.fetch(1)
         for project in projects:
             q_child = FunctionEntity.gql("WHERE project_key =:1", key_str)
             entities = q_child.fetch(MAX_FUNCTION)
             for entity in entities:
                 entity.delete()
             project.delete()
         
         projects = list_projects(user) 
         return self.response.out.write(json.write({'items':projects}))
     else:
         err = {'error':common.message('login_err',common.AppSettings('/fp'))}
         return self.response.out.write(json.write(err))
     
     err = {'error':'Unknown Error'}
     return self.response.out.write(json.write(err))
Пример #13
0
    def post(self):
        user = users.get_current_user()

        if user:
            project_key = self.request.get('project_key')

            if project_key.strip() == "":
                html = "<html><head></head><body><span style='color:red'>エラー! プロジェクトが選択されていません。</span></body></html>"
                return self.response.out.write(html)

            key = db.Key(project_key)
            q = FunctionPointProject.gql("WHERE __key__ =:1", key)

            project = None
            projects = q.fetch(1)
            for project in projects:
                break

            if project == None:
                html = "<html><head></head><body><span style='color:red'>エラー! 選択されたプロジェクトが見つかりません。</span></body></html>"
                return self.response.out.write(html)

            self.response.headers.add_header("Content-Disposition",
                                             'attachment; filename="fp.xls"')
            #
            font_title = xlwt.Font()
            font_title.bold = True
            style_title = xlwt.XFStyle()
            style_title.font = font_title
            #
            font_num = xlwt.Font()
            font_num.colour_index = 4
            style_num = xlwt.XFStyle()
            style_num.num_format_str = '0.00'
            style_num.font = font_num

            #
            font_link = xlwt.Font()
            font_link.colour_index = 4
            font_link.underline = xlwt.Font.UNDERLINE_DOUBLE
            style_link = xlwt.XFStyle()
            style_link.font = font_link

            #
            font_link = xlwt.Font()
            font_link.colour_index = 4
            font_link.underline = xlwt.Font.UNDERLINE_DOUBLE
            style_link = xlwt.XFStyle()
            style_link.font = font_link

            wb = xlwt.Workbook(encoding='utf-8')
            ws = wb.add_sheet(u'FUNCTION POINT')

            #
            base_col = 1
            r = 1

            col_w = (0x0500, 0x0500, 0x2800, 0x2400, 0x0a00, 0x0a00, 0x0a00,
                     0x0a00)
            for i, v in enumerate(col_w):
                ws.col(i).width = v

            ws.write(r, base_col, u'ファンクションポイント', style_title)

            #
            n = "HYPERLINK"
            ws.write(
                r, base_col + 2,
                xlwt.Formula(
                    n +
                    '("http://typea-service.appspot.com/fp";"function point")'
                ), style_link)

            r = 3
            ws.write(r, base_col + 0, u'システム', style_title)
            ws.write(r, base_col + 2, u'アプリケーション', style_title)
            ws.write(r, base_col + 3, u'計測タイプ', style_title)

            r = 4
            ws.write(r, base_col + 0, project.system_name)
            ws.write(r, base_col + 2, project.application_name)
            ws.write(r, base_col + 3, project.mesurement_type_name())

            r = 6
            ws.write(r, base_col + 0, u'No', style_title)
            ws.write(r, base_col + 1, u'要素処理名', style_title)
            ws.write(r, base_col + 2, u'区分', style_title)
            ws.write(r, base_col + 3, u'DET', style_title)
            ws.write(r, base_col + 4, u'RET/FTR', style_title)
            ws.write(r, base_col + 5, u'複雑度', style_title)
            ws.write(r, base_col + 6, u'FP', style_title)

            non_adjust_fp = 0.0

            q = FunctionEntity.gql("WHERE project_key=:1 ORDER BY sort_order",
                                   project_key)
            functions = q.fetch(MAX_FUNCTION)
            for i, func in enumerate(functions):
                r += 1
                ws.write(r, base_col + 0, i + 1)
                ws.write(r, base_col + 1, func.function_name)
                ws.write(r, base_col + 2, func.function_category_name())
                ws.write(r, base_col + 3, func.measurement_index1, style_num)
                ws.write(r, base_col + 4, func.measurement_index2, style_num)
                ws.write(r, base_col + 5, func.complexity())
                ws.write(r, base_col + 6, to_float(func.function_point()),
                         style_num)

                non_adjust_fp = non_adjust_fp + to_float(func.function_point())

            r += 1
            ws.write(r, base_col + 3, u'未調整FP値 計', style_title)
            ws.write(r, base_col + 6, non_adjust_fp, style_num)

            r += 1
            ws.write(r, base_col + 3, u'調整係数 計', style_title)
            ws.write(r, base_col + 6, project.total_adjust_points(), style_num)

            r += 1
            ws.write(r, base_col + 3, u'FP 値', style_title)
            ws.write(r, base_col + 6,
                     non_adjust_fp + project.total_adjust_points(), style_num)

            r += 1
            dat = (
                (u'データ通信(Data Communications)', project.data_communications),
                (u'分散処理(Distributed Data Processing)',
                 project.distoributed_processing),
                (u'性能(Performance)', project.performance),
                (u'高負荷構成(Heavily Used Configuration)',
                 project.heavily_used_configuration),
                (u'トランザクション量(Transaction Rate)', project.transaction_rate),
                (u'オンライン入力(Online Data Entry)', project.online_data_entry),
                (u'エンドユーザー効率(End-User Efficiency)',
                 project.enduser_efficiency),
                (u'オンライン更新(Online Update)', project.online_update),
                (u'複雑な処理(Complex Processing)', project.complex_processing),
                (u'再利用可能性(Reusability)', project.reusability),
                (u'インストール容易性(Installation Ease)', project.installation_ease),
                (u'運用性(Operational Ease)', project.operational_ease),
                (u'複数サイト(Multiple Sites)', project.multiple_sites),
                (u'変更容易性(Facilitate Change)', project.facilitate_change),
            )

            r = r + 2
            ws.write(r, base_col + 2, u'調整係数', style_title)
            for (k, d) in enumerate(dat):
                r = r + 1
                ws.write(r, base_col + 1, k + 1)
                ws.write(r, base_col + 2, d[0])
                ws.write(r, base_col + 3, d[1], style_num)

            wb.save(self.response.out)
            return None

        else:
            html = "<html><head></head><body><span style='color:red'>エラー! ログインされていません。ログインしてください。</span></body></html>"
            return self.response.out.write(html)

        err = {'error': 'Unknown Error'}
        return self.response.out.write(json.write(err))
    def post(self):
        user = users.get_current_user()
        
        if user:
            project_key   = self.request.get('project_key')
            
            if project_key.strip() == "":
                html = "<html><head></head><body><span style='color:red'>エラー! プロジェクトが選択されていません。</span></body></html>"
                return self.response.out.write(html)

            key = db.Key(project_key)
            q = FunctionPointProject.gql("WHERE __key__ =:1", key)
            
            project = None
            projects = q.fetch(1)
            for project in projects:
                break
            
            if project == None:
                html = "<html><head></head><body><span style='color:red'>エラー! 選択されたプロジェクトが見つかりません。</span></body></html>"
                return self.response.out.write(html)

            self.response.headers.add_header("Content-Disposition", 'attachment; filename="fp.xls"' )
            #
            font_title = xlwt.Font()
            font_title.bold = True 
            style_title = xlwt.XFStyle()
            style_title.font = font_title
            #
            font_num = xlwt.Font()
            font_num.colour_index = 4
            style_num = xlwt.XFStyle()
            style_num.num_format_str = '0.00'
            style_num.font = font_num
            
            #
            font_link = xlwt.Font()
            font_link.colour_index = 4
            font_link.underline = xlwt.Font.UNDERLINE_DOUBLE
            style_link = xlwt.XFStyle()
            style_link.font = font_link

            #
            font_link = xlwt.Font()
            font_link.colour_index = 4
            font_link.underline = xlwt.Font.UNDERLINE_DOUBLE
            style_link = xlwt.XFStyle()
            style_link.font = font_link
        
            wb = xlwt.Workbook(encoding='utf-8')
            ws = wb.add_sheet(u'FUNCTION POINT')
        
            #
            base_col = 1
            r = 1
        
            col_w = (0x0500,0x0500,0x2800,0x2400,0x0a00,0x0a00,0x0a00,0x0a00)
            for i, v in enumerate(col_w):
                ws.col(i).width = v
        
            ws.write(r, base_col, u'ファンクションポイント', style_title)
        
            #
            n = "HYPERLINK"
            ws.write(r, base_col+2, xlwt.Formula(n + '("http://typea-service.appspot.com/fp";"function point")'), style_link)

            r = 3    
            ws.write(r, base_col + 0, u'システム' ,     style_title)
            ws.write(r, base_col + 2, u'アプリケーション' , style_title)
            ws.write(r, base_col + 3, u'計測タイプ' ,   style_title)
        
            r = 4
            ws.write(r, base_col + 0, project.system_name)
            ws.write(r, base_col + 2, project.application_name)
            ws.write(r, base_col + 3, project.mesurement_type_name())
            
            r = 6
            ws.write(r, base_col + 0, u'No' ,         style_title)
            ws.write(r, base_col + 1, u'要素処理名' , style_title)
            ws.write(r, base_col + 2, u'区分' ,       style_title)
            ws.write(r, base_col + 3, u'DET' ,        style_title)
            ws.write(r, base_col + 4, u'RET/FTR' ,    style_title)
            ws.write(r, base_col + 5, u'複雑度' ,     style_title)
            ws.write(r, base_col + 6, u'FP' ,         style_title)


            non_adjust_fp = 0.0
            
            q = FunctionEntity.gql("WHERE project_key=:1 ORDER BY sort_order", project_key)
            functions = q.fetch(MAX_FUNCTION)
            for i, func in enumerate(functions):
                r += 1
                ws.write(r, base_col + 0, i + 1)
                ws.write(r, base_col + 1, func.function_name)
                ws.write(r, base_col + 2, func.function_category_name())
                ws.write(r, base_col + 3, func.measurement_index1 , style_num)
                ws.write(r, base_col + 4, func.measurement_index2 , style_num)
                ws.write(r, base_col + 5, func.complexity())
                ws.write(r, base_col + 6, to_float(func.function_point()), style_num)
                
                non_adjust_fp = non_adjust_fp + to_float(func.function_point())
            
            r += 1
            ws.write(r, base_col + 3, u'未調整FP値 計' , style_title)
            ws.write(r, base_col + 6, non_adjust_fp, style_num)
            
            r += 1
            ws.write(r, base_col + 3, u'調整係数 計' , style_title)
            ws.write(r, base_col + 6, project.total_adjust_points(), style_num)

            r += 1
            ws.write(r, base_col + 3, u'FP 値' , style_title)
            ws.write(r, base_col + 6, non_adjust_fp + project.total_adjust_points(), style_num)

            r += 1
            dat = ((u'データ通信(Data Communications)'            ,project.data_communications),
                   (u'分散処理(Distributed Data Processing)'      ,project.distoributed_processing),
                   (u'性能(Performance)'                          ,project.performance),
                   (u'高負荷構成(Heavily Used Configuration)'     ,project.heavily_used_configuration),
                   (u'トランザクション量(Transaction Rate)'       ,project.transaction_rate),
                   (u'オンライン入力(Online Data Entry)'          ,project.online_data_entry),
                   (u'エンドユーザー効率(End-User Efficiency)'    ,project.enduser_efficiency ),
                   (u'オンライン更新(Online Update)'              ,project.online_update),
                   (u'複雑な処理(Complex Processing)'             ,project.complex_processing),
                   (u'再利用可能性(Reusability)'                  ,project.reusability),
                   (u'インストール容易性(Installation Ease)'      ,project.installation_ease),
                   (u'運用性(Operational Ease)'                   ,project.operational_ease),
                   (u'複数サイト(Multiple Sites)'                 ,project.multiple_sites),
                   (u'変更容易性(Facilitate Change)'              ,project.facilitate_change),
            )
            
            r = r + 2
            ws.write(r, base_col + 2, u'調整係数', style_title)
            for (k, d) in enumerate(dat):
                r = r + 1
                ws.write(r, base_col + 1, k + 1)
                ws.write(r, base_col + 2, d[0])
                ws.write(r, base_col + 3, d[1], style_num)
        
            wb.save(self.response.out)
            return None

        else:
            html = "<html><head></head><body><span style='color:red'>エラー! ログインされていません。ログインしてください。</span></body></html>"
            return self.response.out.write(html)
        
        err = {'error':'Unknown Error'}
        return self.response.out.write(json.write(err))