Changeset - 7db401e9a280
[Not reviewed]
0 2 0
James Tauber - 12 years ago 2012-08-02 17:03:16
jtauber@jtauber.com
show members and applicants on team detail page
2 files changed with 35 insertions and 0 deletions:
0 comments (0 inline, 0 general)
symposion/teams/models.py
Show inline comments
...
 
@@ -10,45 +10,57 @@ from django.contrib.auth.models import Permission, User
 
TEAM_ACCESS_CHOICES = [
 
    ("open", "open"),
 
    ("application", "by application"),
 
    ("invitation", "by invitation")
 
]
 

	
 

	
 
class Team(models.Model):
 

	
 
    slug = models.SlugField(unique=True)
 
    name = models.CharField(max_length=100)
 
    description = models.TextField(blank=True)
 
    access = models.CharField(max_length=20, choices=TEAM_ACCESS_CHOICES)
 
    permissions = models.ManyToManyField(Permission, blank=True)
 
    created = models.DateTimeField(default=datetime.datetime.now, editable=False)
 
    
 
    def __unicode__(self):
 
        return self.name
 

	
 
    def get_state_for_user(self, user):
 
        try:
 
            return self.memberships.get(user=user).state
 
        except Membership.DoesNotExist:
 
            return None
 
    
 
    def applicants(self):
 
        return self.memberships.filter(state="applied")
 
    
 
    def invitees(self):
 
        return self.memberships.filter(state="invited")
 
    
 
    def members(self):
 
        return self.memberships.filter(state="member")
 
    
 
    def managers(self):
 
        return self.memberships.filter(state="manager")
 

	
 

	
 
MEMBERSHIP_STATE_CHOICES = [
 
    ("applied", "applied"),
 
    ("invited", "invited"),
 
    ("declined", "declined"),
 
    ("rejected", "rejected"),
 
    ("member", "member"),
 
    ("manager", "manager"),
 
]
 

	
 

	
 
class Membership(models.Model):
 

	
 
    user = models.ForeignKey(User, related_name="memberships")
 
    team = models.ForeignKey(Team, related_name="memberships")
 
    state = models.CharField(max_length=20, choices=MEMBERSHIP_STATE_CHOICES)
 
    message = models.TextField(blank=True)
 

	
 

	
 
reversion.register(Membership)
symposion_project/templates/teams/team_detail.html
Show inline comments
...
 
@@ -7,25 +7,48 @@
 
    
 
    {% if team.description %}<p>{{ team.description }}</p>{% endif %}
 
    
 
    {% if can_join %}
 
        <form method="post" action="{% url team_join team.slug %}">
 
            {% csrf_token %}
 
            <input type="submit" class="btn btn-primary" value="join">
 
        </form>
 
    {% endif %}
 
    
 
    {% if can_leave %}
 
        <form method="post" action="{% url team_leave team.slug %}">
 
            {% csrf_token %}
 
            <input type="submit" class="btn" value="leave">
 
        </form>
 
    {% 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 %}
 
    
 
    {% if user.is_staff or state == "manager" %}
 
        {% if team.members %}
 
            <h2>Team Members</h2>
 
            <table class="table table-striped">
 
                {% for membership in team.members %}
 
                    <tr>
 
                        <td>{{ membership.user.email }}</td>
 
                        <td>{{ membership.state }}</td>
 
                    </tr>
 
                {% endfor %}
 
            </table>
 
        {% endif %}
 
        {% if team.applicants and team.access == "application" %}
 
            <h2>Applicants</h2>
 
            <table class="table table-striped">
 
                {% for membership in team.applicants %}
 
                    <tr>
 
                        <td>{{ membership.user.email }}</td>
 
                    </tr>
 
                {% endfor %}
 
            </table>
 
        {% endif %}
 
    {% endif %}
 
{% endblock %}
0 comments (0 inline, 0 general)