def __call__(self, value, *args, **kwargs): instance = kwargs.get('instance') request = kwargs.get('REQUEST') if request and request.form.get('BatchStartDate'): startdate = _strptime(request.form.get('BatchStartDate'), '%Y-%m-%d %H:%M') else: startdate = _strptime(instance.getBatchStartDate(), '%Y-%m-%d %H:%M') enddate = _strptime(value, '%Y-%m-%d %H:%M') translate = api.get_tool('translation_service', instance).translate if not enddate >= startdate: msg = _("Start date must be before End Date") return to_utf8(translate(msg)) return True
def strptime(context, value): """given a string, this function tries to return a DateTime.DateTime object with the date formats from i18n translations """ val = "" for fmt in ['date_format_long', 'date_format_short']: fmtstr = context.translate(fmt, domain='bika', mapping={}) fmtstr = fmtstr.replace(r"${", '%').replace('}', '') try: val = _strptime(value, fmtstr) except ValueError: continue try: val = DateTime(*list(val)[:-6]) except DateTimeError: val = "" if val.timezoneNaive(): # Use local timezone for tz naive strings # see http://dev.plone.org/plone/ticket/10141 zone = val.localZone(safelocaltime(val.timeTime())) parts = val.parts()[:-1] + (zone,) val = DateTime(*parts) break else: try: # The following will handle an rfc822 string. value = value.split(" +", 1)[0] val = DateTime(value) except: logger.warning("DateTimeField failed to format date " "string '%s' with '%s'" % (value, fmtstr)) return val
def strptime(datestring, format): return datetime.fromtimestamp(_strptime(datestring, format))
NERC DataGrid Project This implementation is adapted from the Java OpenSAML implementation.""" __author__ = "P J Kershaw" __date__ = "10/08/09" __copyright__ = "Copyright 2019 United Kingdom Research and Innovation" __license__ = "BSD - see LICENSE file in top-level package directory" __contact__ = "*****@*****.**" __revision__ = '$Id$' try: from datetime import strptime except ImportError: # Allow for Python < 2.5 from time import strptime as _strptime strptime = lambda datetimeStr, format: datetime(*(_strptime(datetimeStr, format)[0:6])) from datetime import datetime, timedelta # Interpret a string as a boolean str2Bool = lambda str: str.lower() in ("yes", "true", "t", "1") class SAMLDateTime(object): """Generic datetime formatting utility for SAML timestamps - XMLSchema Datetime format @cvar DATETIME_FORMAT: date/time format string for SAML timestamps @type DATETIME_FORMAT: string """ DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%S"
def strptime(self, datestring, format): return self.fromtimestamp(_strptime(datestring, format))
def timeFromPtime(self, text, pattern): return _timegm(_strptime(text, pattern))
def sign_up(self, data: dict) -> _auth.model.AbstractUser: # Searching for token in input data token = data.get('token') if not token: for k, v in data.items(): if k.endswith('token'): token = v break if not token: raise ValueError('No uLogin token received') # Getting user's data from uLogin response = _urlopen( 'http://ulogin.ru/token.php?token={}&host={}'.format( token, _router.request().host)) if response.status != 200: raise _auth.error.AuthenticationError( "Bad response status code from uLogin: {}.".format( response.status)) ulogin_data = _json.loads(response.read().decode('utf-8')) if 'error' in ulogin_data: raise _auth.error.AuthenticationError( "Bad response from uLogin: '******'.".format(ulogin_data['error'])) if 'email' not in ulogin_data or ulogin_data['verified_email'] != '1': raise _auth.error.AuthenticationError( "Email '{}' is not verified by uLogin.".format( ulogin_data['email'])) email = ulogin_data['email'] try: user = _auth.get_user(email) is_new_user = False except _auth.error.UserNotFound: # User is not exists and its creation is not allowed if not _auth.is_sign_up_enabled(): raise _auth.error.AuthenticationError( _lang.t('auth_ui_ulogin@signup_is_disabled')) else: # New users can be created only by system user _auth.switch_user_to_system() # Create new user user = _auth.create_user(email) is_new_user = True # As soon as user created or loaded, set it as current _auth.switch_user(user) # Picture if is_new_user: current_pic = user.picture picture_url = ulogin_data.get('photo_big') if not picture_url: picture_url = ulogin_data.get('photo') # Replace existing picture with provided by uLogin if picture_url: user.picture = _file.create(picture_url) current_pic.delete() # Name if not user.first_name: user.first_name = ulogin_data.get('first_name') if not user.last_name: user.last_name = ulogin_data.get('last_name') # Alter nickname if is_new_user: user.nickname = user.first_last_name # Gender if user.gender not in ('m', 'f') and 'sex' in ulogin_data: user.gender = 'f' if int(ulogin_data['sex']) == 1 else 'm' # Birth date if 'bdate' in ulogin_data: try: b_date = _strptime(ulogin_data['bdate'], '%d.%m.%Y') user.birth_date = _datetime(*b_date[0:5]) except ValueError: # Yes, sometimes uLogin provides strange data here :( pass # Link to profile if 'profile' in ulogin_data and ulogin_data['profile']: user.urls = user.urls + (ulogin_data['profile'], ) # Options options = dict(user.options) options['ulogin'] = ulogin_data user.options = options user.save() return user