示例#1
0
 def post(self, name):
     """
     Creates a new project for this course.
     User must be a course Teacher.
     """
     course = Course.objects.get_or_404(name=name)
     if g.user not in course.teachers:
         abort(403, message='Must be course teacher to add a project.')
     args = project_parser.parse_args()
     name = args['name']
     language = args['language']
     due_date = args['due_date']
     if due_date is None or due_date == '':
         abort(400, message="Project must have due date.")
     try:
         due_date = dateutil.parser.parse(due_date).astimezone(
             dateutil.tz.gettz('UTC')).replace(tzinfo=None)
     except:
         abort(400, message="Incorrect due date format.")
     if len([p for p in course.projects if p.name == name]) != 0:
         abort(422, message="Request makes no sense, grab a programmer.")
     filenames = [f.filename for f in request.files.values()]
     if len(filenames) != len(set(filenames)):
         abort(400, message="Test file names must be unique.")
     project = Project(name=name,
                       language=language,
                       due_date=due_date,
                       course=course)
     if args['test_timeout'] != -1:
         project.test_timeout_seconds = args['test_timeout']
     for test_case in request.files.values():
         if allowed_test_file(test_case.filename):
             grid_file = db.GridFSProxy()
             grid_file.put(test_case,
                           filename=secure_filename(test_case.filename),
                           content_type=request.mimetype)
             project.tests.append(grid_file)
         else:
             abort(400,
                   message="{0} extension not allowed".format(
                       test_case.filename))
     if args['published'] == 'True':
         project.published = True
     elif args['published'] == 'False':
         project.published = False
     else:
         abort(400,
               message="published value must be True or False as string.")
     if args['is_quiz'] == 'True':
         project.is_quiz = True
     elif args['is_quiz'] == 'False':
         project.is_quiz = False
     else:
         abort(400,
               message="is_quiz value must be True or False as string.")
     project.save()
     course.projects.append(project)
     course.save()
     return marshal(project.to_dict(parent_course=course),
                    project_fields), 201
示例#2
0
def form_group():
    users = User.query.filter(User.id != current_user.id).all()
    superuser = User.query.filter_by(email='*****@*****.**').first()
    users.remove(superuser)
    form = FormGroupForm()
    if form.validate_on_submit():
        members = request.form.getlist('members')
        if members == []:
            flash('Must select at least one member', 'danger')
            return redirect(url_for('form_group'))
        message = checkMessage(form.content.data.split())
        mess = message[0]
        if message[1] == 1:
            user = User.query.filter_by(id=current_user.id).first()
            user.rating -= 1
            db.session.add(user)
            db.session.commit()
        project = Project(title=form.title.data, description=mess)
        db.session.add(project)
        db.session.commit()
        for member in members:
            b_user = User.query.filter_by(id=member).first()
            in_blacklist = Blacklist.query.filter(
                (Blacklist.user == b_user.username)
                & (Blacklist.black == current_user.username)).first()
            in_whitelist = Whitelist.query.filter(
                (Whitelist.user == b_user.username)
                & (Whitelist.white == current_user.username)).first()
            if in_blacklist is None:
                if in_whitelist is not None:
                    projmember = ProjectMember(project=form.title.data,
                                               member=member)
                    db.session.add(projmember)
                    db.session.commit()
                    flash('you are in ' + b_user.username + '\'s white list',
                          'success')
                else:
                    message = Message1(title=form.title.data,
                                       content=mess,
                                       from_user=current_user.username,
                                       to_user=member,
                                       mess_type='invite')
                    db.session.add(message)
                    db.session.commit()
                    flash('Invite has been sent to ' + b_user.username,
                          'success')
            else:
                flash('you got blocked by ' + b_user.username, 'warning')
        projmember2 = ProjectMember(project=form.title.data,
                                    member=current_user.id)
        db.session.add(projmember2)
        db.session.commit()
        return redirect(url_for('home'))
    return render_template('form_group.html', form=form, users=users)
示例#3
0
    def test_time_goal_and_time_contributed(self):
        steve = TestModels.create_steve()
        db.session.add(steve)
        db.session.commit()

        # create a project
        new_project = Project(user=steve.id, name='Learn Swedish')
        db.session.add(new_project)
        db.session.commit()

        # create a goal for this project
        # 30 minutes every day
        new_goal = Goal(project=new_project.id, days=0b1111111, time=30)
        db.session.add(new_goal)
        db.session.commit()

        # test Project.time_goal
        self.assertTrue(new_project.time_goal() == 30)

        # create another goal
        # 15 minutes on weekdays
        weekday_goal = Goal(project=new_project.id, days=0b0011111, time=15)
        db.session.add(weekday_goal)
        db.session.commit()

        # test Project.time_goal
        weekday = date(2015, 10, 26)
        weekend = date(2015, 10, 25)
        self.assertTrue(new_project.time_goal(weekday) == 45)
        self.assertTrue(new_project.time_goal(weekend) == 30)

        # create a new contribution
        new_contribution = Contribution(project=new_project.id, time=60)
        db.session.add(new_contribution)
        db.session.commit()

        self.assertTrue(new_project.time_contributed() == 60)

        # create an old contribution
        old_date = date(2015, 06, 10)
        contribution = Contribution(project=new_project.id,
                                    time=20,
                                    date=old_date)
        db.session.add(contribution)
        db.session.commit()

        self.assertTrue(new_project.time_contributed() == 80)

        # test time_contributed with date range
        start_date = date(2015, 06, 01)
        end_date = date(2015, 07, 01)
        self.assertTrue(
            new_project.time_contributed(start=start_date, end=end_date) == 20)
示例#4
0
def create_projects():
    for _ in range(5):
        project = Project(
            title=fake.sentence(nb_words=3),
            subject=fake.words(nb=1),
            short_description=fake.sentence(nb_words=8),
            description=fake.paragraph(nb_sentences=8)
        )
        print(
            f'Dummy Project {project.title}: {project.short_description}')
        db.session.add(project)
    db.session.commit()
示例#5
0
def create_project():
    members = User.query.all()
    form = ProjectForm()
    form.users.choices = members
    if form.validate_on_submit():
        new_project = Project(form.title.data, form.subject.data,
                              form.short_description.data,
                              form.description.data)
        save_data(new_project)
        return redirect(url_for('project.show_projects'))
    return render_template('project/creating.html',
                           title='Creating project',
                           form=form)
示例#6
0
    def receive(self, text_data=None):
        eventData = json.loads(text_data)
        eventName = eventData["type"]
        if eventName == "project_join_request":
            self.send(text_data=json.dumps({
                "type": "project_join_reply",
                "joined": "true",
                "name": "NAME",
                "users": "USERS",
                "code": "CODE",
                "modified": "MODIFIED"
            }))

        elif eventName == "project_create":

            code = "ahs8dj1k"

            project = Project(name="Name",
                              description="Desc",
                              code="a7sh1kf1",
                              workspace="",
                              user=self.scope["user"])
            project.save()

            self.send(text_data=json.dumps({
                "type": "project_create_reply",
                "created": "true"
            }))

        elif eventName == "project_remove":
            print(eventData["code"])

            #Projects.objecst.filter(id).delete()

            self.send(text_data=json.dumps({
                "type": "project_remove_reply",
                "removed": "true"
            }))

        elif eventName == "hello":
            self.send(text_data=json.dumps({"type": "hello_reply"}))
示例#7
0
    if selected_calc_id := request.form.get('selected_calc_id'):
        session['current_calc_id'] = selected_calc_id
        selected_calculation = CalcInput.objects(_id=selected_calc_id).first()
        session['current_c_name'] = selected_calculation.calc_name
        session['current_c_description'] = selected_calculation.description
        return redirect(url_for('design_dashboard'))

    ############------------ADD PROJECT FORM-----------##############
    pform = ProjectForm()
    if pform.validate_on_submit():
        project_name = pform.project_name.data
        description = pform.description.data

        project = Project(
            project_name=project_name,
            description=description,
            user_id=session.get('user_id'))  # user_id=ObjectId(),
        project.save()

        flash(f"You have saved {project_name}", "success")
        return redirect(url_for('landing'))

    ############------------CHANGE PROJECT NAME FORM-----------##############
    pnameform = ChangeProjectForm()
    if pnameform.validate_on_submit():
        new_project_name = pnameform.new_project_name.data
        new_description = pnameform.new_description.data

        project = Project.objects(_id=session['current_project_id']).first()
        project.project_name = new_project_name
        project.description = new_description