Esempio n. 1
0
def tz_to_utc(dt, tz, ignoretz=True):
    """Converts a datetime object from the specified timezone to a UTC datetime.

    :param tz: the timezone the datetime is currently in.  tz can be passed
        as a string or as a timezone object. (i.e. 'US/Central' or
        pytz.timezone('US/Central'), etc)
    :param ignoretz: will ignore the timezone portion of the datetime object and
        tzinfo will be None.
    :return: the datetime object by in UTC time.

    Examples:

    >>> tz_to_utc(datetime.datetime(2011, 11, 25, 9), 'US/Central')
    2011-11-25 15:00:00
    >>> tz_to_utc(datetime.datetime(2011, 11, 25, 9), pytz.timezone('US/Central'))
    2011-11-25 15:00:00
    >>> tz_to_utc(datetime.datetime(2011, 11, 25, 9), 'US/Central', False)
    2011-11-25 15:00:00+00:00

    """
    if isinstance(tz, string_types):
        tz = pytz.timezone(tz)

    dt = tz.localize(dt)
    dt = datetime.datetime.astimezone(dt, pytz.timezone('UTC'))

    if ignoretz:
        return dt.replace(tzinfo=None)
    return dt
Esempio n. 2
0
def utc_to_tz(dt, tz, ignoretz=True):
    """ Converts UTC datetime object to the specific timezone.

    :param dt: the UTC datetime object to convert.
    :param tz: the timezone to convert the UTC datetime object info.  tz can be
               passed as a string or as a timezone object. (i.e. 'US/Central' or
               pytz.timezone('US/Central'), etc)
    :param ignoretz: will ignore the timezone portion of the datetime object and
                     tzinfo will be None.
    :return: the datetime object by in UTC time.

    Examples:

    >>> utc_to_tz(datetime.datetime(2011, 11, 25, 9), pytz.timezone('US/Central'))
    2011-11-25 03:00:00
    >>> utc_to_tz(datetime.datetime(2011, 11, 25, 9), 'US/Central', False)
    2011-11-25 03:00:00-06:00

    """
    if isinstance(tz, string_types):
        tz = pytz.timezone(tz)

    dt = pytz.utc.localize(dt)
    dt = dt.astimezone(tz)

    if ignoretz:
        return dt.replace(tzinfo=None)
    return dt
    def handle(self, *args, **options):
        handle = urllib.urlopen(URL)
        data = handle.read()
        content = json.loads(data)

        for item in content:
            updated = None
            if item['last_change']:
                updated = make_aware(
                    parser.parse(item['last_change']),
                    pytz.timezone('Europe/Prague'),
                )
            params = {
                'name': item['name'],
                'translated': item['translated'],
                'percent': item['translated_percent'],
                'updated': updated,
            }
            translation, created = Translation.objects.get_or_create(
                url=item['url_translate'],
                defaults=params
            )
            if not created:
                modified = False
                for key in params:
                    if getattr(translation, key) != params[key]:
                        setattr(translation, key, params[key])
                        modified = True
                    if modified:
                        translation.save()
Esempio n. 4
0
def now_by_tz(tz='US/Central', ignoretz=True):
    """Gets the current datetime object by timezone.

    :param tz: is the timezone to get the date for.  tz can be passed as a
        string or as a timezone object. (i.e. 'US/Central' or
        pytz.timezone('US/Central'), etc)
    :param ignoretz: will ignore the timezone portion of the datetime object and
        tzinfo will be None.
    :return: the current datetime object by tz

    Examples:

    >>> now_by_tz('US/Pacific')
    2011-09-28 10:06:01.130025
    >>> now_by_tz('US/Pacific', False)
    2011-09-28 10:06:01.130025-07:00
    >>> now_by_tz(pytz.timezone('US/Central'))
    2011-09-28 12:06:01.130025
    >>> now_by_tz(pytz.timezone('US/Central'), False)
    2011-09-28 12:06:01.130025-05:00

    """
    if isinstance(tz, string_types):
        tz = pytz.timezone(tz)

    if ignoretz:
        return datetime.datetime.now(tz).replace(tzinfo=None)
    return datetime.datetime.now(tz)
Esempio n. 5
0
    def refresh_services(self):
        response = requests.get(
            '%s?access_token=%s' % (
                PROFILES_URL,
                self.token
            ),
            timeout = TIMEOUT
        )

        if response.status_code == 200:
            self.services.all().delete()
            services = {}
            for profile in response.json():
                remote_id = profile['formatted_service']
                if remote_id in services:
                    service = services[remote_id]
                else:
                    service = self.services.create(
                        remote_id = profile[u'service_id'],
                        name = remote_id,
                        username = profile['service_username']
                    )

                    services[service.remote_id] = service

                epoch = datetime(1970, 1, 1, 0, 0, 0,
                    tzinfo = pytz.timezone(
                        profile['timezone']
                    )
                )

                service.profiles.create(
                    avatar = profile.get('avatar_https',
                        profile.get('avatar')
                    ),
                    created_at = epoch + timedelta(
                        seconds = profile['created_at']
                    ),
                    default = profile['default'],
                    selected = profile['default'],
                    formatted_username = profile['formatted_username'],
                    remote_id = profile['id'],
                    schedules = json.dumps(
                        profile['schedules']
                    )
                )
        else:
            log.error(response.json(), request)
Esempio n. 6
0
    def process_request(self, request):
        tz = request.session.get('user_timezone')

        if tz:
            try:
                timezone.activate(pytz.timezone(tz))
            except:
                timezone.deactivate()
        else:
            timezone.deactivate()

        # Add datetime info the the request. So date/time can be put in context
        # of the user.
        user_datetime = localtime(datetime.utcnow().replace(tzinfo=utc))
        request.user_date = user_datetime.date()
        request.user_datetime = user_datetime
Esempio n. 7
0
 def text(self, strip_html=False):
     """Creates the text representation of the notification."""
     value = ""
     try:
         time_zone = pytz.timezone("Europe/Madrid")
         target_date = timezone.localtime(self.target.departure, time_zone)
         target_date = localize(target_date)
         if self.verb == JOIN:
             # actor is a user and target is a journey
             value = _(
                 "%(user)s ha <strong>solicitado</strong> unirse al viaje <strong>%(journey)s</strong> del %(date)s"
             ) % {
                 "user": six.text_type(self.actor),
                 "journey": six.text_type(self.target).lower(),
                 "date": target_date,
             }
         elif self.verb == LEAVE:
             value = _(
                 "%(user)s ha <strong>abandonado</strong> el viaje <strong>%(journey)s</strong> del %(date)s"
             ) % {
                 "user": six.text_type(self.actor),
                 "journey": six.text_type(self.target).lower(),
                 "date": target_date,
             }
         elif self.verb == THROW_OUT:
             value = _(
                 "%(user)s te ha <strong>expulsado</strong> del viaje <strong>%(journey)s</strong> del %(date)s"
             ) % {
                 "user": six.text_type(self.actor),
                 "journey": six.text_type(self.target).lower(),
                 "date": target_date,
             }
         elif self.verb == CONFIRM:
             value = _(
                 "%(user)s te ha <strong>confirmado</strong> para el viaje <strong>%(journey)s</strong> del %(date)s"
             ) % {
                 "user": six.text_type(self.actor),
                 "journey": six.text_type(self.target).lower(),
                 "date": target_date,
             }
         elif self.verb == REJECT:
             value = _(
                 "%(user)s te ha <strong>rechazado</strong> para el viaje <strong>%(journey)s</strong> del %(date)s"
             ) % {
                 "user": six.text_type(self.actor),
                 "journey": six.text_type(self.target).lower(),
                 "date": target_date,
             }
         elif self.verb == CANCEL:
             value = _(
                 "El viaje <strong>%(journey)s</strong> del %(date)s ha sido <strong>cancelado</strong>"
             ) % {
                 "journey": six.text_type(self.actor).lower(),
                 "date": target_date,
             }
         elif self.verb == MESSAGE:
             value = _(
                 "%(user)s ha mandado un <strong>nuevo mensaje</strong> en <strong>%(journey)s</strong> del %(date)s"
             ) % {
                 "user": six.text_type(self.actor),
                 "journey": six.text_type(self.target).lower(),
                 "date": target_date,
             }
     except AttributeError:
         pass
     if strip_html:
         value = strip_tags(value)
     return mark_safe(value)
Esempio n. 8
0
def pay_notify(request):
    try:
        paymethod = Pay.getPayMethod(PayAccount.Nowpay)
        account = paymethod.getAccount(True)
        pay = Nowpay()
        logger.info("Received nowpay asynchronized pure notify '%s'" %(request.body))
        parameters = {k: v[0] for k, v in parse_qs(request.body).iteritems()}
        parameters['mhtOrderName'] = unicode(parameters['mhtOrderName'], "utf-8")
        logger.info("Received nowpay asynchronized notify at %s with parameters '%s'." %(datetime.now(), 
            '&'.join(['%s=%s' % (key, v) for key,v in parameters.iteritems()])))
        if parameters['appId'] == account.pid:
#             and parameters['signature'] ==\
#             pay.doSign(parameters, ('mhtSignType', 'mhtSignature'), account.key):
            tradenum = parameters['mhtOrderNo']
            try:
                transaction = Transaction.objects.get(id=getIdFromTradeNum(tradenum))
                if transaction.tradeStatus == 'TRADE_FINISHED' or transaction.tradeStatus == 'TRADE_CLOSED':
                    # already completed transaction
                    return HttpResponse("success=Y")
                elif parameters['tradeStatus'] == 'A001':
                    if 'nowPayAccNo' in parameters:
                        transaction.paytradeNum = parameters['tradeStatus']
                    transaction.tradeStatus = 'TRADE_SUCCESS'
                    transaction.paidDate = datetime.now().replace(tzinfo=utc).astimezone(pytz.timezone(TIME_ZONE))
                    transaction.state = 2
                    transaction.save()
                
                    transactionSuccessNotification(transaction)
                    return HttpResponse("success=Y")
                logger.warn('Notify the transcation with error code %s.' %(parameters['tradeStatus']))
            except Transaction.DoesNotExist:
                #TODO handle error case
                pass
        else:
            logger.warn("nowpay notify is illegal.")
    except Exception, e:
        logger.error("exception occurred when processing nowpay notification.")
        logger.exception(e)
Esempio n. 9
0
def generate_yml_file():

    groups = Group.objects.all().order_by('id')
    attr_names = ['Тип часов', 'Цвет']
    gender_values = Value.objects.filter(attribute__name__in=attr_names)

    values_l_2 = Value.objects.filter(value_enum__in=[
        'Кварцевые', 'Механические', 'Спортивный', 'цифровой (электронный)'
    ])

    root_nodes = Node.objects.filter(_depth=1,
                                     attribute_values__in=gender_values)
    nodes_l_2 = Node.objects.filter(parent__in=root_nodes,
                                    _depth=2,
                                    attribute_values__in=values_l_2)
    country_values = Value.objects.filter(attribute__name='Страна')
    parent_nodes = nodes_l_2.union(root_nodes)
    parents = [parent for parent in parent_nodes]
    nodes_l_3 = Node.objects.filter(parent__in=parents).filter(
        attribute_values__in=country_values)

    nodes = root_nodes.union(nodes_l_2)
    nodes = nodes.union(nodes_l_3)
    nodes = [node.id for node in nodes]
    root = Node.objects.get(_depth=0)
    nodes.append(root.id)
    qs = Node.objects.filter(id__in=nodes).exclude(
        name__contains='Swiss Military')
    nodes = list(qs)
    nodes.sort(key=sorting_function)

    for category in Node.objects.all():
        cat_av = category.attribute_values.all()
        cat_av_set = {v.id for v in cat_av}

        for node in nodes:
            node_av = node.attribute_values.all()
            node_av_set = {v.id for v in node_av}
            difference = node_av_set.difference(cat_av_set)
            if len(difference) == 0 and node._depth != 0:
                category.add_rr_node(node)

    category = Node.objects.get(_depth=0)
    category.add_rr_node(category)

    products = Product.objects.available()
    date = now().astimezone(pytz.timezone(
        settings.TIME_ZONE)).strftime('%Y-%m-%d %H:%M')

    context = {
        'base_url':
        'https://presidentwatches.ru',
        'date':
        date,
        'categories':
        nodes,
        'qs':
        qs,
        'products':
        products,
        'get_nodes_by_product':
        lambda qs, product: get_nodes_by_product(qs, product),
        'club_prices':
        lambda instance: club_prices(groups=groups, instance=instance)
    }

    xml_raw = render_to_string(template_name="api/retail-rocket.xml",
                               context=context)

    with open(FILEPATH, "w") as fp:
        fp.write(xml_raw)
Esempio n. 10
0
    def ready(self):
        """
         set datetime in utc for job schedule
        """
        date_now = datetime.datetime.utcnow()
        year = date_now.year
        month = date_now.month
        day = date_now.day
        timezone_local = pytz.timezone(settings.TIME_ZONE)

        date_schedule_sendmail = datetime.datetime.strptime(
            settings.SEND_MAIL_TIME, '%H:%M:%S')
        hour_sendmail = date_schedule_sendmail.hour
        minutes_sendmail = date_schedule_sendmail.minute
        seconds_sendmail = date_schedule_sendmail.second

        date_schedule_sendmail = datetime.datetime(year, month, day,
                                                   hour_sendmail,
                                                   minutes_sendmail,
                                                   seconds_sendmail)
        date_schedule_sendmail = timezone_local.localize(
            date_schedule_sendmail)
        date_schedule_sendmail = date_schedule_sendmail.astimezone(pytz.utc)

        date_schedule_clear = datetime.datetime.strptime(
            settings.CLEAR_OLD_TOPICS_TIME, '%H:%M:%S')

        hour_clear = date_schedule_clear.hour
        minutes_clear = date_schedule_clear.minute
        seconds_clear = date_schedule_clear.second

        date_schedule_clear = datetime.datetime(year, month, day, hour_clear,
                                                minutes_clear, seconds_clear)
        date_schedule_clear = timezone_local.localize(date_schedule_clear)
        date_schedule_clear = date_schedule_clear.astimezone(pytz.utc)

        while date_schedule_sendmail <= datetime.datetime.utcnow().astimezone(
                pytz.utc):
            date_schedule_sendmail = date_schedule_sendmail + datetime.timedelta(
                seconds=settings.SEND_MAIL_INTERVAL)

        while date_schedule_clear <= datetime.datetime.utcnow().astimezone(
                pytz.utc):
            date_schedule_clear = date_schedule_clear + datetime.timedelta(
                seconds=settings.CLEAR_OLD_TOPICS_INTERVAL)

        from . import jobs

        try:
            scheduler = django_rq.get_scheduler('default')
            for job in scheduler.get_jobs():
                if job.func_name == 'forumTopics.jobs.sendmail':
                    job.delete()
                if job.func_name == 'forumTopics.jobs.deleteOldTopics':
                    job.delete()

            scheduler.schedule(scheduled_time=date_schedule_sendmail,
                               func=jobs.sendmail,
                               interval=settings.SEND_MAIL_INTERVAL,
                               result_ttl=settings.SEND_MAIL_INTERVAL + 300)

            scheduler.schedule(scheduled_time=date_schedule_clear,
                               func=jobs.deleteOldTopics,
                               interval=settings.CLEAR_OLD_TOPICS_INTERVAL,
                               result_ttl=settings.CLEAR_OLD_TOPICS_INTERVAL +
                               300)

            count_send_mail = 0
            count_deleteOldTopics = 0
            for job in scheduler.get_jobs():
                if job.func_name == 'forumTopics.jobs.sendmail':
                    count_send_mail += 1
                    if count_send_mail > 1:
                        job.delete()
                if job.func_name == 'forumTopics.jobs.deleteOldTopics':
                    count_deleteOldTopics += 1
                    if count_deleteOldTopics > 1:
                        job.delete()

        except ConnectionError:
            pass
Esempio n. 11
0
def today_alberta_tz():
    return datetime.now(pytz.timezone('America/Edmonton')).date()
Esempio n. 12
0
def assistant_offer_booking_by_uuid(request, assistant_uuid):
    if request.user.is_authenticated():
        if request.user.cellphone is None or request.user.cellphone == '':
            return HttpResponse(
                simplejson.dumps({
                    'code': 16,
                    'msg': 'missing contact information'
                }))
        try:
            offer_booking = simplejson.loads(request.body)
            offerday = datetime.datetime.utcfromtimestamp(
                float(offer_booking['offerDay'])).replace(
                    tzinfo=utc).astimezone(pytz.timezone(settings.TIME_ZONE))
            if (offerday -
                    datetime.datetime.now().replace(tzinfo=utc)).days <= 2:
                offerhour = int(offer_booking['offerHour'])
                offerday = offerday.replace(hour=offerhour, minute=0)
                offerduring = int(offer_booking['offerDuring'])
                assistant = Assistant.objects.filter(ASSISTANT_FILTER).get(
                    uuid=uuid.UUID(assistant_uuid))
                assistantsOffers = AssistantOffer.objects.filter(
                    ASSISTANT_OFFER_FILTER).filter(assistant=assistant).filter(
                        day=getattr(
                            AssistantOffer.day, AssistantOffer.day._flags[
                                offerday.weekday()]))
                offertimerange = [
                    offerday, offerday + datetime.timedelta(hours=offerduring)
                ]
                for offer in assistantsOffers:
                    if offer.starttime.hour <= offerhour and offer.endtime.hour > offerhour and offer.endtime.hour >= (
                            offerhour + offerduring):
                        appoints = AssistantAppointment.objects.filter(
                            ASSISTANTAPPOINTMENT_FILTER).filter(
                                assistant=assistant).filter(
                                    (Q(starttime__gte=offertimerange[0])
                                     & Q(starttime__lt=offertimerange[1]))
                                    | (Q(endtime__gt=offertimerange[0])
                                       & Q(endtime__lte=offertimerange[1])))
                        if appoints.exists():
                            available_payment = True
                            for appoint in appoints:
                                if (appoint.transaction.state == 2 or appoint.transaction.state == 5) or \
                                    (appoint.transaction.state == 1 and not appoint.transaction.paymentExpired):
                                    if appoint.user == request.user:
                                        return HttpResponse(
                                            simplejson.dumps({
                                                'code':
                                                2,
                                                'msg':
                                                'order has been created',
                                                'state':
                                                appoint.state
                                            }))
                                    else:
                                        available_payment = False
                                else:
                                    appoint.state = 8
                                    appoint.transaction.state = 3
                                    appoint.transaction.save()
                                    appoint.save()
                            if not available_payment:
                                return HttpResponse(
                                    simplejson.dumps({
                                        'code': 1,
                                        'msg': 'unavailable'
                                    }))
                        # retrieve/create a goods
                        name = u"预约%s %s点 至 %s点" % (
                            offer.assistant.nickname,
                            offertimerange[0].strftime("%Y-%m-%d %H"),
                            offertimerange[1].strftime("%H"))
                        hashvalue = hashlib.md5(
                            u"%s %s-%s" %
                            (offer.assistant.uuid, offertimerange[0],
                             offertimerange[1])).hexdigest().upper()
                        goods, created = Goods.objects.get_or_create(
                            sku=hashvalue,
                            defaults={
                                'name': name,
                                'description': name,
                                'price': offer.price * offerduring,
                                #                        goods, created = Goods.objects.get_or_create(sku=hashvalue, defaults={'name': name, 'description': name, 'price':0.01,
                                'type': 2,
                                'sku': hashvalue
                            })
                        transaction, url = createTransaction(request, goods)
                        transaction.validUntilDate = datetime.datetime.now(
                        ) + timedelta(minutes=Pay.PAYMENT_TIMEOUT)
                        transaction.save()
                        AssistantAppointment.objects.create(
                            assistant=assistant,
                            user=request.user,
                            poolroom=offer.poolroom,
                            goods=goods,
                            transaction=transaction,
                            starttime=offertimerange[0],
                            endtime=offertimerange[1],
                            duration=offerduring,
                            price=goods.price,
                            createdDate=datetime.datetime.now(),
                            state=1)
                        return HttpResponse(
                            simplejson.dumps({
                                'code': 0,
                                'msg': 'order is created.',
                                'payurl': url
                            }))
                return HttpResponse(
                    simplejson.dumps({
                        'code': -3,
                        'msg': 'illegal data'
                    }))
            return HttpResponse(
                simplejson.dumps({
                    'code': -2,
                    'msg': 'illegal day'
                }))
        except Assistant.DoesNotExist:
            return HttpResponse(
                simplejson.dumps({
                    'code': -1,
                    'msg': 'illegal data'
                }))
        except ValueError:
            return HttpResponse(
                simplejson.dumps({
                    'code': -1,
                    'msg': 'illegal data'
                }))

    raise PermissionDenied("login firstly.")
Esempio n. 13
0
def create_verification_code(request):
    """ Sends verification code to the specified user and saves all required data for its further verification.

    :request_field integer user_id: BotMother user platform_id.
    :request_field string phone_number: Phone number to be verified.

    :response_field boolean success

    :special_error string error: "Try later"
    :special_error_field integer seconds_left: How many seconds left until user can use this hook again.
    """

    user_id = int(request.POST['user_id'])
    phone_number = str(request.POST['phone_number'])

    try:
        phone_number = phonenumbers.parse(phone_number, "RU")
        if phone_number.italian_leading_zero or len(
                str(phone_number.national_number)) != 10:
            return JsonResponse({
                "success": False,
                "error": "Phone number wrong"
            })
    except phonenumbers.phonenumberutil.NumberParseException:
        return JsonResponse({"success": False, "error": "Phone number wrong"})

    if BotUser.objects.filter(bot_user_id=user_id).first() is None:
        return JsonResponse({
            "success": False,
            "error": "User with this id doesn't exist"
        })

    user = BotUser.objects.get(bot_user_id=user_id)
    if user.phone_number_verified:
        # User has already verified his phone
        return JsonResponse({
            "success": False,
            "error": "User with this id has verified his phone"
        })
    elif BotUser.objects.filter(phone_number=phone_number).first() is not None:
        confirmed_user = BotUser.objects.get(phone_number=phone_number)
        if confirmed_user.phone_number_verified:
            # Someone already verified this phone
            return JsonResponse({
                "success": False,
                "error": "This phone is already used"
            })
    elif user.phones_changed_at_auth > settings.MAX_PHONE_CHANGES:
        dt_now = now().astimezone(pytz.timezone(settings.TIME_ZONE))
        time_delta = dt_now - user.last_phone_change_try
        if time_delta < settings.MIN_TD_WHEN_MAX_PHONE_CHANGES_EXCEED:
            # Too many verification requests, user should wait
            seconds_left = (settings.MIN_TD_WHEN_MAX_PHONE_CHANGES_EXCEED -
                            time_delta).seconds
            return JsonResponse({
                "success": False,
                "error": "Try later",
                "seconds_left": seconds_left
            })

    verification_code = generate_verification_code()
    status_code, json_data = send_verification_code(verification_code,
                                                    phone_number)
    if status_code != 200 or json_data['code'] != 1:
        # Couldn't send verification code
        logger.error(
            "Code not sent to {}{}. Request body is {}. SMS API status code {}, response {}"
            .format(phone_number.country_code, phone_number.national_number,
                    request.body, status_code, json_data))
        return JsonResponse({"success": False, "error": "Couldn't send code"})
    else:
        user.phone_number = phone_number
        user.phone_verification_code = verification_code
        user.phones_changed_at_auth += 1
        user.last_phone_change_try = now().astimezone(
            pytz.timezone(settings.TIME_ZONE))
        user.save()

    return JsonResponse({"success": True})
Esempio n. 14
0
def get_date_obj(date_list):
    moscow_tz = pytz.timezone('Europe/Moscow')
    return moscow_tz.localize(datetime(*date_list))
Esempio n. 15
0
def orders(request):
    date = datetime.now()
    apply_filters(request, 'order_filters', {'date', 'status', 'org', 'user', 'paid'})
    if request.method == 'POST' and request.user.has_perm('ofd_app.manage_order_status'):

        id = to_int(request.POST.get('order_id', 0), 0)
        status = request.POST.get('status', '').strip()
        admin_comment = request.POST.get('admin_comment', '').strip()
        codes = request.POST.get('order_codes', '').strip()

        if id > 0 and len(status) > 0:
            try:
                order = Order.objects.get(id=id)
                op_result = order.assign_status(status, admin_comment, codes)

                if op_result:
                    logging.info(f'id:{request.user.id}, username:{request.user.username} - изменил статус заказа № МО-{order.id} на {status}.')
                    send_mail(
                        TEMPLATE_EMAIL_ORDER_STATUS_USER_SUBJECT, 
                        TEMPLATE_EMAIL_ORDER_STATUS_USER_BODY.format(
                            number = id, 
                            date = order.adddate.astimezone(pytz.timezone(TIME_ZONE)).strftime("%Y.%m.%d %H:%M:%S"), 
                            total = order.amount * order.cost, 
                            product = order.product.product_name, 
                            amount = order.amount, 
                            status = MESSAGES[0] if status == 'R' else MESSAGES[1], 
                            comment_template = 'Комментарий администратора: ' if admin_comment else '',
                            comment = admin_comment if admin_comment else ''
                            ), 
                        EMAIL_HOST_USER, 
                        [order.user.email], 
                        fail_silently=False
                        )
                    logging.info(f'Отправлен email на {order.user.email}.')
            except Order.DoesNotExist:
                logging.warning(f'id:{request.user.id}, username:{request.user.username} - пытался изменить статус несуществующего заказа!')

    date_from = datetime.strptime(request.session['order_filters']['date_from'], date_filter_format())
    date_to = datetime.strptime(request.session['order_filters']['date_to'], date_filter_format())
    org = request.session['order_filters']['org']
    status = request.session['order_filters']['status']
    user = request.session['order_filters']['user']
    paid = request.session['order_filters']['paid']
    orders = Order.get_orders(request.user, date_from, date_to, status, org, user, paid)
    order_data = []
    for order in orders:
        product = {
            'product_name': order.product.product_name, 
            'amount'      : order.amount, 'cost': order.cost, 
            'full_cost'   : order.amount * order.cost
            }
        order_data.append({
            'id'           : order.id, 
            'adddate'      : order.adddate.astimezone(pytz.timezone(TIME_ZONE)).strftime("%d.%m.%y %H:%M"), 
            'comment'      : order.comment, 
            'product'      : product, 
            'status'       : order.status.code, 
            'user'         : order.user, 
            'user_role'    : order.user_role, 
            'admin_comment': order.admin_comment, 
            'codes'        : order.codes, 
            'is_paid'      : order.is_paid,
            'allow_receipt': (DATE_AFTER_WHICH_INVOICES_WILL_BE_ISSUED - order.adddate).days < 0
        })
    filters = {}
    if request.user.is_superuser or request.user.is_admin():
        filters['org'] = User.get_organizations()
    elif request.user.is_manager():
        filters['users'] = [{'id': request.user.id, 'first_name': request.user.first_name, 'last_name': request.user.last_name}]
        for item in request.user.get_childs():
            child = {'id': item['id'], 'first_name': item['first_name'], 'last_name': item['last_name']}
            filters['users'].append(child)
    filters['status'] = OrderStatus.get_all_statuses()
    return render(request, 'ofd_app/orders.html', {'orders': construct_pagination(request, order_data), 'filters': filters, 'user_role': request.user.get_role(), 'path': ORDERS})
Esempio n. 16
0
def saveChallenge(request, issuer, poolroom, challenge = None, source = 1, location = None, username = None, group = 1):
    starttime = datetime.datetime.fromtimestamp(float(request.POST['starttime'])/1000, pytz.timezone(TIME_ZONE))
    expiredtime = datetime.datetime.fromtimestamp(float(request.POST['expiredtime'])/1000, pytz.timezone(TIME_ZONE))
    saveChallenge2(issuer, poolroom, starttime, expiredtime, request.POST['nickname'], request.POST['level'], request.POST['tabletype'],
                   request.POST['rule'], request.POST['contact'], 'waiting' if challenge is None else request.POST['status'], challenge, source, location, username, group)
Esempio n. 17
0
def saveMatch(request, poolroomid, match = None, organizer = 1, matchtype = 1):
    attributelist = []
    if request.POST['groupon'] == 'true':
        attributelist.append('groupon')
    if request.POST['coupon'] == 'true':
        attributelist.append('coupon')
    starttime = datetime.datetime.fromtimestamp(float(request.POST['matchtime'])/1000, pytz.timezone(TIME_ZONE))
    data = {       
           'title': request.POST['matchtitle'],
           'bonus': request.POST['cashbonus'],
           'rechargeablecard': request.POST['cardbonous'],
           'otherprize': request.POST['otherbonous'],
           'bonusdetail': request.POST['bonusdetail'],
           'rule': request.POST['matchrule'],
           'description': request.POST['description'],
           'starttime': starttime,
           'enrollfee': request.POST['enrollfee'],
           'enrollfocal': request.POST['enrollfocal'],
           'flags': attributelist,
           'organizer': organizer,
           'type': matchtype,
           }
    if match is None:
        data['poolroom'] = poolroomid
        data['status'] = 'approved'
        newmatch = MatchForm(data)
    else:
        data['status'] = request.POST['status']
        data['poolroom'] = poolroomid
        newmatch = MatchForm(data=data, instance=match)
    if newmatch.is_valid():
        newmatch.save()
        return HttpResponse(json.dumps({'rt': 1, 'msg': 'created'}), content_type="application/json")
    return HttpResponse(json.dumps(dict({'rt': 0}.items() + newmatch.errors.items())), content_type="application/json")
Esempio n. 18
0
from django.shortcuts import render, get_object_or_404, redirect
from django.views import generic
from django.http import HttpResponse
from .models import Post, UserPost, Hashtag, Shpion, ShpionFollowing, ShpionFollowingFollowers, BlackList, PostList, SecondaryUser
import requests
import datetime as dt
from django.conf import settings
import threading
import instaloader
from django.utils.timezone import pytz

from django.utils.decorators import method_decorator
from django.contrib.auth.decorators import login_required
from bs4 import BeautifulSoup

zone = pytz.timezone(settings.TIME_ZONE)


def checkIP():
    ip = requests.get('http://checkip.dyndns.org').content
    soup = BeautifulSoup(ip, 'html.parser')
    return soup.find('body').text


class LockedIterator(object):
    def __init__(self, it):
        self.lock = threading.Lock()
        self.it = it.__iter__()

    def __iter__(self):
        return self
Esempio n. 19
0
    def handle(self, *args, **options):
        dst_dir = SettingManager.get("root_dir")
        src_dir = SettingManager.get("src_holter")
        p = pathlib.Path(src_dir)
        temp_dir = SettingManager.get("temp_dir")

        # в каих каталогах искать "-" дней
        back_days = SettingManager.get("holter_back_days")
        d_start = datetime.now().date() - relativedelta(days=back_days)
        today_dir = datetime.now().strftime('%Y/%m/%d')
        # Ищем последовательность
        pattern = re.compile('(Направление: <b>\d+</b>;)|(Адрес: <b>\d+</b>;)')
        pattern_doc = re.compile('Врач')

        # услуга относящаяся к подразделению
        podrazdeleniye_pk = SettingManager.get("ofd")
        podrazdeleniye_users = DoctorProfile.objects.values_list(
            'pk', 'fio').filter(podrazdeleniye=podrazdeleniye_pk)
        podrazdeleniye_manager_pk = SettingManager.get("manager_ofd")
        pk_research = SettingManager.get("holter_pk_research")

        user_timezone = pytz.timezone(TIME_ZONE)
        datetime_object = datetime.strptime(
            AFTER_DATE_HOLTER, '%Y-%m-%d %H:%M:%S').astimezone(user_timezone)
        holter_obj, created = TempData.objects.get_or_create(
            key='holter', defaults={"holter_protocol_date": datetime_object})

        if created:
            date_proto = TempData.objects.values_list(
                'holter_protocol_date').get(key='holter')
            date_proto = date_proto[0].astimezone(user_timezone)
        else:
            date_proto = holter_obj.holter_protocol_date
            date_proto = date_proto.astimezone(user_timezone)

        doctors = {}
        for i in podrazdeleniye_users:
            k = i[1].split()
            temp_dict = {k[0]: i[0]}
            doctors.update(temp_dict)

        for f in p.iterdir():
            stat_info = f.stat()
            if datetime.fromtimestamp(stat_info.st_ctime) > datetime.combine(
                    d_start, datetime.min.time()):
                for h in f.glob('*.html'):
                    find = False

                    stat_info = h.stat()
                    file_modify = datetime.fromtimestamp(
                        stat_info.st_mtime).astimezone(user_timezone)
                    holter_path_result = h.as_posix()
                    file_name = holter_path_result.split('/')[-1]

                    if stat_info.st_size > 30000 and file_modify > date_proto:
                        with open(holter_path_result, 'r',
                                  encoding="cp1251") as file:
                            for line in file:
                                result = pattern.match(line)
                                if result:
                                    obj_num_dir = re.search(
                                        r'\d+', result.group(0))
                                    num_dir = int(obj_num_dir.group(0))
                                    if num_dir >= 4600000000000:
                                        num_dir -= 4600000000000
                                        num_dir //= 10
                                    obj_iss = Issledovaniya.objects.filter(
                                        napravleniye=num_dir,
                                        research=pk_research).first()
                                    if obj_iss:
                                        time_confirm = obj_iss.time_confirmation
                                        file_modify = datetime.fromtimestamp(
                                            stat_info.st_mtime).astimezone(
                                                user_timezone)
                                        if obj_iss.time_confirmation:
                                            delta_confirm = file_modify - time_confirm
                                            if delta_confirm.seconds // 60 > SettingManager.get(
                                                    "holter_reset_confirm"):
                                                break
                                        patient = Napravleniya.objects.filter(
                                            pk=num_dir).first()
                                        fio = patient.client.get_fio_w_card()
                                        if not os.path.exists(dst_dir +
                                                              today_dir):
                                            new_dir = dst_dir + today_dir
                                            os.makedirs(new_dir)
                                        find = True
                                        current_dir = os.path.dirname(
                                            holter_path_result)

                                        TempData.objects.filter(
                                            key='holter'
                                        ).update(
                                            holter_protocol_date=file_modify)

                                        if os.path.exists(temp_dir):
                                            rmtree(temp_dir)
                                        copytree(current_dir, temp_dir)

                        if find:
                            with open(temp_dir + file_name,
                                      'r',
                                      encoding="cp1251") as f:
                                old_data = f.read()
                            new_data = old_data.replace(
                                'Адрес:', fio + '<br><u>Направление:</u>')

                            with open(temp_dir + file_name,
                                      'w',
                                      encoding="cp1251") as f:
                                f.write(new_data)

                            with open(temp_dir + file_name,
                                      'r',
                                      encoding="cp1251") as f:
                                find_doc = False
                                break_line = False
                                pk_doc = None
                                for line in f:
                                    result = pattern_doc.search(line)
                                    if result:
                                        find_doc = True
                                    if find_doc:
                                        for doc in doctors.keys():
                                            doc_fio_find = re.search(doc, line)
                                            if doc_fio_find:
                                                pk_doc = doctors.get(
                                                    doc_fio_find.group(0))
                                                break_line = True
                                                break
                                        if break_line:
                                            break

                            list_fio = fio.split()
                            link = today_dir + f'/{str(num_dir) + "_" + list_fio[2]}.pdf'
                            if sys.platform != 'win32':
                                try:
                                    display = Display(visible=0,
                                                      size=(800, 600))
                                    display.start()
                                    pdfkit.from_file(temp_dir + file_name,
                                                     dst_dir + link)
                                finally:
                                    display.stop()
                            else:
                                pdfkit.from_file(temp_dir + file_name,
                                                 dst_dir + link)
                            if pk_doc:
                                doc_profile = DoctorProfile.objects.filter(
                                    pk=pk_doc).first()
                            else:
                                doc_profile = DoctorProfile.objects.filter(
                                    pk=podrazdeleniye_manager_pk).first()

                            t = timezone.now()
                            obj_iss.doc_confirmation = doc_profile
                            if obj_iss.napravleniye:
                                obj_iss.napravleniye.qr_check_token = None
                                obj_iss.napravleniye.save(
                                    update_fields=['qr_check_token'])
                            obj_iss.link_file = f'{today_dir}/{num_dir}_{list_fio[2]}.pdf'
                            obj_iss.time_confirmation = t
                            obj_iss.time_save = t
                            obj_iss.save(update_fields=[
                                'doc_confirmation', 'time_save',
                                'time_confirmation', 'link_file'
                            ])
                            obj_iss.napravleniye.sync_confirmed_fields()
                            rmtree(temp_dir)
Esempio n. 20
0
from tgBot.models import User, Time
from config import *
import requests
import json
import datetime
from tgBot.utils import to_main_page
from tgBot.controllers.users import proceed_invest
from django.utils.timezone import pytz, now as timezone_now
from tgBCoinBot.settings import TIME_ZONE

tz = pytz.timezone(TIME_ZONE)


def get_json_data(begin, end):
    for i in range(0, 10):
        try:
            params = {
                'account': payeer_account,
                'apiId': payeer_api_id,
                'apiPass': payeer_api_pass,
                'action': 'history',
                'type': 'incoming',
                'from': begin.strftime('%Y-%m-%d %H:%M:%S'),
                'to': end.strftime('%Y-%m-%d %H:%M:%S'),
            }
            # headers = {
            #     'Content-Type': 'application/json'
            # }
            r = requests.post('https://payeer.com/ajax/api/api.php',
                              data=params)
            data = r.text
Esempio n. 21
0
from django.http import HttpResponse, JsonResponse
from django.shortcuts import render

# Create your views here.
# 首页
from django.utils.timezone import pytz

from corneredbeast.vincent.main import hiveToolkit
from corneredbeast.vincent.main.hiveToolkit import NewPhone
from corneredbeast.vincent.main.init_db import init_weidongurls

# ------------------------初始化方法开始------------------------#
# 初始化数据库
from corneredbeast.vincent.models import weidongurls

localtimezone = pytz.timezone('Asia/Shanghai')


def init_db(request):
    init_weidongurls()
    return HttpResponse("init_db has run")


# ------------------------初始化方法结束------------------------#


# ------------------------rtxspy开始------------------------#
def rtxspy(request):
    return render(request, 'vincent/rtxspy.html')

Esempio n. 22
0
import operator
import itertools
from copy import deepcopy
from functools import reduce
from datetime import timedelta, datetime, time, date

from django.utils.timezone import pytz
from django.db import models
from django.db.models import Q

from htravel import settings
from robot.helpers import TimeRange, get_next_saturday
from searcher.helpers import get_date_to

ROUTES_COUNT = 5
LOCAL_TZ = pytz.timezone(settings.TIME_ZONE)


class Country(models.Model):
    title = models.CharField(max_length=50)
    code = models.CharField(max_length=10)

    def __str__(self):
        return self.title


class City(models.Model):
    title = models.CharField(max_length=50)
    name = models.CharField(max_length=50)
    descr = models.TextField(null=True, blank=True, default=None)
    iata_code = models.CharField(max_length=3,
Esempio n. 23
0
    def get(request, item_name, item_id):
        """
        Generate PDF from HTML template
        """
        item = None
        try:
            if item_name == 'PC':
                item = PC.objects.get(id=item_id)
        except:
            raise Http404('ERROR GeneratePdf:get')

        tzkiev = pytz.timezone('Europe/Kiev')

        context = {
            'user_first_name':
            request.user.first_name,
            'user_last_name':
            request.user.last_name,
            'current_time':
            datetime.now(tzkiev).strftime("%d/%m/%Y %H:%M:%S"),
            'item_id':
            item.id,
            'item_name':
            item.name,
            'item_name_for_user':
            item.name_for_user,
            'item_inventory_number':
            item.inventory_number,
            'item_floor':
            item.floor,
            'item_room':
            item.room,
            'item_place':
            item.place,
            'item_operating_system':
            item.operating_system,
            # 'item_text_field': item.text_field if item.text_field else None,
            'item_motherboard_brand':
            item.motherboard.brand if item.motherboard else None,
            'item_motherboard_model':
            item.motherboard.model if item.motherboard else None,
            'item_motherboard_serial_number':
            item.motherboard.serial_number if item.motherboard else None,
            'item_motherboard_form_factor':
            item.motherboard.form_factor if item.motherboard else None,
            'item_motherboard_type_ram_slot':
            item.motherboard.type_ram_slot if item.motherboard else None,
            'item_motherboard_central_processing_unit':
            item.motherboard.central_processing_unit
            if item.motherboard else None,
            'item_motherboard_integrated_graphics':
            item.motherboard.integrated_graphics if item.motherboard else None,
            'item_motherboard_integrated_sound_card':
            item.motherboard.integrated_sound_card
            if item.motherboard else None,
            'item_motherboard_integrated_lan_card':
            item.motherboard.integrated_lan_card if item.motherboard else None,
            'item_solid_state_drive_brand':
            item.solid_state_drive.brand if item.solid_state_drive else None,
            'item_solid_state_drive_model':
            item.solid_state_drive.model if item.solid_state_drive else None,
            'item_solid_state_drive_serial_number':
            item.solid_state_drive.serial_number
            if item.solid_state_drive else None,
            'item_solid_state_drive_memory_size':
            item.solid_state_drive.memory_size
            if item.solid_state_drive else None,
            'item_hard_disk_drive_brand':
            item.hard_disk_drive.brand if item.hard_disk_drive else None,
            'item_hard_disk_drive_model':
            item.hard_disk_drive.model if item.hard_disk_drive else None,
            'item_hard_disk_drive_serial_number':
            item.hard_disk_drive.serial_number
            if item.hard_disk_drive else None,
            'item_hard_disk_drive_memory_size':
            item.hard_disk_drive.memory_size if item.hard_disk_drive else None,
            'item_power_supply_brand':
            item.power_supply.brand if item.power_supply else None,
            'item_power_supply_model':
            item.power_supply.model if item.power_supply else None,
            'item_power_supply_serial_number':
            item.power_supply.serial_or_inventory_number
            if item.power_supply else None,
            'item_power_supply_power_consumption':
            item.power_supply.power_consumption if item.power_supply else None,
            'item_video_card_brand':
            item.video_card.brand if item.video_card else None,
            'item_video_card_model':
            item.video_card.model if item.video_card else None,
            'item_video_card_serial_number':
            item.video_card.serial_number if item.video_card else None,
            'item_video_card_memory_size':
            item.video_card.memory_size if item.video_card else None,
            'item_lan_card_brand':
            item.lan_card.brand if item.lan_card else None,
            'item_lan_card_model':
            item.lan_card.model if item.lan_card else None,
            'item_lan_card_serial_number':
            item.lan_card.serial_number if item.lan_card else None,
            'item_sound_card_brand':
            item.sound_card.brand if item.sound_card else None,
            'item_sound_card_model':
            item.sound_card.model if item.sound_card else None,
            'item_sound_card_serial_number':
            item.sound_card.serial_number if item.sound_card else None,
            'item_optical_drive_brand':
            item.optical_drive.brand if item.optical_drive else None,
            'item_optical_drive_model':
            item.optical_drive.model if item.optical_drive else None,
            'item_optical_drive_serial_number':
            item.optical_drive.serial_number if item.optical_drive else None,
            'item_optical_drive_type_drive':
            item.optical_drive.type_drive if item.optical_drive else None,
            'item_optical_drive_type_connector':
            item.optical_drive.type_connector if item.optical_drive else None,
        }

        template = 'IT_items/invoice.html'
        pdf = render_to_pdf(template, context)

        if pdf:
            filename = '{}_#_{}_floor_{}_room_{}.pdf'.format(
                item.name, item.inventory_number, item.floor, item.room)
            content = 'inline; filename="{}"'.format(filename)

            if request.GET.get('save_to_file') == 'true':
                content = 'attachment; filename="{}"'.format(filename)

            response = HttpResponse(pdf, content_type='application/pdf')
            response['Content-Disposition'] = content
            return response

        return HttpResponse(status=404)