Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
84e4bda
Basic form on update page
eyeseast Nov 10, 2025
305b00b
Migration required! Add 'about' field to Organization model.
eyeseast Nov 10, 2025
b45c5e7
Migration required! Add organizations.ProfileChangeRequest model.
eyeseast Nov 12, 2025
b87e2e9
Add accept/reject methods
eyeseast Nov 12, 2025
c3e55b2
Add tests for the new model
eyeseast Nov 13, 2025
c50712e
Split organization model tests into individual files
eyeseast Nov 13, 2025
512cb8c
Split out models because linting
eyeseast Nov 13, 2025
4ab4857
format
eyeseast Nov 13, 2025
c9385be
Add explanation field to profile change request
eyeseast Nov 17, 2025
1de974b
Add the change request form to the page
eyeseast Nov 18, 2025
6b207c3
Style pending requests. Only require explanation for non-staff changes.
eyeseast Nov 18, 2025
2575511
Accept or reject proposed changes
eyeseast Nov 18, 2025
8d546d2
lint
eyeseast Nov 18, 2025
3f54f32
Add a new forms template pack so we can customize crispy forms
eyeseast Nov 18, 2025
9253c7f
de-bootstrap-ify
eyeseast Nov 18, 2025
6ceea91
Use the right field and layout classes. Remove unneded layouts.
eyeseast Nov 19, 2025
2ff4eea
Update and extract checkbox inputs
eyeseast Nov 19, 2025
99c21d3
Better semantics
eyeseast Nov 19, 2025
74804ec
Finish form styles
eyeseast Nov 19, 2025
33f9466
lint
eyeseast Nov 19, 2025
7e0c85a
Merge branch 'redesign-orgs' of github.com:MuckRock/squarelet into 46…
eyeseast Nov 19, 2025
751a8c4
Add zendesk integration and split off change request model into its o…
eyeseast Nov 19, 2025
cfa5151
tests
eyeseast Nov 19, 2025
9e19bb4
lint
eyeseast Nov 19, 2025
d3b3df2
Merge branch 'redesign-orgs' into 468-org-profile-update
allanlasser Dec 3, 2025
ab2d477
Styling and layout fixes
allanlasser Dec 4, 2025
9ac2e04
LInt fix
allanlasser Dec 4, 2025
c282b7c
Lil more CSS
allanlasser Dec 4, 2025
fb7eb9a
Sort imports
allanlasser Dec 4, 2025
42583cf
Pre-fill form fields but only save what's changed
eyeseast Dec 5, 2025
1d2ab01
Add URL if set
eyeseast Dec 5, 2025
7922974
Set placeholders, not initial values
eyeseast Dec 5, 2025
81f3c9a
Redirect GET on change request view to the org detail page
eyeseast Dec 8, 2025
3ee6c8e
Add profile change request to the admin
eyeseast Dec 8, 2025
a980e49
help text migration
eyeseast Dec 8, 2025
6d3f2fa
Split update and payment templates because they're different views
eyeseast Dec 8, 2025
fd22d28
linting
eyeseast Dec 8, 2025
190cb53
re-lint
eyeseast Dec 8, 2025
4f4f1e1
Remove `comment` block
allanlasser Dec 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
106 changes: 98 additions & 8 deletions frontend/css/gps.css
Original file line number Diff line number Diff line change
Expand Up @@ -456,8 +456,27 @@ strong {
font-family: "Source Sans Pro";
}

.card {
padding: 2rem;
box-sizing: border-box;
border-radius: var(--radius-4);
box-shadow: var(--shadow-1);
background: var(--white);
color: var(--gray-5);
margin: 0 auto;
}

/* Form Fields */

.form {
display: flex;
flex-direction: column;
gap: 1rem;
align-self: stretch;
width: 100%;
box-sizing: border-box;
}

.field {
display: flex;
flex-direction: column;
Expand All @@ -478,14 +497,27 @@ strong {
font-weight: 600;
}

.field-label-inline {
display: flex;
align-items: flex-end;
gap: 0.5rem;
flex: 1 0 0;

color: var(--black, #0c1e27);
font-feature-settings: "ss04" on;
font-family: var(--font-sans, "Source Sans Pro");
font-weight: 600;
}

.field-required {
color: var(--orange-3);
font-size: var(--font-sm);
}

.field input[type="text"],
.field input[type="email"],
.field input[type="password"] {
.field input[type="password"],
.field input[type="url"] {
display: flex;
width: 100%;
box-sizing: border-box;
Expand All @@ -510,20 +542,48 @@ strong {
}

.field textarea {
display: flex;
padding: 0.375rem 0.75rem;
justify-content: center;
align-items: center;
gap: 0.5rem;
align-self: stretch;

border-radius: 0.5rem;
border: 1px solid var(--gray-3, #99a8b3);
background: var(--white, #fff);
box-shadow: 0 2px 0 0 var(--gray-2, #d8dee2) inset;
}

.field select {
display: flex;
width: 100%;
box-sizing: border-box;
padding: 0.375rem 0.75rem;
color: var(--gray-5, #233944);
font-feature-settings: "ss04" on;
text-overflow: ellipsis;
white-space: nowrap;
align-items: center;
gap: 0.5rem;
align-self: stretch;

appearance: none;
border-radius: 0.5rem;
border: 1px solid var(--gray-3, #99a8b3);
background: var(--white, #fff);
box-shadow: 0 2px 0 0 var(--gray-2, #d8dee2) inset;
font-family: "Source Sans Pro";
font-size: var(--font-md, 1rem);
font-style: normal;
font-weight: 400;
font-size: 1rem;
line-height: normal;
cursor: pointer;

/* Add dropdown arrow */
background-image: url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%235c717c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 0.75rem center;
padding-right: 2.5rem;
}

.field select:disabled {
color: var(--gray-4);
cursor: not-allowed;
}

.field .help {
Expand All @@ -545,6 +605,36 @@ strong {
font-weight: 400;
}

/* Fieldsets */

.fieldset {
display: flex;
flex-direction: column;
gap: 0.75rem;
padding: 1rem 2rem;
border-radius: 0.5rem;
border: 1px solid var(--gray-2, #d8dee2);
background: transparent;
}

.fieldset-legend {
font-family: var(--font-sans, "Source Sans Pro");
font-size: var(--font-md, 1rem);
font-feature-settings: "ss04" on;
font-weight: 600;
color: currentColor;
background: transparent;
border: none;
padding: 0 1rem 0.5rem;
margin-left: -3rem;
}

.fieldset-fields {
display: flex;
flex-direction: column;
gap: 0.75rem;
}

/* Font Styles */
.caption {
margin: 0;
Expand Down
2 changes: 1 addition & 1 deletion frontend/css/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -1703,12 +1703,12 @@ a.service-provider:focus {

.card {
padding: 2rem;
box-sizing: border-box;
border-radius: var(--radius-4);
box-shadow: var(--shadow-1);
background: var(--white);
color: var(--gray-5);
margin: 0 auto;
max-width: 36rem;
}

.icon {
Expand Down
88 changes: 88 additions & 0 deletions frontend/css/organization_update.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
/* css for /organizations/<slug>/update/ */

#organization-form {
display: flex;
flex-wrap: wrap;
width: 100%;
max-width: 60rem;
margin: 2rem auto;
align-items: flex-start;
gap: 0 1.5rem;
align-self: stretch;
justify-content: center;
}

#organization-form .sidebar {
display: flex;
flex: 1 1 8rem;
padding: 0.75rem;
width: 100%;
flex-direction: column;
align-items: flex-start;
align-self: stretch;

header {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 0.5rem;
align-self: stretch;
position: sticky;
top: 2rem;
}

h1,
h2 {
margin: 0;
}
h1 {
margin-top: 2rem;
}
h2 {
font-weight: 400;
}
}

#organization-form .content {
box-sizing: border-box;
display: flex;
flex: 1 1 37.5rem;
width: 100%;
padding: 0.75rem;
flex-direction: column;
align-items: flex-start;
gap: 2rem;

section {
width: 100%;
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 1rem;
align-self: stretch;
}

header .title {
display: flex;
flex-direction: column;
gap: 0.25rem;
}

.title h2,
.title p {
margin: 0;
}
}

#pending-requests {
display: flex;
flex-direction: column;
width: 100%;

dl {
width: 100%;
}
dt {
font-weight: bold;
}
}
1 change: 1 addition & 0 deletions frontend/views/organization_update.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
import "@/css/organization_update.css";
2 changes: 2 additions & 0 deletions squarelet/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
OrganizationPlanFactory,
PlanFactory,
ProfessionalPlanFactory,
ProfileChangeRequestFactory,
SubscriptionFactory,
)
from squarelet.users.tests.factories import UserFactory
Expand All @@ -30,6 +31,7 @@
register(OrganizationFactory)
register(OrganizationPlanFactory)
register(ProfessionalPlanFactory)
register(ProfileChangeRequestFactory)
register(SubscriptionFactory)
register(CustomerFactory)

Expand Down
2 changes: 1 addition & 1 deletion squarelet/core/templatetags/tests/test_airtable.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
airtable_form_url,
airtable_verification_url,
)
from squarelet.organizations.models.organization import OrganizationUrl
from squarelet.organizations.models.organization_metadata import OrganizationUrl


class TestAirtableFormUrl:
Expand Down
8 changes: 8 additions & 0 deletions squarelet/organizations/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
OrganizationType,
OrganizationUrl,
Plan,
ProfileChangeRequest,
ReceiptEmail,
Subscription,
)
Expand Down Expand Up @@ -208,6 +209,11 @@ def queryset(self, request, queryset):
return queryset


class ProfileChangeRequestInline(admin.StackedInline):
model = ProfileChangeRequest
extra = 0


@admin.register(Organization)
class OrganizationAdmin(VersionAdmin):
def export_organizations_as_csv(self, request, queryset):
Expand Down Expand Up @@ -273,6 +279,7 @@ def export_organizations_as_csv(self, request, queryset):
"created_at",
"updated_at",
"avatar",
"about",
"individual",
"private",
"verified_journalist",
Expand Down Expand Up @@ -316,6 +323,7 @@ def export_organizations_as_csv(self, request, queryset):
MembershipInline,
ReceiptEmailInline,
InvitationInline,
ProfileChangeRequestInline,
)

def get_queryset(self, request):
Expand Down
6 changes: 6 additions & 0 deletions squarelet/organizations/choices.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,3 +88,9 @@ class ChangeLogReason(DjangoChoices):
("SK", _("Saskatchewan")),
("YT", _("Yukon")),
)

CHANGE_STATUS_CHOICES = (
("pending", _("Pending")),
("accepted", _("Accepted")),
("rejected", _("Rejected")),
)
Loading