Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
2
2022-158
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
2
Merge Requests
2
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
2022-158
2022-158
Commits
09e3ec02
Commit
09e3ec02
authored
Sep 01, 2022
by
Jayasith H.B.C
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix(assignmentSubmissionError) change the models
parent
424cb2b0
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
77 additions
and
81 deletions
+77
-81
backend/app.py
backend/app.py
+5
-3
backend/models/actor.py
backend/models/actor.py
+5
-3
backend/models/actor_generalization_relationship.py
backend/models/actor_generalization_relationship.py
+6
-5
backend/models/assignment.py
backend/models/assignment.py
+0
-14
backend/models/class_diagram_answer.py
backend/models/class_diagram_answer.py
+5
-4
backend/models/extend_relationship.py
backend/models/extend_relationship.py
+5
-5
backend/models/include_relationship.py
backend/models/include_relationship.py
+6
-5
backend/models/use_case.py
backend/models/use_case.py
+4
-2
backend/models/use_case_answer.py
backend/models/use_case_answer.py
+5
-4
backend/models/use_case_association_relationship.py
backend/models/use_case_association_relationship.py
+6
-6
backend/models/use_case_generalization_relationship.py
backend/models/use_case_generalization_relationship.py
+6
-5
backend/routes/submission_routes.py
backend/routes/submission_routes.py
+14
-14
backend/services/submission_service.py
backend/services/submission_service.py
+10
-11
backend/submissions/use_case/usecase01.jpg
backend/submissions/use_case/usecase01.jpg
+0
-0
No files found.
backend/app.py
View file @
09e3ec02
...
...
@@ -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
...
...
backend/models/actor.py
View file @
09e3ec02
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
(
UseCaseAnsw
er
,
nullable
=
False
)
use_case_answer
=
db
.
Column
(
db
.
Integ
er
,
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
backend/models/actor_generalization_relationship.py
View file @
09e3ec02
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
(
UseCaseAnsw
er
,
nullable
=
False
)
connected_component_01
=
db
.
Column
(
Acto
r
,
nullable
=
False
)
connected_component_02
=
db
.
Column
(
Acto
r
,
nullable
=
False
)
use_case_answer
=
db
.
Column
(
db
.
Integ
er
,
nullable
=
False
)
connected_component_01
=
db
.
Column
(
db
.
Intege
r
,
nullable
=
False
)
connected_component_02
=
db
.
Column
(
db
.
Intege
r
,
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}'
backend/models/assignment.py
deleted
100644 → 0
View file @
424cb2b0
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
)
backend/models/class_diagram_answer.py
View file @
09e3ec02
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
(
Us
er
,
nullable
=
False
)
assignment
=
db
.
Column
(
Assignment
,
nullable
=
False
)
user
=
db
.
Column
(
db
.
Integ
er
,
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}'
backend/models/extend_relationship.py
View file @
09e3ec02
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
(
UseCaseAnsw
er
,
nullable
=
False
)
connected_component_01
=
db
.
Column
(
UseCase
,
nullable
=
False
)
connected_component_02
=
db
.
Column
(
UseCase
,
nullable
=
False
)
use_case_answer
=
db
.
Column
(
db
.
Integ
er
,
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}'
backend/models/include_relationship.py
View file @
09e3ec02
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
(
UseCaseAnsw
er
,
nullable
=
False
)
connected_component_01
=
db
.
Column
(
UseCase
,
nullable
=
False
)
connected_component_02
=
db
.
Column
(
UseCase
,
nullable
=
False
)
use_case_answer
=
db
.
Column
(
db
.
Integ
er
,
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
backend/models/use_case.py
View file @
09e3ec02
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
(
UseCaseAnsw
er
,
nullable
=
False
)
use_case_answer
=
db
.
Column
(
db
.
Integ
er
,
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}'
backend/models/use_case_answer.py
View file @
09e3ec02
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
(
Us
er
,
nullable
=
False
)
assignment
=
db
.
Column
(
Assignment
,
nullable
=
False
)
user
=
db
.
Column
(
db
.
Integ
er
,
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
backend/models/use_case_association_relationship.py
View file @
09e3ec02
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
(
UseCaseAnsw
er
,
nullable
=
False
)
connected_component_01
=
db
.
Column
(
Acto
r
,
nullable
=
False
)
connected_component_02
=
db
.
Column
(
UseCase
,
nullable
=
False
)
use_case_answer
=
db
.
Column
(
db
.
Integ
er
,
nullable
=
False
)
connected_component_01
=
db
.
Column
(
db
.
Intege
r
,
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}'
backend/models/use_case_generalization_relationship.py
View file @
09e3ec02
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
(
UseCaseAnsw
er
,
nullable
=
False
)
connected_component_01
=
db
.
Column
(
UseCase
,
nullable
=
False
)
connected_component_02
=
db
.
Column
(
UseCase
,
nullable
=
False
)
use_case_answer
=
db
.
Column
(
db
.
Integ
er
,
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
backend/routes/submission_routes.py
View file @
09e3ec02
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
backend/services/submission_service.py
View file @
09e3ec02
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
()
backend/submissions/use_case/usecase01.jpg
0 → 100644
View file @
09e3ec02
50 KB
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment