예제 #1
0
 def get_activities(self, before=None, after=None, limit=None):
     """
     Get activities for authenticated user sorted by newest first.
     
     
     :param before: Result will start with activities whose start date is 
                    before specified date. (UTC)
     :type before: datetime.datetime or str
     
     :param after: Result will start with activities whose start date is after
                   specified value. (UTC)
     :type after: datetime.datetime or str
     
     :param limit: How many maximum activities to return.
     :type limit: int  
     """
     if before and after:
         raise ValueError("Cannot specify both 'before' and 'after' params.")
     
     if before:
         if isinstance(before, str):
             before = dateparser.parse(before, ignoretz=True)
         before = time.mktime(before.timetuple())
     elif after:
         if isinstance(after, str):
             after = dateparser.parse(after, ignoretz=True)
         after = time.mktime(after.timetuple())
     
     params = dict(before=before, after=after)
     result_fetcher = functools.partial(self.protocol.get, '/athlete/activities', **params)
     
     results = BatchedResultsIterator(entity=model.Activity, bind_client=self, result_fetcher=result_fetcher, limit=limit)
     return results 
예제 #2
0
파일: client.py 프로젝트: pdiazv/localgears
 def get_activities(self, before=None, after=None, limit=None):
     """
     Get activities for authenticated user sorted by newest first.
     
     
     :param before: Result will start with activities whose start date is 
                    before specified date. (UTC)
     :type before: datetime.datetime or str
     
     :param after: Result will start with activities whose start date is after
                   specified value. (UTC)
     :type after: datetime.datetime or str
     
     :param limit: How many maximum activities to return.
     :type limit: int  
     """
     if before and after:
         raise ValueError("Cannot specify both 'before' and 'after' params.")
     
     if before:
         if isinstance(before, str):
             before = dateparser.parse(before, ignoretz=True)
         before = time.mktime(before.timetuple())
     elif after:
         if isinstance(after, str):
             after = dateparser.parse(after, ignoretz=True)
         after = time.mktime(after.timetuple())
     
     params = dict(before=before, after=after)
     result_fetcher = functools.partial(self.protocol.get, '/athlete/activities', **params)
     
     results = BatchedResultsIterator(entity=model.Activity, bind_client=self, result_fetcher=result_fetcher, limit=limit)
     return results 
예제 #3
0
 def get_time_entires_from_json(self, data):
     return_list = []
     for entry in data['time_entries']:
         return_list.append(
             TimeEntry(
                 start_time=parser.parse(entry['start_time']),
                 end_time=parser.parse(entry['end_time']),
                 days=entry['days'],
                 hours=entry['hours'],
                 minutes=entry['minutes'],
                 seconds=entry['seconds'],
             ))
     self.time_entries = return_list
     return return_list
def localtime_to_utc(dt, localtime='Europe/London', remove_tzinfo=True):
    if type(dt) is not datetime:
        dt = parser.parse(dt)

    localtz = pytz.timezone(localtime)
    localdt = localtz.localize(dt)
    utcdt = localdt.astimezone(pytz.UTC)
    return utcdt.replace(tzinfo=None) if remove_tzinfo is True else utcdt
def any_datetime_to_utc(dt, remove_tzinfo=True):
    """Try to get tz from datetime.tzinfo and convert
    it to utc tz. If datetime is naive we assume its localtime
    and convert to utc
    """
    if type(dt) is not datetime:
        dt = parser.parse(dt)
    # naive
    if not dt.tzinfo:
        return localtime_to_utc(dt, remove_tzinfo=remove_tzinfo)
    utcdt = dt.astimezone(pytz.UTC)
    return utcdt.replace(tzinfo=None) if remove_tzinfo is True else utcdt
예제 #6
0
파일: sheet.py 프로젝트: espoem/utopista_py
def parse_date_to_iso(date: str):
    """

    :param date: date string to parse
    :return: parsed date in ISO format
    """
    if not date:
        return ''

    try:
        parsed_date = parser.parse(parser(), date).isoformat()
    except ValueError:
        try:
            parsed_date = parser.parse(parser(), date,
                                       dayfirst=True).isoformat()
        except ValueError:
            parsed_date = ''
    except Exception:
        parsed_date = ''

    return parsed_date
예제 #7
0
파일: sheet.py 프로젝트: espoem/utopista_py
def user(row):
    assert len(row) > 4
    banned_since = parse_date_to_iso(row[2]) if row[2] else ''
    banned_until = parser.parse(parser(), banned_since) + timedelta(
        days=float(row[1])) if banned_since else ''
    user = {
        'account': row[0] or '',
        'is_banned': row[3].lower() == 'yes',
        'banned_since': banned_since,
        'banned_until': banned_until.isoformat() if banned_until else '',
        'banned_by': row[5],
        'reason': row[4]
    }
    return user
예제 #8
0
파일: data.py 프로젝트: Bllyth/ov
def get_datetime(datetime_str=None):
    if datetime_str is None:
        return now_datetime()

    if isinstance(datetime_str, (datetime.datetime, datetime.timedelta)):
        return datetime_str

    elif isinstance(datetime_str, (list, tuple)):
        return datetime.datetime(datetime_str)

    elif isinstance(datetime_str, datetime.date):
        return datetime.datetime.combine(datetime_str, datetime.time())

    if is_invalid_date_string(datetime_str):
        return None

    try:
        return datetime.datetime.strptime(datetime_str, DATETIME_FORMAT)
    except ValueError:
        return parser.parse(datetime_str)
예제 #9
0
def parse(_start_date):
    if type(_start_date) == datetime.datetime:
        return _start_date
    else:
        return parser.parse(_start_date)
예제 #10
0
 def _order_fields(self, ui_order):
     process_line = partial(self.env['pos.order.line']._order_line_fields)
     terms = []
     values = {}
     values['per_day_reading'] = ui_order.get('per_day_reading') or False
     values['current_reading'] = ui_order.get('current_reading') or False
     values['next_oil_change_km'] = ui_order.get('next_oil_change') or False
     values['next_oil_change_date'] = ui_order.get('next_oil_change_date') or False
     values['car_per_day_read_expect'] = ui_order.get('car_per_day_read_expect') or False
     values['car_id'] = ui_order.get('selected_car') or False
     values['pos_order_id'] = False
     reading_id = None
     if 'selected_employees' in ui_order:
         for emp in ui_order['selected_employees']:
             vals = {}
             vals['emp_id'] = emp
             terms.append((0, 0, vals))
         try:
             if values.get('car_id'):
                 if values.get('next_oil_change_date'):
                     try:
                         values['next_oil_change_date'] = parser.parse(values.get('next_oil_change_date'))
                         values['next_oil_change_date'] = values['next_oil_change_date'].date()
                         values['next_oil_change_date'] = str(values['next_oil_change_date'])
                     except:
                         pass
                 reading_id = self.env['user.cars.readings'].create(values)
                 cars_model = self.env['user.cars']
                 res = cars_model.search([('id', '=', values['car_id'])]).read()
                 if len(res):
                     res = res[0]
                     car_values = {}
                     field_count = 0
                     if not res.get('car_reading_per_day'):
                         if values.get('per_day_reading'):
                             car_values['car_reading_per_day'] = values['per_day_reading']
                             field_count += 1
                     if not res.get('oil_change_after_reading'):
                         if values.get('next_oil_change_date'):
                             car_values['oil_change_after_reading'] = values['next_oil_change_date']
                             field_count += 1
                     if field_count:
                         cars_model.write(car_values)
         except Exception as e:
             print (str(e))
             raise ValidationError(e)
     res = {
         'name': ui_order['name'],
         'user_id': ui_order['user_id'] or False,
         'session_id': ui_order['pos_session_id'],
         'lines': [process_line(l) for l in ui_order['lines']] if ui_order['lines'] else False,
         'pos_reference': ui_order['name'],
         'partner_id': ui_order['partner_id'] or False,
         'date_order': ui_order['creation_date'],
         'fiscal_position_id': ui_order['fiscal_position_id'],
         'employees_ids': terms,
         'amount_tax': ui_order.get('amount_tax') or False,
         'amount_total': ui_order.get('amount_total') or False,
         'amount_paid': ui_order.get('amount_paid') or False,
         'amount_return': ui_order.get('amount_return') or False,
         'car_id': values['car_id'],
         'per_day_reading': values['per_day_reading'],
         'current_reading': values['current_reading'],
         'car_per_day_read_expect': values['car_per_day_read_expect'],
         'next_oil_change_km': values['next_oil_change_km'],
         'next_oil_change_date': values['next_oil_change_date'],
         'reading_id': reading_id.id if reading_id else False
     }
     return res