Commit a0e410c8 authored by BrunoMeyer's avatar BrunoMeyer
Browse files

#226: Update grid creation and visualization & Fixer minor bugs

- Update broken links for project page on footer
- Add option of Grid Creation by JSON string
- Fix minor bugs in the grid checkage in views.py before saving the data
- Add unique condition to grid based in the pair (degree object, version name)
parent f2bd825d
Pipeline #23767 passed with stage
in 4 minutes and 34 seconds
......@@ -62,8 +62,9 @@
<div class="col-md-4">
<h3>Links</h3>
<ul>
<li><a href="http://pet.inf.ufpr.br/doku.php?id=adega">Página oficial do projeto</a></li>
<li><a href="https://gitlab.c3sl.ufpr.br/adega/adega">Código fonte</a></li>
<li><a href="https://web.inf.ufpr.br/pet/a-d-e-g-a/">Página oficial do projeto</a></li>
<li><a href="https://petcomputacaoufpr.github.io/adega/web_pages/index.html">Manual de uso</a></li>
<li><a href="https://gitlab.c3sl.ufpr.br/adega/adega">Código fonte</a></li>
<!-- <li><a href="#">Desenvolvedores</a></li> -->
</ul>
</div>
......
......@@ -11,7 +11,6 @@ def get_path(instance, filename):
class Grid(models.Model):
# version = models.IntegerField()
# version = models.CharField(max_length=40, unique=True)
version = models.CharField(max_length=40)
data_as_string = models.TextField()
......@@ -22,7 +21,9 @@ class Grid(models.Model):
related_query_name="grids",
)
class Meta:
unique_together = ('version', 'degree',)
def __str__(self):
return "Curso: {} Versão: {}".format(self.degree, self.version)
......
This diff is collapsed.
......@@ -49,11 +49,11 @@ def check_keys(grid_as_dict):
keys_error.append(item)
if len(keys_error) > 0:
msg_error = ("Houve algum erro na hora de construir a grade. "
msg_error = ("Houve algum erro durante a construção da grade. "
"Verifique se os seguintes itens estão corretos: ")
keys_error_displayname = [keys_to_displayname[x] for x in keys_error]
keys_error_str = ";".join(keys_error_displayname)
keys_error_str = "; ".join(keys_error_displayname)
return msg_error + keys_error_str
else:
return None
......@@ -68,7 +68,7 @@ def check_version(grid_as_dict):
version_error = ""
if is_empty:
version_error = "Por favor, cheque se a versão da grade foi colocada. "
version_error = "Por favor, cheque se o campo do nome da versão foi preenchido. "
return version_error
else:
return None
......@@ -110,22 +110,35 @@ def check_phase_code(grid_as_dict, all_codes):
return None
def check_course_from_json(grid_as_dict):
all_codes = check_repeated(grid_as_dict)
errors = []
keys_error_list = check_keys(grid_as_dict)
if not keys_error_list is None:
errors.append(keys_error_list)
try:
all_codes = check_repeated(grid_as_dict)
except:
errors.append("Um erro inesperado aconteceu durante a verificação da grade e dos códigos repetidos")
all_codes = None
try:
keys_error_list = check_keys(grid_as_dict)
if not keys_error_list is None:
errors.append(keys_error_list)
except:
errors.append("Um erro inesperado aconteceu durante a verificação dos campos")
version_error_list = check_version(grid_as_dict)
if not version_error_list is None:
errors.append(version_error_list)
phase_code_error_list = check_phase_code(grid_as_dict, all_codes)
if not phase_code_error_list is None:
errors.append(phase_code_error_list)
try:
version_error_list = check_version(grid_as_dict)
if not version_error_list is None:
errors.append(version_error_list)
except:
errors.append("Um erro inesperado aconteceu durante a verificação do nome da versão")
if not all_codes is None:
try:
phase_code_error_list = check_phase_code(grid_as_dict, all_codes)
if not phase_code_error_list is None:
errors.append(phase_code_error_list)
except:
errors.append("Um erro inesperado aconteceu durante a verificação das fases da grade")
return errors
......@@ -191,9 +204,17 @@ class GridCreate(View):
grid_as_json_string = json.dumps(grid_as_dict, indent=4, sort_keys=True)
# print(grid_as_dict)
error_list = check_course_from_json(grid_as_dict)
grid_version = grid_as_dict["version"]
dg = Degree.objects.get(code=degree_code)
if Grid.objects.filter(degree=dg, version=grid_version).exists():
error_list.append("Já existe uma versão com esse nome associada no banco de dados")
if len(grid_version) > 40:
error_list.append("O nome da versão deve conter 40 caracteres ou menos")
if len(error_list) > 0:
context = {
'status': '400', 'reason': error_list
......@@ -203,8 +224,8 @@ class GridCreate(View):
response.status_code = 400
return response
grid_version = grid_as_dict["version"]
dg = Degree.objects.get(code=degree_code)
new_grid = Grid(degree=dg, version=grid_version,
data_as_string=grid_as_json_string)
new_grid.save()
......
......@@ -44,7 +44,8 @@
<div class="col-md-4">
<h3>Links</h3>
<ul>
<li><a href="http://pet.inf.ufpr.br/doku.php?id=adega">Página oficial do projeto</a></li>
<li><a href="https://web.inf.ufpr.br/pet/a-d-e-g-a/">Página oficial do projeto</a></li>
<li><a href="https://petcomputacaoufpr.github.io/adega/web_pages/index.html">Manual de uso</a></li>
<li><a href="https://gitlab.c3sl.ufpr.br/adega/adega">Código fonte</a></li>
<!-- <li><a href="#">Desenvolvedores</a></li> -->
</ul>
......
......@@ -29,7 +29,7 @@
<a class="nav-item nav-link active" href="#resumo" aria-controls="resumo" data-toggle="tab">Resumo</a>
<a class="nav-item nav-link" href="#disciplinas" aria-controls="disciplinas" data-toggle="tab">Lista de Disciplinas</a>
{% for grid_info, grid_extra, version in analysis_result.grid_list %}
<a class="nav-item nav-link" href="#grid_{{version}}" aria-controls="grid" data-toggle="tab">Grade - Versão: {{version}}</a>
<a class="nav-item nav-link" href="#grid_{{forloop.counter0}}" aria-controls="grid" data-toggle="tab">Grade - Versão: {{version}}</a>
{% endfor %}
</div>
</div>
......@@ -38,7 +38,7 @@
<div class="tab-content">
<!-- TODO: Add dynamic grid for each degree -->
{% for grid_info, grid_extra, version in analysis_result.grid_list %}
<div role="tabpanel" class="tab-pane" id="grid_{{version}}">
<div role="tabpanel" class="tab-pane" id="grid_{{forloop.counter0}}">
<br>
<div class="grade">
{% for semester in grid_info%}
......
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