Пример #1
0
 def delete(self, key):
     if auth.user_is_admin():
         Project.get(key).delete()
     else:
         Messages.add('Only and administrator may delete projects. This ' +
                      'incident has been logged.')
     return self.redirect('/projects')
Пример #2
0
 def delete(self, key):
     """Deletes a project."""
     if auth.user_is_admin():
         Project.get(key).delete()
     else:
         Messages.add('Only and administrator may delete projects. This ' +
                      'incident has been logged.')
     return self.redirect('/projects')
Пример #3
0
 def test_create_outgoing(self):
     """Create an outgoing record."""
     Category.create(category_id='001', description='Testing Stock')
     Project.create(project_id='001', project_description="Testing")
     Role.create(role_name='Admin')
     User.create(first_name='Jay', second_name='Palm', phone='9783978223', role='Admin', username='******',
                 password='******', email='*****@*****.**')
     create_stock('001', 'Testing stock', 1, '001', 9.99)
     create_outgoing_stock(stock='001', project_id='001', date="2015-07-22", quantity='7', username='******')
     OutgoingStock.get(OutgoingStock.stock == '001').delete_instance()
     Stock.get(Stock.category == '001').delete_instance()
     User.get(User.username == 'JayPalm').delete_instance()
     Role.get(Role.role_name == 'Admin').delete_instance()
     Project.get(Project.project_id == '001').delete_instance()
     Category.get(Category.category_id == '001').delete_instance()
Пример #4
0
def button(bot, update):
    '''Save user vote in the database'''
    query = update.callback_query
    username = query.message['chat']['username']
    chat_id = query.message.chat_id
    user = Pycampista.get_or_create(username=username, chat_id=chat_id)[0]
    project_name = query.message['text']

    # Get project from the database
    project = Project.get(Project.name == project_name)

    # create a new vote object
    new_vote = Vote(pycampista=user, project=project)

    # Save vote in the database and send a message
    if query.data == "si":
        result = 'Interesadx en: ' + project_name + ' 👍'
        new_vote.interest = True
        new_vote.save()
    else:
        new_vote.interest = False
        new_vote.save()
        result = 'No te interesa el proyecto ' + project_name

    bot.edit_message_text(text=result,
                          chat_id=query.message.chat_id,
                          message_id=query.message.message_id)
Пример #5
0
    def post(self):
        waiver = self.request.get('waiver')
        if waiver != 'yes':
            raise ValidationError(
                errors={'waiver': 'You must accept the waiver'})

        name = self.request.get('name')

        email = self.request.get('email')
        user = User.findByEmail(email)
        if user != None:
            code = 9202 if user.pending == True else 4482
            return self.redirect('/sign-in', {'error': code, 'email': email})

        password = self.request.get('password')
        if len(password) < 5:
            raise ValidationError(
                errors={'password': '******'})

        pid = self.request.get('pid')
        project = Project.get(pid) if pid else None

        gid = self.request.get('group[key]')
        group = Group.get(gid) if gid else None
        group_code = self.request.get('group[password]')
        group = group if group and group.password == group_code else None

        user = User.create(name, email, password, project, group)
        self.setUser(user)

        redirect = self.request.get('redirect')
        redirect = redirect if redirect else '/account'
        self.redirect(redirect)
Пример #6
0
    def post(self, key):
        group = self.getGroup(key)
        if group is None:
            group = Group()

        group.name = self.request.get('group[name]')
        group.password = self.request.get('group[password]')
        try:
            slots = int(self.request.get('group[slots]'))
            if slots <= 0:
                raise ValueError('Below zero')
            group.slots = slots
        except ValueError as e:
            raise ValidationError(
                errors={
                    'group[slots]': 'Must be an integer number above zero'
                })

        project_key = self.request.get('group[project]')
        project = Project.get(project_key) if project_key != '' else None
        group.setProject(project)

        group.put()
        error_code = 1 if key == 'new' else 2
        self.redirect('/admin/groups/{}'.format(group.key()),
                      {'error': error_code})
	def	post(self):
		action = self.request.get('action', 'add')
		if action == 'add':
			if len(self.request.get('name'))<2:
				raise Exception("project name must be at least 2 characters long")
			if len(self.request.get('currency'))<1:
				raise Exception("project currency must be at least one character long")
			# create the project and return the new location to go to
			project = Project(name=self.request.get('name'), currency=self.request.get('currency'))
			project.put()
			# add access rights for this user to the new project
			rights = ProjectRights(project=project, user=users.GetCurrentUser(), right=Security.Right_Owner)
			rights.put()
			# redirect to summary
			self.response.out.write("/summary?project=%(key)s" % {'key':project.key()})
		elif action == 'delete':
			# remove me from the projects right list
			project = Project.get(self.request.get('project', ''))
			if (not project):
				raise Exception("Unknown project!")
			# check rights of current user for this project, and deny access if not permitable
			rights = ProjectRights.gql("WHERE user=:user and project=:project", user=users.get_current_user(), project=project).get()
			if rights:
				rights.delete()
			# redirect to my page
			self.response.out.write("/")
		else:
			raise Exception("Unknown action '%(action)s'!" % {'action':action})
def update_project(project_id):
    new_project = request.get_json()
    try:
        project = Project.get(Project.id == project_id)
    except models.DoesNotExist:
        return jsonify({ 'message': 'Project not found' }), 400
    if new_project['id'] != project.id:
        return jsonify({ 'message': 'Cannot update project at this url' }), 400
    try:
        if new_project['markerOptions']:
            marker_options = new_project['markerOptions']
            for marker_name in marker_options:
                try:
                    marker_option = MarkerOption.get(MarkerOption.name == marker_name)
                    ProjectMarkerOption.get(ProjectMarkerOption.project == project.id,
                                            ProjectMarkerOption.marker_option == marker_option.id)
                except models.DoesNotExist:
                    ProjectMarkerOption.create(project = project, marker_option = marker_option)
        if new_project['users']:
            users = new_project['users']
            for user in users:
                try:
                    project_user = ProjectUser.get(ProjectUser.app_user == user['id'],
                                                    ProjectUser.project == project)
                except models.DoesNotExist:
                    ProjectUser.create(app_user = user['id'], project = project)
        if new_project['stacks']:
            stacks = new_project['stacks']
            with db.atomic():
                for stack in stacks:
                    try:
                        project_stack = ProjectStack.get(ProjectStack.stack == stack['id'],
                                                        ProjectStack.project == project)
                    except models.DoesNotExist:
                        project_stack = ProjectStack.create(project=project, stack = stack['id'])
                        probe_setting = stack['probeSettings']
                        probe_position = json.loads(probe_setting['position'])
                        ProbeSetting.create(x_offset=int(probe_position['xOffset']),
                                            y_offset=int(probe_position['yOffset']),
                                            project_stack=project_stack,
                                            label=probe_position['label']
                                        )
        message = "Project updated"
    except Exception as ex:
        print ex
    project = Project.get(Project.id == project_id)
    return jsonify({ 'message': 'Project updated', 'project': project.deep_serialized() }), 200
Пример #9
0
 def post(self):
     project_id = self.request.get('project-id')
     api_token = self.request.get('api-token')
     project = Project.get()
     project.project_id = project_id
     project.api_token = api_token
     project.put()
     self.redirect('/project')
def delete_project(project_id):
    project = Project.get(Project.id == project_id)
    if project:
        project_title = project.title
        project.delete_instance(recursive=True)
        return jsonify({ 'message': 'Successfully deleted "{}"'.format(project_title) }), 200
    else:
        return jsonify({ 'message': 'Unable to delete project' }), 400
Пример #11
0
def create_project():
    user = json.loads(request.data)
    user = Project(user["name"], user["description"], user["address"],
                   int(user["num_people"]), user.get("image", None),
                   user["date"])
    db.session.add(user)
    db.session.commit()

    return json.dumps({"result": True})
Пример #12
0
def task(op, project_id, push_id):
    f = globals()['task_%s' % op]
    project = Project.get(name=project_id)
    if not project:
        # XXX: cry to log
        return

    s = partial(push_status, push_id, project)
    s._id = push_id
    f(project, s)
Пример #13
0
def save(name):
    project = Project.get(name=name)
    if not project:
        return 'No', 404

    project.update(request.form)
    project.save()

    flash('Saved')
    return redirect('/projects/%s/'%name)
Пример #14
0
def delete_project(project_id):
    if authenticate():
        try:
            project = Project.get(Project.id == project_id)
            return render_template('projects/delete.html', project=project)
        except Project.DoesNotExist:
            return redirect(url_for('projects'))
    else:
        flash('Not authorized to do that')
        return redirect(url_for('projects'))
Пример #15
0
 def vote(self, key):
     if not auth.logged_in():
         return self.redirect('/projects')
     project = Project.get(key)
     if project.has_voted(auth.current_user()):
         project.remove_vote(auth.current_user())
         project.put()
     else:
         project.vote(auth.current_user())
         project.put()
     return self.redirect('/projects')
Пример #16
0
    def get(self):
        email = self.request.get('email')
        pid = self.request.get('pid')
        project = Project.get(pid) if pid else None
        redirect = self.request.get('redirect')

        return {
            'email': email,
            'project': project,
            'Greek': Greek,
            'redirect': redirect,
        }
Пример #17
0
def show(name):
    project = Project.get(name=name)
    if not project:
        return "No", 404

    (project._field('status')).locked = True
    (project._field('rev')).locked = True

    status = rstatus_name(name)

    return render_template('project_show.html',
            project=project, status=status)
Пример #18
0
 def claim(self, key):
     user = auth.User(auth.current_user())
     group = user.group
     if group.owner.user_id() == auth.current_user().user_id():
         project = Project.get(key)
         group.project = project
         group.put()
         return self.redirect('/groups/%s' % group.key())
     else:
         Messages.add('You are not the owner of your group. Only the ' +
                      'owner of the group may select a project.')
         return self.redirect('/projects')
Пример #19
0
def get_projects_by_company(company_id):
    """
    Fetches projects by a company.

    :param company_id: A company id from database.
    :type company_id: Integer

    """
    projects = Project.get('all', Project.company_id == company_id)
    lower_case_sorter = lambda project: unicode(project).lower()
    projects.sort(key=lower_case_sorter)
    return projects
Пример #20
0
def get_project(project_id: int):
    try:
        db.connect()
        project: Project = Project.get(Project.id == int(project_id))
    except Exception as e:
        print(e)
        message = {"status": False, "error": str(e), "data": {}}
    else:
        message = {"status": True, "error": {}, "data": project.dict()}
    finally:
        db.close()

    return message
Пример #21
0
 def claim(self, key):
     """Claims a project for a group."""
     user = auth.User(auth.current_user())
     group = user.group
     if group.owner.user_id() == auth.current_user().user_id():
         project = Project.get(key)
         group.project = project
         group.put()
         return self.redirect('/groups/%s' % group.key())
     else:
         Messages.add('You are not the owner of your group. Only the ' +
                      'owner of the group may select a project.')
         return self.redirect('/projects')
Пример #22
0
def copy_key(name, push_id=None):
    project = Project.get(name=name)

    project.ssh_key = ops.fetch_key(name)
    project.save()

    if not push_id:
        return

    push(push_id, {
        "typ": "project.key",
        "key": project.ssh_key,
        "project": project.name,
    })
Пример #23
0
    def vote(self, key):
        """Votes for a project.

        This action removes the user's vote from the project if the user had
        already voted for it.
        """
        if not auth.logged_in():
            return self.redirect('/projects')
        project = Project.get(key)
        if project.has_voted(auth.current_user()):
            project.remove_vote(auth.current_user())
            project.put()
        else:
            project.vote(auth.current_user())
            project.put()
        return self.redirect('/projects')
Пример #24
0
def add_project(data):
    """
    Adds a project to database and returns a  project instance

    :param data:  Project information
    :type data: A dictionary

    :rtype: an instance of :class:`models.Project`

    """
    if 'project' not in data:
        return None
    if 'company' not in data:
        return None
    project_data = data['project']
    company_data = data['company']
    if ('name' not in project_data) or ('name' not in company_data):
        return None
    project_name = project_data['name']
    exists = Project.get('exists', Project.name == project_name)
    if exists:
        raise ItemAlreadyExistsException('The project exists already!')
    company = Company.get('one', Company.name == company_data['name'])
    # Parse data.
    name = project_data['name']
    directory = ''
    directory_set = False
    if 'dir' in project_data:
        directory = project_data['dir']
        directory_set = True
    password = ''
    if 'password' in project_data:
        password = project_data['password']
        if password:
            password = utils.hash_password(password)
            directory = utils.get_encrypted_directory_name(name, password)
            directory_set = True
    project = Project(name, '', company, password)
    if directory_set:
        project.dir = filesystem.create_project_directory(directory)
    else:
        project.dir = filesystem.create_project_directory(str(project.id))
    if not project.dir:
        project.delete()
        return None
    Project.update(project)
    return project
Пример #25
0
def owneo(bot, update):
    '''Dialog to set project responsable'''
    username = update.message.from_user.username
    text = update.message.text
    chat_id = update.message.chat_id

    lista_proyectos = [p.name for p in Project.select()]
    dic_proyectos = dict(enumerate(lista_proyectos))
    # proyecto_usado = dic_proyectos.values(text|)

    project_name = dic_proyectos[int(text)]
    new_project = Project.get(Project.name == project_name)

    user = Pycampista.get_or_create(username=username, chat_id=chat_id)[0]
    project_owner = ProjectOwner.get_or_create(project=new_project, owner=user)

    bot.send_message(chat_id=update.message.chat_id, text="Perfecto. Chauchi")
Пример #26
0
def project_update(project_id):
    try:
        project = Project.get(id=project_id, user=current_user.id)
    except Project.DoesNotExist:
        return jsonify({
            "message":
            "Can't find project with id - `{id}`".format(id=project_id),
            "status":
            "error"
        }), 404

    project, errors = project_schema.load(request.json, instance=project)

    if errors:
        return jsonify(errors), 400

    project.save()

    return jsonify(project_schema.dump(project).data), 201
Пример #27
0
    def _create_new_story(self, event):
        logging.info('Creating story')
        story = Story(story_id=event.story_id, name=event.story_title)
        story.put()

        project = Project.get()

        api_url = 'http://www.pivotaltracker.com/services/v3/projects/{PROJECT_ID}/stories/{STORY_ID}/notes'.replace('{PROJECT_ID}', project.project_id).replace('{STORY_ID}', story.story_id)
        comment_xml = '<note><text>http://{APP_ID}.appspot.com/s/{STORY_ID}</text></note>'.replace('{APP_ID}', os.environ['APPLICATION_ID']).replace('{STORY_ID}', story.story_id)

        logging.info('Api url: ' + api_url)
        logging.info('Comment xml: ' + comment_xml)

        #post a comment back to pivotal tracker
        result = urlfetch.fetch(url=api_url,
                                payload=comment_xml,
                                method=urlfetch.POST,
                                headers={'Content-Type': 'application/xml', 'X-TrackerToken': project.api_token})
        logging.info('Result of API call: ' + result.content)
def generate_report_xlsx(self, project_id, report_type):
    project = Project.get(Project.id == project_id)
    total_probes = len([p for p in project.project_stacks])
    project_users = AppUser.select().join(ProjectUser).where(ProjectUser.project == project)
    project_info = project.title.split('_')
    report = {}
    total_iteration = 0
    
    for iteration, project_stack in enumerate(project.project_stacks):
        stack = {}
        stack_images = StackImage.select().where(StackImage.stack == project_stack.stack.id)
        for stack_image in stack_images:
            users = {}
            for user in project_users:
                markers = Marker.select().where(
                                    Marker.app_user == user.id,
                                    Marker.stack_image == stack_image.id,
                                    Marker.project_stack == project_stack.id
                                )

                user_markers = [m.serialized for m in markers]
                if user_markers:
                    users[user.email] = user_markers
            stack[stack_image.image.name] = users

        report[project_stack.stack.title] = stack
        self.update_state(state='PROGRESS', meta={
            'current': iteration,
            'total': total_probes,
            'projectId': project_id,
            'reportType': report_type
        })
        total_iteration += 1
    
    return {
        'current': total_iteration,
        'total': total_probes,
        'status': 'Task complete',
        'projectId': project_id,
        'report': report,
        'reportType': report_type
    }
Пример #29
0
    def get(self):
        self._current_user = self.require_login()
        if not self._current_user:
            self.authenticate()
            return

        match = getCurrentMatchByUser(self._current_user.id)
        if not match:
            self.redirect("/loadout")
            return

        #Resolve hacker ids to actual hacker data
        hacker_list = {}
        for hacker in match.hacker_list:
            hacker_instance = Hacker.get(hacker)
            hacker_list[str(hacker_instance.key())] = {"first_name": hacker_instance.first_name,
                             "last_name": hacker_instance.last_name,
                             "talents": hacker_instance.talents,
                             "imgset": hacker_instance.imageset,
                             "base": {"energy": hacker_instance.base_energy,
                                      "productivity": hacker_instance.base_productivity,
                                      "teamwork": hacker_instance.base_teamwork}}

        #Resolve hackers for this user
        self._current_user.hackers = Hacker.all().filter("user ="******"user": self._current_user,
                                                        "users": users,
                                                        "hackathon": match,
                                                        "hackers": json.dumps(hacker_list),
                                                        "project": project,
                                                        "token": token}))
Пример #30
0
    def post(self, key):
        user = self.getVolunteer(key)
        user.pending = self.request.get('volunteer[pending]') == "true"
        user.pending_code = self.request.get('volunteer[pending_code]')
        user.email = self.request.get('volunteer[email]')
        user.first_name = self.request.get('volunteer[first_name]')
        user.last_name = self.request.get('volunteer[last_name]')
        user.is_pc = self.request.get('volunteer[is_pc]') == "true"
        user.is_group_leader = self.request.get(
            'volunteer[is_group_leader]') == "true"
        user.phone = self.request.get('volunteer[phone]')

        group_key = self.request.get('volunteer[group]')
        group = Group.get(group_key) if group_key != "" else None
        user.setGroup(group)

        project_key = self.request.get('volunteer[project]')
        project = Project.get(project_key) if project_key != "" else None
        user.setProject(project)

        user.save()
        self.redirect('/admin/volunteers/{}'.format(user.key()), {'error': 1})
Пример #31
0
def index():
    curr_project = Project.get(Project.title == "Sinatra Store")
    return render_template('index.html', project=curr_project)
Пример #32
0
def new_project(project):
            np = Project.get(id=project)
            return np
Пример #33
0
 def test_get(self):
     params = {'id': 1}
     res = Project.get(**params)
     assert res.q == ("SELECT * FROM projects " "WHERE id=%(id)s LIMIT 1;")
     assert res.params == params
Пример #34
0
def single_project(project_id):
    if request.method == "POST" and request.form and request.form['_method']:
        if authenticate():
            if request.form['_method'] == "PUT" or request.form['_method'] == "PATCH":
                post = request.form
                error = False
                title = request.form['title'].strip() if request.form['title'] != None else None
                if title:
                    if re.search("^[ a-zA-Z0-9\,\?\!]+$", title) == None:
                        flash('Invalid characters detected in title')
                        error = True
                else:
                    flash('Title cannot be empty')
                    error = True
                title_desc = request.form['title_desc'].strip()
                if title_desc:
                    title_desc = title_desc.replace("\r","")
                    num_matches = len(re.findall("^[ a-zA-Z0-9\.\?\,\!/]+$",title_desc,re.MULTILINE))
                    num_lines = len(list(filter(remove_blanks,title_desc.split("\n"))))
                    if num_matches != num_lines:
                        flash('Invalid characters detected in title description')
                        error = True
                else:
                    flash('Title description cannot be blank')
                    error = True
                description = request.form['description'].strip()
                if description:
                    regex = re.compile("^[ a-zA-Z0-9\.\?\,\!]+$", re.MULTILINE)
                    description = description.replace("\r","")
                    num_matches = len(regex.findall(description))
                    num_lines = len(list(filter(remove_blanks,description.split("\n"))))
                    if num_matches != num_lines:
                        flash('Invalid characters detected in project description')
                        error = True
                    if not error:
                        try:
                            q = Project.update(
                                title=request.form['title'],
                                title_desc=request.form['title_desc'],
                                description=request.form['description']
                            ).where(Project.id == project_id)
                            q.execute()
                        except IntegrityError:
                            flash('That title is already taken')
                            error = True
                        except Project.DoesNotExist:
                            return redirect(url_for('projects'))
                else:
                    flash('Project description cannot be empty')
                    error = True
    
                if error:
                    return render_template('projects/edit.html', project=project)
                else:
                    return redirect(url_for('single_project', project_id=project_id))
            elif request.form['_method'] == "DELETE":
                try:
                    project = Project.get(Project.id == project_id)
                    project.delete_instance()
                    flash('Successfully deleted the project')
                    return redirect(url_for('projects'))
                except Project.DoesNotExist:
                    return redirect(url_for('projects'))
    
            else:
                abort(405)
        else:
            flash('Not authorized to do that')
            return redirect(url_for('projects'))
    else:
        try:
            project = Project.get(Project.id == project_id)
            tags = ""
            learned_points = ""
            if project.tags:
                tags = project.tags.split(',')
            if project.learned:
                learned_points = project.learned.replace('+',',')
                learned_points = learned_points.split(",")
            return render_template('projects/show.html', project=project, tags=tags, learned_points=learned_points)
        except Project.DoesNotExist:
            return redirect(url_for('projects'))
Пример #35
0
def create_project():
	user = json.loads(request.data)
	user = Project(user["name"], user["description"], user["address"], int(user["num_people"]), user.get("image",None), user["date"])
	db.session.add(user)
	db.session.commit()
	
	return json.dumps({"result":True})
Пример #36
0
 def getProject(self, key):
     if key == "new":
         return None
     project = Project.get(key)
     self.throw404If(project is None)
     return project
Пример #37
0
 def get(self):
     project = Project.get()
     appengineutils.render_template(self.response, 'project.html', {'project' : project})
Пример #38
0
 def getProject(self, key):
     project = Project.get(key)
     self.throw404If(project is None)
     return project
Пример #39
0
def get_project_from_local_conf():
    local_conf = yaml_util.load_local_conf()
    project_id = local_conf["project_id"]
    project = Project.get(Project.id == project_id)
    return project
def load_project(project_id):
    project = Project.get(Project.id == project_id)
    return jsonify({ 'project': project.deep_serialized() }), 200