Add Orga info model
parent
611ccb288f
commit
007b8e0c1d
|
@ -8,7 +8,7 @@ import pdfplumber
|
|||
from flask_admin.form import rules
|
||||
from formity.extensions import admin, db, ModelView, ModelViewHighSecurity, AdminSecurityMixin
|
||||
from wtforms import TextAreaField, validators
|
||||
from formity.models import FaceshieldRequest, RequestChange, Status, PostalCode, ExternalUser
|
||||
from formity.models import FaceshieldRequest, RequestChange, Status, PostalCode, ExternalUser, Orga
|
||||
from spaceauth import current_user
|
||||
from flask_weasyprint import HTML, render_pdf
|
||||
from sqlalchemy import func
|
||||
|
@ -300,17 +300,16 @@ class FaceshieldRequestAdmin(ModelView):
|
|||
writer = csv.DictWriter(si, fields, delimiter=';')
|
||||
writer.writeheader()
|
||||
|
||||
config = current_app.config
|
||||
for row in models:
|
||||
writer.writerow({
|
||||
'kurier': 'ups',
|
||||
'nadawca_nazwa': config['SHIPPING_SENDER_NAME'],
|
||||
'nadawca_email': config['SHIPPING_SENDER_EMAIL'],
|
||||
'nadawca_ulica': config['SHIPPING_SENDER_STREET'],
|
||||
'nadawca_nr_lok': config['SHIPPING_SENDER_NUMBER'],
|
||||
'nadawca_kod': config['SHIPPING_SENDER_POSTALCODE'],
|
||||
'nadawca_miasto': config['SHIPPING_SENDER_CITY'],
|
||||
'nadawca_telefon': config['SHIPPING_SENDER_PHONE_NUMBER'],
|
||||
'nadawca_nazwa': row.handling_orga_info.shipping_name,
|
||||
'nadawca_email': row.handling_orga_info.shipping_email,
|
||||
'nadawca_ulica': row.handling_orga_info.shipping_street,
|
||||
'nadawca_nr_lok': row.handling_orga_info.shipping_number,
|
||||
'nadawca_kod': row.handling_orga_info.shipping_postalcode,
|
||||
'nadawca_miasto': row.handling_orga_info.shipping_city,
|
||||
'nadawca_telefon': row.handling_orga_info.shipping_phone_number,
|
||||
'nadawca_kraj': 'PL',
|
||||
'odbiorca_nazwa': row.shipping_name,
|
||||
'odbiorca_email': row.email,
|
||||
|
@ -369,16 +368,15 @@ class FaceshieldRequestAdmin(ModelView):
|
|||
si = io.StringIO()
|
||||
writer = csv.DictWriter(si, fields)
|
||||
writer.writeheader()
|
||||
config = current_app.config
|
||||
for row in models:
|
||||
for label_id in range(row.label_count):
|
||||
writer.writerow({
|
||||
'NAZWA NADAWCY': config['SHIPPING_SENDER_NAME'],
|
||||
'OSOBA KONTAKTOWA NADAWCA': config['SHIPPING_SENDER_NAME2'],
|
||||
'ULICA NADAWCA': '%s %s' % (config['SHIPPING_SENDER_STREET'], config['SHIPPING_SENDER_NUMBER']),
|
||||
'KOD POCZTOWY NADAWCA': config['SHIPPING_SENDER_POSTALCODE'],
|
||||
'MIASTO NADAWCA': config['SHIPPING_SENDER_CITY'],
|
||||
'TELEFON KONTAKTOWY NADAWCA ': config['SHIPPING_SENDER_PHONE_NUMBER'],
|
||||
'NAZWA NADAWCY': row.handling_orga_info.shipping_name,
|
||||
'OSOBA KONTAKTOWA NADAWCA': row.handling_orga_info.shipping_full_name,
|
||||
'ULICA NADAWCA': '%s %s' % (row.handling_orga_info.shipping_street, row.handling_orga_info.shipping_number),
|
||||
'KOD POCZTOWY NADAWCA': row.handling_orga_info.shipping_postalcode,
|
||||
'MIASTO NADAWCA': row.handling_orga_info.shipping_city,
|
||||
'TELEFON KONTAKTOWY NADAWCA ': row.handling_orga_info.shipping_phone_number,
|
||||
|
||||
'NAZWA ODBIORCA': row.shipping_name,
|
||||
'OSOBA KONTAKTOWA ODBIORCA': row.full_name,
|
||||
|
@ -450,11 +448,16 @@ class ShippingFaceshieldRequestAdmin(FilteredFaceshieldRequestAdmin):
|
|||
|
||||
class ExternalUserAdmin(ModelViewHighSecurity):
|
||||
column_default_sort = 'id'
|
||||
column_list = ('id', 'email', 'password', 'remarks')
|
||||
form_columns = ('email', 'password', 'remarks')
|
||||
column_list = ('id', 'email', 'password', 'remarks', 'orga')
|
||||
form_columns = ('email', 'password', 'remarks', 'orga')
|
||||
|
||||
can_delete = True
|
||||
|
||||
class OrgaAdmin(ModelViewHighSecurity):
|
||||
column_default_sort = 'id'
|
||||
column_list = ('id', 'name')
|
||||
form_columns = ('id', 'name', 'shipping_name', 'shipping_full_name', 'shipping_street', 'shipping_number', 'shipping_postalcode', 'shipping_city', 'shipping_phone_number', 'shipping_email')
|
||||
|
||||
class ChangelogAdmin(ModelView):
|
||||
can_delete = False
|
||||
can_edit = False
|
||||
|
@ -468,5 +471,6 @@ admin.add_view(FilteredFaceshieldRequestAdmin(FaceshieldRequest, db.session))
|
|||
admin.add_view(FaceshieldRequestAdmin(FaceshieldRequest, db.session, name='FaceshieldRequest (Unfiltered)', endpoint='request_unfiltered'))
|
||||
admin.add_view(ShippingFaceshieldRequestAdmin(FaceshieldRequest, db.session, name='FaceshieldRequest (Shipping)', endpoint='request_shipping'))
|
||||
admin.add_view(ExternalUserAdmin(ExternalUser, db.session, name='External Users', endpoint='external_user'))
|
||||
admin.add_view(OrgaAdmin(Orga, db.session))
|
||||
admin.add_view(MapView(name='Map', endpoint='map'))
|
||||
admin.add_view(ChangelogAdmin(RequestChange, db.session))
|
||||
|
|
|
@ -87,6 +87,7 @@ class FaceshieldRequest(db.Model):
|
|||
parent_shipment = db.relationship('FaceshieldRequest', remote_side=id, backref='children')
|
||||
|
||||
handling_orga = db.Column(db.String, default='hswaw', server_default='hswaw', nullable=False)
|
||||
handling_orga_info = db.relationship('Orga', primaryjoin='remote(Orga.id) == foreign(FaceshieldRequest.handling_orga)')
|
||||
|
||||
def __str__(self):
|
||||
return Markup('<a href="/admin/request_unfiltered/edit/?id={}">#{} {}</a> ({})').format(self.id, self.id, self.entity_info, self.status.name)
|
||||
|
@ -136,11 +137,26 @@ class RequestChange(db.Model):
|
|||
created = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
|
||||
|
||||
|
||||
class Orga(db.Model):
|
||||
id = db.Column(db.String, primary_key=True)
|
||||
name = db.Column(db.String)
|
||||
|
||||
shipping_name = db.Column(db.String)
|
||||
shipping_full_name = db.Column(db.String)
|
||||
shipping_street = db.Column(db.String)
|
||||
shipping_number = db.Column(db.String)
|
||||
shipping_postalcode = db.Column(db.String)
|
||||
shipping_city = db.Column(db.String)
|
||||
shipping_phone_number = db.Column(db.String)
|
||||
shipping_email = db.Column(db.String)
|
||||
|
||||
|
||||
class ExternalUser(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
email = db.Column(db.String, nullable=False)
|
||||
_password = db.Column('password', db.String, nullable=False)
|
||||
remarks = db.Column(db.String)
|
||||
orga = db.Column(db.String, db.ForeignKey(Orga.id))
|
||||
|
||||
def _hash(self, salt, password):
|
||||
return hashlib.pbkdf2_hmac('sha256', password.encode(), salt.encode(), 213700).hex()
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
"""Add handling orga info
|
||||
|
||||
Revision ID: 41f49135a5e5
|
||||
Revises: f801adcdbdff
|
||||
Create Date: 2020-04-24 06:22:50.364268
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '41f49135a5e5'
|
||||
down_revision = 'f801adcdbdff'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.create_table('orga',
|
||||
sa.Column('id', sa.String(), nullable=False),
|
||||
sa.Column('name', sa.String(), nullable=True),
|
||||
sa.Column('shipping_name', sa.String(), nullable=True),
|
||||
sa.Column('shipping_full_name', sa.String(), nullable=True),
|
||||
sa.Column('shipping_street', sa.String(), nullable=True),
|
||||
sa.Column('shipping_number', sa.String(), nullable=True),
|
||||
sa.Column('shipping_postalcode', sa.String(), nullable=True),
|
||||
sa.Column('shipping_city', sa.String(), nullable=True),
|
||||
sa.Column('shipping_phone_number', sa.String(), nullable=True),
|
||||
sa.Column('shipping_email', sa.String(), nullable=True),
|
||||
sa.PrimaryKeyConstraint('id')
|
||||
)
|
||||
op.add_column('external_user', sa.Column('orga', sa.String(), nullable=True))
|
||||
op.create_foreign_key(None, 'external_user', 'orga', ['orga'], ['id'])
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_constraint(None, 'external_user', type_='foreignkey')
|
||||
op.drop_column('external_user', 'orga')
|
||||
op.drop_table('orga')
|
||||
# ### end Alembic commands ###
|
|
@ -92,14 +92,14 @@ class Kurjerzy:
|
|||
'country': 'PL',
|
||||
},
|
||||
'sender': {
|
||||
'name': 'Warszawski Hackerspace',
|
||||
'name2': 'Marek Adamusiński',
|
||||
'email': 'qrde@hackerspace.pl',
|
||||
'street': 'Wolność',
|
||||
'number': '2a',
|
||||
'zip': '01-018',
|
||||
'city': 'Warszawa',
|
||||
'phone': '601233014',
|
||||
'name': model.handling_orga_info.shipping_name,
|
||||
'name2': model.handling_orga_info.shipping_full_name,
|
||||
'email': model.handling_orga_info.shipping_email,
|
||||
'street': model.handling_orga_info.shipping_street,
|
||||
'number': model.handling_orga_info.shipping_number,
|
||||
'zip': model.handling_orga_info.shipping_postalcode,
|
||||
'city': model.handling_orga_info.shipping_city,
|
||||
'phone': model.handling_orga_info.shipping_phone_number,
|
||||
'country': 'PL',
|
||||
},
|
||||
'refer': str(model.id),
|
||||
|
@ -133,7 +133,6 @@ class Kurjerzy:
|
|||
model.shipping_id = result['data']['createShipment']['shipment']['id']
|
||||
|
||||
def shipment_info(self, id):
|
||||
print('fetching shipment_info(%r)' % (id,))
|
||||
result = self.send_query(r'query($id: Int) { shipments(ids:[$id]) { id, labelRef, labelSource, status, tracking { statuses } } }', {
|
||||
'id': id,
|
||||
})
|
||||
|
|
|
@ -71,7 +71,7 @@ html, body {
|
|||
{% for label_id in range(model.label_count) %}
|
||||
<div class="container">
|
||||
<div class="line idline">
|
||||
<small>{% if model.handling_orga == 'hskrk' %}Hackerspace Kraków{% else %}Warszawski Hackerspace{% endif %} / <u>https://covid.hackerspace.pl</u> / <b>{{ model.status.name }}</b></small>
|
||||
<small>{{ model.handling_orga_info.name }} / <u>https://covid.hackerspace.pl</u> / <b>{{ model.status.name }}</b></small>
|
||||
{{ model.faceshield_full_delivered }} <b>#{{ model.id }}</b>{% if model.label_count > 1 %} <small class="labelid">({{ label_id + 1 }}/{{ model.label_count }})</small>{% endif %}
|
||||
</div>
|
||||
<div class="line mark">
|
||||
|
|
Loading…
Reference in New Issue