projects
/
astakos
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
7cb372c
)
Progress II
author
Sofia Papagiannaki
<papagian@gmail.com>
Fri, 3 Aug 2012 16:51:42 +0000
(19:51 +0300)
committer
Sofia Papagiannaki
<papagian@gmail.com>
Fri, 3 Aug 2012 16:51:42 +0000
(19:51 +0300)
snf-astakos-app/astakos/im/forms.py
patch
|
blob
|
history
snf-astakos-app/astakos/im/models.py
patch
|
blob
|
history
snf-astakos-app/astakos/im/templates/im/astakosgroup_detail.html
patch
|
blob
|
history
snf-astakos-app/astakos/im/templates/im/astakosgroupquota_form.html
patch
|
blob
|
history
snf-astakos-app/astakos/im/views.py
patch
|
blob
|
history
diff --git
a/snf-astakos-app/astakos/im/forms.py
b/snf-astakos-app/astakos/im/forms.py
index
ad1fa1a
..
f1a5444
100644
(file)
--- a/
snf-astakos-app/astakos/im/forms.py
+++ b/
snf-astakos-app/astakos/im/forms.py
@@
-491,8
+491,9
@@
class ExtendedPasswordChangeForm(PasswordChangeForm):
def get_astakos_group_creation_form(request):
class AstakosGroupCreationForm(forms.ModelForm):
def get_astakos_group_creation_form(request):
class AstakosGroupCreationForm(forms.ModelForm):
- issue_date = forms.DateField(widget=SelectDateWidget())
- expiration_date = forms.DateField(widget=SelectDateWidget())
+ issue_date = forms.DateField(widget=SelectDateWidget(), initial=datetime.now())
+ # TODO set initial in exact one month
+ expiration_date = forms.DateField(widget=SelectDateWidget(), initial = datetime.now() + timedelta(days=30))
kind = forms.ModelChoiceField(queryset=GroupKind.objects.all(), empty_label=None)
name = forms.URLField()
kind = forms.ModelChoiceField(queryset=GroupKind.objects.all(), empty_label=None)
name = forms.URLField()
@@
-510,23
+511,19
@@
def get_astakos_group_creation_form(request):
if commit:
g.save()
g.owner = [request.user]
if commit:
g.save()
g.owner = [request.user]
-# g.approve_member(request.user)
+ g.approve_member(request.user)
return g
return AstakosGroupCreationForm
return g
return AstakosGroupCreationForm
-def get_astakos_group_policy_creation_form(group):
+def get_astakos_group_policy_creation_form(astakosgroup):
class AstakosGroupPolicyCreationForm(forms.ModelForm):
class AstakosGroupPolicyCreationForm(forms.ModelForm):
- choices = Resource.objects.filter(~Q(astakosgroup=group))
+ choices = Resource.objects.filter(~Q(astakosgroup=astakosgroup))
resource = forms.ModelChoiceField(queryset=choices, empty_label=None)
resource = forms.ModelChoiceField(queryset=choices, empty_label=None)
+ # TODO check that it does not hit the db
+ group = forms.ModelChoiceField(queryset=AstakosGroup.objects.all(), initial=astakosgroup, widget=forms.HiddenInput())
class Meta:
model = AstakosGroupQuota
class Meta:
model = AstakosGroupQuota
-
- def __init__(self, *args, **kwargs):
- if not args:
- args = ({'group':group},)
- super(AstakosGroupPolicyCreationForm, self).__init__(*args, **kwargs)
- self.fields['group'].widget.attrs['disabled'] = True
return AstakosGroupPolicyCreationForm
return AstakosGroupPolicyCreationForm
diff --git
a/snf-astakos-app/astakos/im/models.py
b/snf-astakos-app/astakos/im/models.py
index
6c51cd2
..
9a0e8b4
100644
(file)
--- a/
snf-astakos-app/astakos/im/models.py
+++ b/
snf-astakos-app/astakos/im/models.py
@@
-113,7
+113,7
@@
class AstakosGroup(Group):
creation_date = models.DateTimeField('Creation date', default=datetime.now())
issue_date = models.DateTimeField('Issue date', null=True)
expiration_date = models.DateTimeField('Expiration date', null=True)
creation_date = models.DateTimeField('Creation date', default=datetime.now())
issue_date = models.DateTimeField('Issue date', null=True)
expiration_date = models.DateTimeField('Expiration date', null=True)
- moderatation_enabled = models.BooleanField('Moderated membership?', default=False)
+ moderatation_enabled = models.BooleanField('Moderated membership?', default=True)
approval_date = models.DateTimeField('Activation date', null=True, blank=True)
estimated_participants = models.PositiveIntegerField('Estimated #participants', null=True)
approval_date = models.DateTimeField('Activation date', null=True, blank=True)
estimated_participants = models.PositiveIntegerField('Estimated #participants', null=True)
@@
-153,10
+153,10
@@
class AstakosGroup(Group):
self.save()
def approve_member(self, member):
self.save()
def approve_member(self, member):
- m = self.membership_set.get(person=member)
+ m, created = self.membership_set.get_or_create(person=member, group=self)
m.date_joined = datetime.now()
m.save()
m.date_joined = datetime.now()
m.save()
-
+
def disapprove_member(self, member):
m = self.membership_set.remove(member)
def disapprove_member(self, member):
m = self.membership_set.remove(member)
diff --git
a/snf-astakos-app/astakos/im/templates/im/astakosgroup_detail.html
b/snf-astakos-app/astakos/im/templates/im/astakosgroup_detail.html
index
550d886
..
5d44a3b
100644
(file)
--- a/
snf-astakos-app/astakos/im/templates/im/astakosgroup_detail.html
+++ b/
snf-astakos-app/astakos/im/templates/im/astakosgroup_detail.html
@@
-7,12
+7,32
@@
<table class="zebra-striped id-sorted">
<tr>
<th>Name: {{object.name}}</th>
<table class="zebra-striped id-sorted">
<tr>
<th>Name: {{object.name}}</th>
- </tr>
+ </tr>
+ </table>
+ <div class="section">
+ <h2>Members:</h2>
+ {% if members %}
+ <table class="zebra-striped id-sorted">
+ <thead>
+ <tr>
+ <th>Realname</th>
+ <th>Status</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for name, approved in members %}
<tr>
<tr>
- <th>Members: {{object.membership.all}}</th>
+ <td>{{name}}</td>
+ <td>{{approved}}</td>
</tr>
</tr>
+ {% endfor %}
+ </tbody>
</table>
</table>
- <div class="section">
+ {% else %}
+ <p>No members yet!</p>
+ {% endif %}
+ </div>
+ <div class="section">
<h2>Policies:</h2>
{% if quota %}
<table class="zebra-striped id-sorted">
<h2>Policies:</h2>
{% if quota %}
<table class="zebra-striped id-sorted">
@@
-35,5
+55,14
@@
<p>No policies</p>
{% endif %}
</div>
<p>No policies</p>
{% endif %}
</div>
+ <div class="rightcol">
+ <form action="{% url group_policies_add object.id %}" method="post" class="innerlabels signup">{% csrf_token %}
+ <h2><span>NEW POLICY</span></h2>
+ {% include "im/form_render.html" %}
+ <div class="form-row submit">
+ <input type="submit" class="submit altcol" value="+" />
+ </div>
+ </form>
+</div>
</div>
{% endblock %}
</div>
{% endblock %}
diff --git
a/snf-astakos-app/astakos/im/templates/im/astakosgroupquota_form.html
b/snf-astakos-app/astakos/im/templates/im/astakosgroupquota_form.html
index
1fff70a
..
de54043
100644
(file)
--- a/
snf-astakos-app/astakos/im/templates/im/astakosgroupquota_form.html
+++ b/
snf-astakos-app/astakos/im/templates/im/astakosgroupquota_form.html
@@
-35,7
+35,7
@@
{% include "im/form_render.html" %}
<div class="form-row submit">
<input type="submit" class="submit altcol" value="+" />
{% include "im/form_render.html" %}
<div class="form-row submit">
<input type="submit" class="submit altcol" value="+" />
- <a class="extra-link" href="{% url group_approval_request group.id %}">Request approval</a>
+ <a href="{% url group_approval_request group.id %}">Request approval</a>
</div>
</form>
</div>
</div>
</form>
</div>
diff --git
a/snf-astakos-app/astakos/im/views.py
b/snf-astakos-app/astakos/im/views.py
index
844426f
..
4a0c122
100644
(file)
--- a/
snf-astakos-app/astakos/im/views.py
+++ b/
snf-astakos-app/astakos/im/views.py
@@
-428,11
+428,7
@@
def logout(request, template='registration/logged_out.html', extra_context={}):
response['Location'] = LOGOUT_NEXT
response.status_code = 301
return response
response['Location'] = LOGOUT_NEXT
response.status_code = 301
return response
-<<<<<<< HEAD
messages.success(request, _('You have successfully logged out.'))
messages.success(request, _('You have successfully logged out.'))
-=======
- messages.add_message(request, messages.SUCCESS, _('<p>You have successfully logged out.</p>'))
->>>>>>> origin/newstyles
context = get_context(request, extra_context)
response.write(render_to_string(template, context_instance=context))
return response
context = get_context(request, extra_context)
response.write(render_to_string(template, context_instance=context))
return response
@@
-590,14
+586,13
@@
def change_email(request, activation_key=None,
form = form,
context_instance = get_context(request,
extra_context))
form = form,
context_instance = get_context(request,
extra_context))
-<<<<<<< HEAD
@signed_terms_required
def group_add(request):
return create_object(request,
form_class=get_astakos_group_creation_form(request),
login_required = True,
@signed_terms_required
def group_add(request):
return create_object(request,
form_class=get_astakos_group_creation_form(request),
login_required = True,
- post_save_redirect = '/im/group/%(id)s/policies/add')
+ post_save_redirect = '/im/group/%(id)s/')
@signed_terms_required
@login_required
@signed_terms_required
@login_required
@@
-617,13
+612,17
@@
def group_detail(request, group_id):
except AstakosGroup.DoesNotExist:
return HttpResponseBadRequest(_('Invalid group.'))
d = {}
except AstakosGroup.DoesNotExist:
return HttpResponseBadRequest(_('Invalid group.'))
d = {}
- for resource in group.policy.all():
- d[resource.name] = group.policy.through.objects.get(resource__id=resource.id,
- group__id=group_id).limit
+ related_resources = group.policy.through.objects
+ for r in group.policy.all():
+ d[r.name] = related_resources.get(resource__id=r.id,
+ group__id=group_id).limit
+ members = map(lambda m:{m.person.realname:m.is_approved}, group.membership_set.all())
return object_detail(request,
AstakosGroup.objects.all(),
object_id=group_id,
return object_detail(request,
AstakosGroup.objects.all(),
object_id=group_id,
- extra_context = {'quota':d})
+ extra_context = {'quota':d,
+ 'members':members,
+ 'form':get_astakos_group_policy_creation_form(group)})
@signed_terms_required
@login_required
@signed_terms_required
@login_required
@@
-636,7
+635,7
@@
def group_policies_add(request, group_id):
try:
group = AstakosGroup.objects.select_related().get(id=group_id)
except AstakosGroup.DoesNotExist:
try:
group = AstakosGroup.objects.select_related().get(id=group_id)
except AstakosGroup.DoesNotExist:
- raise HttpResponseBadRequest(_('Invalid group.'))
+ return HttpResponseBadRequest(_('Invalid group.'))
d = {}
for resource in group.policy.all():
d[resource.name] = group.policy.through.objects.get(resource__id=resource.id,
d = {}
for resource in group.policy.all():
d[resource.name] = group.policy.through.objects.get(resource__id=resource.id,
@@
-644,7
+643,8
@@
def group_policies_add(request, group_id):
return create_object(request,
form_class=get_astakos_group_policy_creation_form(group),
login_required=True,
return create_object(request,
form_class=get_astakos_group_policy_creation_form(group),
login_required=True,
- post_save_redirect = reverse('group_policies_add', kwargs=dict(group_id=group_id)),
+ template_name = 'im/astakosgroup_detail.html',
+ post_save_redirect = reverse('group_detail', kwargs=dict(group_id=group_id)),
extra_context = {'group':group,
'quota':d})
@signed_terms_required
extra_context = {'group':group,
'quota':d})
@signed_terms_required
@@
-652,5
+652,3
@@
def group_policies_add(request, group_id):
def group_approval_request(request, group_id):
return HttpResponse()
def group_approval_request(request, group_id):
return HttpResponse()
-=======
->>>>>>> origin/newstyles