Add handling_orga field, display delivered count

master
informatic 2020-04-04 13:03:44 +02:00
parent 0f2654da44
commit 6091f19691
5 changed files with 47 additions and 6 deletions

View File

@ -37,12 +37,13 @@ class IndexView(AdminSecurityMixin, flask_admin.AdminIndexView):
def index(self):
stats = FaceshieldRequest.query.with_entities(
FaceshieldRequest.status.label('status'),
FaceshieldRequest.handling_orga.label('handling_orga'),
func.count().label('count'),
func.sum(FaceshieldRequest.faceshield_full_required).label('faceshield_full_required'),
func.sum(FaceshieldRequest.faceshield_full_delivered).label('faceshield_full_delivered'),
func.sum(FaceshieldRequest.faceshield_front_required).label('faceshield_front_required'),
func.sum(FaceshieldRequest.faceshield_front_delivered).label('faceshield_front_delivered'),
).filter(FaceshieldRequest.status != Status.rejected, FaceshieldRequest.status != Status.spam).group_by(FaceshieldRequest.status).all()
).filter(FaceshieldRequest.status != Status.rejected, FaceshieldRequest.status != Status.spam).group_by(FaceshieldRequest.status, FaceshieldRequest.handling_orga).order_by(FaceshieldRequest.status, FaceshieldRequest.handling_orga).all()
vstats = FaceshieldRequest.query.select_from(FaceshieldRequest).with_entities(
func.coalesce(PostalCode.voivodeship, 'unknown').label('voivodeship'),
@ -75,6 +76,7 @@ class FaceshieldRequestAdmin(ModelView):
'entity_info', 'full_name', 'phone_number', 'email', 'extra',
'faceshield_front_required', 'faceshield_model',
'faceshield_full_required',
'faceshield_full_delivered', 'faceshield_front_delivered', 'handling_orga',
'created', 'ua', 'ip', 'status', 'remarks',
'shipping_name', 'shipping_street', 'shipping_postalcode', 'shipping_city',
'postalcode_info',
@ -85,8 +87,15 @@ class FaceshieldRequestAdmin(ModelView):
column_export_list = ['id', *column_filters]
column_list = ('id', 'entity_info', 'full_name', 'faceshield_front_required', 'faceshield_full_required', 'created', 'status')
column_editable_list = ('status', 'remarks')
column_list = ('id', 'entity_info', 'full_name', 'faceshield_front_required', 'faceshield_full_required', 'faceshield_full_delivered', 'faceshield_front_delivered', 'handling_orga', 'created', 'status')
column_editable_list = ('status', 'remarks', 'handling_orga')
form_choices = {
'handling_orga': [
('hswaw', 'Warszawa'),
('hskrk', 'Kraków'),
('hswro', 'Wrocław'),
],
}
can_delete = False
can_view_details = True

View File

@ -60,6 +60,8 @@ class FaceshieldRequest(db.Model):
postalcode_info = db.relationship(PostalCode, primaryjoin='remote(PostalCode.postalcode) == foreign(FaceshieldRequest.shipping_postalcode)')
handling_orga = db.Column(db.String, default='hswaw', server_default='hswaw', nullable=False)
class RequestChange(db.Model):
id = db.Column(db.Integer, primary_key=True)

View File

@ -3,7 +3,7 @@ import re
import click
import requests
from flask.cli import AppGroup
from formity.models import FaceshieldRequest, PostalCode
from formity.models import FaceshieldRequest, PostalCode, Status
from formity.extensions import db
@ -71,10 +71,10 @@ def extract_postalcodes():
@cli.command('extract-places')
@click.option('--apikey')
def extract_places(apikey):
places = FaceshieldRequest.query.filter(FaceshieldRequest.shipping_postalcode == None).all()
places = FaceshieldRequest.query.filter(FaceshieldRequest.shipping_postalcode == None, FaceshieldRequest.status != Status.rejected, FaceshieldRequest.status != Status.spam).all()
for data in places:
print(' * [%d] %s' % (data.id, data.entity_info,))
print(' * [%d] %r' % (data.id, data.entity_info,))
try:
results = requests.get('https://maps.googleapis.com/maps/api/place/findplacefromtext/json', params={
'input': data.entity_info,

View File

@ -0,0 +1,28 @@
"""Add handling_orga field
Revision ID: 62f8f7e5b9e6
Revises: d0acbb2c9644
Create Date: 2020-04-04 10:50:55.779575
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '62f8f7e5b9e6'
down_revision = 'd0acbb2c9644'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('faceshield_request', sa.Column('handling_orga', sa.String(), server_default='hswaw', nullable=False))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('faceshield_request', 'handling_orga')
# ### end Alembic commands ###

View File

@ -7,6 +7,7 @@
<thead>
<tr>
<th>Status</th>
<th>Handling orga</th>
<th>Count</th>
<th>Delivered / Requested (full)</th>
<th>Delivered / Requested (front)</th>
@ -16,6 +17,7 @@
{% for rec in stats %}
<tr>
<td>{{ rec.status.name }}</td>
<td>{{ rec.handling_orga }}</td>
<td>{{ rec.count }}</td>
<td>{{ rec.faceshield_full_delivered }} / {{ rec.faceshield_full_required }}</td>
<td>{{ rec.faceshield_front_delivered }} / {{ rec.faceshield_front_required }}</td>