class ReportForm(forms.Form): from_date = JalaliDateField( widget=AdminJalaliDateWidget ) to_date = JalaliDateField( widget=AdminJalaliDateWidget )
class ReportFormAdmin(forms.Form): from_date = JalaliDateField( widget=AdminJalaliDateWidget ) to_date = JalaliDateField( widget=AdminJalaliDateWidget ) broker_id = forms.CharField(label='Broker:', widget=forms.Select(choices=[]))
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
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
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')
class ReserveDatetime(forms.Form): datetime = JalaliDateField(label='انتخاب تاریخ', widget=AdminJalaliDateWidget) hour = forms.IntegerField(max_value=24, min_value=1, label='انتخاب ساعت')
def __init__(self, *args, **kwargs): super(CourseMainForm, self).__init__(*args, **kwargs) self.fields['holding_date'] = JalaliDateField( label=('تاریخ برگزاری'), widget=AdminJalaliDateWidget # optional, for user default datepicker )
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