Beispiel #1
0
    def post(self, lims_step):
        user = self.get_secure_cookie('user')
        email = self.get_secure_cookie('email')
        a_type = self.get_argument('type', '')
        title = self.get_argument('title', '')
        url = self.get_argument('url', '')
        desc = self.get_argument('desc','')

        if not a_type or not title:
            self.set_status(400)
            self.finish('<html><body>Link title and type is required</body></html>')
        else:
            p = Process(self.lims, id=lims_step)
            p.get(force=True)
            links = json.loads(p.udf['Links']) if 'Links' in p.udf else {}
            links[str(datetime.datetime.now())] = {'user': user,
                                                   'email': email,
                                                   'type': a_type,
                                                   'title': title,
                                                   'url': url,
                                                   'desc': desc}
            p.udf['Links'] = json.dumps(links)
            p.put()
            self.set_status(200)
            #ajax cries if it does not get anything back
            self.set_header("Content-type", "application/json")
            self.finish(json.dumps(links))
Beispiel #2
0
    def post(self, lims_step):
        user = self.get_current_user()
        a_type = self.get_argument('type', '')
        title = self.get_argument('title', '')
        url = self.get_argument('url', '')
        desc = self.get_argument('desc','')

        if not a_type or not title:
            self.set_status(400)
            self.finish('<html><body>Link title and type is required</body></html>')
        else:
            p = Process(self.lims, id=lims_step)
            p.get(force=True)
            links = json.loads(p.udf['Links']) if 'Links' in p.udf else {}
            links[str(datetime.datetime.now())] = {'user': user.name,
                                                   'email': user.email,
                                                   'type': a_type,
                                                   'title': title,
                                                   'url': url,
                                                   'desc': desc}
            p.udf['Links'] = json.dumps(links)
            p.put()
            self.set_status(200)
            #ajax cries if it does not get anything back
            self.set_header("Content-type", "application/json")
            self.finish(json.dumps(links))
Beispiel #3
0
 def get(self, workset):
     self.set_header("Content-type", "application/json")
     p = Process(self.lims, id=workset)
     p.get(force=True)
     # Sorted running notes, by date
     workset_notes = json.loads(p.udf['Workset Notes']) if 'Workset Notes' in p.udf else {}
     sorted_workset_notes = OrderedDict()
     for k, v in sorted(workset_notes.items(), key=lambda t: t[0], reverse=True):
         sorted_workset_notes[k] = v
     self.write(sorted_workset_notes)
Beispiel #4
0
 def get(self, workset):
     self.set_header("Content-type", "application/json")
     p = Process(self.lims, id=workset)
     p.get(force=True)
     # Sorted running notes, by date
     workset_notes = json.loads(p.udf['Workset Notes']) if 'Workset Notes' in p.udf else {}
     sorted_workset_notes = OrderedDict()
     for k, v in sorted(workset_notes.iteritems(), key=lambda t: t[0], reverse=True):
         sorted_workset_notes[k] = v
     self.write(sorted_workset_notes)
Beispiel #5
0
    def post(self, workset):
        note = self.get_argument('note', '')
        user = self.get_current_user()
        category = self.get_argument('category', 'Workset')

        if category == '':
            category = 'Workset'

        workset_data = WorksetDataHandler.get_workset_data(
            self.application, workset)

        projects = list(workset_data[workset]['projects'])
        workset_name = workset_data[workset]['name']

        if not note:
            self.set_status(400)
            self.finish(
                '<html><body>No workset id or note parameters found</body></html>'
            )
        else:
            newNote = {
                'user': user.name,
                'email': user.email,
                'note': note,
                'category': category
            }
            p = Process(self.lims, id=workset)
            p.get(force=True)
            workset_notes = json.loads(
                p.udf['Workset Notes']) if 'Workset Notes' in p.udf else {}
            workset_notes[str(datetime.datetime.now())] = newNote
            p.udf['Workset Notes'] = json.dumps(workset_notes)
            p.put()

            # Save the running note in statusdb per workset as well to be able
            # to quickly show it in the worksets list
            v = self.application.worksets_db.view("worksets/lims_id",
                                                  key=workset)
            doc_id = v.rows[0].id
            doc = self.application.worksets_db.get(doc_id)
            doc['Workset Notes'] = json.dumps(workset_notes)
            self.application.worksets_db.save(doc)

            workset_link = "<a href='/workset/{0}'>{0}</a>".format(
                workset_name)
            project_note = "#####*Running note posted on workset {}:*\n".format(
                workset_link)
            project_note += note
            for project_id in projects:
                RunningNotesDataHandler.make_project_running_note(
                    self.application, project_id, project_note, category,
                    user.name, user.email)

            self.set_status(201)
            self.write(json.dumps(newNote))
Beispiel #6
0
    def get(self, lims_step):
        self.set_header("Content-type", "application/json")
        p = Process(self.lims, id=lims_step)
        p.get(force=True)

        links = json.loads(p.udf['Links']) if 'Links' in p.udf else {}

        #Sort by descending date, then hopefully have deviations on top
        sorted_links = OrderedDict()
        for k, v in sorted(links.items(), key=lambda t: t[0], reverse=True):
            sorted_links[k] = v
        sorted_links = OrderedDict(sorted(sorted_links.items(), key=lambda k : k[1]['type']))
        self.write(sorted_links)
Beispiel #7
0
    def get(self, lims_step):
        self.set_header("Content-type", "application/json")
        p = Process(self.lims, id=lims_step)
        p.get(force=True)

        links = json.loads(p.udf['Links']) if 'Links' in p.udf else {}

        #Sort by descending date, then hopefully have deviations on top
        sorted_links = OrderedDict()
        for k, v in sorted(links.iteritems(), key=lambda t: t[0], reverse=True):
            sorted_links[k] = v
        sorted_links = OrderedDict(sorted(sorted_links.iteritems(), key=lambda (k,v): v['type']))
        self.write(sorted_links)
Beispiel #8
0
 def delete(self, workset):
     note_id=self.get_argument('note_id')
     p = Process(self.lims, id=workset)
     p.get(force=True)
     workset_notes = json.loads(p.udf['Workset Notes']) if 'Workset Notes' in p.udf else {}
     try:
         self.set_header("Content-type", "application/json")
         del workset_notes[note_id]
         p.udf['Workset Notes'] = json.dumps(workset_notes)
         p.put()
         self.set_status(201)
         self.write(json.dumps(workset_notes))
     except:
         self.set_status(400)
         self.finish('<html><body>No note found</body></html>')
Beispiel #9
0
 def delete(self, workset):
     note_id=self.get_argument('note_id')
     p = Process(self.lims, id=workset)
     p.get(force=True)
     workset_notes = json.loads(p.udf['Workset Notes']) if 'Workset Notes' in p.udf else {}
     try:
         self.set_header("Content-type", "application/json")
         del workset_notes[note_id]
         p.udf['Workset Notes'] = json.dumps(workset_notes)
         p.put()
         self.set_status(201)
         self.write(json.dumps(workset_notes))
     except:
         self.set_status(400)
         self.finish('<html><body>No note found</body></html>')
Beispiel #10
0
 def post(self, workset):
     note = self.get_argument('note', '')
     user = self.get_secure_cookie('user')
     email = self.get_secure_cookie('email')
     if not note:
         self.set_status(400)
         self.finish('<html><body>No workset id or note parameters found</body></html>')
     else:
         newNote = {'user': user, 'email': email, 'note': note}
         p = Process(self.lims, id=workset)
         p.get(force=True)
         workset_notes = json.loads(p.udf['Workset Notes']) if 'Workset Notes' in p.udf else {}
         workset_notes[str(datetime.datetime.now())] = newNote
         p.udf['Workset Notes'] = json.dumps(workset_notes)
         p.put()
         self.set_status(201)
         self.write(json.dumps(newNote))
Beispiel #11
0
 def post(self, workset):
     note = self.get_argument('note', '')
     user = self.get_secure_cookie('user')
     email = self.get_secure_cookie('email')
     if not note:
         self.set_status(400)
         self.finish(
             '<html><body>No workset id or note parameters found</body></html>'
         )
     else:
         newNote = {'user': user, 'email': email, 'note': note}
         p = Process(self.lims, id=workset)
         p.get(force=True)
         workset_notes = json.loads(
             p.udf['Workset Notes']) if 'Workset Notes' in p.udf else {}
         workset_notes[str(datetime.datetime.now())] = newNote
         p.udf['Workset Notes'] = json.dumps(workset_notes)
         p.put()
         self.set_status(201)
         self.write(json.dumps(newNote))