Commit 09e3ec02 authored by Jayasith H.B.C's avatar Jayasith H.B.C

fix(assignmentSubmissionError) change the models

parent 424cb2b0
......@@ -10,6 +10,7 @@ from routes.auth_routes import auth
from routes.module_routes import module
from routes.assignment_routes import assignment
from routes.diagram_routes import diagram
from routes.submission_routes import submission
APP_ROOT = os.path.dirname(os.path.abspath(__file__))
......@@ -19,13 +20,13 @@ OUTPUTS_GENERATED_CLASS_DIAGRAMS_PATH = os.path.join('outputs', 'generated_class
OUTPUTS_GENERATED_CLASS_FILES_PATH = os.path.join('outputs', 'generated_class_files')
OUTPUTS_FOLDER = os.path.join(APP_ROOT, 'outputs')
UML_GENERATOR_UPLOAD_FOLDER = os.path.join(APP_ROOT, 'uploads')
SUBMISSION_PATH = os.path.join(APP_ROOT, 'submissions/use_case')
app = Flask(__name__, static_folder='outputs')
CORS(app)
app.config.from_mapping(SECRET_KEY=os.environ.get('SECRET_KEY'),
SQLALCHEMY_DATABASE_URI=os.environ.get('SQLALCHEMY_DATABASE_URI'),
SQLALCHEMY_TRACK_MODIFICATIONS=False, JWT_SECRET_KEY=os.environ.get('JWT_SECRET_KEY'))
SQLALCHEMY_DATABASE_URI='sqlite:///database.db',
SQLALCHEMY_TRACK_MODIFICATIONS=False, JWT_SECRET_KEY='JWT_SECRET_KEY')
app.config['UML_GENERATOR_UPLOAD_FOLDER'] = UML_GENERATOR_UPLOAD_FOLDER
db.app = app
......@@ -37,6 +38,7 @@ app.register_blueprint(auth)
app.register_blueprint(module)
app.register_blueprint(assignment)
app.register_blueprint(diagram)
app.register_blueprint(submission)
@app.before_first_request
......
from config.database import db
from models.use_case_answer import UseCaseAnswer
class Actor(db.Model):
id = db.Column(db.Integer, primary_key=True)
use_case_answer = db.Column(UseCaseAnswer, nullable=False)
use_case_answer = db.Column(db.Integer, nullable=False)
text = db.Column(db.String(500), nullable=False)
x_min = db.Column(db.String(50), nullable=False)
y_min = db.Column(db.String(50), nullable=False)
x_max = db.Column(db.String(50), nullable=False)
y_max = db.Column(db.String(50), nullable=False)
plagiarism_count = db.Column(db.String(50), nullable=False)
correctness_count = db.Column(db.String(50), nullable=False)
\ No newline at end of file
correctness_count = db.Column(db.String(50), nullable=False)
def __repr__(self) -> str:
return 'Actor>>> {self.content}'
\ No newline at end of file
from config.database import db
from models.actor import Actor
from models.use_case_answer import UseCaseAnswer
class ActorGeneralizationRelationship(db.Model):
id = db.Column(db.Integer, primary_key=True)
use_case_answer = db.Column(UseCaseAnswer, nullable=False)
connected_component_01 = db.Column(Actor, nullable=False)
connected_component_02 = db.Column(Actor, nullable=False)
use_case_answer = db.Column(db.Integer, nullable=False)
connected_component_01 = db.Column(db.Integer, nullable=False)
connected_component_02 = db.Column(db.Integer, nullable=False)
plagiarism_count = db.Column(db.String(50), nullable=False)
correctness_count = db.Column(db.String(50), nullable=False)
def __repr__(self) -> str:
return 'ActorGeneralizationRelationship>>> {self.content}'
from datetime import datetime
from config.database import db
from models.user_model import User
class Assignment(db.Model):
id = db.Column(db.Integer, primary_key=True)
user = db.Column(User, nullable=False)
name = db.Column(db.String(250), nullable=False)
description = db.Column(db.String(800), nullable=False)
created_at = db.Column(db.DateTime, default=datetime.now())
start_at = db.Column(db.DateTime)
end_at = db.Column(db.DateTime)
type = db.Column(db.String(50), nullable=False)
from datetime import datetime
from config.database import db
from models.assignment import Assignment
from models.user_model import User
class ClassAnswer(db.Model):
id = db.Column(db.Integer, primary_key=True)
user = db.Column(User, nullable=False)
assignment = db.Column(Assignment, nullable=False)
user = db.Column(db.Integer, nullable=False)
assignment = db.Column(db.Integer, nullable=False)
comments = db.Column(db.String(800), nullable=False)
submitted_at = db.Column(db.DateTime, default=datetime.now())
plagiarism_count = db.Column(db.String(50))
correctness_count = db.Column(db.String(50))
file_name = db.Column(db.String(50), nullable=False)
def __repr__(self) -> str:
return 'ClassAnswer>>> {self.content}'
from config.database import db
from models.use_case import UseCase
from models.use_case_answer import UseCaseAnswer
class ExtendRelationship(db.Model):
id = db.Column(db.Integer, primary_key=True)
use_case_answer = db.Column(UseCaseAnswer, nullable=False)
connected_component_01 = db.Column(UseCase, nullable=False)
connected_component_02 = db.Column(UseCase, nullable=False)
use_case_answer = db.Column(db.Integer, nullable=False)
connected_component_01 = db.Column(db.Integer, nullable=False)
connected_component_02 = db.Column(db.Integer, nullable=False)
plagiarism_count = db.Column(db.String(50), nullable=False)
correctness_count = db.Column(db.String(50), nullable=False)
def __repr__(self) -> str:
return 'ExtendRelationship>>> {self.content}'
from config.database import db
from models.use_case import UseCase
from models.use_case_answer import UseCaseAnswer
class IncludeRelationship(db.Model):
id = db.Column(db.Integer, primary_key=True)
use_case_answer = db.Column(UseCaseAnswer, nullable=False)
connected_component_01 = db.Column(UseCase, nullable=False)
connected_component_02 = db.Column(UseCase, nullable=False)
use_case_answer = db.Column(db.Integer, nullable=False)
connected_component_01 = db.Column(db.Integer, nullable=False)
connected_component_02 = db.Column(db.Integer, nullable=False)
plagiarism_count = db.Column(db.String(50), nullable=False)
correctness_count = db.Column(db.String(50), nullable=False)
def __repr__(self) -> str:
return 'IncludeRelationship>>> {self.content}'
\ No newline at end of file
from config.database import db
from models.use_case_answer import UseCaseAnswer
class UseCase(db.Model):
id = db.Column(db.Integer, primary_key=True)
use_case_answer = db.Column(UseCaseAnswer, nullable=False)
use_case_answer = db.Column(db.Integer, nullable=False)
text = db.Column(db.String(500), nullable=False)
x_min = db.Column(db.String(50), nullable=False)
y_min = db.Column(db.String(50), nullable=False)
......@@ -12,3 +11,6 @@ class UseCase(db.Model):
y_max = db.Column(db.String(50), nullable=False)
plagiarism_count = db.Column(db.String(50), nullable=False)
correctness_count = db.Column(db.String(50), nullable=False)
def __repr__(self) -> str:
return 'UseCase>>> {self.code}'
from datetime import datetime
from config.database import db
from models.assignment import Assignment
from models.user_model import User
class UseCaseAnswer(db.Model):
id = db.Column(db.Integer, primary_key=True)
user = db.Column(User, nullable=False)
assignment = db.Column(Assignment, nullable=False)
user = db.Column(db.Integer, nullable=False)
assignment = db.Column(db.Integer, nullable=False)
comments = db.Column(db.String(800), nullable=False)
submitted_at = db.Column(db.DateTime, default=datetime.now())
plagiarism_count = db.Column(db.String(50))
correctness_count = db.Column(db.String(50))
file_name = db.Column(db.String(50), nullable=False)
def __repr__(self) -> str:
return 'UseCaseAnswer>>> {self.code}'
\ No newline at end of file
from config.database import db
from models.actor import Actor
from models.use_case import UseCase
from models.use_case_answer import UseCaseAnswer
class UseCaseAssociationRelationship(db.Model):
id = db.Column(db.Integer, primary_key=True)
use_case_answer = db.Column(UseCaseAnswer, nullable=False)
connected_component_01 = db.Column(Actor, nullable=False)
connected_component_02 = db.Column(UseCase, nullable=False)
use_case_answer = db.Column(db.Integer, nullable=False)
connected_component_01 = db.Column(db.Integer, nullable=False)
connected_component_02 = db.Column(db.Integer, nullable=False)
plagiarism_count = db.Column(db.String(50), nullable=False)
correctness_count = db.Column(db.String(50), nullable=False)
def __repr__(self) -> str:
return 'UseCaseAssociationRelationship>>> {self.code}'
from config.database import db
from models.use_case import UseCase
from models.use_case_answer import UseCaseAnswer
class UseCaseGeneralizationRelationship(db.Model):
id = db.Column(db.Integer, primary_key=True)
use_case_answer = db.Column(UseCaseAnswer, nullable=False)
connected_component_01 = db.Column(UseCase, nullable=False)
connected_component_02 = db.Column(UseCase, nullable=False)
use_case_answer = db.Column(db.Integer, nullable=False)
connected_component_01 = db.Column(db.Integer, nullable=False)
connected_component_02 = db.Column(db.Integer, nullable=False)
plagiarism_count = db.Column(db.String(50), nullable=False)
correctness_count = db.Column(db.String(50), nullable=False)
def __repr__(self) -> str:
return 'UseCaseGeneralizationRelationship>>> {self.code}'
\ No newline at end of file
import json
from flask import request, jsonify, Blueprint
from flask_jwt_extended import jwt_required, get_jwt_identity
from requests import post
from constants.http_status_codes_constant import HTTP_400_BAD_REQUEST
from models.user_model import User
from constants.http_status_codes_constant import HTTP_400_BAD_REQUEST, HTTP_200_OK
from services.submission_service import save_submission
# submissions = Blueprint('diagrams', __name__, url_prefix='/api/v1/submission')
submission = Blueprint('submissions', __name__, url_prefix='/api/v1/submissions')
@post('api/v1/submission')
@submission.post('/upload')
@jwt_required()
def submission():
def upload_submission():
user_id = get_jwt_identity()
user = User.query.filter_by(id=user_id).first()
submission_type = request.json.get('type', '')
assignment_id = request.json.get('id', '')
comment = request.json.get('comment', '')
image = request.files['file']
json_data = json.loads(request.form['data'])
submission_type = json_data['type']
assignment_id = json_data['id']
comment = json_data['comment']
if submission_type is None or image is None or assignment_id is None:
return jsonify({'err': 'invalid request '}), HTTP_400_BAD_REQUEST
elif submission_type == 'use case':
save_submission(assignment_id, image, submission_type, comment, user)
save_submission(assignment_id, image, submission_type, comment, user_id)
return HTTP_200_OK
elif submission_type == 'class':
save_submission(assignment_id, image, submission_type, comment, user)
save_submission(assignment_id, image, submission_type, comment, user_id)
return HTTP_200_OK
else:
return jsonify({'err': 'invalid request '}), HTTP_400_BAD_REQUEST
import os
import app
from datetime import datetime
from config.database import db
from models.assignment_model import Assignment
from models.class_diagram_answer import ClassAnswer
from models.use_case_answer import UseCaseAnswer
FILE_NAME = str(datetime.now())
def save_submission(assignment_id, image, submission_type, comment, user_id):
# date_now = str(datetime.now())
# file_name = image.filename + '-' + date_now+'.jpg'
def save_submission(assignment_id, image, submission_type, comment, user):
if submission_type == 'use case':
image.save(os.path.join('submissions', 'use_case', FILE_NAME))
assignment = Assignment.query.filter_by(id=assignment_id).first()
use_case_obj = UseCaseAnswer(user=user, assignment=assignment, file_name=FILE_NAME,
comment=comment)
image.save(os.path.join(app.SUBMISSION_PATH, image.filename))
use_case_obj = UseCaseAnswer(user=user_id, assignment=assignment_id, file_name=image.filename,
comments=comment)
db.session.add(use_case_obj)
db.session.commit()
else:
image.save(os.path.join('submissions', 'class', FILE_NAME))
assignment = Assignment.query.filter_by(id=assignment_id).first()
class_obj = ClassAnswer(user=user, assignment=assignment, file_name=FILE_NAME,
comment=comment)
image.save(os.path.join(app.SUBMISSION_PATH, image.filename))
class_obj = ClassAnswer(user=user_id, assignment=assignment_id, file_name=image.filename,
comments=comment)
db.session.add(class_obj)
db.session.commit()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment