Exemple #1
0
    def check_for_conflicts(self, files):
        local_store = self.get_local_store()
        retrieve_result = self.project.get_retrieve_result({"files": files})
        properties = retrieve_result.fileProperties
        for f in files:
            ext = util.get_file_extension_no_period(f)
            apex_type = util.get_meta_type_by_suffix(ext)
            apex_entity_api_name = util.get_file_name_no_extension(f)
            body_field = 'Body'
            if apex_type['xmlName'] == 'ApexPage' or apex_type[
                    'xmlName'] == 'ApexComponent':
                body_field = 'Markup'
            api_name_plus_extension = apex_entity_api_name + "." + ext

            server_property = None
            for p in properties:
                if p["fullName"] == apex_entity_api_name:
                    server_property = p
                    try:
                        config.api_name_to_id_dict[p["fullName"]] = p["id"]
                    except:
                        pass
                    break
            if api_name_plus_extension in local_store and server_property != None:
                local_store_entry = local_store[api_name_plus_extension]
                local_last_modified_date = local_store_entry[
                    "lastModifiedDate"]
                server_last_modified_date = server_property['lastModifiedDate']
                last_modified_name = server_property['lastModifiedByName']
                qr = self.project.sfdc_client.execute_query(
                    "Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'"
                    .format(body_field, apex_type['xmlName'],
                            apex_entity_api_name))
                # lets use the soap endpoint here to help the folks being affected by their proxy refusing REST requests bc of Authorization header
                # https://github.com/joeferraro/MavensMate-SublimeText/issues/315#issuecomment-35996112
                # try:
                #     qr = self.project.sfdc_client.query("Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'".format(body_field, apex_type['xmlName'], apex_entity_api_name))
                # except:
                #     qr = self.project.sfdc_client.execute_query("Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'".format(body_field, apex_type['xmlName'], apex_entity_api_name))
                body = qr['records'][0][body_field]
                body = body.encode('utf-8')
                if str(local_last_modified_date) != str(
                        server_last_modified_date
                ) or local_store_entry['mmState'] == 'dirty':
                    if local_store_entry['mmState'] != 'dirty':
                        local_store_entry['mmState'] = 'dirty'
                    msg = util.generate_request_for_action_response(
                        "The local version of your file and the server copy are out of sync.\n\n{0} was last modified by {1} on {2}."
                        .format(apex_entity_api_name, last_modified_name,
                                server_last_modified_date),
                        'compile', ["Diff With Server", "Operation Canceled"],
                        tmp_file_path=util.put_tmp_file_on_disk(
                            apex_entity_api_name, body,
                            apex_type.get('suffix', '')))
                    self.mark_dirty(api_name_plus_extension)
                    return True, msg
        return False, None
Exemple #2
0
    def sync_with_server(self, files):
        local_store = self.get_local_store()
        retrieve_result = self.project.get_retrieve_result({"files": files})
        properties = retrieve_result.fileProperties
        for f in files:
            debug('\n\n\n\nFILE BRO ----->')

            ext = util.get_file_extension_no_period(f)
            apex_type = util.get_meta_type_by_suffix(ext)
            apex_entity_api_name = util.get_file_name_no_extension(f)
            body_field = 'Body'
            if apex_type['xmlName'] == 'ApexPage' or apex_type[
                    'xmlName'] == 'ApexComponent':
                body_field = 'Markup'
            api_name_plus_extension = apex_entity_api_name + "." + ext

            server_property = None
            for p in properties:
                if p["fullName"] == apex_entity_api_name:
                    server_property = p
                    try:
                        config.api_name_to_id_dict[p["fullName"]] = p["id"]
                    except:
                        pass
                    break

            debug(api_name_plus_extension)

            if api_name_plus_extension in local_store and server_property != None:
                local_store_entry = local_store[api_name_plus_extension]
                local_last_modified_date = local_store_entry[
                    "lastModifiedDate"]
                server_last_modified_date = server_property['lastModifiedDate']
                last_modified_name = server_property['lastModifiedByName']

                qr = self.project.sfdc_client.execute_query(
                    "Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'"
                    .format(body_field, apex_type['xmlName'],
                            apex_entity_api_name))
                body = qr['records'][0][body_field]
                body = body.encode('utf-8')

                msg = util.generate_sync_response(
                    "Server version was last modified by {0} on {1}.".format(
                        last_modified_name, server_last_modified_date),
                    tmp_file_path=util.put_tmp_file_on_disk(
                        apex_entity_api_name, body,
                        apex_type.get('suffix', '')))
                return msg
        return None
Exemple #3
0
 def check_for_conflicts(self, files):
     local_store = self.get_local_store()
     retrieve_result = self.project.get_retrieve_result({"files":files})
     properties = retrieve_result.fileProperties
     for f in files:
         ext = util.get_file_extension_no_period(f)
         apex_type = util.get_meta_type_by_suffix(ext)
         apex_entity_api_name = util.get_file_name_no_extension(f)
         body_field = 'Body'
         if apex_type['xmlName'] == 'ApexPage' or apex_type['xmlName'] == 'ApexComponent':
             body_field = 'Markup'
         api_name_plus_extension = apex_entity_api_name+"."+ext
         
         server_property = None
         for p in properties:
             if p["fullName"] == apex_entity_api_name:
                 server_property = p
                 try:
                     config.api_name_to_id_dict[p["fullName"]] = p["id"]
                 except:
                     pass
                 break
         if api_name_plus_extension in local_store and server_property != None:
             local_store_entry = local_store[api_name_plus_extension]
             local_last_modified_date = local_store_entry["lastModifiedDate"]
             server_last_modified_date = server_property['lastModifiedDate']
             last_modified_name = server_property['lastModifiedByName']
             qr = self.project.sfdc_client.execute_query("Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'".format(body_field, apex_type['xmlName'], apex_entity_api_name))
             # lets use the soap endpoint here to help the folks being affected by their proxy refusing REST requests bc of Authorization header
             # https://github.com/joeferraro/MavensMate-SublimeText/issues/315#issuecomment-35996112
             # try:
             #     qr = self.project.sfdc_client.query("Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'".format(body_field, apex_type['xmlName'], apex_entity_api_name))
             # except:
             #     qr = self.project.sfdc_client.execute_query("Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'".format(body_field, apex_type['xmlName'], apex_entity_api_name))
             body = qr['records'][0][body_field]
             body = body.encode('utf-8')
             if str(local_last_modified_date) != str(server_last_modified_date) or local_store_entry['mmState'] == 'dirty':
                 if local_store_entry['mmState'] != 'dirty':
                     local_store_entry['mmState'] = 'dirty'
                 msg = util.generate_request_for_action_response(
                     "The local version of your file and the server copy are out of sync.\n\n{0} was last modified by {1} on {2}."
                     .format(apex_entity_api_name, last_modified_name, server_last_modified_date),
                     'compile',
                     ["Diff With Server","Operation Canceled"],
                     tmp_file_path=util.put_tmp_file_on_disk(apex_entity_api_name, body, apex_type.get('suffix', ''))
                 )
                 self.mark_dirty(api_name_plus_extension)
                 return True, msg
     return False, None
Exemple #4
0
    def sync_with_server(self, files):
        local_store = self.get_local_store()
        retrieve_result = self.project.get_retrieve_result({"files":files})
        properties = retrieve_result.fileProperties
        for f in files:
            debug('\n\n\n\nFILE BRO ----->')

            ext = util.get_file_extension_no_period(f)
            apex_type = util.get_meta_type_by_suffix(ext)
            apex_entity_api_name = util.get_file_name_no_extension(f)
            body_field = 'Body'
            if apex_type['xmlName'] == 'ApexPage' or apex_type['xmlName'] == 'ApexComponent':
                body_field = 'Markup'
            api_name_plus_extension = apex_entity_api_name+"."+ext
            
            server_property = None
            for p in properties:
                if p["fullName"] == apex_entity_api_name:
                    server_property = p
                    try:
                        config.api_name_to_id_dict[p["fullName"]] = p["id"]
                    except:
                        pass
                    break
            
            debug(api_name_plus_extension)

            if api_name_plus_extension in local_store and server_property != None:
                local_store_entry = local_store[api_name_plus_extension]
                local_last_modified_date = local_store_entry["lastModifiedDate"]
                server_last_modified_date = server_property['lastModifiedDate']
                last_modified_name = server_property['lastModifiedByName']
                
                qr = self.project.sfdc_client.execute_query("Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'".format(body_field, apex_type['xmlName'], apex_entity_api_name))
                body = qr['records'][0][body_field]
                body = body.encode('utf-8')

                msg = util.generate_sync_response(
                    "Server version was last modified by {0} on {1}.".format(last_modified_name, server_last_modified_date),
                    tmp_file_path=util.put_tmp_file_on_disk(apex_entity_api_name, body, apex_type.get('suffix', ''))
                )
                return msg
        return None