def Render(request, service_id):
        date = JalaliDate.today().__str__().replace('-', '/')
        week_start_date = JalaliDate.today() - timedelta(
            days=JalaliDate.today().weekday())
        weekday_date = week_start_date
        this_week_days = []
        for i in range(7):
            weekday_date.__str__().replace('-', '/')
            this_week_days.append(weekday_date.__str__().replace('-', '/'))
            weekday_date = weekday_date + timedelta(1)
        service = Services.objects.get(id=service_id)
        selected_sanses = Sans.objects.filter(
            time_table__id=service.timetable.id).order_by('start_time')
        sanses = [[], [], [], [], [], [], []]
        reserved_sanses = Reserves.objects.filter(date__in=this_week_days)
        #print(reserved_sanses)
        #reserved_sanses = [e.sans for e in reserved_sanses]
        # print(reserved_sanses)
        for sans in selected_sanses:
            is_reserved = False
            for reserved in reserved_sanses:
                if (sans.id == reserved.sans.id):
                    is_reserved = True
            sanses[sans.weekday].append(SansContext(sans, is_reserved))

        #print(sanses)

        return render(request, 'ServicePage.html', {
            'service': service,
            'days': sanses,
            'date': date,
            'user': user
        })
def Render(request, service_id):

    service = Services.objects.get(id=service_id)
    timetable = TimeTable.objects.get(pk=service.timetable.id)

    date = JalaliDate.today().__str__().replace('-', '/')
    week_start_date = JalaliDate.today() - timedelta(
        days=JalaliDate.today().weekday())
    weekday_date = week_start_date
    this_week_days = []
    for i in range(7):
        weekday_date.__str__().replace('-', '/')
        this_week_days.append(weekday_date.__str__().replace('-', '/'))
        weekday_date = weekday_date + timedelta(1)
    selected_sanses = Sans.objects.filter(
        time_table=service.timetable.id).order_by('start_time')
    print(len(selected_sanses))
    days = [[], [], [], [], [], [], []]
    for i in range(7):
        for sans in selected_sanses:
            if sans.weekday == i:
                days[i].append(sans)

    return render(
        request, 'editServicePage.html', {
            'service': service,
            'days': days,
            'date': date,
            'user': user,
            'categories': categories
        })
 def test_percent(self):
     """
     Testing:
         %%      A literal '%' character.
     """
     self.assert_parse_and_format(JalaliDate(1375, 1, 31), "%Y-%m-%d %%")
     self.assert_parse_and_format(JalaliDate(1375, 1, 31),
                                  "%Y-%m-%d %% %% %%")
예제 #4
0
 def test_ordinal(self):
     min_ = JalaliDate.fromordinal(1)
     max_ = JalaliDate.fromordinal(JalaliDate.max.toordinal())
     self.assertEqual(min_.year, 1)
     self.assertEqual(min_.month, 1)
     self.assertEqual(min_.day, 1)
     self.assertEqual(min_, JalaliDate.min)
     self.assertEqual(max_, JalaliDate.max)
예제 #5
0
 def test_ordinal(self):
     min = JalaliDate.fromordinal(1)
     max = JalaliDate.fromordinal(JalaliDate.max.toordinal())
     self.assertEqual(min.year, 1)
     self.assertEqual(min.month, 1)
     self.assertEqual(min.day, 1)
     self.assertEqual(min, JalaliDate.min)
     self.assertEqual(max, JalaliDate.max)
예제 #6
0
 def test_ordinal(self):
     min_ = JalaliDate.fromordinal(1)
     max_ = JalaliDate.fromordinal(JalaliDate.max.toordinal())
     self.assertEqual(min_.year, 1)
     self.assertEqual(min_.month, 1)
     self.assertEqual(min_.day, 1)
     self.assertEqual(min_, JalaliDate.min)
     self.assertEqual(max_, JalaliDate.max)
예제 #7
0
    def test_sub(self):
        jdate = JalaliDate(self.leap_year, 12, 23)
        jdate2 = jdate - timedelta(10)

        self.assertEqual(jdate2, JalaliDate(self.leap_year, 12, 13))

        jtimedelta = jdate - JalaliDate(self.leap_year - 1, 12, 1)

        self.assertEqual(jtimedelta, timedelta(387))
예제 #8
0
    def test_lt_gt_le_ge_ne_eg(self):
        jdate = JalaliDate(self.leap_year, 12, 23)
        jdate2 = JalaliDate(self.leap_year, 12, 24)
        jdate3 = JalaliDate(self.leap_year, 12, 24)

        self.assertTrue(jdate <= jdate2)
        self.assertTrue(jdate != jdate2)
        self.assertFalse(jdate > jdate2)
        self.assertTrue(jdate2 == jdate3)
예제 #9
0
 def test_percent(self):
     """
     Testing:
         %%      A literal '%' character.
     """
     self.assert_parse_and_format(JalaliDate(1375, 1, 31), "%Y-%m-%d %%")
     self.assert_parse_and_format(JalaliDate(1375, 1, 31), "%Y-%m-%d %% %% %%")
     self.assertEqual(JalaliDate(1375, 1, 31).strftime("%Y %%"), "1375 %")
     self.assertEqual(JalaliDate.strptime("1375 %", "%Y %%"), JalaliDate(1375, 1, 1))
예제 #10
0
    def __init__(self, year=1, month=1, day=1, hour=0, minute=0, second=0, microsecond=0, tzinfo=None):
        if isinstance(year, JalaliDate):
            jd = year
            year = jd.year
            month = jd.month
            day = jd.day

        JalaliDate.__init__(self, year, month, day)
        self._time = time(hour, minute, second, microsecond, tzinfo)
예제 #11
0
def advanced_search(q_label=None,
                    q_title=None,
                    q_text=None,
                    q_writer=None,
                    s_date=None,
                    e_date=None):
    query_set = Post.objects.annotate(
        full_name=Concat('user__first_name', V(' '), 'user__last_name'))
    if s_date:
        try:
            strt_date = s_date.split('/')
            from_date = JalaliDate(int(strt_date[0]), int(strt_date[1]),
                                   int(strt_date[2])).todate()
            query_set = query_set.filter(Q(created_at__gte=from_date))
        except:
            context = 'error'
            return context

    if e_date:
        try:
            end_date = e_date.split('/')
            to_date = JalaliDate(int(end_date[0]), int(end_date[1]),
                                 int(end_date[2]) + 1).todate()
            query_set = query_set.filter(Q(created_at__lte=to_date))
        except:
            context = 'error'
            return context
    if q_label:
        query_set = query_set.intersection(
            Post.objects.annotate(
                full_name=Concat('user__first_name', V(' '), 'user__last_name')
            ).filter(
                Q(labelpost__label_name__regex=r'^.*{}.*'.format(q_label))))
    if q_text:
        query_set = query_set.intersection(
            Post.objects.annotate(full_name=Concat('user__first_name', V(
                ' '), 'user__last_name')).filter(
                    Q(text__regex=r'^.*{}.*'.format(q_text))))
    if q_writer:
        query_set = query_set.intersection(
            Post.objects.annotate(full_name=Concat('user__first_name', V(
                ' '), 'user__last_name')).filter(
                    Q(full_name__regex=r'^.*{}.*'.format(q_writer))))
    if q_title:
        query_set = query_set.intersection(
            Post.objects.annotate(full_name=Concat('user__first_name', V(
                ' '), 'user__last_name')).filter(
                    Q(title__regex=r'^.*{}.*'.format(q_title))))

    context = {
        'posts_advanced_search': query_set.order_by('-created_at'),
    }

    return context
예제 #12
0
def validate_date(input_date):
    try:
        input_date = arabic_to_eng_number(input_date)
        date = JalaliDate().strptime(input_date, "%Y%m%d")
        if date < JalaliDate().today():
            message = TextMessage(ReadyText.time_is_past)
            return False, message
        date = date.todate()
        return date, None
    except:
        message = TextMessage(ReadyText.wrong_format)
        return False, message
예제 #13
0
    def test_locale_date(self):
        """
        Testing:
            %x           Locale’s appropriate date representation.
        """
        self.assertEqual(JalaliDate(1361, 6, 15).strftime('%x'), u'دوشنبه ۱۵ شهریور ۱۳۶۱')
        self.assertEqual(JalaliDate().strftime('%x'), u'جمعه ۱ فروردین ۱')
        self.assertEqual(JalaliDate.strptime(u'جمعه ۱ فروردین ۱', '%x'), JalaliDate.min)

        self.assertEqual(JalaliDate(1375, 1, 31).strftime('%x'), u'جمعه ۳۱ فروردین ۱۳۷۵')
        self.assertEqual(JalaliDate.strptime(u'جمعه ۳۱ فروردین ۱۳۷۵%', '%x%%'),
                         JalaliDate(1375, 1, 31))
예제 #14
0
 def get(self, start="", end=""):
     if start == "":
         start = self.df.index[0]
     else:
         s_date = start.split("-")
         start = JalaliDate(s_date[0], s_date[1], s_date[2]).todate()
     if end == "":
         end = self.df.index[-1]
     else:
         e_date = end.split("-")
         end = JalaliDate(e_date[0], e_date[1], e_date[2]).todate()
     return self.df.loc[start:end].copy()
예제 #15
0
    def test_instantiate(self):
        
        jdate = JalaliDate(1376, 5, 23)
        self.assertFalse(jdate is None)

        self.assertEqual(JalaliDate(jdate.todate()), jdate)
        self.assertEqual(JalaliDate(jdate), jdate)

        self.assertEqual(JalaliDate(julian_day=2450674), jdate)

        self.assertRaises(ValueError, JalaliDate, MAXYEAR + 1, 5, 23)
        self.assertRaises(ValueError, JalaliDate, MAXYEAR, 13, 23)
        self.assertRaises(ValueError, JalaliDate, MAXYEAR, 12, 30)
예제 #16
0
 def test_algorithm(self):
     min = date(623, 1, 1)
     max_days = 5000
     days = 0
     while True:
         dt = min + timedelta(days=days)
         jd = JalaliDate(dt)
         # print('Processing day: %s' % jd)
         dt2 = jd.todate()
         self.assertEqual(dt, dt2)
         days += 1
         if days > max_days:
             break
예제 #17
0
 def test_algorithm(self):
     min = date(623, 1, 1)
     max_days = 5000
     days = 0
     while True:
         dt = min + timedelta(days=days)
         jd = JalaliDate(dt)
         # print('Processing day: %s' % jd)
         dt2 = jd.todate()
         self.assertEqual(dt, dt2)
         days += 1
         if days > max_days:
             break
예제 #18
0
 def crawl(self, start_date, end_date, q_xls):
     now = start_date
     while now <= end_date:
         jalaldate = JalaliDate(now)
         year = jalaldate.year
         month = jalaldate.month
         day = jalaldate.day
         if jalaldate.weekday() < 5 and not Path(
                 f'{self.excel_location}/{year}-{month}-{day}.xlsx'
         ).is_file():
             self.fetch(year=year, month=month, day=day)
             q_xls.put([f'{year}-{month}-{day}'])
             time.sleep(10)
         now = now + timedelta(days=1)
예제 #19
0
 def test_operators(self):
     invalid_object = dict(a=2)
     d1 = JalaliDate(1361, 6, 15)
     d2 = JalaliDate(1361, 6, 16)
     self.assertRaises(TypeError, d1.__add__, invalid_object)
     self.assertRaises(TypeError, d1.__sub__, invalid_object)
     self.assertRaises(TypeError, d1.__lt__, invalid_object)
     self.assertRaises(TypeError, d1.__gt__, invalid_object)
     self.assertRaises(TypeError, d1.__eq__, invalid_object)
     self.assertFalse(d1 == 0)
     self.assertTrue(d1 == d1.todate())
     self.assertTrue(d1 < d2)
     self.assertTrue(d1 <= d1.copy())
     self.assertFalse(d1 > d2)
     self.assertTrue(d1 >= d1.copy())
예제 #20
0
 def group_sms(self, message, mobiles, yourMessageIds):
     api = "http://niksms.com/fa/PublicApi/GroupSms"
     now = JalaliDate.today()
     now_time = timezone.now()
     post_data = {
         'username':
         self.username,
         'password':
         self.password,
         'message':
         message,
         'numbers':
         mobiles,
         'senderNumber':
         "50004307",
         'sendOn':
         "{}/{}/{}-{}:{}".format(now.year, now.month, now.day,
                                 now_time.hour, now_time.minute),
         'yourMessageIds':
         yourMessageIds,
         'sendType':
         1
     }
     result = requests.post(api, post_data)
     return result
예제 #21
0
def add_order_admin(s):
    world.order_price = []
    world.success = []
    for s in guess_types(s.hashes):
        cur = (datetime.now() + timedelta(days=1))
        s['dispatch_date'] = str(JalaliDate(cur.date()))
        s['dispatch_hour'] = cur.time().strftime('%H:%M')
        logger.info(s['dispatch_date'])
        logger.info(s['dispatch_hour'])

        r = requests.post(f"{config.api_uri}/caravan/add_order",
                          json=s,
                          headers={
                              "APIToken": config.admin.api_token,
                              "USERToken": config.admin.user_token
                          })
        logger.error(r.text)
        world.res = r.json()
        time.sleep(1)

        logger.info("Response: %s", str(world.res).encode('utf-8'))

        world.status = r.status_code

        world.order_price.append(world.res['order_data']['price'])
        logger.info("order price isss %s", world.order_price)

        world.success.append(world.res["success_flag"])

        logger.info("world order price is : %s", world.order_price)
        logger.info("the worldsuccess is : %s", world.res["success_flag"])
 def Book(request):
     if (request.method == 'POST'):
         date = request.POST.get('date', '')
         sans_id = request.POST.get('sans_id', '')
         description = request.POST.get('description', '')
         service = Services.objects.get(
             id=request.POST.get('service_id', ''))
         day = request.POST.get('day', '')
         date_splited = date.split('/')
         saturday = JalaliDate(int(date_splited[0]), int(date_splited[1]),
                               int(date_splited[2]))
         targetday = saturday + timedelta(days=int(day))
         targetday = targetday.__str__().replace('-', '/')
         print(targetday)
         sans = Sans.objects.get(pk=sans_id)
         check_obj = Reserves.objects.filter(date=targetday,
                                             service_id=service.id,
                                             sans_id=sans_id)
         print(check_obj)
         if (len(check_obj) == 0):
             Reserves.objects.create(user=user,
                                     sans=sans,
                                     date=targetday,
                                     description=description,
                                     service_id=service.id)
             mybusiness = Business.objects.filter(id=service.business.id)
             history = Reserves.objects.filter(
                 user_id=user.id).order_by('date')
             return render(request, 'AccountPage.html', {
                 'user': user,
                 'historys': history,
                 'mybusiness': mybusiness
             })
         else:
             return ServicePageController.Render(request, service.id)
예제 #23
0
def add_order(s):

    world.list_of_status = []

    for s in guess_types(s.hashes):
        cur = (datetime.now() + timedelta(days=1))
        s['dispatch_date'] = str(JalaliDate(cur.date()))
        s['dispatch_hour'] = cur.time().strftime('%H:%M')
        logger.info(s['dispatch_date'])
        logger.info(s['dispatch_hour'])
        logger.info(" sssssss is : %s", s)

        r = requests.post(f"{config.api_uri}/caravan/add_order/",
                          json=s,
                          headers={
                              "APIToken": config.client.api_token,
                              "USERToken": world.token
                          })

        world.res = r.json()
        logger.info("Response: %s", str(world.res).encode('utf-8'))

        world.status = r.status_code

        world.track_code = world.res['order_data']['tracking_code']
        logger.info("tracking code groups : %s", world.track_code)

        logger.info(" s is : %s", s)

        world.list_of_status.append(world.res['order_data']['status'])
        logger.info("wwwwwwww list of status of orders is %s",
                    world.list_of_status)
        time.sleep(1)
예제 #24
0
def add_global_template_variables():
    return dict(today=JalaliDate.today().strftime('%A %d %B %Y'),
                session=session,
                base_url=config.get('base_url'),
                pictures=DBSession.query(Picture).all(),
                categories=DBSession.query(Category).options(
                    joinedload('subcategory')).all())
예제 #25
0
def makeMasterTable(all_dfs, all_df_names, chunkSize):
    for index, df in enumerate(all_dfs):
        year, month, day = all_df_names[index].split("-")
        date = JalaliDate(year, month, day).todate()
        yearlist = np.full(len(df), year).tolist()
        monthlist = np.full(len(df), month).tolist()
        daylist = np.full(len(df), day).tolist()
        datelist = np.full(len(df), date).tolist()
        df["year"] = yearlist
        df["month"] = monthlist
        df["day"] = daylist
        df["date"] = datelist
    xl = pd.concat(all_dfs, keys=all_df_names, ignore_index=True)
    xl.columns = HEADER_extra
    xl = xl.astype({"year": int, "month": int, "day": int})
    xl['date'] = pd.to_datetime(xl['date'])
    print(xl.dtypes)
    xl.sort_values(by=['date'], inplace=True)
    xl.reset_index(drop=True, inplace=True)
    i = 0
    while i*chunkSize < len(xl):
        if (i+1)*chunkSize < len(xl):
            df_i = xl.iloc[i*chunkSize:(i+1)*chunkSize]
        else:
            df_i = xl.iloc[i*chunkSize:]
        df_i.to_csv('{xcelLocation}master{i}.csv'.format(i=i, xcelLocation=xcelLocation),
                    header=HEADER_extra, encoding='utf-8', index=False)
        i += 1
    return xl
예제 #26
0
    def get(self):
        parser = reqparse.RequestParser()
        parser.add_argument('time',required=True)
        args = parser.parse_args()
        retSum = {}
        n = 1
        while n < 11:
            mycursor.execute("select * from gostare where id = %s ",(n,))
            gostare_data = mycursor.fetchall()
            mydb.commit()
            query = "select * from gostare_pishraft where gostare_id = %s and malg =1"
            values = (n ,)
            mycursor.execute(query , values)
            gostare_pishrafts = mycursor.fetchall()
            df = self.opencsv()
            column = df.loc[0:29 , str(gostare_data[0][0])]
            ret = {}
            i = 0
            for gostare_pishraft in gostare_pishrafts:
                ret[gostare_pishraft[5]] = {}

                d = gostare_pishraft[3].split('-')
                time = JalaliDate(d[0], d[1], d[2])
                month = int(d[1])
                while i < 29:
                    if month > 12 :
                        month = 1
                        d[0] = str(int(d[0])+1)
                    column[i]= column[i].replace(',', '')
                    ret[gostare_pishraft[5]][i] = [
                        float(gostare_pishraft[2])/float(gostare_data[0][2]) * float(column[i]),
                        str(JalaliDate(d[0], str(month) , d[2]))
                    ]
                    i +=1
                    month +=1

                i = 0
            dataFrame = self.makeDataFrame(ret)
            # print (dataFrame)

            dataFrame= self.searchInDataframeToTop(dataFrame,args['time']+"-17")

            sum = self.sumTheDataframe(dataFrame)
            n +=1
            # print (sum)
            retSum[gostare_data[0][1]] = sum
        return retSum
    def RenderTimeTable(request):
        if request.method == 'POST':
            timetable_id = request.POST.get('time_table', '')
            service_id = int(request.POST.get('service'))
            date = request.POST.get('date', '')
            date_splited = date.split('/')
            day = JalaliDate(int(date_splited[0]), int(date_splited[1]),
                             int(date_splited[2]))
            week_start_date = day - timedelta(
                days=JalaliDate.today().weekday())
            weekday_date = week_start_date
            this_week_days = []
            for i in range(7):
                weekday_date.__str__().replace('-', '/')
                this_week_days.append(weekday_date.__str__().replace('-', '/'))
                weekday_date = weekday_date + timedelta(1)
            service = Services.objects.get(id=service_id)
            selected_sanses = Sans.objects.filter(
                time_table__id=service.timetable.id).order_by('start_time')
            sanses = [[], [], [], [], [], [], []]
            reserved_sanses = Reserves.objects.filter(date__in=this_week_days)
            print(reserved_sanses)
            # reserved_sanses = [e.sans for e in reserved_sanses]
            # print(reserved_sanses)
            for sans in selected_sanses:
                is_reserved = False
                for reserved in reserved_sanses:
                    if (sans.id == reserved.sans.id):
                        is_reserved = True
                sanses[sans.weekday].append(SansContext(sans, is_reserved))

            print(sanses)

            return render(request, 'ServicePage.html', {
                'service': service,
                'days': sanses,
                'date': date,
                'user': user
            })

            selected_sanses = [sans for sans in selected_sanses]
            if (JalaliDate.today() <= day):
                final = set(selected_sanses).difference(set(reserved))
            else:
                date = JalaliDate.today().__str__().replace('-', '/')
                day = JalaliDate().today()
                final = []
            return render(
                request, 'ServicePage.html', {
                    'service': service,
                    'sanses': final,
                    'day_name': day.weekdayname(),
                    'date': date,
                    'user': user
                })
예제 #28
0
 def get(self, symbol, start="", end=""):
     if start == "":
         start = self.df.index[0]
     else:
         s_date = start.split("-")
         start = JalaliDate(s_date[0], s_date[1], s_date[2]).todate()
     if end == "":
         end = self.df.index[-1]
     else:
         e_date = end.split("-")
         end = JalaliDate(e_date[0], e_date[1], e_date[2]).todate()
     tmpdf = self.df.loc[self.df["symbol"] == symbol].copy()
     if not self.__is_scaled.get(symbol, False):
         logger.debug(f'symbol is not scaled: {symbol}')
         tmpdf = adjust_and_log(tmpdf)
         self.df.loc[self.df["symbol"] == symbol] = tmpdf
         self.__is_scaled[symbol] = True
     return tmpdf.loc[start:end]
예제 #29
0
 def test_percent(self):
     """
     Testing:
         %%      A literal '%' character.
     """
     self.assert_parse_and_format(JalaliDate(1375, 1, 31), "%Y-%m-%d %%")
     self.assert_parse_and_format(JalaliDate(1375, 1, 31), "%Y-%m-%d %% %% %%")
     self.assertEqual(JalaliDate(1375, 1, 31).strftime("%Y %%"), "1375 %")
     self.assertEqual(JalaliDate.strptime("1375 %", "%Y %%"), JalaliDate(1375, 1, 1))
예제 #30
0
    def clean(self, value, row=None, *args, **kwargs):

        for i in value:
            date = value.split("-")
            value = JalaliDatetime(date[0], date[1], date[2])

            now = JalaliDate(value).todate()
            value = str(now)

            return value
예제 #31
0
def add_order(_):
    cur = (datetime.now() + timedelta(days=1))
    world.shamsi_date = str(JalaliDate(cur.date()))
    world.shamsi_hour = cur.time().strftime('%H:%M')
    logger.info("Shamsi date is: %s", world.shamsi_date)
    logger.info("Shamsi hour is: %s", world.shamsi_hour)
    logger.info("token is : %s", world.token)
    r = requests.post(f"{config.api_uri}/caravan/add_order",
                      json={
                          "weight": 5.0,
                          "price": 150000,
                          "source_city": "تهران",
                          "destination_city": "ساری",
                          "sender_phone": "09965555555",
                          "receiver_phone": "02144411306",
                          "source_address": "خیابان اول کوچه دوم",
                          "destination_address": " میدون دست چپ",
                          "dispatch_date": str(world.shamsi_date),
                          "vehicle_type": "joft",
                          "load_type": "بار صنعتی",
                          "vehicle_options": "joft:hichkodam",
                          "dispatch_hour": str(world.shamsi_hour),
                          "load_value": 10000000,
                          "description": "بار تست جزییات",
                          "sender_name": "علی",
                          "receiver_name": "اصغری",
                          "payment_type": "sender",
                          "sender_company": "سانا",
                          "receiver_company": "سانا گستر",
                          "package_options": "falleh",
                          "length": 0.0,
                          "width": 1.0,
                          "height": 1.0,
                          "baarnameh": "yes",
                          "unload_option": "day",
                          "sender_mobile_phone": "09022012056",
                          "announce_type": "mydrivers",
                          "source_region_id": "22",
                          "address_id_source": "1069",
                          "address_id_destination": "1070",
                          "destination_region_id": "16",
                          "surplus_costs": "3000.0"
                      },
                      headers={
                          "APIToken": config.client.api_token,
                          "USERToken": world.token
                      })
    world.status = r.status_code
    print(world.status)
    world.res = r.json()
    world.status_detail = r.status_code

    world.order_code = world.res["order_data"]["tracking_code"]
    logger.warn("order code is : %s", world.order_code)
    world.dispatch_date_ms = calculate_ms(cur.date(), REFERENCE_DATE_DATE)
예제 #32
0
    def test_week(self):
        """
        Testing:
            %a           Locale’s abbreviated weekday name.
            %A           Locale’s full weekday name.
            %e           ASCII Locale’s abbreviated weekday name.
            %E           ASCII Locale’s full weekday name.
            %T           ASCII English full weekday name.
            %w           Weekday as a decimal number [0(Saturday), 6(Friday)].
            %W           Week number of the year (SATURDAY as the first day of the week) as a decimal number [00, 53].
                All days in a new year preceding the first Monday are considered to be in week 0.
            %U           Week number of the year (Sunday as the first day of the week) as a decimal number [00, 53].
                All days in a new year preceding the first Sunday are considered to be in week 0.

        """

        d1 = JalaliDate(1361, 6, 15)
        self.assertEqual(d1.strftime('%a'), u'د')
        self.assertEqual(d1.strftime('%A'), u'دوشنبه')
        self.assertEqual(d1.strftime('%e'), u'D')
        self.assertEqual(d1.strftime('%E'), u'Doshanbeh')
        self.assertEqual(d1.strftime('%T'), u'Monday')
        self.assertEqual(d1.strftime('%w'), u'2')
        self.assertEqual(d1.strftime('%W'), u'24')

        for i in range(7):
            self.assert_parse_and_format(JalaliDate.min + timedelta(i), '%d %w %W %U')
            self.assertEqual(
                JalaliDate.strptime('1345 10 10 %s' % c.PERSIAN_WEEKDAY_ABBRS[i], '%Y %m %d %a'),
                JalaliDate(year=1345, month=10, day=10))
            self.assertEqual(
                JalaliDate.strptime('1345 10 10 %s' % c.PERSIAN_WEEKDAY_ABBRS_ASCII[i], '%Y %m %d %e'),
                JalaliDate(year=1345, month=10, day=10))
            self.assertEqual(
                JalaliDate.strptime('1345 10 10 %s' % c.PERSIAN_WEEKDAY_NAMES[i], '%Y %m %d %A'),
                JalaliDate(year=1345, month=10, day=10))
            self.assertEqual(
                JalaliDate.strptime('1345 10 10 %s' % c.PERSIAN_WEEKDAY_NAMES_ASCII[i], '%Y %m %d %E'),
                JalaliDate(year=1345, month=10, day=10))
            self.assertEqual(
                JalaliDate.strptime('1345 10 10 %s' % c.ENGLISH_WEEKDAY_NAMES_ASCII[i], '%Y %m %d %T'),
                JalaliDate(year=1345, month=10, day=10))
예제 #33
0
async def j2g(y: int, m: int, d: int, request: Request, iso: bool = False):
    arg_check(("y", "m", "d", "iso"), request.query_params.keys())

    if y not in range(*j_year_range):
        raise HTTPException(status_code=404)

    try:
        j = JalaliDate(year=y, month=m, day=d)
        g = j.todate()
        if iso:
            return {"g": g.isoformat()}
        return {
            "g": {
                "y": g.year,
                "m": g.month,
                "d": g.day
            },
        }
    except Exception:
        raise HTTPException(status_code=404)
예제 #34
0
 def get_dates(self):
     """Get dates between date_from and date_to"""
     if self.date_from and self.date_to:
         date_from = JalaliDate(int(self.date_from[:4]),
                                int(self.date_from[4:6]),
                                int(self.date_from[6:]))
         date_to = JalaliDate(int(self.date_to[:4]), int(self.date_to[4:6]),
                              int(self.date_to[6:]))
         date_counter = date_from
         dates = []
         while date_counter <= date_to:
             dates.append(date_counter)
             date_counter += timedelta(days=1)
         return dates
     else:
         # Get yesterday persian date
         now = timezone.make_aware(datetime.now(),
                                   timezone.get_default_timezone())
         yesterday = JalaliDate(now) - timedelta(days=1)
         return [yesterday]
예제 #35
0
파일: admin.py 프로젝트: SinaZK/defend-back
    def clean(self):
        value = self.data['date']
        if len(value) > 0:
            j_year = value.split('-')[0]
            j_month = value.split('-')[1]
            j_day = value.split('-')[2]
            self.cleaned_data['date'] = JalaliDate(year=j_year,
                                                   month=j_month,
                                                   day=j_day).todate()

        return self.cleaned_data
예제 #36
0
    def get(self):
        parser = reqparse.RequestParser()
        parser.add_argument('gostare_id', required=True)
        args = parser.parse_args()

        mycursor.execute("select * from gostare where id = %s ",
                         (args['gostare_id'], ))
        gostare_data = mycursor.fetchall()
        mydb.commit()
        query = "select * from gostare_pishraft where gostare_id = %s and malg =1"
        values = (args['gostare_id'], )
        mycursor.execute(query, values)
        gostare_pishrafts = mycursor.fetchall()
        df = self.opencsv()
        column = df.loc[0:29, str(gostare_data[0][2]) + "%"]
        ret = {}
        i = 0
        for gostare_pishraft in gostare_pishrafts:
            ret[gostare_pishraft[5]] = {}

            d = gostare_pishraft[3].split('-')
            time = JalaliDate(d[0], d[1], d[2])
            month = int(d[1])
            while i < 29:
                if month > 12:
                    month = 1
                    d[0] = str(int(d[0]) + 1)
                column[i] = column[i].replace(',', '')
                ret[gostare_pishraft[5]][i] = [
                    float(gostare_pishraft[2]) / float(gostare_data[0][2]) *
                    float(column[i]),
                    str(JalaliDate(d[0], str(month), d[2]))
                ]
                i += 1
                month += 1

            i = 0
        dataFrame = self.makeDataFrame(ret)
        print(dataFrame)
        # self.sumTheDataframe(dataFrame)
        return json.loads(dataFrame.to_json())
예제 #37
0
def convert_to_jalali(jalali_date, format='%A %D %B %N'):
    """
        gets input from get_date function
        :param jalali_date: splits the date to 3 variables y=year,m=month,d=day.
        :param format: the way to show date in jalali
        :return: persian format of the date
    """
    from khayyam import JalaliDate
    if check_dependencies():
        from khayyam import JalaliDate
    y, m, d = jalali_date
    return JalaliDate(year=y, month=m, day=d).strftime(format)
예제 #38
0
 def test_strftime(self):
     jdate = JalaliDate.strptime(
         JalaliDate(self.leap_year, 12, 23).isoformat(), '%Y-%m-%d')
     self.assertEqual(jdate.isoformat(), '%s-12-23' % self.leap_year)
     d1 = JalaliDate(1361, 6, 15)
     self.assertEqual(d1.strftime('%Y-%m-%d'), '1361-06-15')
     self.assertEqual(d1.strftime(u'اول%Y-%m-%dآخر'), u'اول1361-06-15آخر')
예제 #39
0
    def test_strptime(self):
        """
        %Z not working at all
        """
        self.assertEqual(JalaliDate.strptime('1361', '%Y'), JalaliDate(1361))
        self.assertEqual(JalaliDate.strptime('1361%C', '%Y%C'), JalaliDate(1361))
        self.assertEqual(JalaliDate.strptime(u'اریا1361گلگشت', u'اریا%Yگلگشت'), JalaliDate(1361))

        current_century = int(JalaliDate.today().year / 100) * 100
        self.assertEqual(JalaliDate.strptime('61', '%y'), JalaliDate(current_century + 61))
        self.assertEqual(JalaliDate.strptime('61%C', '%y%C'), JalaliDate(current_century + 61))
        self.assertEqual(JalaliDate.strptime(u'اریا61گلگشت', u'اریا%yگلگشت'), JalaliDate(current_century+61))
        self.assertEqual(JalaliDate.strptime(u'جمعه 01 اردیبهشت 0001', u'%A %d %B %Y'),
                         JalaliDate(month=2, day=1))
예제 #40
0
def add_reminder_to_db(reminder):
    print(reminder)
    reminder_obj = Reminder(reminder.get(Attr.peer_id), reminder.get(Attr.peer_access_hash),
                            reminder.get(Attr.type), reminder.get(Attr.card_number),
                            reminder.get(Attr.money_amount),
                            reminder.get(Attr.text), reminder.get(Attr.file_id),
                            reminder.get(Attr.file_access_hash),
                            reminder.get(Attr.file_size))
    session.add(reminder_obj)

    date = reminder.get(Attr.date)
    time = reminder.get(Attr.time)
    print(type(date), date)
    print(type(time), time)
    remind_datetime = datetime.datetime.combine(date, time)
    if reminder.get(Attr.periodic_type) != ReadyText.monthly:
        time_delta = time_delta_func(reminder.get(Attr.periodic_type))
        for i in range(reminder[Attr.iterate_number] + 1):
            message = Message(reminder_obj, sending_time=(remind_datetime + time_delta * i))
            session.add(message)
    else:
        time_delta = time_delta_func(reminder.get(Attr.periodic_type))
        for i in range(reminder[Attr.iterate_number] + 1):
            s_date = remind_datetime + time_delta * i
            day = remind_datetime.day
            sending_time = None
            is_valid_date = False
            while is_valid_date is False:
                is_valid_date = True
                try:
                    sending_time = JalaliDate(s_date.year, s_date.month, day)
                except ValueError:
                    is_valid_date = False
                day -= 1
            message = Message(reminder_obj, sending_time=sending_time.todate())
            session.add(message)
    session.commit()
예제 #41
0
 def test_strftime(self):
     jdate = JalaliDate.strptime(JalaliDate(self.leap_year, 12, 23).isoformat(), '%Y-%m-%d')
     
     self.assertEqual(jdate.isoformat(), '%s-12-23' % self.leap_year)
     
     self.assertEqual(jdate.strftime('%a%A%b%B%d%j%m%w%x%y%Y%%%W'), u'پپنجشنبهاساسفند23359125پنجشنبه 23 اسفند 1375751375%51')
예제 #42
0
    def test_month(self):
        """
        Testing:
            %m           Month as a decimal number [01, 12].
            %R           Month as a decimal number in persian form [۱, ۱۲].
            %P           Month as a zero padded decimal number in persian form [۰۱, ۱۲].
            %b           Locale’s abbreviated month name.
            %B           Locale’s full month name.
            %g           ASCII Locale’s abbreviated month name.
            %G           ASCII Locale’s full month name.

        """

        d1 = JalaliDate(1361, 6, 15)
        self.assertEqual(d1.strftime('%b'), u'شه')
        self.assertEqual(d1.strftime('%B'), u'شهریور')
        self.assertEqual(d1.strftime('%m'), u'06')
        self.assertEqual(d1.strftime('%g'), u'Sh')
        self.assertEqual(d1.strftime('%G'), u'Shahrivar')

        self.assertEqual(JalaliDate(1361, 1, 5).strftime('%R'), u'۱')
        self.assertEqual(JalaliDate(1361, 11, 5).strftime('%P'), u'۱۱')
        self.assertEqual(JalaliDate(1361, 1, 5).strftime('%P'), u'۰۱')

        self.assertEqual(JalaliDate.strptime(u'۷', '%R'), JalaliDate(1, 7, 1))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۰۷', '%R')
        self.assertEqual(JalaliDate.strptime(u'۰۷', '%P'), JalaliDate(1, 7, 1))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۷', '%P')


        # Test months
        for i in range(1, 13):
            self.assertEqual(JalaliDate.strptime(str(i), '%m'), JalaliDate(month=i))
            self.assertEqual(JalaliDate.strptime('1345 %s' % c.PERSIAN_MONTH_ABBRS[i], '%Y %b'),
                             JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(JalaliDate.strptime('1345 %s' % c.PERSIAN_MONTH_NAMES[i], '%Y %B'),
                             JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(JalaliDate.strptime('1345 %s' % c.PERSIAN_MONTH_ABBRS_ASCII[i], '%Y %g'),
                             JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(JalaliDate.strptime('1345 %s' % c.PERSIAN_MONTH_NAMES_ASCII[i], '%Y %G'),
                             JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(JalaliDate.strptime('1345 %s' % rtl(str(i), digits=True), '%Y %R'),
                             JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(JalaliDate.strptime('1345 %s' % rtl('%.2d' % i, digits=True), '%Y %P'),
                             JalaliDate(year=1345, month=i, day=1))



        self.assertRaises(ValueError, JalaliDate.strptime, '13', '%m')
        self.assertRaises(ValueError, JalaliDate.strptime, '0', '%m')
        self.assertRaises(ValueError, JalaliDate.strptime, u'1345 مت', '%Y %b')
        self.assertRaises(ValueError, JalaliDate.strptime, u'1345 شتران', '%Y %B')
        self.assertRaises(ValueError, JalaliDate.strptime, u'1345 مت', '%Y %g')
        self.assertRaises(ValueError, JalaliDate.strptime, u'1345 شتران', '%Y %G')


        start_date = JalaliDate()
        for i in range(1, 501):
            self.assert_parse_and_format(start_date + timedelta(days=i) , '%Y %m %d')
            self.assert_parse_and_format(start_date + timedelta(days=i) , '%Y %b %d')
            self.assert_parse_and_format(start_date + timedelta(days=i) , '%Y %B %d')
            self.assert_parse_and_format(start_date + timedelta(days=i) , '%Y %g %d')
            self.assert_parse_and_format(start_date + timedelta(days=i) , '%Y %G %d')
            self.assert_parse_and_format(start_date + timedelta(days=i) , '%Y %R %d')
            self.assert_parse_and_format(start_date + timedelta(days=i) , '%Y %P %d')
예제 #43
0
파일: year.py 프로젝트: pylover/khayyam
 def post_parser(self, ctx, formatter):
     from khayyam import JalaliDate
     ctx['year'] = int(JalaliDate.today().year / 100) * 100 + ctx['shortyear']
예제 #44
0
 def test_copy(self):
     d1 = JalaliDate(1361, 6, 15)
     d2 = d1.copy()
     self.assertFalse(d1 is d2)
     self.assertEqual(d1, d2)
예제 #45
0
 def test_str(self):
     d1 = JalaliDate(1361, 6, 15)
     self.assertEqual(
         d1.__str__(),
         d1.isoformat()
     )
예제 #46
0
 def test_to_from_date(self):
     jdate = JalaliDate(self.leap_year, 12, 23)
     jdate2 = JalaliDate.from_date(jdate.todate())
     self.assertEqual(jdate, jdate2)
예제 #47
0
 def test_to_from_julian_day(self):
     jdate = JalaliDate(self.leap_year, 12, 23)
     jdate2 = JalaliDate.from_julian_days(jdate.tojulianday())
     self.assertEqual(jdate, jdate2)
예제 #48
0
 def check_format(jdate ,fmt):
     jdate_str = jdate.strftime(fmt)
     d2 = JalaliDate.strptime(jdate_str, fmt)
     self.assertEqual(jdate, d2)
예제 #49
0
    def test_strptime(self):
        """
        %Z not working at all
        """

        def check_format(jdate ,fmt):
            jdate_str = jdate.strftime(fmt)
            d2 = JalaliDate.strptime(jdate_str, fmt)
            self.assertEqual(jdate, d2)

        # Test Year
        self.assertEqual(JalaliDate.strptime('1361', '%Y'), JalaliDate(1361))
        self.assertEqual(JalaliDate.strptime('1361%C', '%Y%C'), JalaliDate(1361))
        self.assertEqual(JalaliDate.strptime('اریا1361گلگشت', 'اریا%Yگلگشت'), JalaliDate(1361))

        current_century = int(JalaliDate.today().year / 100) * 100
        self.assertEqual(JalaliDate.strptime('61', '%y'), JalaliDate(current_century + 61))
        self.assertEqual(JalaliDate.strptime('61%C', '%y%C'), JalaliDate(current_century + 61))
        self.assertEqual(JalaliDate.strptime('اریا61گلگشت', 'اریا%yگلگشت'), JalaliDate(current_century+61))

        # Test months
        for i in range(1, 13):
            self.assertEqual(JalaliDate.strptime(str(i), '%m'), JalaliDate(month=i))
            self.assertEqual(JalaliDate.strptime('1345 %s' % PERSIAN_MONTH_ABBRS[i], '%Y %b'),
                             JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(JalaliDate.strptime('1345 %s' % PERSIAN_MONTH_NAMES[i], '%Y %B'),
                             JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(JalaliDate.strptime('1345 %s' % PERSIAN_MONTH_ABBRS_ASCII[i], '%Y %g'),
                             JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(JalaliDate.strptime('1345 %s' % PERSIAN_MONTH_NAMES_ASCII[i], '%Y %G'),
                             JalaliDate(year=1345, month=i, day=1))

        self.assertRaises(ValueError, JalaliDate.strptime, '13', '%m')
        self.assertRaises(ValueError, JalaliDate.strptime, '0', '%m')
        self.assertRaises(ValueError, JalaliDate.strptime, '1345 مت', '%Y %b')
        self.assertRaises(ValueError, JalaliDate.strptime, '1345 شتران', '%Y %B')
        self.assertRaises(ValueError, JalaliDate.strptime, '1345 مت', '%Y %g')
        self.assertRaises(ValueError, JalaliDate.strptime, '1345 شتران', '%Y %G')

        # Test Week and Weekdays
        for i in range(7):
            check_format(JalaliDate.min + timedelta(i), '%d %w %W %U')
            self.assertEqual(
                JalaliDate.strptime('1345 10 10 %s' % PERSIAN_WEEKDAY_ABBRS[i], '%Y %m %d %a'),
                JalaliDate(year=1345, month=10, day=10))
            self.assertEqual(
                JalaliDate.strptime('1345 10 10 %s' % PERSIAN_WEEKDAY_ABBRS_ASCII[i], '%Y %m %d %e'),
                JalaliDate(year=1345, month=10, day=10))
            self.assertEqual(
                JalaliDate.strptime('1345 10 10 %s' % PERSIAN_WEEKDAY_NAMES[i], '%Y %m %d %A'),
                JalaliDate(year=1345, month=10, day=10))
            self.assertEqual(
                JalaliDate.strptime('1345 10 10 %s' % PERSIAN_WEEKDAY_NAMES_ASCII[i], '%Y %m %d %E'),
                JalaliDate(year=1345, month=10, day=10))

        # Test days
        for i in range(1, 32):
            self.assertEqual(JalaliDate.strptime(str(i), '%d'), JalaliDate(day=i))
        self.assertRaises(ValueError, JalaliDate.strptime, '32', '%d')
        self.assertRaises(ValueError, JalaliDate.strptime, '0', '%d')

        # Test day of year
        for i in range(1, 366):
            self.assertEqual(JalaliDate.strptime(str(i), '%j'), JalaliDate.fromordinal(i))
        self.assertRaises(ValueError, JalaliDate.strptime, '366', '%j')
        self.assertRaises(ValueError, JalaliDate.strptime, '0', '%j')
        self.assertEqual(JalaliDate.strptime('1345 5', '%Y %j'),
                         JalaliDate(year=1345, month=1, day=5))

        self.assertEqual(JalaliDate.strptime('1302 123 3 4', '%Y %j %m %d'),
                         JalaliDate(year=1302, month=4, day=30))

        self.assertEqual(JalaliDate.strptime('1302 3 4', '%Y %m %d'),
                         JalaliDate(year=1302, month=3, day=4))

        self.assertEqual(JalaliDate.strptime(u'جمعه 01 اردیبهشت 0001', '%A %d %B %Y'),
                         JalaliDate(month=2, day=1))

        self.assertEqual(JalaliDate.strptime(u'جمعه 01 فروردین 0001', '%x'),
                         JalaliDate.min)

        self.assertEqual(JalaliDate.strptime(u'جمعه 31 فروردین 1375%', '%x%%'),
                         JalaliDate(1375, 1, 31))

        check_format(JalaliDate(1375, 1, 31), "%Y-%m-%d %%")
        check_format(JalaliDate(1375, 1, 31), "%Y-%m-%d %% %% %%")

        for i in xrange(1, 400):
            check_format(JalaliDate.fromordinal(i), "%Y-%m-%d %a%A%b%B%j%w%W%e%E%g%G%x %% %% %%")

        d = JalaliDate.today().replace(month=1, day=1)
        for i in xrange(1, algorithms.days_in_year(d.year)):
            check_format(d + timedelta(i), "%y-%m-%d")
예제 #50
0
 def test_replace(self):
     d1 = JalaliDate(1391, 12, 30)
     self.assertEqual(d1.replace(year=1395), JalaliDate(1395, 12, 30))
     self.assertEqual(d1.replace(month=1),   JalaliDate(1391, 1, 30))
     self.assertEqual(d1.replace(day=1),     JalaliDate(1391, 12, 1))
     self.assertRaises(ValueError, d1.replace, year=1392)
예제 #51
0
 def assert_parse_and_format(self, jdate ,fmt, print_=False):
     jdate_str = jdate.strftime(fmt)
     if print_:
         print(jdate_str)
     d2 = JalaliDate.strptime(jdate_str, fmt)
     self.assertEqual(jdate, d2)
예제 #52
0
    def test_day(self):
        """
        Testing:
            %d           Day of the month as a decimal number [01, 31].
            %D           Day of the month as a decimal number in persian form [۱, ۳۱].
            %K           Day of the month as a zero padded decimal number in persian form [۰۱, ۳۱].
            %j           Day of the year as a zero padded decimal number [001, 366].
            %J           Day of the year as a decimal number in persian form [۱, ۳۶۶].
            %V           Day of the year as a zero padded decimal number in persian form [..۱, ۳۶۶].

        """

        d1 = JalaliDate(1361, 6, 15)
        self.assertEqual(d1.strftime('%d'), u'15')
        self.assertEqual(d1.strftime('%j'), u'170')
        self.assertEqual(d1.strftime('%D'), u'۱۵')

        self.assertEqual(JalaliDate(1361, 6, 2).strftime('%D'), u'۲')
        self.assertEqual(JalaliDate(1361, 6, 2).strftime('%K'), u'۰۲')
        self.assertEqual(JalaliDate(1361, 6, 2).strftime('%J'), u'۱۵۷')
        self.assertEqual(JalaliDate(1361, 1, 5).strftime('%J'), u'۵')
        self.assertEqual(JalaliDate(1361, 1, 25).strftime('%V'), u'۰۲۵')
        self.assertEqual(JalaliDate(1361, 1, 5).strftime('%V'), u'۰۰۵')

        # Test days
        for i in range(1, 32):
            self.assertEqual(JalaliDate.strptime(str(i), '%d'), JalaliDate(day=i))

        self.assertRaises(ValueError, JalaliDate.strptime, '32', '%d')
        self.assertRaises(ValueError, JalaliDate.strptime, '0', '%d')

        # Test day of year
        for i in range(1, 366):
            self.assertEqual(JalaliDate.strptime(str(i), '%j'), JalaliDate.fromordinal(i))
        self.assertRaises(ValueError, JalaliDate.strptime, '366', '%j')
        self.assertRaises(ValueError, JalaliDate.strptime, '0', '%j')
        self.assertEqual(JalaliDate.strptime('1345 5', '%Y %j'),
                         JalaliDate(year=1345, month=1, day=5))

        self.assertEqual(JalaliDate.strptime('1302 123 3 4', '%Y %j %m %d'),
                         JalaliDate(year=1302, month=4, day=30))

        self.assertEqual(JalaliDate.strptime('1302 3 4', '%Y %m %d'),
                         JalaliDate(year=1302, month=3, day=4))

        self.assertEqual(JalaliDate.strptime(u'۲', '%D'), JalaliDate(2))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۰۲', '%D')

        self.assertEqual(JalaliDate.strptime(u'۰۲', '%K'), JalaliDate(1, 1, 2))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۲', '%K')

        self.assertEqual(JalaliDate.strptime(u'۰۲', '%K'), JalaliDate(1, 1, 2))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۲', '%K')

        self.assertEqual(JalaliDate.strptime(u'۱۵۷', '%J'), JalaliDate(1, 6, 2))
        self.assertEqual(JalaliDate.strptime(u'۷', '%J'), JalaliDate(1, 1, 7))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۰۷', '%J')
        self.assertRaises(ValueError, JalaliDate.strptime, u'۰۴۷', '%J')

        self.assertEqual(JalaliDate.strptime(u'۰۴۷', '%V'), JalaliDate(1, 2, 16))
        self.assertEqual(JalaliDate.strptime(u'۰۰۷', '%V'), JalaliDate(1, 1, 7))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۷', '%V')
        self.assertRaises(ValueError, JalaliDate.strptime, u'۴۷', '%V')


        for i in range(1, 400):
            self.assert_parse_and_format(JalaliDate.fromordinal(i), "%Y-%m-%d")
            self.assert_parse_and_format(JalaliDate.fromordinal(i), "%Y-%m-%D")
            self.assert_parse_and_format(JalaliDate.fromordinal(i), "%Y-%m-%K")
            self.assert_parse_and_format(JalaliDate.fromordinal(i), "%Y-%j")
            self.assert_parse_and_format(JalaliDate.fromordinal(i), "%Y-%J")
            self.assert_parse_and_format(JalaliDate.fromordinal(i), "%Y-%V")
예제 #53
0
 def test_strftime(self):
     jdate = JalaliDate.strptime(JalaliDate(self.leap_year, 12, 23).isoformat(), '%Y-%m-%d')
     self.assertEqual(jdate.isoformat(), '%s-12-23' % self.leap_year)
     d1 = JalaliDate(1361, 6, 15)
     self.assertEqual(d1.strftime('%Y-%m-%d'), '1361-06-15')
     self.assertEqual(d1.strftime(u'اول%Y-%m-%dآخر'), u'اول1361-06-15آخر')
예제 #54
0
 def test_iso_calendar(self):
     jdate = JalaliDate(self.leap_year, 12, 23)
     self.assertEqual(jdate.isocalendar(), (self.leap_year, 51, 6))
예제 #55
0
 def test_local_format(self):
     d1 = JalaliDate(1361, 6, 15)
     self.assertEqual(
         d1.strftime('%A %D %B %N'),
         d1.localdateformat()
     )
예제 #56
0
 def test_iso_format(self):
     jdate = JalaliDate(self.leap_year, 12, 23)
     self.assertEqual(jdate.isoformat(), '%s-12-23' % self.leap_year)
예제 #57
0
 def test_fromtimestamp(self):
     self.assertEqual(JalaliDate.fromtimestamp(1471628912.749938), JalaliDate(1395, 5, 29))
예제 #58
0
    def test_strftime(self):
        jdate = JalaliDate.strptime(JalaliDate(self.leap_year, 12, 23).isoformat(), '%Y-%m-%d')
        self.assertEqual(jdate.isoformat(), '%s-12-23' % self.leap_year)
        self.assertEqual(jdate.strftime('%a%A%b%B%d%j%m%w%x%y%Y%%%W'), u'پپنجشنبهاساسفند23359125پنجشنبه 23 اسفند 1375751375%51')

        d1 = JalaliDate(1361, 6, 15)
        self.assertEqual(d1.strftime('%a'), u'د')
        self.assertEqual(d1.strftime('%A'), u'دوشنبه')
        self.assertEqual(d1.strftime('%b'), u'شه')
        self.assertEqual(d1.strftime('%B'), u'شهریور')
        self.assertEqual(d1.strftime('%d'), u'15')
        self.assertEqual(d1.strftime('%j'), u'170')
        self.assertEqual(d1.strftime('%m'), u'06')
        self.assertEqual(d1.strftime('%w'), u'2')
        self.assertEqual(d1.strftime('%W'), u'24')
        self.assertEqual(d1.strftime('%x'), u'دوشنبه 15 شهریور 1361')
        self.assertEqual(d1.strftime('%y'), u'61')
        self.assertEqual(d1.strftime('%Y'), u'1361')
        self.assertEqual(d1.strftime('%e'), u'D')
        self.assertEqual(d1.strftime('%E'), u'Doshanbeh')
        self.assertEqual(d1.strftime('%g'), u'Sh')
        self.assertEqual(d1.strftime('%G'), u'Shahrivar')
        self.assertEqual(d1.strftime('%%'), u'%')

        self.assertEqual(
            d1.strftime('%a%A%b%B%d%j%m%w%W%x%y%Y%e%E%g%G%%'),
            u'ددوشنبهشهشهریور1517006224دوشنبه 15 شهریور 1361611361DDoshanbehShShahrivar%')
        self.assertEqual(d1.strftime('%Y-%m-%d'), '1361-06-15')
        self.assertEqual(d1.strftime('اول%Y-%m-%dآخر'), 'اول1361-06-15آخر')
예제 #59
0
    def assert_parse_and_format(self, jdate, fmt):
        jdate_str = jdate.strftime(fmt)

        d2 = JalaliDate.strptime(jdate_str, fmt)
        self.assertEqual(jdate, d2)
예제 #60
0
    def test_year(self):
        """
        Testing:
            %y           Year without century as a zero padded decimal number [00, 99].
            %n           Year without century as a decimal number in persian form [۱, ۹۹].
            %u           Year without century as a zero padded decimal number in persian form [۰۱, ۹۹].
            %Y           Year with century as a decimal number [1-3178].
            %N           Year with century as a decimal number in persian form [۱-۳۱۷۸].
            %O           Year with century as a zero padded decimal number in persian form [۰۰۰۱-۳۱۷۸].
        """

        self.assertEqual(JalaliDate(1361, 6, 15).strftime('%y'), u'61')
        self.assertEqual(JalaliDate(1361, 6, 15).strftime('%Y'), u'1361')
        self.assertEqual(JalaliDate(61, 11, 5).strftime('%N'), u'۶۱')
        self.assertEqual(JalaliDate(61, 11, 5).strftime('%O'), u'۰۰۶۱')

        self.assertEqual(JalaliDate.strptime('94', '%y'), JalaliDate(1394))
        self.assertEqual(JalaliDate.strptime('01', '%y'), JalaliDate(1301))
        self.assertEqual(JalaliDate.strptime('00', '%y'), JalaliDate(1300))
        self.assertEqual(JalaliDate.strptime(u'۹۴', '%n'), JalaliDate(1394))
        self.assertEqual(JalaliDate.strptime(u'۱', '%n'), JalaliDate(1301))
        self.assertEqual(JalaliDate.strptime(u'۰', '%n'), JalaliDate(1300))
        self.assertEqual(JalaliDate.strptime(u'۹۴', '%u'), JalaliDate(1394))
        self.assertEqual(JalaliDate.strptime(u'۰۱', '%u'), JalaliDate(1301))
        self.assertEqual(JalaliDate.strptime(u'۰۰', '%u'), JalaliDate(1300))

        self.assertEqual(JalaliDate.strptime(u'۰۰۴', '%N'), JalaliDate(4, 1, 1))
        self.assertEqual(JalaliDate.strptime(u'۰۴', '%N'), JalaliDate(4, 1, 1))
        self.assertEqual(JalaliDate.strptime(u'۴', '%N'), JalaliDate(4, 1, 1))

        self.assertEqual(JalaliDate.strptime(u'۰۰۴', '%O'), JalaliDate(4, 1, 1))
        self.assertEqual(JalaliDate.strptime(u'۰۴', '%O'), JalaliDate(4, 1, 1))
        self.assertEqual(JalaliDate.strptime(u'۴', '%O'), JalaliDate(4, 1, 1))


        this_century = JalaliDate(int(JalaliDate.today().year/100) * 100)
        for i in range(99):
            self.assert_parse_and_format(this_century.replace(year=this_century.year+i), '%y')
            self.assert_parse_and_format(this_century.replace(year=this_century.year+i), '%n')
            self.assert_parse_and_format(this_century.replace(year=this_century.year+i), '%u')

        for i in range(1, 1001):
            self.assert_parse_and_format(JalaliDate(i), '%Y')
            self.assert_parse_and_format(JalaliDate(i), '%N')
            self.assert_parse_and_format(JalaliDate(i), '%O')