def apply(self, name): group = Group.query.filter_by(name=name).first() if not group: abort(404) membership = group.members.filter_by(user_id=current_user.id).first() if membership: if membership.is_applying: flash("You have already applied to this group.", 'warning') else: flash("You are already a member of this group.", 'warning') return redirect(url_for('GroupsView:index')) group_application_form = GroupApplicationForm() if group_application_form.validate_on_submit(): membership = GroupMembership(group=group, user=current_user, is_applying=True, applied_on=datetime.datetime.utcnow()) membership.application_text = group_application_form.application_text.data db.session.add(membership) db.session.commit() flash("Application received.", 'success') return redirect(url_for('GroupsView:get', name=group.name)) return render_template('groups/application.html', group=group, group_application_form=group_application_form)
def apply(self, name): group = Group.query.filter_by(name=name).first() if not group: abort(404) membership = group.members.filter_by(user_id=current_user.id).first() if membership: if membership.is_applying: flash("You have already applied to this group.", 'warning') else: flash("You are already a member of this group.", 'warning') return redirect(url_for('GroupsView:index')) group_application_form = GroupApplicationForm() if group_application_form.validate_on_submit(): membership = GroupMembership( group=group, user=current_user, is_applying=True, applied_on=datetime.datetime.utcnow() ) membership.application_text = group_application_form.application_text.data db.session.add(membership) db.session.commit() flash("Application received.", 'success') return redirect(url_for('GroupsView:get', name=group.name)) return render_template('groups/application.html', group=group, group_application_form=group_application_form)
def join(self): group_id = request.form.get('group_id') if not group_id: abort(400) group = Group.query.filter_by(id=group_id).first() if not group: abort(404) membership = GroupMembership(user=current_user, group=group) membership.joined_on = datetime.datetime.utcnow() db.session.add(membership) db.session.commit() flash("You have joined the group '{}'".format(group.name), 'success') return redirect(url_for('GroupsView:get', name=group.name))
def make_admin(user): with app.app_context(): u = User.query.filter_by(user_id=user).first() if not u: raise Exception('Could not find user {}.'.format(user)) g = Group.query.filter_by(name=app.config['ADMIN_GROUP']).first() if not g: g = Group(name=app.config['ADMIN_GROUP'], description='The admin group.', type=GroupType.hidden.value) membership = GroupMembership(user=u, is_admin=True, can_ping=True) g.members.append(membership) db.session.add(g) db.session.commit()
def new_group(self): print('hello') new_group_form = GroupCreateForm() new_group_form.type.choices = [(element.name, element.value) for element in list(GroupType)] if new_group_form.validate_on_submit(): group = Group() new_group_form.populate_obj(group) group.type = GroupType[new_group_form.type.data].value membership = GroupMembership(user=current_user, group=group, is_admin=True, can_ping=True) db.session.add(group) db.session.add(membership) db.session.commit() flash("Group '{}' created with success.".format(group.name), 'success') else: flash_errors(new_group_form) return redirect(url_for('GroupsView:index'))