def move_prayerbook_item(request, item_id): if request.method == 'GET': account = Account.get_account(request) if account: prayer_book = account.prayerbook item = get_object_or_404(PrayerBookItem, pk=item_id) items = prayer_book.prayerbook_items.all() if item in items: direction = request.GET.get('direction', None) if direction == 'up' and item.index > 1: prev_item = items.filter(index=item.index - 1) if prev_item: prev_item = prev_item[0] prev_item.index = item.index prev_item.save() item.index = item.index - 1 item.save() return HttpResponse(json.dumps({'status': True, 'message': u'Молитва перемещена вверх'}), 'json') elif direction == 'down': next_item = items.filter(index=item.index + 1) if next_item: next_item = next_item[0] next_item.index = item.index next_item.save() item.index = item.index + 1 item.save() return HttpResponse(json.dumps({'status': True, 'message': u'Молитва перемещена вниз'}), 'json') return HttpResponse(json.dumps({'status': False, 'message': u'Молитва не перемещена'}), 'json')
def get_context_data(self, **kwargs): context = super(self.__class__, self).get_context_data(**kwargs) account = Account.get_account(self.request) prayerbook = account.prayerbook context['account'] = account context['pray_in_my_praybook'] = prayerbook.pray_added(super(self.__class__, self).get_object()) return context
def get_context_data(self, **kwargs): context = super(RequestView, self).get_context_data(**kwargs) account = Account.get_account(self.request) context['pray_event_form'] = PrayEventForm(initial={'request': self.object, 'prayer': account}) context['comment_form'] = CommentForm(initial={'request': self.object, 'account': account}) context['form'] = RequestForm(initial={'account': account}) context['account'] = account return context
def add_pray_to_prayerbook(request, pray_id): pray = get_object_or_404(Pray, pk=pray_id) account = Account.get_account(request) prayerbook = account.prayerbook item = prayerbook.add_pray(pray) if item: return HttpResponse(json.dumps({'status': True, 'message': u'Молитва добавлена в молитвослов'}), 'json') return HttpResponse(json.dumps({'status': False, 'message': u'Вы уже добавили эту молитву в свой молитвослов'}), 'json')
def post(self, request, *args, **kwargs): account = Account.get_account(request) item = super(self.__class__, self).get_object() if item not in account.prayerbook.prayerbook_items.all(): return self.json_fail_response(message=u'Вы можете молитвы только из своего молитвослова') if 'delete' in request.POST: item.delete() return self.json_success_response(message=u'Молитва удалена') else: return self.json_fail_response(message=u'Отмена удаления')
def post(self, request, *args, **kwargs): account = Account.get_account(request) reminder_item = super(DeleteReminderItem, self).get_object() if reminder_item not in ReminderItem.objects.filter(reminder__in=account.account_reminders.all()): return self.json_fail_response(message=u'Вы можете удалять имена только из своего помянника') if 'delete' in request.POST: reminder_item.active = False reminder_item.save() return self.json_success_response(message=u'Имя удалено') else: return self.json_fail_response(message=u'Отмена удаления')
def post(self, request, *args, **kwargs): account = Account.get_account(request) reminder_item = super(SetPermanentReminderItem, self).get_object() if reminder_item not in ReminderItem.objects.filter(reminder__in=account.account_reminders.all()): return self.json_fail_response(message=u'Вы можете изменять имена только из своего помянника') if 'set_permanent' in request.POST: reminder_item.from_request = False reminder_item.save() return self.json_success_response(message=u'Имя закреплено как постоянное') else: return self.json_fail_response(message=u'Отмена')
def post(self, request, *args, **kwargs): account = Account.get_account(request) reminder = super(DeleteReminder, self).get_object() if reminder not in account.account_reminders.all(): return self.json_fail_response(message=u'Вы можете удалять только свой помянник') if reminder.permanent: return self.json_fail_response(message=u'Вы не можете удалить постоянный помянник') if 'delete' in request.POST: reminder.active = False reminder.save() return self.json_success_response(message=u'Помянник удален') else: return self.json_fail_response(message=u'Отмена удаления')
def mutate(_, __, **kwargs): sid = transaction.savepoint() email = kwargs.get('email') password = kwargs.get('password') try: account = Account.get_account({'email': email}) if account is None: return Register(success=False, errors=[ ErrorsType(field='exception', message='アカウントが存在しません。') ]) if account.is_active is True: return Register(success=False, errors=[ ErrorsType(field='email', message='登録済みのEメールアドレスです。') ]) account.password = make_password(password) account.is_active = True account.save() account_token = AccountToken.objects.create( token=fernet.encrypt(str(account.id)), expire=datetime.now() + timedelta(days=1), account=account, ) transaction.savepoint_commit(sid) return Register(success=True, auth=AuthType( status=True, token=account_token.token, expire=account_token.expire, account=account, )) except Exception as e: transaction.savepoint_rollback(sid) return Register( success=False, errors=[ErrorsType(field='exception', message=str(e))])
def header_tag(context): request = context.get('request', None) account = Account.get_account(request) page = context['request'].META['PATH_INFO'] form = AuthenticationForm() form.fields['username'].label = u'Email' form.fields['password'].label = u'Пароль' data = { 'auth': request.user.is_authenticated if request else False, 'account': account, 'page': page, 'login_form': form, } return data
def mutate(_, __, **kwargs): try: token = kwargs.get('token') password = kwargs.get('password') load_token = serializer_time_loads(token, time_seconds(days=1)) if load_token is None: return ResetPasswordConfirm(success=False, errors=[ ErrorsType( field='token', message=('トークンが無効です。もう一度、' 'Eメールをお送りください。')) ]) account = Account.get_account({'password_token': load_token}) if account is None: return ResetPasswordConfirm(success=False, errors=[ ErrorsType( field='account', message='アカウントが存在しません。') ]) account.password_token = None account.password = make_password(password) account.save() AccountToken.get_accounts({"account": account}).delete() account_token = AccountToken.objects.create( token=fernet.encrypt(str(account.id)), expire=datetime.now() + timedelta(days=1), account=account, ) return ResetPasswordConfirm( success=True, auth=AuthType( status=True, token=account_token.token, expire=account_token.expire, account=account, ), ) except Exception as e: return ResetPasswordConfirm( success=False, errors=[ErrorsType(field='exception', message=str(e))])
def test_account_update_mutation_success(self): before_data = Account.get_account( {'email': '*****@*****.**'}) before_name = before_data.name login_result = schema.execute(self.login_mutation, variable_values={ 'email': '*****@*****.**', 'password': '******', }) token = login_result.data['login']['auth']['token'] result = schema.execute(self.update_mutation, variable_values={ 'token': token, 'name': 'test_sample', }) assert result.data['accountUpdate']['auth']['account'][ 'name'] != before_name
def get_object(self, queryset=None): account = Account.get_account(self.request) book, created = PrayerBook.objects.get_or_create(account=account) return book
def dispatch(self, request, *args, **kwargs): account = Account.get_account(request) if account.anonym: return self.json_fail_response(message=u'Добавлять помянники могут только зарегистрированные пользователи') return super(AddReminder, self).dispatch(request, *args, **kwargs)
def get(self, request, *args, **kwargs): account = Account.get_account(request) form = ReminderForm(initial={'account': account}) popup = render_to_string(self.template_name, RequestContext(request, {'form': form})) return self.json_success_response(popup=popup)
def dispatch(self, request, *args, **kwargs): if super(ReminderView, self).get_object().account != Account.get_account(request): raise Http404 return super(ReminderView, self).dispatch(request, *args, **kwargs)
def get_queryset(self): self.account = Account.get_account(self.request) return super(ReminderListView, self).get_queryset().filter(account=self.account)
def get_context_data(self, **kwargs): context = super(self.__class__, self).get_context_data(**kwargs) account = Account.get_account(self.request) PrayerBook.create_defaults(account) context['account'] = account return context
def get(self, request, *args, **kwargs): account = Account.get_account(request) reminder = super(EditReminder, self).get_object() form = ReminderForm(instance=reminder) popup = render_to_string(self.template_name, RequestContext(request, {'reminder': reminder, 'form': form})) return self.json_success_response(popup=popup)
def get_initial(self): account = Account.get_account(self.request) return {'prayerbook': account.prayerbook}
def get_context_data(self, **kwargs): context = super(RequestListView, self).get_context_data(**kwargs) account = Account.get_account(self.request) context['account'] = account context['form'] = RequestForm(initial={'account': account}) return context
def mutate(_, info, email): sid = transaction.savepoint() try: account = Account.get_account({'email': email, 'is_active': True}) if account is None: return ResetPassword(success=False, errors=[ ErrorsType(field='email', message='アカウントが存在しません。') ]) uuid_token = uuid.uuid4() account.password_token = uuid_token account.save() serialized_token = serializer_time_dumps( str(uuid_token), expires=time_seconds(days=1)) try: domain = info.context.get_host() except: domain = '' email_message = EmailMessage( subject='パスワード再発行', from_email='BASYO KASHI<*****@*****.**>', to=[email], body=""" <h3>変更手続きをしてください。</h3> <p><a href="https://{domain}/password/{token}"> https://{domain}/password/{token}</a></p> <p>有効期間は発行から24時間以内で登録ください。</p> """.format(domain=domain, token=str(serialized_token))) email_message.content_subtype = 'html' email_result = email_message.send() if email_result != 0: transaction.savepoint_commit(sid) return ResetPassword(success=True, send_token=str(serialized_token)) else: transaction.savepoint_rollback(sid) return ResetPassword(success=False, errors=[ ErrorsType(field='send email', message='Eメールが送れませんでした。') ]) except Exception as e: transaction.savepoint_rollback(sid) return ResetPassword( success=False, errors=[ErrorsType(field='email', message=str(e))])
def dispatch(self, request, *args, **kwargs): account = Account.get_account(self.request) book, created = PrayerBook.objects.get_or_create(account=account) if 'pk' in kwargs and str(book.id) != kwargs['pk']: raise Http404 return super(PrayerBookView, self).dispatch(request, *args, **kwargs)