<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def import_locations(self, cells_file):
 """Parse OpenCellID.org data files. ``import_locations()`` returns a dictionary with keys containing the OpenCellID.org_ database identifier, and values consisting of a ``Cell`` objects. It expects cell files in the following format:: 22747,52.0438995361328,-0.2246370017529,234,33,2319,647,0,1, 2008-04-05 21:32:40,2008-04-05 21:32:40 22995,52.3305015563965,-0.2255620062351,234,10,20566,4068,0,1, 2008-04-05 21:32:59,2008-04-05 21:32:59 23008,52.3506011962891,-0.2234109938145,234,10,10566,4068,0,1, 2008-04-05 21:32:59,2008-04-05 21:32:59 The above file processed by ``import_locations()`` will return the following ``dict`` object:: {23008: Cell(23008, 52.3506011963, -0.223410993814, 234, 10, 10566, 4068, 0, 1, datetime.datetime(2008, 4, 5, 21, 32, 59), datetime.datetime(2008, 4, 5, 21, 32, 59)), 22747: Cell(22747, 52.0438995361, -0.224637001753, 234, 33, 2319, 647, 0, 1, datetime.datetime(2008, 4, 5, 21, 32, 40), datetime.datetime(2008, 4, 5, 21, 32, 40)), 22995: Cell(22995, 52.3305015564, -0.225562006235, 234, 10, 20566, 4068, 0, 1, datetime.datetime(2008, 4, 5, 21, 32, 59), datetime.datetime(2008, 4, 5, 21, 32, 59))} Args: cells_file (iter):
 Cell data to read Returns: dict: Cell data with their associated database identifier .. _OpenCellID.org: http://opencellid.org/ """

        self._cells_file = cells_file
        field_names = ('ident', 'latitude', 'longitude', 'mcc', 'mnc', 'lac',
                       'cellid', 'crange', 'samples', 'created', 'updated')
        parse_date = lambda s: datetime.datetime.strptime(s,
                                                          '%Y-%m-%d %H:%M:%S')
        field_parsers = (int, float, float, int, int, int, int, int, int,
                         parse_date, parse_date)
        data = utils.prepare_csv_read(cells_file, field_names)

        for row in data:
            try:
                cell = dict((n, p(row[n]))
                            for n, p in zip(field_names, field_parsers))
            except ValueError:
                if r"\N" in row.values():
                    # A few entries are incomplete, and when that occurs the
                    # export includes the string "\N" to denote missing
                    # data.  We just ignore them for now
                    logging.debug('Skipping incomplete entry %r' % row)
                    break
                else:
                    raise utils.FileFormatError('opencellid.org')
            else:
                self[row['ident']] = Cell(**cell)