Example #1
0
def gregorian_to_jalali(date):
    """get gregorian date as Date object
    return corresponding jalali Date object"""
    raw_date = GregorianToJalali(int(date.year), int(date.month), int(date.day))
    raw_date_list = raw_date.getJalaliList()
    jdate = datetime.date(raw_date_list[0], raw_date_list[1], raw_date_list[2])
    return jdate
Example #2
0
def genrate_dim_date(start_date, end_date):
    data = DataFrame({'gregorian_date': date_range(start_date, end_date)})
    data['gregorian_year'] = data.apply(lambda x: x.gregorian_date.year,
                                        axis=1)
    data['gregorian_month'] = data.apply(lambda x: x.gregorian_date.month,
                                         axis=1)
    data['gregorian_day'] = data.apply(lambda x: x.gregorian_date.day, axis=1)

    data['jalali_year'] = data.apply(lambda x: GregorianToJalali(
        x.gregorian_year, x.gregorian_month, x.gregorian_day).jyear,
                                     axis=1)
    data['jalali_month'] = data.apply(lambda x: GregorianToJalali(
        x.gregorian_year, x.gregorian_month, x.gregorian_day).jmonth,
                                      axis=1)
    data['jalali_day'] = data.apply(lambda x: GregorianToJalali(
        x.gregorian_year, x.gregorian_month, x.gregorian_day).jday,
                                    axis=1)
    data['jalali_month_name'] = data.jalali_month.map(jalali_months_dict)
    data['week_day'] = data.apply(lambda x: datetime.datetime(
        x.gregorian_year, x.gregorian_month, x.gregorian_day).weekday(),
                                  axis=1).map(week_days_dict)
    data['week_day_en'] = data.apply(lambda x: datetime.datetime(
        x.gregorian_year, x.gregorian_month, x.gregorian_day).weekday(),
                                     axis=1).map(week_days_en_dict)

    data['hijri_year'] = data.apply(lambda x: int(
        HijriDate(
            x.gregorian_year, x.gregorian_month, x.gregorian_day, gr=True).year
    ),
                                    axis=1)
    data['hijri_month'] = data.apply(lambda x: int(
        HijriDate(
            x.gregorian_year, x.gregorian_month, x.gregorian_day, gr=True).
        month),
                                     axis=1)
    data['hijri_day'] = data.apply(lambda x: int(
        HijriDate(
            x.gregorian_year, x.gregorian_month, x.gregorian_day, gr=True).day
    ),
                                   axis=1)
    data['hijri_month_name'] = data.hijri_month.map(hijri_months_dict)

    data['gregorian_month_name_en'] = data.gregorian_month.map(
        gregorian_months_en_dict)
    data['gregorian_month_name_fa'] = data.gregorian_month.map(
        gregorian_months_fa_dict)
    data['gregorian_week_number'] = data.apply(lambda x: datetime.date(
        x.gregorian_year, x.gregorian_month, x.gregorian_day).isocalendar()[1],
                                               axis=1)
    data['jalali_week_number'] = data.apply(
        lambda x: jalali_week(x.jalali_year, x.jalali_month, x.jalali_day),
        axis=1)

    data.to_csv(dim_date_file, encoding='utf8')
Example #3
0
 def decompress(self, value):
     if value:
         value = to_current_timezone(value)
         j_date_obj = GregorianToJalali(gyear=value.year, gmonth=value.month, gday=value.day)
         date_str = '%d-%.2d-%.2d' % (j_date_obj.jyear, j_date_obj.jmonth, j_date_obj.jday)
         return [date_str, value.time().replace(microsecond=0)]
     return [None, None]
Example #4
0
    def prepare_value(self, value):
        if isinstance(value, datetime_date):
            date_obj = GregorianToJalali(gyear=value.year,
                                         gmonth=value.month,
                                         gday=value.day)
            return '%d-%.2d-%.2d' % (date_obj.jyear, date_obj.jmonth,
                                     date_obj.jday)

        return value
Example #5
0
    def to_dict(self):
        updated = self.created_at != self.updated_at
        created_at = GregorianToJalali(self.created_at.year, self.created_at.month, self.created_at.day) \
            .getJalaliList()
        created_at = list(created_at)
        created_at.extend([self.created_at.hour,  self.created_at.minute, self.created_at.second, ])

        updated_at = GregorianToJalali(self.updated_at.year, self.updated_at.month, self.updated_at.day) \
            .getJalaliList()
        updated_at = list(updated_at)
        updated_at.extend([self.updated_at.hour, self.updated_at.minute, self.updated_at.second, ])

        if self.forwarded_at:
            forwarded_at = GregorianToJalali(self.forwarded_at.year, self.forwarded_at.month, self.forwarded_at.day) \
                .getJalaliList()
            forwarded_at = list(forwarded_at)
            forwarded_at.extend([self.forwarded_at.hour, self.forwarded_at.minute, self.forwarded_at.second, ])
        else:
            forwarded_at = None
        return {
            'id': self.id,
            'chat': self.chat.to_dict(),
            'from_user': self.from_user.to_dict(),
            'text': self.text,
            'updated': updated,
            'file': self.file.url if self.file else None,
            'seen': self.seen_at is not None,
            'created_at': created_at,
            'updated_at': updated_at,
            'forwarded_at': forwarded_at,
        }