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
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)
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)
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()
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)
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"}))
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