implemented team apply
This commit is contained in:
		
							parent
							
								
									a4dea58195
								
							
						
					
					
						commit
						1bfd0cc2f0
					
				
					 3 changed files with 34 additions and 0 deletions
				
			
		| 
						 | 
					@ -5,5 +5,6 @@ urlpatterns = patterns("symposion.teams.views",
 | 
				
			||||||
    url(r"^(?P<slug>[\w\-]+)/$", "team_detail", name="team_detail"),
 | 
					    url(r"^(?P<slug>[\w\-]+)/$", "team_detail", name="team_detail"),
 | 
				
			||||||
    url(r"^(?P<slug>[\w\-]+)/join/$", "team_join", name="team_join"),
 | 
					    url(r"^(?P<slug>[\w\-]+)/join/$", "team_join", name="team_join"),
 | 
				
			||||||
    url(r"^(?P<slug>[\w\-]+)/leave/$", "team_leave", name="team_leave"),
 | 
					    url(r"^(?P<slug>[\w\-]+)/leave/$", "team_leave", name="team_leave"),
 | 
				
			||||||
 | 
					    url(r"^(?P<slug>[\w\-]+)/apply/$", "team_apply", name="team_apply"),
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,6 +29,14 @@ def can_leave(team, user):
 | 
				
			||||||
        return False
 | 
					        return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def can_apply(team, user):
 | 
				
			||||||
 | 
					    state = team.get_state_for_user(user)
 | 
				
			||||||
 | 
					    if team.access == "application" and state is None:
 | 
				
			||||||
 | 
					        return True
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## views
 | 
					## views
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -44,6 +52,7 @@ def team_detail(request, slug):
 | 
				
			||||||
        "state": state,
 | 
					        "state": state,
 | 
				
			||||||
        "can_join": can_join(team, request.user),
 | 
					        "can_join": can_join(team, request.user),
 | 
				
			||||||
        "can_leave": can_leave(team, request.user),
 | 
					        "can_leave": can_leave(team, request.user),
 | 
				
			||||||
 | 
					        "can_apply": can_apply(team, request.user),
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -78,3 +87,20 @@ def team_leave(request, slug):
 | 
				
			||||||
        return redirect("dashboard")
 | 
					        return redirect("dashboard")
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
        return redirect("team_detail", slug=slug)
 | 
					        return redirect("team_detail", slug=slug)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@login_required
 | 
				
			||||||
 | 
					def team_apply(request, slug):
 | 
				
			||||||
 | 
					    team = get_object_or_404(Team, slug=slug)
 | 
				
			||||||
 | 
					    state = team.get_state_for_user(request.user)
 | 
				
			||||||
 | 
					    if team.access == "invitation" and state is None:
 | 
				
			||||||
 | 
					        raise Http404()
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if can_apply(team, request.user) and request.method == "POST":
 | 
				
			||||||
 | 
					        membership, created = Membership.objects.get_or_create(team=team, user=request.user)
 | 
				
			||||||
 | 
					        membership.state = "applied"
 | 
				
			||||||
 | 
					        membership.save()
 | 
				
			||||||
 | 
					        # contrib.message
 | 
				
			||||||
 | 
					        return redirect("team_detail", slug=slug)
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        return redirect("team_detail", slug=slug)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,4 +19,11 @@
 | 
				
			||||||
        </form>
 | 
					        </form>
 | 
				
			||||||
    {% endif %}
 | 
					    {% endif %}
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					    {% if can_apply %}
 | 
				
			||||||
 | 
					        <form method="post" action="{% url team_apply team.slug %}">
 | 
				
			||||||
 | 
					            {% csrf_token %}
 | 
				
			||||||
 | 
					            <input type="submit" class="btn btn-primary" value="apply">
 | 
				
			||||||
 | 
					        </form>
 | 
				
			||||||
 | 
					    {% endif %}
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue