Esempio n. 1
0
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')
Esempio n. 2
0
 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
Esempio n. 3
0
 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
Esempio n. 4
0
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')
Esempio n. 5
0
 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'Отмена удаления')
Esempio n. 6
0
 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'Отмена удаления')
Esempio n. 7
0
 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'Отмена')
Esempio n. 8
0
 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'Отмена удаления')
Esempio n. 9
0
    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))])
Esempio n. 10
0
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
Esempio n. 11
0
    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
Esempio n. 13
0
 def get_object(self, queryset=None):
     account = Account.get_account(self.request)
     book, created = PrayerBook.objects.get_or_create(account=account)
     return book
Esempio n. 14
0
 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)
Esempio n. 15
0
 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)
Esempio n. 16
0
 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)
Esempio n. 17
0
 def get_queryset(self):
     self.account = Account.get_account(self.request)
     return super(ReminderListView, self).get_queryset().filter(account=self.account)
Esempio n. 18
0
 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
Esempio n. 19
0
 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)
Esempio n. 20
0
 def get_initial(self):
     account = Account.get_account(self.request)
     return {'prayerbook': account.prayerbook}
Esempio n. 21
0
 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
Esempio n. 22
0
    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))])
Esempio n. 23
0
 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)