예제 #1
0
class ReportForm(forms.Form):
    from_date = JalaliDateField(
        widget=AdminJalaliDateWidget
    )
    to_date = JalaliDateField(
        widget=AdminJalaliDateWidget
    )
예제 #2
0
class ReportFormAdmin(forms.Form):
    from_date = JalaliDateField(
        widget=AdminJalaliDateWidget
    )
    to_date = JalaliDateField(
        widget=AdminJalaliDateWidget
    )
    broker_id = forms.CharField(label='Broker:', widget=forms.Select(choices=[]))
예제 #3
0
    def __init__(self, *args, **kwargs):
        lang = get_language()
        super().__init__(*args, **kwargs)
        if lang == 'fa':
            self.fields['order_date'] = JalaliDateField(
                widget=AdminJalaliDateWidget)
            # self.fields['order_expire'] = JalaliDateField(widget=AdminJalaliDateWidget)

        self.fields['family'].required = False
        self.fields['tell_number'].required = False
예제 #4
0
    def __init__(self, *args, **kwargs):
        super(ProfileDetail_Form, self).__init__(*args, **kwargs)
        self.fields['birthday'] = JalaliDateField(
            label=_('birthday'),  # date format is  "yyyy-mm-dd"
            widget=AdminJalaliDateWidget  # optional, to use default datepicker
        )

        # you can added a "class" to this field for use your datepicker!
        # self.fields['date'].widget.attrs.update({'class': 'jalali_date-date'})

        self.fields['date_time'] = SplitJalaliDateTimeField(
            label=_('date time'),
            widget=
            AdminSplitJalaliDateTime  # required, for decompress DatetimeField to JalaliDateField and JalaliTimeField
        )


# class UserForm(forms.ModelForm):
#     password = forms.CharField(widget=forms.PasswordInput())
#     class Meta():
#         model = User
#         fields = ('username','password','email')

# class UserProfileInfoForm(forms.ModelForm):
#      class Meta():
#          model = UserProfileInfo
#          fields = ('profile_pic')

# class RegisterForm(UserCreationForm):
#     # declare the fields you will show
#     username = forms.CharField(label="نام کاربری")
#     # first password field
#     password1 = forms.CharField(label="رمز عبور")
#     # confirm password field
#     password2 = forms.CharField(label="تکرار رمز عبور")
#     email = forms.EmailField(label = "ایمیل")
#     first_name = forms.CharField(label = "نام شما")
#     last_name = forms.CharField(label = "فامیلی شما")

#     # this sets the order of the fields
#     class Meta:
#         model = User
#         fields = ("first_name", "last_name", "email", "username", "password1", "password2", )

#     # this redefines the save function to include the fields you added
#     def save(self, commit=True):
#         user = super(RegisterForm, self).save(commit=False)
#         user.email = self.cleaned_data["email"]
#         user.first_name = self.cleaned_data["first_name"]
#         user.last_name = self.cleaned_data["last_name"]
#         if commit:
#             user.save()
#             return user
예제 #5
0
    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user', None)
        super(NewsForm, self).__init__(*args, **kwargs)
        self.fields['createAt'] = JalaliDateField(
            label='تاریخ',  # date format is  "yyyy-mm-dd"
            widget=AdminJalaliDateWidget  # optional, to use default datepicker
        )

        if self.user.is_superuser:
            pass
        else:
            self.fields['isSuperUserPermition'].widget.attrs['disabled'] = True
            self.fields['isSuperUserPermition'].label = ""
class OrderForm(forms.Form):
    book = forms.CharField(
        label='',
        disabled=True,
        widget=forms.TextInput(
            attrs={'class': 'form-control vazir direction'}))
    user = forms.CharField(
        label='',
        disabled=True,
        widget=forms.TextInput(
            attrs={'class': 'form-control vazir direction'}))
    carry = forms.CharField(
        label='',
        disabled=True,
        widget=forms.TextInput(
            attrs={'class': 'form-control vazir direction'}))
    bring = JalaliDateField(widget=AdminJalaliDateWidget())

    class Meta:
        model = Borrow
        fields = ('book', 'user', 'carry', 'bring')
예제 #7
0
파일: forms.py 프로젝트: kouhkan/salooni
class ReserveDatetime(forms.Form):
    datetime = JalaliDateField(label='انتخاب تاریخ',
                               widget=AdminJalaliDateWidget)
    hour = forms.IntegerField(max_value=24, min_value=1, label='انتخاب ساعت')
예제 #8
0
 def __init__(self, *args, **kwargs):
     super(CourseMainForm, self).__init__(*args, **kwargs)
     self.fields['holding_date'] = JalaliDateField(
         label=('تاریخ برگزاری'),
         widget=AdminJalaliDateWidget  # optional, for user default datepicker
     )
예제 #9
0
class FactorForm(forms.Form):
    user = forms.ModelChoiceField(
        required=True,
        label='کاربر',
        queryset=CustomUser.objects.all().order_by('last_name'),
        empty_label='انتخاب کنید')
    start_date = JalaliDateField(required=True,
                                 label='از تاریخ',
                                 input_formats=['%Y/%m/%d'])
    end_date = JalaliDateField(required=True,
                               label='تا تاریخ',
                               input_formats=['%Y/%m/%d'])

    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop('request')
        super(FactorForm, self).__init__(*args, **kwargs)
        if not self.request.user.is_staff:
            self.fields['user'].widget = forms.HiddenInput()
            self.fields['user'].disabled = True
            self.fields['user'].widget.attrs.update({'readonly': 'readonly'})
            self.fields['user'].initial = self.request.user.pk
            self.fields['user'].queryset = CustomUser.objects.filter(
                pk=self.request.user.pk)

    def clean_end_date(self):
        end_date = self.cleaned_data['end_date']
        if end_date > timezone.localdate(timezone.now()):
            raise ValidationError("نمیتواند در آینده باشد")
        return end_date

    def clean(self):
        data = super(FactorForm, self).clean()
        start_date, end_date = data.get('start_date'), data.get('end_date')
        if start_date and end_date:
            if start_date > end_date:
                raise ValidationError(
                    "تاریخ شروع نمیتواند از تاریخ پایان بزرگتر باشد")
            if len(self.get_payments()) == 0:
                raise ValidationError(
                    "در تاریخ مشخص شده، هیچ پرداختی نداشته اید")

    def get_payments(self):
        data = self.cleaned_data
        start_date, end_date = data.get('start_date'), data.get('end_date')
        qs = OnlinePaymentProxy.objects.filter(
            user=data['user'],
            state=PardakhtPayment.STATE_SUCCESS,
        )
        payments = list()
        for pay in qs:
            if start_date <= timezone.localdate(pay.created_at) <= end_date:
                payments.append(pay)
        return payments

    def get_total_payments(self):
        payments = self.get_payments()
        total = 0
        for pay in payments:
            total += pay.price
        return total * 10  # Rial

    def generate_pdf(self):
        pathlib.Path(settings.BASE_DIR + settings.MEDIA_URL + 'factors').mkdir(
            parents=True, exist_ok=True)
        fn = str(uuid.uuid1()) + ".pdf"
        outfile = '/home/hpc/HPCPortal/media/factors/{}'.format(
            fn)  # output file name
        file_path = 'media/factors/{}'.format(fn)
        template = PdfReader("/home/hpc/HPCPortal/template.pdf",
                             decompress=False).pages[0]  # read template pdf
        template_obj = pagexobj(template)
        canvas = Canvas(outfile)
        xobj_name = makerl(canvas, template_obj)
        canvas.doForm(xobj_name)

        pdfmetrics.registerFont(
            TTFont(
                'BNazanin',
                '/home/hpc/HPCPortal/mainapp/static/mainapp/fonts/B Nazanin Bold_YasDL.com.ttf'
            ))
        canvas.setFont(
            'BNazanin',
            14)  # set font family and size to detect persian letters

        full_name = arabic_reshaper.reshape(u'{}'.format(
            self.cleaned_data['user'].get_full_name()))
        full_name = get_display(full_name)
        today = timezone.localdate(timezone.now())
        canvas.drawString(
            21, 786,
            gregorian_to_jalali(today).strftime("%Y/%m/%d"))  # header date
        canvas.drawString(315, 518,
                          f'{self.get_total_payments():,}')  # total payment
        canvas.drawString(375, 498, full_name)  # full name
        canvas.drawString(
            180, 518,
            gregorian_to_jalali(
                self.cleaned_data['start_date']).strftime("%Y/%m/%d"))  # from
        canvas.drawString(
            80, 518,
            gregorian_to_jalali(
                self.cleaned_data['end_date']).strftime("%Y/%m/%d"))  # to
        canvas.save()
        return file_path