def create_new_value(self, value): if self.get_queryset().filter( name=arToPersianChar(value.strip())).exists(): obj = self.get_queryset().filter( name=arToPersianChar(value.strip()))[0] else: obj = self.get_queryset().create( **self.get_model_field_values(value)) return getattr(obj, 'pk')
def clean(self): cd = super(BaseModelForm, self).clean() for field in self.fields: if isinstance(self.fields[field], forms.CharField) and field not in self.exclude_from_clean: value = cd.get(field) if value and isinstance(value, str): cd[field] = arToPersianChar(value) return cd
def value_from_datadict(self, data, files, name): value = super(TagTitledModelWidget, self).value_from_datadict(data, files, name) try: new_value = self.queryset.get(**{'pk': value}) except (ValueError, self.queryset.model.DoesNotExist): arg = {"title": arToPersianChar(value)} if self.http_request.user.is_authenticated: arg['creator'] = self.http_request.user new_value = self.queryset.create(**arg) return new_value.pk
def login_view(request): next_page = request.GET.get('next', '') try: if request.user.is_superuser or (request.user.is_authenticated and request.user.staff and request.user.staff.role_id): if not next_page: next_page = reverse('account:admin_dashboard') return HttpResponseRedirect(next_page) except ObjectDoesNotExist: pass if request.method == 'POST': form = LoginForm(request.POST) if form.is_valid(): username = arToPersianChar( form.cleaned_data.get('username')).lower() password = form.cleaned_data.get('password') user = authenticate(username=username, password=password) if user is None: password = persianToEnNumb(password) username = persianToEnNumb(username) user = authenticate(username=username, password=password) if user is None: password = enToPersianNumb(password) username = enToPersianNumb(username) user = authenticate(username=username, password=password) if user is None or not user.is_active: messages.error(request, u"نام کاربری یا گذرواژه نادرست است.") else: login(request, user) if not next_page: next_page = reverse('admin_dashboard') return HttpResponseRedirect(next_page) else: messages.error(request, u"داده های ارسالی نامعتبر است.") else: form = LoginForm() context = { 'app_path': request.get_full_path(), 'next': next_page, 'form': form, } return render(request, 'account/login.html', context)
def __check_handler(handler, kwargs, form_data): field_name = handler[0] field_type = handler[1] if len(handler) > 2: if handler[2] is None: return django_lookup = handler[2] or field_name else: django_lookup = field_name field_value = persianToEnNumb( arToPersianChar(form_data.get(field_name))) if field_value and field_value != 'None': if field_type == 'str': search_field = django_lookup + '__icontains' select = Q() term = field_value.replace('\t', ' ') term = term.replace('\n', ' ') for t in [t for t in term.split(' ') if not t == '']: select &= Q(**{search_field: t}) return select elif field_type == 'bool': if field_value == 'on': kwargs[django_lookup] = True elif field_type == 'null_bool': if field_value in (2, "2"): kwargs[django_lookup] = True elif field_value in (3, "3"): kwargs[django_lookup] = False elif field_type == 'm2o': kwargs[django_lookup + '__id'] = field_value elif field_type == 'm2m': kwargs[django_lookup + '__in'] = field_value elif field_type == 'pdate': miladi_date = jalali_to_gregorian(field_value) if django_lookup.endswith('gte'): kwargs[django_lookup] = datetime.datetime.combine( miladi_date, datetime.time.min) elif django_lookup.endswith('lte'): kwargs[django_lookup] = datetime.datetime.combine( miladi_date, datetime.time.max) else: kwargs[django_lookup] = miladi_date.isoformat() elif field_type == 'pdatetime': kwargs[django_lookup] = jalali_time_to_gregorian( field_value, to_tehran_time=True) else: kwargs[django_lookup] = field_value
def get_model_field_values(self, value): creator = None if self.http_request: creator = self.http_request.user return {'name': arToPersianChar(value.strip()), 'creator': creator}
def filter_queryset(self, term, queryset=None, **dependent_fields): term = arToPersianChar(persianToEnNumb(arToPersianChar(term))) return super(MyModelSelect2Widget, self).filter_queryset(term, queryset, **dependent_fields)