Пример #1
0
 def test_format(self):
     self.assertEqual(
         JalaliDateTime(1369, 7, 1, 14, 0, 10, 0,
                        pytz.utc).strftime("%X %p %z %Z"),
         "14:00:10 PM +0000 UTC",
     )
     self.assertEqual(
         JalaliDateTime(1369, 7, 1, 14, 0, 10, 0, pytz.utc).strftime("%c"),
         "Yekshanbeh 01 Mehr 1369 14:00:10",
     )
     self.assertEqual(
         JalaliDateTime(1397, 11, 30, 14, 0, 10, 0,
                        pytz.utc).strftime("%c"),
         "Seshanbeh 30 Bahman 1397 14:00:10",
     )
     self.assertEqual(
         JalaliDateTime(1369, 7, 1, 11, 0, 10, 553,
                        pytz.utc).strftime("%I:%M:%S.%f %p"),
         "11:00:10.000553 AM",
     )
     self.assertEqual(
         JalaliDateTime(1369, 7, 1, 14, 0, 10, 553,
                        pytz.utc).strftime("%I:%M:%S.%f %p"),
         "02:00:10.000553 PM",
     )
Пример #2
0
    def test_hash(self):
        j1 = JalaliDateTime.today().replace(tzinfo=pytz.utc)
        j2 = JalaliDateTime(1369, 7, 1, 0, 0, 0, 0)
        j3 = JalaliDateTime(datetime(1990, 9, 23, 0, 0, 0, 0))

        self.assertEqual(
            {
                j1: "today",
                j2: "test1",
                j3: "test2"
            },
            {
                JalaliDateTime(
                    j1.year,
                    j1.month,
                    j1.day,
                    j1.hour,
                    j1.minute,
                    j1.second,
                    j1.microsecond,
                    j1.tzinfo,
                ):
                "today",
                JalaliDateTime(1369, 7, 1, 0, 0, 0, 0):
                "test2",
            },
        )
 def test_shamsi_to_gregorian(self):
     self.assertEqual(
         JalaliDateTime(1367, 2, 14, 14, 0, 0, 0).to_gregorian(),
         datetime(1988, 5, 4, 14, 0, 0, 0),
     )
     self.assertEqual(
         JalaliDateTime(1399, 11, 23, 13, 12, 0, 0).to_gregorian(),
         datetime(2021, 2, 11, 13, 12, 0, 0),
     )
Пример #4
0
 def test_timetuple(self):
     self.assertEqual(
         JalaliDateTime(1398, 3, 17, 18, 36, 30, 811090).timetuple(),
         time.struct_time((2019, 6, 7, 18, 36, 30, 4, 158, -1)),
     )
     self.assertEqual(
         JalaliDateTime(1367, 2, 14, 14, 0, 0, 0).utctimetuple(),
         time.struct_time((1988, 5, 4, 14, 0, 0, 2, 125, 0)),
     )
Пример #5
0
 def test_gregorian_to_shamsi(self):
     self.assertEqual(
         JalaliDateTime(datetime(1990, 9, 23, 14, 14, 1, 1111)),
         JalaliDateTime(1369, 7, 1, 14, 14, 1, 1111),
     )
     self.assertEqual(
         JalaliDateTime.to_jalali(datetime(1988, 5, 4, 14, 0, 0, 0)),
         JalaliDateTime(1367, 2, 14, 14, 0, 0, 0),
     )
Пример #6
0
def lead_add(request):
    if request.method == "POST" and request.user.is_authenticated \
            and request.user.is_staff:
        name_and_family = request.POST['name_and_family']
        gender = request.POST['gender']
        phone_fa = digits.ar_to_fa(request.POST['phone_number'])
        phone_en = digits.fa_to_en(phone_fa)
        register_status = request.POST['register_status']
        operator = request.user
        origin = Origin.objects.filter(id=int(request.POST['origin'])).first()
        #fields should be validate
        if len(name_and_family) > 2 and len(phone_en) > 5 and len(phone_en) < 16 and\
                phone_en.isdigit() and len(Lead.objects.filter(phone_number=phone_en)) == 0:
            lead = Lead(origin = origin, name_and_family = name_and_family.encode("utf-8"), gender = gender,\
                phone_number = phone_en, register_status = register_status,\
                led_time = datetime.now(),led_time_jalali = JalaliDateTime.now().strftime("%Y-%m-%d %H:%M:%S"),\
                led_time_jalali_str = JalaliDateTime.now().strftime("%c"))
            #if lead is registered save operator
            if register_status == "K":
                lead.registered_by = request.user
            else:
                lead.registered_by = None
            lead.save()
            lead.operator.add(operator)
            messages.success(request, "You'r new lead has been save")
            return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
        #if same phone number added by 1 or more operators
        elif len(Lead.objects.filter(phone_number=phone_en)) == 1:
            lead = Lead.objects.filter(phone_number=phone_en).first()
            if request.user in lead.operator.all():
                messages.warning(request, "Phone number is repetitive")
                return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
            else:
                if lead.register_status != "K":
                    lead.operator.add(request.user)
                    lead.save()
                    messages.info(request, "lead is repetitive but you added to this lead operators")
                    messages.success(request, "You'r new lead has been save")
                    return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
                else:
                    messages.info(request, "lead is repetitive and registered by another operator")
                    messages.warning(request, "You'r new lead did not changed!")
                    return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
        elif len(name_and_family) <= 3:
            messages.warning(request, "Check name and family fileld")
            return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
        elif len(phone_en) <= 6 and len(phone_en) >= 16 and phone_en.isdigit() is False:
            messages.warning(request, "Phone number is in wrong format")
            return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
        else:
            messages.warning(request, "something went wrong")
            return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
    else:
        messages.error(request, "You'r not authorized")
        return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
Пример #7
0
 def generate_excel_file(user: User, j_year: int, j_month: int) -> BytesIO:
     date_from = JalaliDateTime(year=j_year, month=j_month, day=1).to_gregorian()
     next_j_month = j_month % 12 + 1
     date_to = JalaliDateTime(year=j_year, month=next_j_month, day=1).to_gregorian()
     rollouts = Rollout.objects \
         .filter(user=user) \
         .filter(time__gte=date_from,
                 time__lt=date_to) \
         .order_by('time')
     excel_file = ExcelConverter(user, rollouts, starting_date=date_from).get_excel_file()
     return excel_file
Пример #8
0
def add_event(client, message):
    _, name, date, hour = message.text.split()
    year, month, day = list(map(int, date.split('/')))
    hour, minute = list(map(int, hour.split(':')))
    date = JalaliDateTime(year, month, day).to_gregorian()
    # date = date.replace(hour=hour, minute=minute, tzinfo=tehran)
    date = date.replace(hour=hour, minute=minute, tzinfo=tz('UTC'))
    events.append({date: [name, message.chat.id]})
    message.reply("Time",
                  reply_markup=ReplyKeyboardMarkup(
                      [["1 Week Before", "1 Day Before", "1 Hour Before"]],
                      resize_keyboard=True))
Пример #9
0
    def test_base(self):
        self.assertEqual(JalaliDateTime(1367, 2, 14, 14, 0, 0, 0),
                         JalaliDateTime.to_jalali(datetime(1988, 5, 4, 14, 0, 0, 0)))
        self.assertEqual(JalaliDateTime(1369, 7, 1, 14, 14, 1, 1111),
                         JalaliDateTime(datetime(1990, 9, 23, 14, 14, 1, 1111)))
        self.assertEqual(JalaliDateTime(1369, 7, 1, 14, 14, 1, 9111),
                         JalaliDateTime(JalaliDateTime(1369, 7, 1, 14, 14, 1, 9111)))

        g = JalaliDateTime.now()
        self.assertEqual(g.time(), _time(g.hour, g.minute, g.second, g.microsecond))

        g = g.replace(tzinfo=pytz.timezone("America/Los_Angeles"))
        self.assertEqual(g.timetz(),
                         _time(g.hour, g.minute, g.second, g.microsecond, pytz.timezone("America/Los_Angeles")))

        self.assertEqual(JalaliDateTime.fromtimestamp(578723400, pytz.utc),
                         JalaliDateTime(1367, 2, 14, 4, 30, 0, 0, pytz.utc))
        self.assertEqual(JalaliDateTime.utcfromtimestamp(578723400), JalaliDateTime(1367, 2, 14, 4, 30, 0, 0))

        try:
            JalaliDateTime._check_time_fields(20, 1, 61, 1000)
        except ValueError:
            assert True
        else:
            assert False

        try:
            JalaliDateTime._check_time_fields("20", 1, 61, 1000)
        except TypeError:
            assert True
        else:
            assert False
Пример #10
0
def to_jalali(value, arg='%A - %d %B %Y - %H:%M'):
    month_map = {
        "Farvardin": "فروردین",
        "Ordibehesht": "اردیبهشت",
        "Khordad": "خرداد",
        "Tir": "تیر",
        "Mordad": "مرداد",
        "Shahrivar": "شهریور",
        "Mehr": "مهر",
        "Aban": "آبان",
        "Azar": "آذر",
        "Dey": "دی",
        "Bahman": "بهمن",
        "Esfand": "اسفند",
    }
    week_map = {
        "Shanbeh": "شنبه",
        "Yekshanbeh": "یکشنبه",
        "Doshanbeh": "دوشنبه",
        "Seshanbeh": "سه‌شنبه",
        "Chaharshanbeh": "چهارشنبه",
        "Panjshanbeh": "پنجشنبه",
        "Jomeh": "جمعه"
    }
    return utils.replace(
        utils.replace(JalaliDateTime(value).strftime(arg), week_map),
        month_map)
Пример #11
0
    def parse(self, value):
        shamsi_date_time = value
        year_ = int(shamsi_date_time[0:4])
        month_ = int(shamsi_date_time[5:7])
        day_ = int(shamsi_date_time[8:10])
        padding = shamsi_date_time.find(':')
        if not padding == -1:
            padding -= 2
            hour_ = int(shamsi_date_time[padding:padding + 2])

            padding += 3
            min_ = int(shamsi_date_time[padding:padding + 2])
            padding += 3
            sec_ = int(shamsi_date_time[padding:padding + 2])

        else:
            hour_ = 0
            padding += 3
            min_ = 0
            padding += 3
            sec_ = 0
        self.date = JalaliDateTime(year=year_,
                                   month=month_,
                                   day=day_,
                                   hour=hour_,
                                   minute=min_,
                                   second=sec_).to_gregorian()
        self.persian_date = self.from_gregorian(self.date)
        return self
Пример #12
0
def record_form():
    if request.method == "POST":
        database = current_app.config['DATABASE_NAME']
        client = MongoClient('localhost', 27017)
        db = client[database]
        items = session['basket']

        basket = {
            "customer_first_name": request.form['name'],
            "customer_last_name": request.form['family_name'],
            "time_give": JalaliDateTime.fromisoformat(request.form['date-give']).to_gregorian(),
            "time_record": datetime.now(),
            "phone": int(request.form['phone']),
            "total_costs": int(request.form['totalCoast']),
            "address": request.form['address'],
            "items": []
        }
        products = {i: request.form[i].split(',') for i in request.form if i.startswith('product')}
        basket["items"] = [
            dict({"name_product": products[i][0], "quantity": int(products[i][1]), "price": int(products[i][2]),
                  "name_inventory": products[i][3]})
            for i in products]
        db.basket.insert_one(basket)
        session['basket'] = []
        return request.form
Пример #13
0
def fetch_startup_service(owner, context):
    """get the startup that assign to the requested user and get the custom leader that added by user
    
    Arguments:
        owner {OBEJCET} -- requested user
        context {DICT} -- a dictionary of context to add it some more context
    
    Returns:
        OBJECT -- returns the determined startup
    """
    db_startup = get_startup_service(owner=owner)
    the_time = JalaliDateTime.now().to_gregorian()
    try:
        user_mentor = get_startup_service(owner=owner,
                                          rahbar__mentor_user=True)
    except:
        user_mentor = None

    context.update({
        'the_time': the_time,
        'user_mentor': user_mentor,
        'db_startup': db_startup,
    })

    return db_startup
Пример #14
0
 def from_gregorian(self,greg_date_time,add_time_zone=True):
     if not add_time_zone:
         return JalaliDateTime.to_jalali(greg_date_time).strftime("%Y/%m/%d %H:%M:%S") 
     if SERVER_ON_PARS or SERVER_ON_HEROKU:
         if self.is_in_first_half_shamsi_year():
             hours=4
         else:
             hours=3
         minutes=30
     else:
         if self.is_in_first_half_shamsi_year():
             hours=4
         else:
             hours=3
         minutes=30
     return JalaliDateTime.to_jalali(greg_date_time+datetime.timedelta(hours=hours,minutes=minutes)).strftime("%Y/%m/%d %H:%M:%S") 
Пример #15
0
def check_time():
    today = JalaliDateTime.now().strftime('%m-%d')
    today = time.strptime(today, '%m-%d')
    a = '0'
    b = '0'
    c = 0
    missings = db.execute('SELECT day, month FROM days WHERE in_time = ? AND off = ?', (a, c)).fetchall()
    print ("you have missing time entris in these days:")
    for missing in missings:
        m_d = str(missing[0]).zfill(2)
        m_m = str(missing[1]).zfill(2)
        day = f'{m_m}-{m_d}'

        day = time.strptime(day, '%m-%d')

        if today < day:
            break
        else:
            print (f'{m_m}-{m_d}  Has no ENTER time')
        
    missings = db.execute('SELECT day, month FROM days WHERE out_time = ? AND off = ?', (b, c)).fetchall()
    print ("-------------------------------")
    for missing in missings:
        m_d = str(missing[0]).zfill(2)
        m_m = str(missing[1]).zfill(2)
        day = f'{m_m}-{m_d}'
        day = time.strptime(day, '%m-%d')

        if today < day:
            break
        else:
            print (f'{m_m}-{m_d}  Has no EXIT time')
Пример #16
0
    def test_hash(self):
        j1 = JalaliDateTime.today().replace(tzinfo=pytz.utc)
        j2 = JalaliDateTime(1369, 7, 1, 0, 0, 0, 0)
        j3 = JalaliDateTime(datetime(1990, 9, 23, 0, 0, 0, 0))

        self.assertEqual({j1: "today", j2: "mini1", j3: "mini2"},
                         {JalaliDateTime(j1.year, j1.month, j1.day, j1.hour, j1.minute, j1.second,
                                         j1.microsecond, j1.tzinfo): "today",
                          JalaliDateTime(1369, 7, 1, 0, 0, 0, 0): "mini2"})
Пример #17
0
def export_all(request):
    leads = Lead.objects.order_by('-id')
    comments = Comment.objects.all()
    labels = Label.objects.all()
    time = JalaliDateTime.now().strftime("%H:%M %Y-%m-%d")


    data = {'comments': comments, 'leads':leads, 'labels': labels, 'time': time}
    return render(request,'leads/export/export_all.html', data)
Пример #18
0
 async def job():
     async with aiohttp.ClientSession() as session:
         start_time = time()
         async with session.get(url) as response:
             status = response.status
             response_body = await response.text()
             print('%s: Pinged %s / %.2fms / %d: %s' %
                   (JalaliDateTime.now(timezone('Iran')).strftime('%Y-%m-%d %H:%M:%S%Z'),
                    REMOTE_HOST, time() - start_time, status, response_body))
Пример #19
0
def startups_api(request):
    """an api to show startups that have credit in 100startups main page

    Arguments:
        request {REQUEST} -- for HTTP Response

    Returns:
        JSONRESPONSE -- returns serialized informaion about startup
    """
    protocol = urlsplit(request.build_absolute_uri(None)).scheme
    current_site = get_current_site(request)
    result = []
    startup = StartUp.objects.filter(credit__isnull=False)
    site = ''.join([str(protocol), '://', str(current_site)])
    for db in startup:
        date = JalaliDateTime.to_jalali(
            datetime.datetime(db.created_date.year, db.created_date.month,
                              db.created_date.day, db.created_date.hour,
                              db.created_date.minute, db.created_date.second,
                              0))
        result.append({
            'id':
            db.id,
            'logo':
            site + str(db.image.url),
            'name':
            db.title,
            'site':
            db.site,
            'credit':
            db.credit,
            'explaine':
            db.explain_startup,
            'created_date':
            str(date),
            'leader': {
                'first_name': db.rahbar_asli.first_name,
                'last_name': db.rahbar_asli.last_name,
                'avatar': site + str(db.rahbar_asli.avatar.url)
            },
            'investor':
            list(
                db.investor.annotate(avatar=F('user__avatar'),
                                     first_name=F('user__first_name'),
                                     last_name=F('user__last_name')).values(
                                         'avatar', 'first_name', 'last_name')),
            'team':
            list(
                db.teammember.annotate(first_name=F('t_first_name'),
                                       last_name=F('t_last_name'),
                                       avatar=F('t_avatar'),
                                       role=F('t_role_in_startup')).values(
                                           'first_name', 'last_name', 'avatar',
                                           'role'))
        })
    return JsonResponse(result, safe=False)
Пример #20
0
def comment_add(request):
    if request.method == "POST" and request.user.is_authenticated \
            and request.user.is_staff and len(request.POST['text']) > 0:
        get_object_or_404(Lead, id=int(request.POST["id"]))
        post = Lead.objects.filter(id=int(request.POST["id"])).first()
        author = request.user
        text = request.POST['text']
        comment = Comment(post = post, author = author, text = text, created_date = datetime.now(), \
        created_date_jalali = JalaliDateTime.now().strftime("%Y-%m-%d %H:%M:%S"), \
            created_date_jalali_str = JalaliDateTime.now().strftime("%c"))
        comment.save()
        messages.success(request, "You'r comment has been save")
        return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
    elif len(request.POST['text']) == 0:
        messages.warning(request, "You'r comment text field is empty")
        return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
    else:
        messages.error(request, "You'r not authorized")
        return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
Пример #21
0
def jdatetime(value, arg=""):
    try:
        if str(value) == "now":
            if arg == "": arg = "%Y-%m-%d %H:%M:%S"
            resultdate = JalaliDateTime.now()
        elif str(value) == "time":
            if arg == "": arg = "%H:%M:%S"
            resultdate = JalaliDateTime.now()
        elif str(value) == "date":
            if arg == "": arg = "%Y-%m-%d"
            resultdate = JalaliDateTime.now()
        else:
            if isinstance(value, datetime.date):
                resultdate = JalaliDateTime.to_jalali(value)
            else:
                year, month, day = map(int, value[:10].split('-'))
                hour = minute = second = millisecond = 0
                if value.find(' ') == 10:
                    date, time = value.split(' ')
                    time = time.split(':')
                    if len(time) == 1:
                        hour = int(time[0])
                    elif len(time) == 2:
                        hour = int(time[0])
                        minute = int(time[1])
                    elif len(time) == 3:
                        hour = int(time[0])
                        minute = int(time[1])
                        time = time[2].split('.')
                        second = int(time[0])
                        if len(time) > 1:
                            millisecond = int(time[1])
                resultdate = JalaliDateTime.to_jalali(
                    datetime.datetime(year, month, day, hour, minute, second,
                                      millisecond))
        if arg:
            return resultdate.strftime(arg)
        else:
            return resultdate
    except Exception as err:
        return "jdatetime error:%s" % err
Пример #22
0
def label_add(request):
    if request.method == "POST" and request.user.is_authenticated \
            and request.user.is_staff:
        get_object_or_404(Lead, id=int(request.POST["lead_id"]))
        get_object_or_404(LabelDefinition, id=int(request.POST["label"]))
        #if label is uniqe for this lead
        if len(Label.objects.filter(label__id=int(request.POST["label"]), post__id=int(request.POST["lead_id"]))) == 0:
            post = Lead.objects.filter(id=int(request.POST["lead_id"])).first()
            label1 = LabelDefinition.objects.filter(id=int(request.POST["label"])).first()
            label = Label(post = post, label = label1, owner = request.user , created_date = datetime.now(), \
                created_date_jalali = JalaliDateTime.now().strftime("%Y-%m-%d %H:%M:%S"), \
                    created_date_jalali_str = JalaliDateTime.now().strftime("%c"))
            label.save()
            messages.success(request, "You'r label has been changed")
            return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
        else:
            messages.warning(request, "This label exist")
            return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
    else:
        messages.error(request, "You'r not authorized")
        return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
Пример #23
0
    def test_others(self):
        self.assertTrue(JalaliDateTime.fromtimestamp(time.time()) <= JalaliDateTime.now())
        self.assertEqual(JalaliDateTime(1367, 2, 14, 4, 30, 0, 0, pytz.utc).timestamp(), 578723400)
        self.assertEqual(JalaliDateTime.fromtimestamp(578723400, pytz.utc),
                         JalaliDateTime(1367, 2, 14, 4, 30, 0, 0, pytz.utc))
        self.assertEqual(JalaliDateTime(1367, 2, 14, 4, 30, 4, 4444).jdate(), JalaliDate(1367, 2, 14))
        self.assertEqual(JalaliDateTime(1367, 2, 14, 4, 30, 4, 4444).date(), date(1988, 5, 4))
        self.assertEqual(JalaliDateTime(1367, 2, 14, 4, 30, 0, 0).replace(tzinfo=pytz.utc).__repr__(),
                         'JalaliDateTime(1367, 2, 14, 4, 30, tzinfo=<UTC>)')
        self.assertEqual(JalaliDateTime(1367, 2, 14, 4, 30, 4, 4444).replace(year=1395, day=3, minute=59),
                         JalaliDateTime(1395, 2, 3, 4, 59, 4, 4444))

        self.assertEqual(JalaliDateTime.now(pytz.utc).tzname(), "UTC")
        self.assertIsNone(JalaliDateTime.today().tzname())
        self.assertIsNone(JalaliDateTime.today().dst())

        self.assertEqual(JalaliDateTime(1367, 2, 14, 4, 30, 0, 0).ctime(), "Chaharshanbeh 14 Ordibehesht 1367 04:30:00")
        self.assertEqual(JalaliDateTime(1396, 7, 27, 21, 48, 0, 0).ctime(), "Panjshanbeh 27 Mehr 1396 21:48:00")
        self.assertEqual(JalaliDateTime(1367, 2, 14, 4, 30, 0, 0).replace(locale="fa").ctime(),
                         "چهارشنبه ۱۴ اردیبهشت ۱۳۶۷ ۰۴:۳۰:۰۰")

        self.assertEqual(JalaliDateTime(1367, 2, 14, 4, 30, 0, 1, pytz.utc).isoformat(),
                         "1367-02-14T04:30:00.000001+00:00")
        self.assertEqual(JalaliDateTime(1367, 2, 14, 4, 30, 0, 1, pytz.utc).__str__(),
                         "1367-02-14 04:30:00.000001+00:00")
Пример #24
0
    def test_pickle(self):
        file = open("save.p", "wb")
        now = JalaliDateTime.now().replace(tzinfo=pytz.timezone("Asia/Tehran"))
        pickle.dump(now, file)
        file.close()

        file2 = open("save.p", "rb")
        j = pickle.load(file2)
        file2.close()

        self.assertEqual(j, now)

        os.remove("save.p")
Пример #25
0
    def test_pickle(self):
        file = open("save.p", "wb")
        now = JalaliDateTime.now().replace(tzinfo=pytz.timezone("Asia/Tehran"))
        pickle.dump(now, file)
        file.close()

        file2 = open("save.p", "rb")
        j = pickle.load(file2)
        file2.close()

        self.assertEqual(j, now)

        os.remove("save.p")
Пример #26
0
def dashboard_chart_service(investor ,coach ,leader ,referee ,operational, track_info):
    """get the numbers of karmand an the current year of chart
    
    Arguments:
        investor {OBJECT} -- the role of investor
        coach {OBJECT} -- the role of coach
        leader {OBJECT} -- the role of leader
        referee {OBJECT} -- the role of referee
        operational {OBJECT} -- the role of operational
    
    Returns:
        DICT -- returns the current year and all monthes of jalali and numbers of karmands
    """
    all_investorses = models.User.objects.filter(role=investor).count()
    all_startupses = StartUp.objects.all().count()
    all_coaches = models.User.objects.filter(role=coach).count()
    all_leaderes = models.User.objects.filter(role=leader).count()
    all_operationales = models.User.objects.filter(
        role=operational).count()
    all_referees = models.User.objects.filter(role=referee).count()
    th_year = JalaliDateTime.now().year
    chart = (StartUp.objects.filter(created_date__range=[get_date_jalali(int(th_year), month+1, 1), get_date_jalali(int(th_year), month+1, 31)]).count() for month in range(12))
    monthes = []
    
    for _ in range(12):
        monthes.append(chart.__next__())

    status = "وارد پنل مدیریت شد"
    status_of_user(track_info, status, 'import-dashboard-administrator')
    return {
    'farvardin': monthes[0],
    'ordi': monthes[1],
    'khurdad': monthes[2],
    'tir': monthes[3],
    'mordad': monthes[4],
    'shahrivar': monthes[5],
    'mehr': monthes[6],
    'aban': monthes[7],
    'azar': monthes[8],
    'daaay': monthes[9],
    'bahman': monthes[10],
    'esfand': monthes[11],
    'th_year': th_year,
    "all_investorses": all_investorses,
    "all_startupses": all_startupses,
    "all_coaches": all_coaches,
    "all_leaderes": all_leaderes,
    "all_operationales": all_operationales,
    "all_referees": all_referees}
Пример #27
0
def order_list():
    database = current_app.config['DATABASE_NAME']
    client = MongoClient('localhost', 27017)
    db = client[database]

    res = list(db.basket.find())
    for i in res:
        i["_id"] = str(i["_id"])
        i["time_record"] = digits.en_to_fa(
            JalaliDate((JalaliDateTime.to_jalali(i["time_record"]))).strftime("%Y/%m/%d"))
        # i["total_costs"] = digits.en_to_fa(str(i["total_costs"]))
        i["total_costs"] = f"{i['total_costs']:,}"

    res = list(db.basket.find())
    for i in res:
        i["_id"] = str(i["_id"])
        i["time_record"] = digits.en_to_fa(
            JalaliDate((JalaliDateTime.to_jalali(i["time_record"]))).strftime("%Y/%m/%d"))
        # i["total_costs"] = digits.en_to_fa(str(i["total_costs"]))
        i["total_costs"] = f"{i['total_costs']:,}"

        i["time_give"] = digits.en_to_fa(
            JalaliDate((JalaliDateTime.to_jalali(i["time_give"]))).strftime("%Y/%m/%d"))
    return jsonify(list(res))
Пример #28
0
def _send_user_timesheet(user):
    j_now = JalaliDateTime.now()
    receiver_email = settings.TIMESHEETS_RECEIVER_EMAIL
    if not receiver_email:
        raise ValueError("No receiver email address.")
    if not user.email:
        logging.info(
            f"User ({user.username}) email not found. Emailing the corresponding timesheet ignored."
        )
        return
    cc_list = []
    if user.email:
        cc_list.append(user.email)
    if user.detail.manager_email:
        cc_list.append(user.detail.manager_email)
    body_text = f'''Hello, Here is the timesheet of a user at SahaBee. This email is sent automatically by SahaBee, 
since the user was actively rollcalling at SahaBee during the last few days. 

User Information:
First name: {user.first_name}
Last name: {user.last_name}
Personnel code: {user.detail.personnel_code}
Username (at SahaBee): {user.username}

Sincerely,
SahaBee

-----------------------
Let the good times roll!
https://sahabee.ir
'''
    message = EmailMessage(
        'SahaBee User Timesheet',
        body_text,
        from_email=user.email,
        to=[receiver_email],
        cc=cc_list,
        attachments=[(
            f'timesheet-{user.detail.personnel_code}.xlsx',
            ExcelConverter.generate_excel_file(user, j_now.year,
                                               j_now.month).getvalue(),
            'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
        )])
    message.send()
    logging.info(
        f"Successfully emailed timesheet of '{user.username}' to '{settings.TIMESHEETS_RECEIVER_EMAIL}'."
    )
Пример #29
0
    def jsort (self):

        worldtime = self.ti
        w = str(worldtime).split()
        #date
        date = w[0].split('-')
        #time
        time = w[1].split(':')
        jsoort = JalaliDateTime.to_jalali(datetime.datetime(
                int(date[0]),
                int(date[1]),
                int(date[2]),
                int(time[0]),
                int(time[1]),
                int(time[2]))
        ).strftime("%Y%m%d%H%M%S")

        return jsoort
Пример #30
0
    def jconvert (self):

        worldtime = self.ti
        w = str(worldtime).split()
        #date
        date = w[0].split('-')
        #time
        time = w[1].split(':')
        convert = JalaliDateTime.to_jalali(datetime.datetime(
                int(date[0]),
                int(date[1]),
                int(date[2]),
                int(time[0]),
                int(time[1]),
                int(time[2]))
        ).strftime(self.jformat)

        return convert 
Пример #31
0
def create_time_table(period):
    print("Creating the time table...")
    print('Progress: 0%\r', end='\r')
    from_day = 15
    to_day = 32
    in_time = '0'
    out_time = '0'
    day_off = 0
    months = period
    prog = 0
    year = int(JalaliDateTime.now().strftime('%Y'))

    for month in months:
        if month == 0:
            year = year - 1
        while from_day <= to_day:
            try:
                day = JalaliDate(year, month, from_day)
                day_type = day.strftime('%A')
                day_month = day.strftime("%m")
                day_date = day.strftime('%d')
                prog = prog + 1
                from_day = from_day + 1
                print(f"\rProgress: {round(100*(prog/31))}%", end='\r')
                if day_type != "Panjshanbeh" and day_type != "Jomeh":
                    date = day.strftime('%Y-%m-%d')

                    day_off = is_off(date)
                else:
                    day_off = 1

                db.execute(
                    "INSERT INTO days VALUES ('{}', '{}', '{}', '{}', '{}', '{}')"
                    .format(day_date, day_month, day_type, in_time, out_time,
                            day_off))
            except:
                from_day = 1
                to_day = 15
                break
    print(f"Time table created........")
    connection.commit()
Пример #32
0
    def __fill_data(self, sheet):
        for row in range(self.DATA_FIRST_ROW, self.DATA_FIRST_ROW + 31):
            for col in range(self.DATA_FIRST_COLUMN, self.DATA_FIRST_COLUMN + 11):
                sheet[self.__get_cell_label(row, col)] = '00:00'

        current_row_number = self.DATA_FIRST_ROW - 1
        last_day = -1
        current_column_number = self.DATA_FIRST_COLUMN
        for rollout in self.rollouts:
            rtime = rollout.time.astimezone(pytz.timezone(settings.TIME_ZONE))
            day_of_month = JalaliDateTime(rtime).day
            if last_day != day_of_month:
                current_row_number += 1
                current_column_number = self.DATA_FIRST_COLUMN
                last_day = day_of_month

            while (current_row_number - self.DATA_FIRST_ROW + 1) < day_of_month:
                current_row_number += 1
            sheet[self.__get_cell_label(current_row_number,
                                        current_column_number)] \
                = rtime.strftime('%H:%M')
            current_column_number += 1
Пример #33
0
def _send_user_timesheet(user):
    j_now = JalaliDateTime.now()
    if not user.detail.work_email:
        logging.info(f"User ({user.username}) work email not found. Emailing the corresponding timesheet ignored.")
        return
    receiver_email = user.detail.work_email

    if j_now.day == 1:
        # The timesheet of the previous month should be sent in the first day of each month.
        report_jdatetime = j_now - timedelta(days=1)
    else:
        report_jdatetime = j_now
    timesheet_file = ExcelConverter.generate_excel_file(user, report_jdatetime.year, report_jdatetime.month).getvalue()
    body_text = f'''Hello, Here is the timesheet of you at SahaBee. As soon as possible, forward this email to the Office
    This email is sent automatically, since you have actively roll-calling at SahaBee during the last few days.

User Information:
First name: {user.first_name}
Last name: {user.last_name}
Personnel code: {user.detail.personnel_code}
Username (at SahaBee): {user.username}

Sincerely,
SahaBee

-----------------------
Let the good times roll!
https://sahabee.ir
'''
    message = EmailMessage('SahaBee User Timesheet',
                           body_text,
                           to=[receiver_email],
                           attachments=[(f'timesheet-{user.detail.personnel_code}.xlsx',
                                         timesheet_file,
                                         'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')])
    message.send()
    logging.info(f"Successfully emailed timesheet of '{user.username}' to '{settings.TIMESHEETS_RECEIVER_EMAIL}'.")
 def get_jalali_send_date(self, obj):
     return JalaliDateTime(
         obj.send_date.astimezone(
             timezone.get_default_timezone())).strftime("%Y/%m/%d %H:%M:%S")