~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to ivle/webapp/admin/projectservice.py

  • Committer: David Coles
  • Date: 2009-11-27 05:34:33 UTC
  • mto: This revision was merged to the branch mainline in revision 1322.
  • Revision ID: coles.david@gmail.com-20091127053433-8ki9nm6xrkogxq67
Added diagram of system architecture

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
# Author: Nick Chadwick
19
19
 
20
 
import datetime
21
20
import ivle.database
22
21
from ivle.database import ProjectSet, Project, Subject, Semester, Offering
23
22
 
24
23
from ivle.webapp.base.rest import (XHTMLRESTView, named_operation,
25
24
                                   require_permission)
26
 
from ivle.webapp.errors import NotFound, BadRequest
 
25
from ivle.webapp.errors import NotFound
27
26
 
28
27
class ProjectSetRESTView(XHTMLRESTView):
29
28
    """Rest view for a projectset.
30
29
    
31
30
    Add new, delete, edit functionality is given here."""
32
31
    template = "templates/projectset_fragment.html"
 
32
    
 
33
    def __init__(self, req, subject, year, semester, projectset):
 
34
        self.context = req.store.find(ProjectSet,
 
35
            ProjectSet.id == int(projectset),
 
36
            ProjectSet.offering_id == Offering.id,
 
37
            Offering.subject_id == Subject.id,
 
38
            Subject.short_name == unicode(subject),
 
39
            Offering.semester_id == Semester.id,
 
40
            Semester.year == unicode(year),
 
41
            Semester.semester == unicode(semester)).one()
 
42
        
 
43
        if self.context is None:
 
44
            raise NotFound()
33
45
 
34
46
    def _project_url(self, project):
35
47
        return "/subjects/%s/%s/%s/+projects/%s" % \
39
51
                 project.short_name)
40
52
 
41
53
    @named_operation('edit')
42
 
    def add_project(self, req, name, short_name, deadline, synopsis):
 
54
    def add_project(self, req, name, short_name, synopsis):
43
55
        """Add a Project to this ProjectSet"""
44
56
        new_project = Project()
45
57
        new_project.name = unicode(name)
46
58
        new_project.short_name = unicode(short_name)
47
59
        new_project.synopsis = unicode(synopsis)
48
 
        try:
49
 
            new_project.deadline = datetime.datetime.strptime(deadline, '%Y-%m-%d %H:%M:%S')
50
 
        except ValueError:
51
 
            raise BadRequest("deadline must be in YYYY-MM-DD HH:MM:ss")
52
60
        new_project.project_set = self.context
53
61
 
54
62
        req.store.add(new_project)