예제 #1
0
    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
예제 #2
0
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
예제 #3
0
파일: datetime.py 프로젝트: ghk/prambanan
 def strptime(datestring, format):
     return datetime.fromtimestamp(_strptime(datestring, format))
예제 #4
0
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))
예제 #6
0
파일: datetime.py 프로젝트: audreyr/pyjs
 def strptime(self, datestring, format):
     return self.fromtimestamp(_strptime(datestring, format))
예제 #7
0
 def timeFromPtime(self, text, pattern):
     return _timegm(_strptime(text, pattern))
예제 #8
0
    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