append = l.append
item = MenuItem
item.current_path = absolute(request, request.path)
- append(
- item(
+ append(item(
url=absolute(request, reverse('index')),
- name=user.email
- )
- )
- append(
- item(
- url=absolute(request, reverse('edit_profile')),
- name="My account"
- )
- )
+ name=user.email))
+ append(item(url=absolute(request, reverse('edit_profile')),
+ name="My account"))
if with_extra_links:
if user.has_usable_password() and user.provider in ('local', ''):
- append(
- item(
+ append(item(
url=absolute(request, reverse('password_change')),
- name="Change password"
- )
- )
+ name="Change password"))
if EMAILCHANGE_ENABLED:
- append(
- item(
+ append(item(
url=absolute(request, reverse('email_change')),
- name="Change email"
- )
- )
+ name="Change email"))
if INVITATIONS_ENABLED:
- append(
- item(
+ append(item(
url=absolute(request, reverse('invite')),
- name="Invitations"
- )
- )
- append(
- item(
+ name="Invitations"))
+ append(item(
url=absolute(request, reverse('feedback')),
- name="Feedback"
- )
- )
- append(
- item(
+ name="Feedback"))
+ append(item(
url=absolute(request, reverse('group_list')),
name="Groups",
- submenu=(
- item(
- url=absolute(request, reverse('group_list')),
- name="Overview"
- ),
- item(
- url=absolute(request,
- reverse('group_create_list')
- ),
- name="Create"
- ),
- item(
- url=absolute(request, reverse('group_search')),
- name="Join"
- ),
- )
- )
- )
- append(
- item(
+ submenu=(item(
+ url=absolute(request,
+ reverse('group_list')),
+ name="Overview"),
+ item(
+ url=absolute(request,
+ reverse('group_create_list')),
+ name="Create"),
+ item(
+ url=absolute(request,
+ reverse('group_search')),
+ name="Join"),)))
+ append(item(
url=absolute(request, reverse('resource_list')),
- name="Resources"
- )
- )
- append(
- item(
+ name="Resources"))
+ append(item(
url=absolute(request, reverse('billing')),
- name="Billing"
- )
- )
+ name="Billing"))
+ append(item(
+ url=absolute(request, reverse('timeline')),
+ name="Timeline"))
if with_signout:
- append(
- item(
+ append(item(
url=absolute(request, reverse('logout')),
- name="Sign out"
- )
- )
+ name="Sign out"))
callback = request.GET.get('callback', None)
data = json.dumps(tuple(l))
from django.forms.extras.widgets import SelectDateWidget
from django.conf import settings
-from astakos.im.models import (
- AstakosUser, EmailChange, AstakosGroup, Invitation,
- Membership, GroupKind, get_latest_terms
-)
+from astakos.im.models import (AstakosUser, EmailChange, AstakosGroup,
+ Invitation, Membership, GroupKind, Resource,
+ get_latest_terms)
from astakos.im.settings import (INVITATIONS_PER_LEVEL, BASEURL, SITENAME,
- RECAPTCHA_PRIVATE_KEY, RECAPTCHA_ENABLED, DEFAULT_CONTACT_EMAIL,
- LOGGING_LEVEL
- )
+ RECAPTCHA_PRIVATE_KEY, RECAPTCHA_ENABLED,
+ DEFAULT_CONTACT_EMAIL, LOGGING_LEVEL)
from astakos.im.widgets import DummyWidget, RecaptchaWidget
from astakos.im.functions import send_change_email
class AstakosGroupCreationForm(forms.ModelForm):
-# issue_date = forms.DateField(widget=SelectDateWidget())
-# expiration_date = forms.DateField(widget=SelectDateWidget())
kind = forms.ModelChoiceField(
queryset=GroupKind.objects.all(),
label="",
class AstakosGroupSearchForm(forms.Form):
q = forms.CharField(max_length=200, label='Search group')
+class TimelineForm(forms.Form):
+ entity = forms.CharField(
+ widget=forms.HiddenInput(), label='')
+ resource = forms.ModelChoiceField(
+ queryset=Resource.objects.all()
+ )
+ start_date = forms.DateTimeField()
+ end_date = forms.DateTimeField()
+ action = forms.ChoiceField(choices=(), required=False)
+
+ def clean(self):
+ super(TimelineForm, self).clean()
+ d = self.cleaned_data
+ if 'resource' in d:
+ d['resource'] = str(d['resource'])
+ if 'start_date' in d:
+ d['start_date'] = d['start_date'].strftime("%Y-%m-%dT%H:%M:%S.%f")
+ if 'end_date' in d:
+ d['end_date'] = d['end_date'].strftime("%%Y-%m-%dT%H:%M:%S.%f")
+ return d
+
class AstakosGroupSortForm(forms.Form):
sort_by = forms.ChoiceField(label='Sort by',
choices=(('groupname', 'Name'), ('kindname', 'Type')),
from functools import wraps
from astakos.im.settings import (DEFAULT_CONTACT_EMAIL, SITENAME, BASEURL,
- LOGGING_LEVEL
- )
+ LOGGING_LEVEL)
from astakos.im.models import AstakosUser
logger = logging.getLogger(__name__)
args = [a.decode('utf8') for a in args]
email, first, last, affiliation = args
- try:
- validate_email(email)
- except ValidationError:
- raise CommandError("Invalid email")
+ #try:
+ # validate_email(email)
+ #except ValidationError:
+ # raise CommandError("Invalid email")
username = uuid4().hex[:30]
password = options.get('password')
q, created = orm.AstakosGroupQuota.objects.get_or_create(
group=default,
resource=r,
- uplimit=l)
+ uplimit=l,
+ limit=0)
map(create_policies, SERVICES.iteritems())
def backwards(self, orm):
service = models.ForeignKey(Service)
def __str__(self):
- return '%s : %s' % (self.service, self.name)
+ return '%s.%s' % (self.service, self.name)
class GroupKind(models.Model):
}\r
});\r
}\r
+ $( "#id_start_date" ).datepicker({\r
+ dateFormat: "yy-mm-dd",\r
+ onSelect: function( selectedDate ) {\r
+ $( "#id_start_date" ).datepicker( "option", "maxDate", selectedDate );\r
+ }\r
+ });\r
+ \r
+ $( "#id_end_date" ).datepicker({\r
+ dateFormat: "yy-mm-dd",\r
+ onSelect: function( selectedDate ) {\r
+ $( "#id_end_date" ).datepicker( "option", "maxDate", selectedDate );\r
+ }\r
+ });\r
});\r
\r
\r
{% endif %}
{% if other %}
<div class="full-dotted">
- <form method="GET" class="minimal" action="">
+ <form method="GET" class="minimal" action="">
<div class="form-row">
<select name="other_sorting" onchange="this.form.submit();">
<option value="">Sort by</option>
--- /dev/null
+{% extends "im/account_base.html" %}
+
+{% block page.body %}
+<div class="projects">
+ <div class="maincol {% block innerpage.class %}{% endblock %}">
+ <form action="" method="post"
+ class="withlabels">{% csrf_token %}
+ {% include "im/form_render.html" %}
+ <div class="form-row submit">
+ <input type="submit" class="submit altcol" value="SUBMIT" />
+ </div>
+ </form>
+ </div>
+</div>
+{% for o in l %}
+ {% for i in o %}
+ {{i}}
+ {% endfor %}
+ <br>
+{% endfor %}
+{% endblock %}
url(r'^resources/?$',
'resource_list', {}, name='resource_list'),
url(r'^billing/?$', 'billing', {}, name='billing'),
+ url(r'^timeline/?$', 'timeline', {}, name='timeline'),
url(r'^group/add/(?P<kind_name>\w+)?$',
'group_add', {}, name='group_add'),
url(r'^group/list/?$',
ExtendedPasswordChangeForm, EmailChangeForm,
AstakosGroupCreationForm, AstakosGroupSearchForm,
AstakosGroupUpdateForm, AddGroupMembersForm,
- AstakosGroupSortForm)
+ AstakosGroupSortForm, TimelineForm)
from astakos.im.functions import (send_feedback, SendMailError,
invite as invite_func, logout as auth_logout,
activate as activate_func,
data['bill_addcredits'] = filter(servicefilter('addcredits'), data['bill'])
return data
+
+@signed_terms_required
+@login_required
+def timeline(request):
+ data = {'entity':request.user.email}
+ l = []
+ if request.method == 'POST':
+ data = request.POST
+ l =[(u'test/apples', u'2012-09-20T11:39:53.1797', 192172055040L, 25569215632749L),
+ (u'test/pears/kate.jpg', u'2012-09-20T11:45:14.1153', 381640896L, 25626036449581L),
+ (u'test/pears/kate_beckinsale.jpg', u'2012-09-20T11:45:14.5830', 0L, 25626036449581L),
+ (u'test/pears/How To Win Friends And Influence People.pdf', u'2012-09-20T11:45:15.0694', 0L, 25626036449581L),
+ (u'test/pears/moms_birthday.jpg', u'2012-09-20T11:45:15.5615', 0L, 25626036449581L),
+ (u'test/pears/poodle_strut.mov', u'2012-09-20T11:45:16.0290', 0L, 25626036449581L),
+ (u'test/pears/Disturbed - Down With The Sickness.mp3', u'2012-09-20T11:45:16.4950', 0L, 25626036449581L),
+ (u'test/pears/army_of_darkness.avi', u'2012-09-20T11:45:16.9844', 0L, 25626036449581L),
+ (u'test/pears/the_mad.avi', u'2012-09-20T11:45:17.4516', 0L, 25626036449581L),
+ (u'test/apples/photos/animals/dogs/poodle.jpg', u'2012-09-20T11:45:17.9281', 0L, 25626036449581L),
+ (u'test/apples/photos/animals/dogs/terrier.jpg', u'2012-09-20T11:45:18.3918', 0L, 25626036449581L),
+ (u'test/apples/photos/animals/cats/persian.jpg', u'2012-09-20T11:45:18.8626', 0L, 25626036449581L),
+ (u'test/apples/photos/animals/cats/siamese.jpg', u'2012-09-20T11:45:19.3686', 0L, 25626036449581L),
+ (u'test/apples/photos/plants/fern.jpg', u'2012-09-20T11:45:19.8464', 0L, 25626036449581L),
+ (u'test/apples/photos/plants/rose.jpg', u'2012-09-20T11:45:20.7334', 0L, 25626036449581L)]
+
+ form = TimelineForm(data)
+ if form.is_valid():
+ print '>>>', form.cleaned_data
+ return render_response(template='im/timeline.html',
+ context_instance=get_context(request),
+ form=form,
+ l=l)