Skip to content

Commit 4128a2a

Browse files
committed
Add project name in english
1 parent 0f2ea53 commit 4128a2a

File tree

21 files changed

+181
-80
lines changed

21 files changed

+181
-80
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
ALTER TABLE project RENAME COLUMN name_es TO name;
2+
ALTER TABLE project DROP COLUMN name_en;
3+
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ALTER TABLE project RENAME COLUMN name TO name_es;
2+
ALTER TABLE project ADD COLUMN name_en VARCHAR(255) NOT NULL DEFAULT '';

backend/src/admin/resources/admin_graphql/__init__.py

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,13 @@ class Mutation:
8989
def createProject(
9090
self,
9191
info: strawberry.Info[GraphQLContext],
92-
name: typing.Annotated[
93-
str, strawberry.argument(description="The name of the new project.")
92+
name_es: typing.Annotated[
93+
str,
94+
strawberry.argument(description="The name of the new project in Spanish."),
95+
],
96+
name_en: typing.Annotated[
97+
str,
98+
strawberry.argument(description="The name of the new project in English."),
9499
],
95100
description_es: typing.Annotated[
96101
str,
@@ -112,7 +117,7 @@ def createProject(
112117
],
113118
) -> schemas.Project:
114119
return info.context["resource_manager"].create_project(
115-
name, description_es, description_en, area
120+
name_es, name_en, description_es, description_en, area
116121
)
117122

118123
@strawberry.mutation(
@@ -136,9 +141,13 @@ def updateProject(
136141
id: typing.Annotated[
137142
int, strawberry.argument(description="The ID of the project to update.")
138143
],
139-
name: typing.Annotated[
144+
name_es: typing.Annotated[
140145
typing.Optional[str],
141-
strawberry.argument(description="The new name of the project."),
146+
strawberry.argument(description="The new name of the project in Spanish."),
147+
] = None,
148+
name_en: typing.Annotated[
149+
typing.Optional[str],
150+
strawberry.argument(description="The new name of the project in English."),
142151
] = None,
143152
description_es: typing.Annotated[
144153
typing.Optional[str],
@@ -178,7 +187,15 @@ def updateProject(
178187
] = None,
179188
) -> typing.Optional[schemas.Project]:
180189
return info.context["resource_manager"].update_project(
181-
id, name, description_es, description_en, area, thumbnail, index, public
190+
id,
191+
name_es,
192+
name_en,
193+
description_es,
194+
description_en,
195+
area,
196+
thumbnail,
197+
index,
198+
public,
182199
)
183200

184201
@strawberry.mutation(description="Creates a new space.")

backend/src/admin/resources/resource_manager.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,19 @@ def __init__(self, database_manager: AdminDatabaseManager):
2626
self.allow_private = True
2727

2828
def create_project(
29-
self, name: str, description_es: str, description_en: str, area: int
29+
self,
30+
name_es: str,
31+
name_en: str,
32+
description_es: str,
33+
description_en: str,
34+
area: int,
3035
) -> schemas.Project:
3136
"""Creates a new project. Data validation is assumed."""
3237
project_data = self.database_manager.query(
3338
"""
34-
INSERT INTO project (name, description_es, description_en, area) VALUES (%s, %s, %s, %s) RETURNING *;
39+
INSERT INTO project (name_es, name_en, description_es, description_en, area) VALUES (%s, %s, %s, %s, %s) RETURNING *;
3540
""",
36-
(name, description_es, description_en, area),
41+
(name_es, name_en, description_es, description_en, area),
3742
1,
3843
)
3944

@@ -64,7 +69,8 @@ async def delete_project(self, id: int, info: Info[GraphQLContext]) -> bool:
6469
def update_project(
6570
self,
6671
id: int,
67-
name: str | None = None,
72+
name_es: str | None = None,
73+
name_en: str | None = None,
6874
description_es: str | None = None,
6975
description_en: str | None = None,
7076
area: int | None = None,
@@ -108,14 +114,15 @@ def update_project(
108114
return self.database_manager.query(
109115
"""
110116
UPDATE project SET
111-
name = COALESCE(%s, name),
117+
name_es = COALESCE(%s, name_es),
118+
name_en = COALESCE(%s, name_en),
112119
description_es = COALESCE(%s, description_es),
113120
description_en = COALESCE(%s, description_en),
114121
area = COALESCE(%s, area),
115122
public = COALESCE(%s, public)
116123
WHERE id = %s RETURNING *;
117124
""",
118-
(name, description_es, description_en, area, public, id),
125+
(name_es, name_en, description_es, description_en, area, public, id),
119126
count=1,
120127
row_factory=rows.class_row(schemas.Project),
121128
)

backend/src/common/common_graphql/schemas.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
@strawberry.type(description="The main structure of the database.")
1212
class Project:
1313
id: int = strawberry.field(description="The ID of the project in the database.")
14-
name: str = strawberry.field(description="The name of the project.")
14+
name_es: str = strawberry.field(description="The name of the project in Spanish.")
15+
name_en: str = strawberry.field(description="The name of the project in English.")
1516
description_es: str = (
1617
strawberry.field(
1718
description="The description of the project in Spanish written in markdown format."

frontend/admin/src/lib/utilities/yupSchemas.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ export const signUpForm = object({
2323
});
2424

2525
export const projectCreateSchema = object({
26-
name: string().required("Nombre requerido.").min(5, "Nombre debe tener un mínimo de 5 caracteres"),
26+
nameEs: string().required("Nombre requerido.").min(5, "Nombre debe tener un mínimo de 5 caracteres"),
27+
nameEn: string().required("Nombre requerido.").min(5, "Nombre debe tener un mínimo de 5 caracteres"),
2728
area: number().default(1).min(1, "El debe ser mayor a cero."),
2829
descriptionEs: string().required("Descripción requerida."),
2930
descriptionEn: string().required("Descripción en ingles requerida")

frontend/admin/src/routes/proyectos/+page.svelte

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@
6767
alt={project.thumbnail?.altTextEs}
6868
class="h-full"
6969
/>
70-
<p class="font-Agency-FB ml-2 text-xl text-white">{project.name}</p>
70+
<p class="font-Agency-FB ml-2 text-xl text-white">
71+
{project.nameEs} ({project.nameEn})
72+
</p>
7173
</a>
7274
</div>
7375
{/each}

frontend/admin/src/routes/proyectos/+page.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ export const load = async ({ fetch }) => {
55
query getProjects($name: String) {
66
projects(name: $name) {
77
id
8-
name
8+
nameEs
9+
nameEn
910
public
1011
thumbnail {
1112
filename

frontend/admin/src/routes/proyectos/[proyectoID]/+page.svelte

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
let projectData = $state(data.projectData!);
2020
let originalSpaceNames: string[] = $state(projectData.spaces.map((space: any) => space.name));
2121
let submitting: boolean = $state(false);
22-
let englishDesc: boolean = $state(false);
22+
let english: boolean = $state(false);
2323
2424
let sortable: Sortable | undefined = $state();
2525
let originalOrder: string[] = $state(projectData.spaces.map((x: { id: string }) => x.id));
@@ -44,9 +44,10 @@
4444
async onUpdate({ form: updateForm }) {
4545
if (updateForm.valid) {
4646
const query = `
47-
mutation updateProject($id: Int!, $name: String, $descriptionEs: String, $descriptionEn: String, $area: Int) {
48-
updateProject(id: $id, name: $name, descriptionEs: $descriptionEs, descriptionEn: $descriptionEn, area: $area) {
49-
name
47+
mutation updateProject($id: Int!, $nameEs: String, $nameEn: String, $descriptionEs: String, $descriptionEn: String, $area: Int) {
48+
updateProject(id: $id, nameEs: $nameEs, nameEn: $nameEn, descriptionEs: $descriptionEs, descriptionEn: $descriptionEn, area: $area) {
49+
nameEs
50+
nameEn
5051
descriptionEs
5152
descriptionEn
5253
area
@@ -55,14 +56,16 @@
5556
`;
5657
const variables = {
5758
id: projectData.id,
58-
name: updateForm.data.name,
59+
nameEs: updateForm.data.nameEs,
60+
nameEn: updateForm.data.nameEn,
5961
descriptionEs: updateForm.data.descriptionEs,
6062
descriptionEn: updateForm.data.descriptionEn,
6163
area: updateForm.data.area
6264
};
6365
6466
const updateProject = (await graphql(query, variables)).updateProject;
65-
$form.name = updateProject.name;
67+
$form.nameEs = updateProject.nameEs;
68+
$form.nameEn = updateProject.nameEn;
6669
$form.descriptionEs = updateProject.descriptionEs;
6770
$form.descriptionEn = updateProject.descriptionEn;
6871
$form.area = updateProject.area;
@@ -218,12 +221,21 @@
218221
>
219222
<div class="text-3xl">
220223
<div class="w-1/2 flex items-center input-container">
221-
<input
222-
type="text"
223-
id="project-name"
224-
class="outline-0 font-Agency-FB"
225-
bind:value={$form.name}
226-
/>
224+
{#if english}
225+
<input
226+
type="text"
227+
id="project-name"
228+
class="outline-0 font-Agency-FB"
229+
bind:value={$form.nameEn}
230+
/>
231+
{:else}
232+
<input
233+
type="text"
234+
id="project-name"
235+
class="outline-0 font-Agency-FB"
236+
bind:value={$form.nameEs}
237+
/>
238+
{/if}
227239
<label for="project-name" class="material-symbols-outlined"> edit </label>
228240
</div>
229241
<div class="h-0.5 w-full bg-vector-grey input-underline"></div>
@@ -247,11 +259,11 @@
247259
<div class="flex gap-2 items-center mb-2">
248260
<label for="description" class="block mb-2 text-2xl">Descripción</label>
249261
<label for="en-desc" class="bg-vector-orange border-2 border-black p-1"
250-
>{englishDesc ? 'Ingles' : 'Español'}</label
262+
>{english ? 'Ingles' : 'Español'}</label
251263
>
252-
<input type="checkbox" id="en-desc" hidden bind:checked={englishDesc} />
264+
<input type="checkbox" id="en-desc" hidden bind:checked={english} />
253265
</div>
254-
{#if englishDesc}
266+
{#if english}
255267
<textarea
256268
id="description"
257269
bind:value={$form.descriptionEn}
@@ -267,7 +279,9 @@
267279
</div>
268280
<button
269281
class="bg-vector-cream hover:brightness-75 transition-colors p-1 rounded-md cursor-pointer"
270-
>Actualizar
282+
type="submit"
283+
>
284+
Actualizar
271285
</button>
272286
</fieldset>
273287
</form>

frontend/admin/src/routes/proyectos/[proyectoID]/+page.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ export async function load({ params, fetch }) {
1313
query getProject($id: Int!) {
1414
project(id: $id) {
1515
id
16-
name
16+
nameEs
17+
nameEn
1718
descriptionEs
1819
descriptionEn
1920
area
@@ -44,7 +45,8 @@ export async function load({ params, fetch }) {
4445
const projectData = (await graphql(query, variables, fetch)).project;
4546

4647
const formData = {
47-
name: projectData.name,
48+
nameEs: projectData.nameEs,
49+
nameEn: projectData.nameEn,
4850
descriptionEs: projectData.descriptionEs,
4951
descriptionEn: projectData.descriptionEn,
5052
area: projectData.area

0 commit comments

Comments
 (0)