Skip to content

Commit

Permalink
Adds independent attachments to bills
Browse files Browse the repository at this point in the history
  • Loading branch information
desafinadude committed Dec 6, 2024
1 parent fd000a2 commit 590c590
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 1 deletion.
33 changes: 33 additions & 0 deletions migrations/versions/35d477d67b7_.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
"""empty message
Revision ID: 35d477d67b7
Revises: 33e499db410
Create Date: 2024-12-06 10:16:54.464973
"""

# revision identifiers, used by Alembic.
revision = '35d477d67b7'
down_revision = '33e499db410'

from alembic import op
import sqlalchemy as sa


def upgrade():
### commands auto generated by Alembic - please adjust! ###
op.create_table('bill_file',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('bill_id', sa.Integer(), nullable=False),
sa.Column('file_id', sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(['bill_id'], ['bill.id'], name=op.f('fk_bill_file_bill_id_bill')),
sa.ForeignKeyConstraint(['file_id'], ['file.id'], name=op.f('fk_bill_file_file_id_file')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_bill_file'))
)
### end Alembic commands ###


def downgrade():
### commands auto generated by Alembic - please adjust! ###
op.drop_table('bill_file')
### end Alembic commands ###
15 changes: 14 additions & 1 deletion pmg/admin/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1260,6 +1260,18 @@ def get_list(self, term, offset=0, limit=DEFAULT_PAGE_SIZE):

return query.offset(offset).limit(limit).all()

class InlineBillFileForm(InlineFormAdmin):
form_columns = (
"id",
"file",
)
form_ajax_refs = {
"file": {
"fields": ("title", "file_path"),
"page_size": 10,
},
}


class BillsView(MyModelView):
column_list = (
Expand Down Expand Up @@ -1289,13 +1301,14 @@ class BillsView(MyModelView):
"date_of_assent",
"effective_date",
"act_name",
"versions",
"versions"
)
column_default_sort = ("year", True)
column_searchable_list = ("title",)
inline_models = [
InlineBillEventsForm(Event),
InlineBillVersionForm(BillVersion),
InlineBillFileForm(BillFile),
]
form_args = {
"events": {"widget": widgets.InlineBillEventsWidget()},
Expand Down
10 changes: 10 additions & 0 deletions pmg/api/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
Bill,
BillType,
BillVersion,
BillFile,
BillStatus,
Event,
QuestionReply,
Expand Down Expand Up @@ -396,6 +397,7 @@ class Meta:
"effective_date",
"act_name",
"versions",
"bill_files",
"events",
"created_at",
"updated_at",
Expand All @@ -405,6 +407,7 @@ class Meta:
status = fields.Nested("BillStatusSchema")
place_of_introduction = fields.Nested("HouseSchema")
versions = fields.Nested("BillVersionSchema", many=True)
bill_files = fields.Nested("BillFileSchema", many=True)
events = PolyField(serialization_schema_selector=choose_event_schema, many=True)

_links = ma.Hyperlinks({"self": AbsoluteUrlFor("api2.bills", id="<id>"),})
Expand All @@ -428,3 +431,10 @@ class Meta:
fields = ("id", "title", "file", "date", "enacted")

file = fields.Nested("FileSchema")

class BillFileSchema(ma.ModelSchema):
class Meta:
model = BillFile
fields = ("id", "file_id", "file")

file = fields.Nested("FileSchema")
10 changes: 10 additions & 0 deletions pmg/models/resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@ class Bill(ApiResource, db.Model):
versions = db.relationship(
"BillVersion", backref="bill", cascade="all, delete, delete-orphan"
)
bill_files = db.relationship("BillFile", back_populates="bill", cascade="all, delete-orphan")

@property
def code(self):
Expand Down Expand Up @@ -224,6 +225,15 @@ class BillVersion(db.Model):
db.Boolean, default=False, server_default=sql.expression.false(), nullable=False
)

class BillFile(db.Model):
__tablename__ = 'bill_file'
id = db.Column(db.Integer, primary_key=True)
bill_id = db.Column(db.Integer, db.ForeignKey('bill.id'), nullable=False)
file_id = db.Column(db.Integer, db.ForeignKey('file.id'), nullable=False)

bill = db.relationship("Bill", back_populates="bill_files")
file = db.relationship("File")


class File(db.Model):

Expand Down
18 changes: 18 additions & 0 deletions pmg/templates/bills/detail.html
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ <h1>
</ul>
{% endif %}


{% if bill.status %}
{% if bill.status.name in ["enacted", "president", "ncop", "na", "returned-to-na", "introduced"] -%}
<div class="bill-status-container">
Expand Down Expand Up @@ -169,6 +170,23 @@ <h4>{{ version.title }}</h4>
</div>
{% endif %}

{% print(bill) %}

{% if bill.bill_files %}
<ul class="list-inline bill-versions">
<li><h3>Bill files:</h3></li>
{% for file in bill.bill_files %}
<li>
<a href="{{ file.file.url }}" target="_blank">
<span class="label label-info" title="{{ file.file.title }}">
<i class="fa fa-file-text"></i> {{ file.file.title }}
</span>
</a>
</li>
{% endfor %}
</ul>
{% endif %}

{% endblock %}

{% block javascript %}
Expand Down

0 comments on commit 590c590

Please sign in to comment.