Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Membership models #401

Merged
merged 201 commits into from
Apr 27, 2020
Merged
Changes from 1 commit
Commits
Show all changes
201 commits
Select commit Hold shift + click to select a range
3fa59be
Membership models (tentative)
jace Apr 19, 2019
dc709fe
Remove reviewer from crew roles as its not well defined
jace Apr 27, 2019
925cba5
Merge branch 'master' into membership
jace Apr 27, 2019
f7e5a12
added migration for the basic membership models
May 6, 2019
196fda7
added list of roles offered by each models
May 6, 2019
28484a4
fixed foreignkey name issue
May 6, 2019
a1c2b3b
Remove editorial memberships; fix roles_for
jace May 8, 2019
a8f7250
Merge branch 'master' into membership
jace May 9, 2019
1a1fad0
Formatting fixes
jace May 9, 2019
74655f3
Merge branch 'master' into membership
jace Jul 10, 2019
4719e26
Sorted imports
jace Jul 10, 2019
30fa18e
Merge branch 'master' into membership
jace Aug 2, 2019
1d506cf
Merge branch 'master' into membership
jace Aug 14, 2019
5135fd3
Formatting fixes and corrected active membership index
jace Aug 14, 2019
5d95869
Merge branch 'master' into membership
vidya-ram Aug 19, 2019
6e7a60f
Remove unnecessary declaration (it's in __init__.py now)
jace Aug 20, 2019
e6b05ef
membership admin UI (WIP)
vidya-ram Aug 20, 2019
9802460
Merge branch 'membership' of github.com:hasgeek/funnel into membership
vidya-ram Aug 20, 2019
e53219c
added project membership form
Aug 22, 2019
eded48e
not using extra variable
Aug 23, 2019
5bd5f7f
Fix for widgetscript to execute inside vue template
vidya-ram Aug 23, 2019
8f7bb2f
Merge branch 'membership' of github.com:hasgeek/funnel into membership
Aug 26, 2019
09504df
fixed new membership view
Aug 26, 2019
a690184
fixed membership create endpoint
Aug 26, 2019
d44bcc4
added profile_admin role
Aug 27, 2019
0440804
added membership edit and delete endpoints
Aug 27, 2019
90942f3
Ajax submit of new form
vidya-ram Aug 27, 2019
2bd6180
Merge branch 'membership' of github.com:hasgeek/funnel into membership
vidya-ram Aug 27, 2019
5a323b9
added separate modelview for projectcrewmembership
Aug 27, 2019
c64fd07
Merge branch 'membership' of github.com:hasgeek/funnel into membership
Aug 27, 2019
5be66f4
fixed membership edit endpoint
Aug 27, 2019
63cbd15
added new role check in admin panel template
Aug 27, 2019
3ba0fb1
typo
Aug 28, 2019
0615f7c
Add frontend for delete
vidya-ram Aug 28, 2019
03f4237
sending form for delete endpoint
Aug 28, 2019
25a2a48
fixed new membership endpoint in case member exist
Aug 28, 2019
7f8178b
fixed edit and delete frontend
Aug 28, 2019
a1823e0
Edit and delete UI changes
vidya-ram Aug 29, 2019
f94d178
Hack to fix reactivity gotcha of empty array in vue
vidya-ram Aug 29, 2019
25a53fb
replaced current_roles.admin
Aug 29, 2019
1de55fb
added tests for project crew membership model
Aug 29, 2019
04be6d9
added integration tests for membership
Aug 30, 2019
665bfd1
added invite feature with model changes
Sep 9, 2019
d9e6c82
UI updates
vidya-ram Sep 9, 2019
8fb5bad
Merge branch 'membership' of github.com:hasgeek/funnel into membership
vidya-ram Sep 9, 2019
0061f52
Fix the grid padding
vidya-ram Sep 9, 2019
1cba0bc
moved to direct add for now in place of invite
Sep 9, 2019
19d1c4e
fixed conflict
Sep 12, 2019
39962e5
fixed membership tests
Sep 12, 2019
dbfebf6
set front end variable in project page for user admin, sending mail w…
Sep 12, 2019
b3744e7
Sync with master
vidya-ram Sep 13, 2019
2599566
Merge branch 'membership' of github.com:hasgeek/funnel into membership
vidya-ram Sep 13, 2019
66bb7ec
returning validation error on membership edit
Sep 16, 2019
ae0c3de
Update UI
vidya-ram Sep 16, 2019
1cb7a68
Merge branch 'membership' of github.com:hasgeek/funnel into membership
vidya-ram Sep 16, 2019
d2c9940
Fix the error format
vidya-ram Sep 16, 2019
fb19e29
Add readonly view UI
vidya-ram Sep 16, 2019
73bdf37
fixed membership public view
Sep 17, 2019
817e8d6
Remove error message on closing the modal
vidya-ram Sep 17, 2019
1a52af7
Add close button to form modal
vidya-ram Sep 17, 2019
04ee7e1
using ellipsis
Sep 18, 2019
d041b5d
removed statemanager and reworked how it works
Sep 24, 2019
d335257
made direct_add as default
Sep 24, 2019
a9287db
content fix
Sep 24, 2019
d019e80
content fix
Sep 24, 2019
f5f989f
fixed tests
Sep 24, 2019
ee028c7
Add settings page. Move membership JS code to a separate JS file.
vidya-ram Sep 25, 2019
c0503d4
Merge branch 'master' into membership
Oct 5, 2019
67d4d70
added migration for checkin team membership
Oct 24, 2019
1bf8dc3
more condition to delete
Oct 24, 2019
463f28d
added migration for admin team and checkin team
Oct 30, 2019
8986a97
Merge branch 'master' into membership
vidya-ram Oct 30, 2019
c4184f8
Merge branch 'membership' of github.com:hasgeek/funnel into membership
vidya-ram Oct 30, 2019
e0ddd29
replaced admin with editor
Oct 30, 2019
67f1d16
fixed conflict
Oct 30, 2019
ce2eb02
using roles to check concierge
Oct 30, 2019
03e1558
Fix search form
vidya-ram Oct 30, 2019
53484f6
removed admin role from template
Dec 2, 2019
b836fab
Merge branch 'master' into membership
vidya-ram Dec 4, 2019
3f5e702
Merge branch 'membership' of github.com:hasgeek/funnel into membership
Dec 4, 2019
989c380
Add the missing util functions
vidya-ram Dec 4, 2019
29fb848
moved user to base membership class
Dec 5, 2019
14e2fbd
more gates
Dec 5, 2019
0976f4e
removed `user_details` from membership models
Dec 5, 2019
3cbef6f
no need for url_for in call
Dec 5, 2019
c1adfee
replaced __parent_column__ with parent_id
Dec 5, 2019
47877c6
added comment for parent_id
Dec 5, 2019
b14aa8f
replace active with is_active and include !is_invite in it
Dec 6, 2019
153114f
language change
Dec 6, 2019
7c05de9
trans tags for membership templates
Dec 6, 2019
b70ab18
fixed role names in project and profile
Dec 18, 2019
127ddf7
using roles to show comment action buttons and edit
Dec 19, 2019
14e4abc
remove permissions method from profile model
Dec 19, 2019
cbd605e
added reviewer role in proposal, replaced more use of require_permiss…
Dec 20, 2019
5468b7e
added proposal membership
Jan 2, 2020
618bcbc
removed teams from project form
Jan 3, 2020
f870afd
added non-active check for invitations
Jan 3, 2020
fa6c6b8
Merge branch 'master' into membership
Jan 3, 2020
ac7c3c8
updated down migration
Jan 6, 2020
509aab8
fixed typo in migration
Jan 6, 2020
ee5dc8f
only using role name without model prefix
Jan 6, 2020
d770bdd
Added owners and admins to profile model using proxy
Jan 8, 2020
2007acc
Added project and profile roles to other models
Jan 8, 2020
524949e
Fixed usage of roles wherever possible
Jan 8, 2020
8ffeb5c
added profile membership views
Jan 8, 2020
faa809e
removed proposal membership filling from migration
Jan 9, 2020
ac147b7
Creator of project gets default roles
Jan 9, 2020
28988ac
fixed typo in profile membership view
Jan 9, 2020
903a388
checking role in transition and template
Jan 9, 2020
33294fd
Merge branch 'master' into membership
vidya-ram Jan 10, 2020
508a729
fixed association proxy of venue room
Jan 10, 2020
0ec3a6d
fixed unicode error
Jan 10, 2020
e37d23f
Add profile crew UI
vidya-ram Jan 10, 2020
c8cda58
Merge branch 'membership' of github.com:hasgeek/funnel into membership
vidya-ram Jan 10, 2020
3f11295
Remove admin team field from edit profile form
vidya-ram Jan 10, 2020
b26aac0
renaming membership.html to project_membership.html
Jan 10, 2020
cdfec42
added missing drop for proposal membership
Jan 21, 2020
cd0adc0
using lazy proxy from coaster
Jan 27, 2020
d63dd7f
Merge branch 'master' into membership
vidya-ram Jan 27, 2020
6bc55a3
using updated DynamicAssociationProxy
Jan 28, 2020
3a040ab
filtering by id and not the object
Jan 29, 2020
58989d1
updated migration to fetch profile owners from owners team
Jan 29, 2020
1730c1f
Add e2e tests for membership
vidya-ram Jan 29, 2020
66c9d67
Merge branch 'membership' of github.com:hasgeek/funnel into membership
Jan 29, 2020
5d9b5c9
profiles, projects and comments are public
Jan 29, 2020
6338f51
Update test and fix roles in the templates
vidya-ram Jan 29, 2020
0627718
Merge branch 'membership' of github.com:hasgeek/funnel into membership
vidya-ram Jan 29, 2020
adbcbea
role fixes
Jan 30, 2020
d0dbfdb
Fixed the styling of card--new component
vidya-ram Jan 30, 2020
e4bb741
Merge branch 'master' into membership
jace Apr 13, 2020
4bf8c44
Temporarily disable membership migrations
jace Apr 13, 2020
5a905a5
Merge branch 'master' into membership
jace Apr 20, 2020
046f2a9
Update to match upstream changes in Funnel (Lastuser merger; base58)
jace Apr 20, 2020
5587f54
Revised migration to add membership models
jace Apr 20, 2020
81e69eb
Bring membership up to (barely) working status
jace Apr 20, 2020
e578c79
Reduce homepage SQL query load by using only the 'all' role
jace Apr 20, 2020
41328d1
Update settings.html.jinja2
qurbat Apr 20, 2020
def6669
Update settings.html.jinja2
qurbat Apr 21, 2020
321158a
Update settings.html.jinja2
qurbat Apr 21, 2020
2c5fabb
Merge branch 'master' into membership
jace Apr 21, 2020
00bfaae
Update down revision
jace Apr 21, 2020
8cf411c
Push user session timestamp update to end of request
jace Apr 21, 2020
9f67627
Remove redundant copy of data in JSON feed
jace Apr 21, 2020
2f0324f
Fix the membership page and proposal page
vidya-ram Apr 21, 2020
0339bd8
Merge branch 'membership' of github.com:hasgeek/funnel into membership
vidya-ram Apr 21, 2020
7d79168
No reader role on profiles
jace Apr 21, 2020
3535587
Merge branch 'membership' of github.com:hasgeek/funnel into membership
vidya-ram Apr 21, 2020
286cb35
Fixing cypress test
vidya-ram Apr 21, 2020
c11ea72
Role annotations for User and Organization
jace Apr 21, 2020
f9a63ba
Profile no longer grants roles, inheriting them instead
jace Apr 21, 2020
31b8e3c
Fix e2e tests. Prevent submit on search box in membership page
vidya-ram Apr 22, 2020
a0837b2
Update references to OrganizationMembership.profile
jace Apr 22, 2020
3f3922d
Merge branch 'master' into membership
vidya-ram Apr 22, 2020
4daa6fa
Merge branch 'membership' of github.com:hasgeek/funnel into membership
vidya-ram Apr 22, 2020
e4a8946
Show username instead of pickername
jace Apr 22, 2020
2ec0938
Organization now takes an owner parameter
jace Apr 22, 2020
35cbaec
Use UrlDict for URLs
jace Apr 22, 2020
c0f5060
Don't show memebership role for non-admins. Remove collapsible functi…
vidya-ram Apr 23, 2020
ec6e223
Add "make build" command
jace Apr 23, 2020
b7f75da
Merge branch 'master' of github.com:hasgeek/funnel into membership
Apr 23, 2020
afc4b24
Merge branch 'membership' of github.com:hasgeek/funnel into membership
Apr 23, 2020
4b50426
Use RadioField for Profile membership level
jace Apr 23, 2020
85b16a2
Fix membership edit form. Add test to create profile
vidya-ram Apr 23, 2020
3ba3e65
move all lastuser tests to funnel test directory
Apr 23, 2020
44a830c
fix existing membership tests
Apr 23, 2020
3094ba0
Merge branch 'membership' of github.com:hasgeek/funnel into membership
Apr 23, 2020
3bddec4
Query for projects the user is an editor of
jace Apr 23, 2020
a6d4031
Fix roles in proposal and settings page and e2e tests
vidya-ram Apr 23, 2020
b45cb56
Merge branch 'membership' of github.com:hasgeek/funnel into membership
vidya-ram Apr 23, 2020
86111cf
Use user.objects_as_role naming convention
jace Apr 23, 2020
22893e5
Remove `delete-orphan` cascade
jace Apr 23, 2020
387d0d7
Add e2e test for editor
vidya-ram Apr 23, 2020
6fdb0cb
Fix search to work on crew list updation
vidya-ram Apr 23, 2020
c28c8df
import path fix for tests
iambibhas Apr 23, 2020
1edaa5b
organization init fix in tests
iambibhas Apr 23, 2020
83bcb15
Disable select2 in edit form
vidya-ram Apr 24, 2020
b50955e
Add wait for delete form in cypress test
vidya-ram Apr 24, 2020
d8474fe
fix user Name tests
iambibhas Apr 24, 2020
ec0b6b7
Switch from ua-parser to user-agents for better accuracy
jace Apr 24, 2020
f40a5ca
Merge branch 'master' into membership
jace Apr 27, 2020
76399d9
Import validators from the validators namespace
jace Apr 27, 2020
b570054
Show project drafts to project crew
jace Apr 27, 2020
a4e5a4f
`profile_owner` role is not required in projects
jace Apr 27, 2020
1432fe7
Flake8 fixes
jace Apr 27, 2020
f52bfa1
Reformatted with Prettier
jace Apr 27, 2020
89af8ae
Check for actor in profile page
jace Apr 27, 2020
f9db975
Allow users to see their own non-public profiles
jace Apr 27, 2020
0b568f9
Merge some Profile and Organization views
jace Apr 27, 2020
72817df
There is no primary owner in org membership
jace Apr 27, 2020
6e70706
Fix roles in participant views
vidya-ram Apr 27, 2020
f08e16d
Merge branch 'membership' of github.com:hasgeek/funnel into membership
vidya-ram Apr 27, 2020
ac45856
Fix roles for scan badge. CSS fixes
vidya-ram Apr 27, 2020
6e7844e
Remove require role for scan
vidya-ram Apr 27, 2020
eecd200
Merge branch 'master' into membership
vidya-ram Apr 27, 2020
5038640
Typo, should be `profile.state.PUBLIC`
jace Apr 27, 2020
864649c
Switch from user.teams to memberships
jace Apr 27, 2020
ef75e2e
Change button to Next in add profile test
vidya-ram Apr 27, 2020
84c7c14
Merge branch 'membership' of github.com:hasgeek/funnel into membership
vidya-ram Apr 27, 2020
3dfdfb2
turned off puk checkin view
iambibhas Apr 27, 2020
467b2eb
Merge branch 'membership' of github.com:hasgeek/funnel into membership
iambibhas Apr 27, 2020
3a51182
Fix OrganizationForm to also work for Profile
jace Apr 27, 2020
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
Prev Previous commit
Next Next commit
membership admin UI (WIP)
vidya-ram committed Aug 20, 2019
commit e6b05ef09021981cbd826a330826559b9996d3e6
38 changes: 21 additions & 17 deletions funnel/static/css/app.css
Original file line number Diff line number Diff line change
@@ -252,6 +252,23 @@ html.touch .collapsible__body--disable {
background: none;
}

.details-box {
border-radius: 3px;
border: 1px solid #ddd;
padding: 15px;
margin-bottom: 15px;
}

.details-box {
display: flex;
justify-content: space-between;
align-items: center;
}

.details-box__item {
width: 30%;
}

.hg-app .header--fixed {
bottom: 0;
}
@@ -1180,14 +1197,10 @@ html.touch .collapsible__body--disable {
min-height: 150px;
}

.card__body--new {
min-height: 194px;
display: flex;
justify-content: center;
align-items: center;
}
.card__body--new .new-btn:hover {
text-decoration: none;
.card--new {
margin: 15px auto;
width: 100%;
max-width: 500px;
}

.card--small {
@@ -2387,15 +2400,6 @@ body > .proposal-box.ui-draggable {
right: 0;
}

.label-box--new {
margin: 15px auto 35px;
width: 100%;
max-width: 500px;
}
.label-box--new a:hover {
text-decoration: none;
}

.snippets {
margin-top: 8px;
padding: 8px 8px 8px 28px;
13 changes: 4 additions & 9 deletions funnel/static/sass/_card.scss
Original file line number Diff line number Diff line change
@@ -161,15 +161,10 @@
min-height: 150px;
}

.card__body--new {
min-height: 194px;
display: flex;
justify-content: center;
align-items: center;

.new-btn:hover {
text-decoration: none;
}
.card--new {
margin: 15px auto;
width: 100%;
max-width: 500px;
}

.card--small {
10 changes: 0 additions & 10 deletions funnel/static/sass/_label.scss
Original file line number Diff line number Diff line change
@@ -42,13 +42,3 @@
right: 0;
}
}

.label-box--new {
margin: 15px auto 35px;
width: 100%;
max-width: 500px;

a:hover {
text-decoration: none;
}
}
17 changes: 17 additions & 0 deletions funnel/static/sass/_layout.scss
Original file line number Diff line number Diff line change
@@ -257,3 +257,20 @@ html.touch .collapsible__body--disable {
.mui-btn--nostyle {
background: none;
}

.details-box {
border-radius: 3px;
border: 1px solid #ddd;
padding: 15px;
margin-bottom: 15px;
}

.details-box {
display: flex;
justify-content: space-between;
align-items: center;
}

.details-box__item {
width: 30%;
}
6 changes: 3 additions & 3 deletions funnel/templates/labels.html.jinja2
Original file line number Diff line number Diff line change
@@ -11,11 +11,11 @@
{% block contentwrapper %}
<div class="grid">
<div class="grid__col-xs-12">
<div class="clickable-card card label-box label-box--new mui--z2" data-href="{{ project.url_for('new_label') }}" title="New label">
<a class="clickable-card card card--new mui--z2" href="{{ project.url_for('new_label') }}" title="New label">
<div class="card__body mui--text-center">
<a class="mui--text-headline mui--text-light" href="{{ project.url_for('new_label') }}" title="New labelset" data-action="New labelset"><i class="material-icons mui--align-middle mui--text-display1" aria-hidden="true">add</i> {% trans %}Create new label{% endtrans %}</a>
<p class="mui--text-headline mui--text-light mui--text-center zero-bottom-margin"><i class="material-icons mui--align-middle mui--text-display1" aria-hidden="true">add</i> {% trans %}Create new label{% endtrans %}</p>
</div>
</div>
</a>
</div>
<div class="grid__col-xs-12">
<form data-parsley-validate="true" id="label-form" method="POST" action="{{ request.url }}" accept-charset="UTF-8" class="mui-form">
3 changes: 3 additions & 0 deletions funnel/templates/macros.html.jinja2
Original file line number Diff line number Diff line change
@@ -233,6 +233,9 @@
<li>
<a href="{{ project.url_for('events') }}" title="Scan badges to check-in">{% trans %}Scan badges to check-in{% endtrans %}</a>
</li>
<li>
<a href="{{ project.url_for('membership') }}" title="Manage membership">{% trans %}Manage membership{% endtrans %}</a>
</li>
</ul>
</div>
<hr class="mui-divider">
137 changes: 137 additions & 0 deletions funnel/templates/membership.html.jinja2
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
{% extends "layout.html.jinja2" %}
{% set title_suffix = project.title %}
{%- from "macros.html.jinja2" import project_header %}
{% from "baseframe/forms.html.jinja2" import renderfield %}
{% block title %}{% trans %}Manage membership{% endtrans %}{% endblock %}

{% block contenthead %}{% endblock %}

{% block baseheadline %}
<div class="mui--hidden-md mui--hidden-lg mui--hidden-xl">
<div class="mobile-nav mui--z1">
<a href="{{ project.url_for() }}" aria-label="{% trans %}Back to the project{% endtrans %}" class="mui--text-dark mui--text-headline"><i class="material-icons mui--align-middle mobile-nav__prev" aria-hidden="true">arrow_back</i></a> <span class="mui--text-dark mui--text-headline">{% trans %}Manage membership{% endtrans %}</span>
</div>
</div>
{{ project_header(project, project_save_form,
class='mui--hidden-xs mui--hidden-sm',
current_page='schedule') }}
{% endblock %}

{% block basecontent %}
<div class="mui-container">
<div class="page-content page-content--mob-nav">
<div class="grid" id="membership">
<div class="grid__col-xs-12">
<div id="manage-membership">
<membership></membership>
</div>
{% raw %}
<script type="text/x-template" id="admin-membership-template">
<div class="grid">
<div class="grid__col-xs-12">
<a class="clickable-card card card--new mui--z2" title="New label" @click="addNewMember($event)">
<div class="card__body mui--text-center">
<p class="mui--text-headline mui--text-light mui--text-center zero-bottom-margin"><i class="material-icons mui--align-middle mui--text-display1" aria-hidden="true">add</i> Create new label</p>
</div>
</a>
</div>
<div class="grid__col-xs-12">
<h2 class="mui--text-headline" v-if="members">Members</h2>
</div>
<div class="grid__col-xs-12" v-for="member in members">
<div class="details-box details-box--flex">
<h3 class="mui--text-title zero-top-margin zero-bottom-margin details-box__item">{{ member.title }}</h3>
<ul class="mui-list--inline mui--text-title mui--text-light zero-bottom-margin list-item-rgborder">
<li>Editor</li>
<li>Concierge</li>
<li>Usher</li>
</ul>
<div>
<a :href="member.edit_url" title="Edit" aria-label="Edit"><i class="material-icons mui--align-middle mui--text-title mui--text-light" aria-hidden="true">edit</i></a>
<a :href="member.delete_url" title="Delete" aria-label="Delete"><i class="material-icons mui--align-middle mui--text-title mui--text-light" aria-hidden="true">delete</i></a>
</div>
</div>
</div>
<div id="new-member-form" class="session-modal" v-html="newMemberForm">
</div>
</div>
</script>
{% endraw %}
</div>
</div>
</div>
</div>
{% endblock %}

{% block footerscripts %}
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript">
$(function() {

const Membership = {
init({divElem, scriptTemplate, newMemberUrl, members}) {
let MembershipComponent = Vue.component('membership', {
template: scriptTemplate,
data: function () {
return {
newMemberUrl: newMemberUrl,
members: members,
newMemberForm: ''
}
},
methods: {
addNewMember(event) {
event.preventDefault();
let app = this;
if(app.newMemberForm) {
$('#new-member-form').modal('show');
} else {
$.ajax({
type: 'GET',
url: app.newMemberUrl,
timeout: window.HasGeek.config.ajaxTimeout,
dataType: 'json',
success: function(data) {
app.newMemberForm = data.form;
$('#new-member-form').modal('show');
}
});
}
},
},
mounted() {
},
});

let MembershipApp = new Vue({
components: {
MembershipComponent
},
});
MembershipApp.$mount(divElem);
},
}

window.HasGeek.Membership = function (config) {
Membership.init(config);
}

var membershipConfig = {
newMemberUrl: "{{ project.url_for('new_member') }}",
members: {{ labels|tojson }},
divElem: "#manage-membership",
scriptTemplate: '#admin-membership-template',
parentContainer: '#membership',
};

HasGeek.Membership(membershipConfig);

// $(() => {
// window.HasGeek.Membership = function (config) {
// Membership.init(config);
// }
// });

});
</script>
{% endblock %}
1 change: 1 addition & 0 deletions funnel/views/__init__.py
Original file line number Diff line number Diff line change
@@ -8,6 +8,7 @@
event,
index,
label,
membership,
login,
participant,
profile,
62 changes: 62 additions & 0 deletions funnel/views/membership.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# -*- coding: utf-8 -*-

from flask import flash, g, redirect, request
from werkzeug.datastructures import MultiDict

from baseframe import _, forms
from baseframe.forms import render_form
from coaster.views import ModelView, UrlForView, render_with, requires_permission, route

from .. import app, funnelapp, lastuser
from ..forms import LabelForm, LabelOptionForm, SavedProjectForm
from ..models import Label, Profile, Project, db
from .decorators import legacy_redirect
from .mixins import ProjectViewMixin


def labels_list_data(labels):
data = []
for label in labels:
data.append({
'title': label.title,
'edit_url': label.url_for('edit'),
'delete_url': label.url_for('delete')
})
return data


@route('/<profile>/<project>/membership')
class ProjectMembershipView(ProjectViewMixin, UrlForView, ModelView):
__decorators__ = [legacy_redirect]

@route('', methods=['GET', 'POST'])
@render_with('membership.html.jinja2')
@lastuser.requires_login
@requires_permission('edit_project')
def membership(self):
project_save_form = SavedProjectForm()
return {'project': self.obj,
'labels': labels_list_data(
self.obj.labels
),
'project_save_form': project_save_form}

@route('new', methods=['GET', 'POST'])
@render_with('membership.html.jinja2', json=True)
@lastuser.requires_login
@requires_permission('admin')
def new_member(self):
print 'new', request.is_xhr
if request.is_xhr:
form = LabelForm(model=Label, parent=self.obj.parent)
html_form = render_form(form=form, title=_("New member"), ajax=False, with_chrome=False)
return {'form': html_form}


@route('/<project>/membership', subdomain='<profile>')
class FunnelProjectMembershipView(ProjectMembershipView):
pass


ProjectMembershipView.init_app(app)
FunnelProjectMembershipView.init_app(funnelapp)