Add handling_orga field, display delivered count
parent
0f2654da44
commit
6091f19691
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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 ###
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue