Пример #1
0
def journal_add_view(context, request):

    if IJournalEntry.providedBy(context):
        entry = context
        project = context.__parent__.__parent__
        add_form = False
    else:
        entry = JournalEntry()
        project = context
        add_form = True

    errors = {}
    defaults = {}

    if 'form.submitted' in request.POST:
        try:
            # FormEncode validation
            defaults = dict(request.POST)
            defaults['indicators'] = request.POST.get('indicators')
            form_result = entry_schema.to_python(request.POST)
        except formencode.validators.Invalid, why:
            errors = why.error_dict
        else:

            session = DBSession()

            # Handle image upload
            if form_result['image'] is not None:
                entry.image = File('image.jpg', form_result['image'].read())

            elif form_result['image_action'] == 'delete' and entry.image:
                session.delete(entry.image)

            entry.date = datetime.now()
            entry.text = form_result['text']
            entry.user = authenticated_user(request)

            # Check whether indicator belongs to this project.
            indicator_query = session.query(Indicator)
            indicator_query = indicator_query.filter(Project.id == project.id)
            indicator_query = indicator_query.join(Project.objectives)
            indicator_query = indicator_query.join(Objective.competences)
            indicator_query = indicator_query.join(Competence.indicator_sets)
            indicator_query = indicator_query.join(IndicatorSet.indicators)
            if form_result['indicators']:
                indicator_query = indicator_query.filter(
                    Indicator.id.in_(form_result['indicators']))
                indicators = indicator_query.all()
                entry.indicators = indicators

            if add_form:
                project.journal_entries.append(entry)

            if ITeacher.providedBy(authenticated_user(request)):
                return HTTPFound(location=model_url(
                    get_root(request)['projects'][project.id], request))
            return HTTPFound(
                location=model_url(authenticated_user(request), request))
Пример #2
0
def journal_add_view(context, request):
    
    if IJournalEntry.providedBy(context):
        entry = context
        project = context.__parent__.__parent__
        add_form = False
    else:
        entry = JournalEntry()
        project = context
        add_form = True
        
    errors = {}
    defaults = {}
    
    if 'form.submitted' in request.POST:
        try:
            # FormEncode validation
            defaults = dict(request.POST)
            defaults['indicators'] = request.POST.get('indicators')
            form_result = entry_schema.to_python(request.POST)
        except formencode.validators.Invalid, why:
            errors=why.error_dict
        else:
            
            session = DBSession()
            
            # Handle image upload
            if form_result['image'] is not None:
                entry.image = File('image.jpg', form_result['image'].read())

            elif form_result['image_action'] == 'delete' and entry.image:
                session.delete(entry.image)
            
            entry.date = datetime.now()
            entry.text = form_result['text']
            entry.user = authenticated_user(request)
            
            # Check whether indicator belongs to this project.
            indicator_query = session.query(Indicator)
            indicator_query = indicator_query.filter(Project.id == project.id)
            indicator_query = indicator_query.join(Project.objectives)
            indicator_query = indicator_query.join(Objective.competences)
            indicator_query = indicator_query.join(Competence.indicator_sets)
            indicator_query = indicator_query.join(IndicatorSet.indicators)
            if form_result['indicators']:
                indicator_query = indicator_query.filter(Indicator.id.in_(form_result['indicators']))
                indicators = indicator_query.all()
                entry.indicators = indicators
            
            if add_form:
                project.journal_entries.append(entry)
                
            if ITeacher.providedBy(authenticated_user(request)):
                return HTTPFound(location = model_url(get_root(request)['projects'][project.id], request))
            return HTTPFound(location = model_url(authenticated_user(request), request))
Пример #3
0
 def entries(self):
     user = authenticated_user(self.request)
     entries = get_current_registry().getAdapters((user, self.request), IGlobalMenuEntry)
     entries = [ entry[1] for entry in entries ]
     entries = [ entry for entry in entries if entry.condition ]
     entries = sorted(entries, key=lambda entry: entry.weight)
     return entries
Пример #4
0
 def entries(self):
     user = authenticated_user(self.request)
     entries = get_current_registry().getAdapters((user, self.request),
                                                  IGlobalMenuEntry)
     entries = [entry[1] for entry in entries]
     entries = [entry for entry in entries if entry.condition]
     entries = sorted(entries, key=lambda entry: entry.weight)
     return entries
Пример #5
0
def application_view(context, request):

    user = authenticated_user(request)
    if user:
        if ITeacher.providedBy(user):
            return HTTPFound(location=model_url(context, request, "dashboard.html"))
        return HTTPFound(location=model_url(user, request))

    return HTTPFound(location=model_url(context, request, "login.html"))
Пример #6
0
def application_view(context, request):

    user = authenticated_user(request)
    if user:
        if ITeacher.providedBy(user):
            return HTTPFound(
                location=model_url(context, request, 'dashboard.html'))
        return HTTPFound(location=model_url(user, request))

    return HTTPFound(location=model_url(context, request, 'login.html'))
Пример #7
0
def logged_in_view(context, request):
    
    user = authenticated_user(request)
    
    # Direct to the url of the "home" menu item which is user type specific.
    home_entry = get_current_registry().queryMultiAdapter((user, request), IGlobalMenuEntry, name="home")
    if home_entry:
        return HTTPFound(location = home_entry.url)
    else:
        return HTTPFound(location = model_url(context, request, 'login.html', query={'login_failed' : '1'}))
Пример #8
0
def logged_in_view(context, request):

    user = authenticated_user(request)

    # Direct to the url of the "home" menu item which is user type specific.
    home_entry = get_current_registry().queryMultiAdapter((user, request),
                                                          IGlobalMenuEntry,
                                                          name="home")
    if home_entry:
        return HTTPFound(location=home_entry.url)
    else:
        return HTTPFound(location=model_url(
            context, request, 'login.html', query={'login_failed': '1'}))
Пример #9
0
def student_view(context, request):
    
    competence_cloud = student_competence_cloud_view(context, request)
    
    # Redirect if the student is accessed by a teacher (gives a nicer URL).
    if authenticated_user(request) != context:
        return HTTPFound(location = model_url(context, request, 'stats.html'))
    
    return dict(student=context,
                competence_cloud=competence_cloud,
                request=request,
                comments_view=comments_view,
                api=TemplateAPI(request))
Пример #10
0
 def entries(self):
     context = self.context
     user = authenticated_user(self.request)
     entries = get_current_registry().getAdapters((context, user, self.request), ILocalMenuEntry)
     entries = [ entry[1] for entry in entries ]
     while not entries and context is not None:
         context = context.__parent__
         entries = get_current_registry().getAdapters((context, user, self.request), ILocalMenuEntry)
         entries = [ entry[1] for entry in entries ]
     
     entries = [ entry for entry in entries if entry.condition ]
     entries = sorted(entries, key=lambda entry: entry.weight)
     return entries
Пример #11
0
def student_view(context, request):

    competence_cloud = student_competence_cloud_view(context, request)

    # Redirect if the student is accessed by a teacher (gives a nicer URL).
    if authenticated_user(request) != context:
        return HTTPFound(location=model_url(context, request, 'stats.html'))

    return dict(student=context,
                competence_cloud=competence_cloud,
                request=request,
                comments_view=comments_view,
                api=TemplateAPI(request))
Пример #12
0
    def entries(self):
        context = self.context
        user = authenticated_user(self.request)
        entries = get_current_registry().getAdapters(
            (context, user, self.request), ILocalMenuEntry)
        entries = [entry[1] for entry in entries]
        while not entries and context is not None:
            context = context.__parent__
            entries = get_current_registry().getAdapters(
                (context, user, self.request), ILocalMenuEntry)
            entries = [entry[1] for entry in entries]

        entries = [entry for entry in entries if entry.condition]
        entries = sorted(entries, key=lambda entry: entry.weight)
        return entries
Пример #13
0
def comments_add_view(context, request):
    
    journal_entry = context.__parent__
    
    # Comment to add
    if request.POST.get('comment_text', None):
        comment = Comment()
        comment.journal_entry = journal_entry
        comment.user = authenticated_user(request)
        comment.text = request.POST['comment_text']
        comment.date = datetime.datetime.now()
        
    html = comments_view(context, request)
    response = simplejson.dumps(dict(id=model_url(context, request), html=html))
    
    return Response(response)
Пример #14
0
def comments_add_view(context, request):

    journal_entry = context.__parent__

    # Comment to add
    if request.POST.get('comment_text', None):
        comment = Comment()
        comment.journal_entry = journal_entry
        comment.user = authenticated_user(request)
        comment.text = request.POST['comment_text']
        comment.date = datetime.datetime.now()

    html = comments_view(context, request)
    response = simplejson.dumps(dict(id=model_url(context, request),
                                     html=html))

    return Response(response)
Пример #15
0
def project_edit_view(context, request):

    if IProject.providedBy(context):
        project = context
        context = project.__parent__
        add_form = False
    else:
        project = Project()
        add_form = True

    errors = {}
    defaults = {}

    if 'form.submitted' in request.POST:
        try:
            # FormEncode validation
            defaults = dict(request.POST)
            form_result = project_schema.to_python(request.POST)
        except formencode.validators.Invalid, why:
            errors = why.error_dict
        else:
            # Apply schema fields to the project object
            changed = False
            for field_name in project_schema.fields.keys():
                if form_result[field_name] != getattr(project, field_name):
                    setattr(project, field_name, form_result[field_name])
                    changed = True
            # Add project if this is the add form
            if add_form:
                session = DBSession()
                # Add the teacher that created the project to the project.
                user = authenticated_user(request)
                if ITeacher.providedBy(user):
                    project.teachers.append(user)
                session.add(project)
            return HTTPFound(location=model_url(context, request))
Пример #16
0
def project_edit_view(context, request):
    
    if IProject.providedBy(context):
        project = context
        context = project.__parent__
        add_form = False
    else:
        project = Project()
        add_form = True
    
    errors = {}
    defaults = {}
    
    if 'form.submitted' in request.POST:
        try:
            # FormEncode validation
            defaults = dict(request.POST)
            form_result = project_schema.to_python(request.POST)
        except formencode.validators.Invalid, why:
            errors=why.error_dict
        else:
            # Apply schema fields to the project object
            changed = False
            for field_name in project_schema.fields.keys():
                if form_result[field_name] != getattr(project, field_name):
                    setattr(project, field_name, form_result[field_name])
                    changed = True
            # Add project if this is the add form
            if add_form:
                session = DBSession()
                # Add the teacher that created the project to the project.
                user = authenticated_user(request)
                if ITeacher.providedBy(user):
                    project.teachers.append(user)
                session.add(project)
            return HTTPFound(location = model_url(context, request))
Пример #17
0
 def authenticated_user(self):
     return authenticated_user(self.request)
Пример #18
0
         indicator_query = indicator_query.join(Competence.indicator_sets)
         indicator_query = indicator_query.join(IndicatorSet.indicators)
         if form_result['indicators']:
             indicator_query = indicator_query.filter(Indicator.id.in_(form_result['indicators']))
             indicators = indicator_query.all()
             entry.indicators = indicators
         
         if add_form:
             project.journal_entries.append(entry)
             
         if ITeacher.providedBy(authenticated_user(request)):
             return HTTPFound(location = model_url(get_root(request)['projects'][project.id], request))
         return HTTPFound(location = model_url(authenticated_user(request), request))
         
 elif 'form.cancel' in request.POST:
     if ITeacher.providedBy(authenticated_user(request)):
         return HTTPFound(location = model_url(get_root(request)['projects'][project.id], request))
     return HTTPFound(location = model_url(authenticated_user(request), request))
     
 else:
     if not add_form:
         for field_name in entry_schema.fields.keys():
             if hasattr(entry, field_name):
                 defaults[field_name] = getattr(entry, field_name)
             
         defaults['indicators'] = [indicator.id for indicator in entry.indicators]
         if entry.image:
             defaults['image_action'] = 'nochange'
         defaults['image'] = '' 
 
 session = DBSession()
Пример #19
0
                indicator_query = indicator_query.filter(
                    Indicator.id.in_(form_result['indicators']))
                indicators = indicator_query.all()
                entry.indicators = indicators

            if add_form:
                project.journal_entries.append(entry)

            if ITeacher.providedBy(authenticated_user(request)):
                return HTTPFound(location=model_url(
                    get_root(request)['projects'][project.id], request))
            return HTTPFound(
                location=model_url(authenticated_user(request), request))

    elif 'form.cancel' in request.POST:
        if ITeacher.providedBy(authenticated_user(request)):
            return HTTPFound(location=model_url(
                get_root(request)['projects'][project.id], request))
        return HTTPFound(
            location=model_url(authenticated_user(request), request))

    else:
        if not add_form:
            for field_name in entry_schema.fields.keys():
                if hasattr(entry, field_name):
                    defaults[field_name] = getattr(entry, field_name)

            defaults['indicators'] = [
                indicator.id for indicator in entry.indicators
            ]
            if entry.image:
Пример #20
0
 def authenticated_user(self):
     return authenticated_user(self.request)