コード例 #1
0
ファイル: invoice.py プロジェクト: plastboks/Pyrtos
    def invoices(self):
        """ Get a paginated list of active invoices for current
        or given month."""

        paid_result = {}
        unpaid_result = {}
        year = int(self.request.params.get('year',
                                           datetime.now().strftime('%Y')))
        month = int(self.request.params.get('month',
                                            datetime.now().strftime('%m')))

        categories = Category.all_active(self.request).all()
        for c in categories:
            paid_invoices = Invoice.with_category_paid(c.id,
                                                       year,
                                                       month)
            if paid_invoices:
                total = Invoice.with_category_paid(c.id,
                                                   year,
                                                   month,
                                                   total_only=True)
                paid_result[c.title] = [paid_invoices, total]

            unpaid_invoices = Invoice.with_category_all_unpaid(c.id)
            if unpaid_invoices:
                total = Invoice.with_category_all_unpaid(c.id, total_only=True)
                unpaid_result[c.title] = [unpaid_invoices, total]

        return {'paiditems': paid_result,
                'unpaiditems': unpaid_result,
                'title': 'Invoices',
                'month': month,
                'year': year,
                'nextmonth': self.month_switcher(year, month, next=True),
                'prevmonth': self.month_switcher(year, month)}
コード例 #2
0
ファイル: invoice.py プロジェクト: plastboks/Pyrtos
    def update_flash(self):
        """ Since so many methods in this class did the exact same thing,
        a function was created. This updated the session invoice counter,
        used in many places (eg. sidebar).
        """

        shared_unpaid_invoices = 0
        shared_categories = Category.all_active(self.request).all()
        for c in shared_categories:
            unpaid_invoices = Invoice.with_category_all_unpaid(c.id)
            if unpaid_invoices:
                shared_unpaid_invoices += len(unpaid_invoices)
        self.request.session.pop_flash('shared_unpaid_invoices')
        self.request.session.flash(shared_unpaid_invoices,
                                   'shared_unpaid_invoices')

        private_unpaid_invoices = 0
        private_categories = Category.all_private(self.request).all()
        for c in private_categories:
            unpaid_invoices = Invoice.with_category_all_unpaid(c.id)
            if unpaid_invoices:
                private_unpaid_invoices += len(unpaid_invoices)
        self.request.session.pop_flash('private_unpaid_invoices')
        self.request.session.flash(private_unpaid_invoices,
                                   'private_unpaid_invoices')
コード例 #3
0
ファイル: auth.py プロジェクト: plastboks/Pyrtos
    def login(self):
        """ Login view, used for both get and post method.
        This view also checks and authenicated the user by request.
        """

        form = LoginForm(self.request.POST,
                         csrf_context=self.request.session)

        if self.request.method == 'POST' and form.validate():
            user = User.by_email(self.request.POST.get('email'))
            if (user
               and user.verify_password(self.request.POST.get('password'))
               and user.blocked is not True
               and user.archived is not True):

                headers = remember(self.request, user.id)

                shared_unpaid_invoices = 0
                shared_categories = Category.all_shared()
                for c in shared_categories:
                    unpaid_invoices = Invoice.with_category_all_unpaid(c.id)
                    if unpaid_invoices:
                        shared_unpaid_invoices += len(unpaid_invoices)
                self.request.session.pop_flash('shared_unpaid_invoices')
                self.request.session.flash(shared_unpaid_invoices,
                                           'shared_unpaid_invoices')

                private_unpaid_invoices = 0
                private_categories = Category.all_private(self.request,
                                                          id=user.id)\
                                             .all()
                for c in private_categories:
                    unpaid_invoices = Invoice.with_category_all_unpaid(c.id)
                    if unpaid_invoices:
                        private_unpaid_invoices += len(unpaid_invoices)
                self.request.session.pop_flash('private_unpaid_invoices')
                self.request.session.flash(private_unpaid_invoices,
                                           'private_unpaid_invoices')

                self.request.session.flash('Welcome back %s' %
                                           (user.email), 'success')
                return HTTPFound(location=self.request.route_url('index'),
                                 headers=headers)

            headers = forget(self.request)
            self.request.session.flash('Login failed', 'error')
            return {'title': 'Login',
                    'form': form}

        if authenticated_userid(self.request):
            self.request.session.flash('You are already logged in', 'status')
            return HTTPFound(location=self.request.route_url('index'))
        return {'title': 'Login',
                'form': form}