Exemple #1
0
 def put(self, project_id):
     data = json.loads(self.request.body)
     project = Project.get(project_id)
     project.name = data.get('name')
     project.note = data.get('note')
     project.put()
     self.response.write(json.dumps(project.to_dict()))
 def get(self, project_id):
     project = Project.get(project_id)
     collaborators = Collaborator.all()\
         .filter('project =', project)
     content = json.dumps([
         c.to_dict() for c in collaborators if c.project.deleted_at is None
     ])
     self.response.write(content)
Exemple #3
0
 def post(self, project_id):
     data = json.loads(self.request.body)
     project = Project.get(project_id)
     participant = Participant(name=data.get('name'),
                               note=data.get('note'),
                               project=project,
                               json=DEFAULT_JSON)
     participant.put()
     self.response.write(json.dumps(participant.to_dict()))
Exemple #4
0
 def post(self, project_id):
     data = json.loads(self.request.body)
     project = Project.get(project_id)
     participant = Participant(
         name=data.get('name'),
         note=data.get('note'),
         project=project,
         json=DEFAULT_JSON)
     participant.put()
     self.response.write(json.dumps(participant.to_dict()))
Exemple #5
0
 def get(self, project_id, participant_id=None):
     if participant_id:
         participant = Participant.get(participant_id)
         if participant.deleted_at is not None:
             self.error(404)
         self.response.write(json.dumps(participant.to_dict()))
     else:
         project = Project.get(project_id)
         participants = Participant.all()\
             .filter('project =', project)\
             .order('created_at')
         self.response.write(json.dumps([p.to_dict() for p in participants]))
Exemple #6
0
 def get(self, project_id, participant_id=None):
     if participant_id:
         participant = Participant.get(participant_id)
         if participant.deleted_at is not None:
             self.error(404)
         self.response.write(json.dumps(participant.to_dict()))
     else:
         project = Project.get(project_id)
         participants = Participant.all()\
             .filter('project =', project)\
             .order('created_at')
         self.response.write(json.dumps([p.to_dict()
                                         for p in participants]))
Exemple #7
0
 def post(self, project_id):
     data = json.loads(self.request.body)
     project = Project.get(project_id)
     participants = Participant.all().filter('project =', project)
     grid = merge_grids(participants)
     questionnaire = [node['text'] for node in grid['nodes']]
     analysis = Analysis(
         name=data.get('name'),
         grid=json.dumps(grid),
         questionnaire=json.dumps(questionnaire),
         project=project)
     analysis.put()
     self.response.write(json.dumps(analysis.to_dict()))
Exemple #8
0
    def get(self, project_id):
        """
		Get a single project
		:param project_id:
		:return: Project object
		"""
        user = get_jwt_identity()

        schema = ProjectSchema()
        project = Project.get(project_id)
        if project is None:
            raise ValidationError({'message': 'Project not found'})
        project = schema.dump(project).data
        return response('success',
                        success_messages['retrieved'].format('Project'),
                        project)
Exemple #9
0
    def get(self, project_id=None):
        current_user = User.current_user()
        if project_id:
            project = Project.get(project_id)
            if project.deleted_at is not None:
                self.error(404)
            if not current_user.is_collaborator_on(project):
                self.error(403)

            self.response.write(json.dumps(project.to_dict()))
        else:
            collaborators = Collaborator.all()\
                .filter('user =', current_user)
            projects = [c.project for c in collaborators if c.project.deleted_at is None]
            projects.sort(key=lambda a: a.updated_at)
            content = json.dumps([p.to_dict() for p in projects])
            self.response.write(content)
Exemple #10
0
    def post(self, project_id):
        data = json.loads(self.request.body)
        project = Project.get(project_id)
        user = User.all()\
            .filter('email =', data.get('userEmail'))\
            .get()
        if not project or not user:
            raise Exception()
        collaborator = Collaborator.all()\
            .filter('project =', project)\
            .filter('user ='******'isManager'))
        collaborator.put()

        content = json.dumps(collaborator.to_dict())
        self.response.write(content)
Exemple #11
0
    def post(self, project_id):
        data = json.loads(self.request.body)
        project = Project.get(project_id)
        user = User.all()\
            .filter('email =', data.get('userEmail'))\
            .get()
        if not project or not user:
            raise Exception()
        collaborator = Collaborator.all()\
            .filter('project =', project)\
            .filter('user ='******'isManager'))
        collaborator.put()

        content = json.dumps(collaborator.to_dict())
        self.response.write(content)
Exemple #12
0
 def patch(self, project_id):
     """ Endpoint to update project"""
     request_data = request.get_json()
     user = get_jwt_identity()
     project = Project.get(project_id)
     if user.get('id') != project.created_by:
         raise ValidationError({
             'message':
             'Unauthorized user, you cannot perform this operation'
         })
     schema = ProjectSchema(context={'id': project_id})
     if 'assignees' in request_data:
         user_list = assign_user(request_data.get('assignees'))
         assignees = user_list if user_list is not None else []
         del request_data['assignees']
         data = schema.load_object_into_schema(request_data, partial=True)
         data['assignees'] = assignees
     else:
         data = schema.load_object_into_schema(request_data, partial=True)
     project.update_(**data)
     return response('success',
                     message=success_messages['updated'].format('Project'),
                     data=schema.dump(project).data,
                     status_code=200)
Exemple #13
0
 def get(self, project_id):
     project = Project.get(project_id)
     participants = Participant.all().filter('project =', project)
     self.response.write(json.dumps(merge_grids(participants)))
Exemple #14
0
    def get(self, request, pk=None):
        asker = UserProfile.get(request)
        if pk:
            project = Project.objects.filter(pk=pk).first()
            if project:
                if not project.user and project.creator != asker and not project.is_series:
                    ProjectShowing.objects.get_or_create(project_id=pk,
                                                         user=asker,
                                                         **request.data)
                page = project.page(asker)
                if page:
                    return Response(page)
        result = {
            'project': {
                'id': None,
                'title': None,
                'days': {},
                'money': None,
                'money_calculating': False,
                'money_per_day': None,
                'client': None,
                'user': None,
                'creator': ProfileItemShortSerializer(asker).data,
                'canceled': None,
                'is_paid': False,
                'is_wait': True,
                'info': None,
                'parent': None,
                'confirmed': False,
                'is_series': False
            },
            'calendar': {
                'days': {},
                'daysOff': []
            }
        }
        user = UserProfile.get(request.GET.get('user'))
        series = Project.get(request.GET.get('series'))
        copy = Project.get(request.GET.get('copy'))

        if series:
            user = series.user
            series_fields = SeriesFillingSerializer(series).data
            result['project'].update(series_fields)
            result['project'].update({
                'is_series':
                False,
                'parent':
                ProjectListItemSerializer(series).data
            })

        if user:
            result['project'].update({
                'user': ProfileItemShortSerializer(user).data,
                'is_wait': user != asker,
                'confirmed': user == asker
            })
            result['calendar'] = user.get_calendar(asker)

        if copy:
            page = copy.page(asker)
            if page:
                page['project']['id'] = None
                return Response(page)

        return Response(result)
Exemple #15
0
 def get(self, project_id):
     project = Project.get(project_id)
     analyses = Analysis.all()\
         .filter('project =', project)\
         .order('created_at')
     self.response.write(json.dumps([p.to_dict() for p in analyses]))
Exemple #16
0
 def delete(self, project_id):
     project = Project.get(project_id)
     project.remove()
Exemple #17
0
 def get(self, project_id):
     project = Project.get(project_id)
     collaborators = Collaborator.all()\
         .filter('project =', project)
     content = json.dumps([c.to_dict() for c in collaborators if c.project.deleted_at is None])
     self.response.write(content)