Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: nouvelle structure des métadonnées d'un article #1100

Merged

Conversation

ggrossetie
Copy link
Collaborator

No description provided.

Copy link

netlify bot commented Nov 14, 2024

Deploy Preview for stylo-docs canceled.

Name Link
🔨 Latest commit f69d0d7
🔍 Latest deploy log https://app.netlify.com/sites/stylo-docs/deploys/674ecc19370bd40008285c39

Copy link

netlify bot commented Nov 14, 2024

Deploy Preview for stylo-dev ready!

Name Link
🔨 Latest commit f69d0d7
🔍 Latest deploy log https://app.netlify.com/sites/stylo-dev/deploys/674ecc1948e1410008931154
😎 Deploy Preview https://deploy-preview-1100--stylo-dev.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@ggrossetie
Copy link
Collaborator Author

Preview : https://rjsf-team.github.io/react-jsonschema-form/#eyJmb3JtRGF0YSI6eyJrZXl3b3JkcyI6W10sImZpcnN0TmFtZSI6IkNodWNrIiwibGFzdE5hbWUiOiJOb3JyaXMiLCJhZ2UiOjc1LCJiaW8iOiJSb3VuZGhvdXNlIGtpY2tpbmcgYXNzZXMgc2luY2UgMTk0MCIsInBhc3N3b3JkIjoibm9uZWVkIiwidGVsZXBob25lIjoiMS04MDAtS0lDS0FTUyJ9LCJzY2hlbWEiOnsiJHNjaGVtYSI6Imh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1hIiwiJGlkIjoiaHR0cHM6Ly9zdHlsby5odW1hLW51bS5mci9zY2hlbWFzL2FydGljbGUtbWV0YWRhdGEuc2NoZW1hLmpzb24iLCJ0aXRsZSI6IkFydGljbGUgbWV0YWRhdGEiLCJ0eXBlIjoib2JqZWN0IiwiZGVmaW5pdGlvbnMiOnsibGFuZyI6eyJ0eXBlIjoic3RyaW5nIiwiZW51bSI6WyJmciIsImVuIiwiaXQiLCJlcyIsInB0IiwiZGUiLCJ1ayIsImFyIl19LCJwZXJzb24iOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsic3VybmFtZSI6eyJ0eXBlIjoic3RyaW5nIiwidGl0bGUiOiJMYXN0IG5hbWUifSwiZm9ybmFtZSI6eyJ0eXBlIjoic3RyaW5nIiwidGl0bGUiOiJGaXJzdCBuYW1lIn0sImFmZmlsaWF0aW9ucyI6eyJ0eXBlIjoic3RyaW5nIiwidGl0bGUiOiJBZmZpbGlhdGlvbnMifSwiYmlvZ3JhcGh5Ijp7InR5cGUiOiJzdHJpbmciLCJ0aXRsZSI6IkJpb2dyYXBoeSJ9LCJlbWFpbCI6eyJ0eXBlIjoic3RyaW5nIiwidGl0bGUiOiJFbWFpbCJ9LCJvcmNpZCI6eyJ0eXBlIjoic3RyaW5nIiwidGl0bGUiOiJPUkNJRCJ9LCJ2aWFmIjp7InR5cGUiOiJzdHJpbmciLCJ0aXRsZSI6IlZJQUYifSwiZm9hZiI6eyJ0eXBlIjoic3RyaW5nIiwidGl0bGUiOiJGT0FGIn0sImlzbmkiOnsidHlwZSI6InN0cmluZyIsInRpdGxlIjoiSVNOSSJ9LCJ3aWtpZGF0YSI6eyJ0eXBlIjoic3RyaW5nIiwidGl0bGUiOiJXaWtpZGF0YSJ9fX0sImxvY2FsaXplZENvbnRlbnQiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsibGFuZyI6eyIkcmVmIjoiIy9kZWZpbml0aW9ucy9sYW5nIn0sInRpdGxlIjp7InR5cGUiOiJzdHJpbmcifSwic3VidGl0bGUiOnsidHlwZSI6InN0cmluZyJ9LCJhYnN0cmFjdCI6eyJ0eXBlIjoic3RyaW5nIn0sImtleXdvcmRzIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifX19fX0sInByb3BlcnRpZXMiOnsidHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwiY29uc3QiOiJhcnRpY2xlIn0sIkB2ZXJzaW9uIjp7InR5cGUiOiJzdHJpbmciLCJjb25zdCI6IjEuMCJ9LCJpZCI6eyJ0eXBlIjoic3RyaW5nIn0sInB1YmxpY2F0aW9uRGF0ZSI6eyJ0eXBlIjoic3RyaW5nIiwiZm9ybWF0IjoiZGF0ZSJ9LCJ1cmwiOnsidHlwZSI6InN0cmluZyIsImZvcm1hdCI6InVyaSJ9LCJsaWNlbnNlIjp7InR5cGUiOiJzdHJpbmcifSwibG9jYWxpemVkQ29udGVudCI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9kZWZpbml0aW9ucy9sb2NhbGl6ZWRDb250ZW50In19LCJhdXRob3JzIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2RlZmluaXRpb25zL3BlcnNvbiJ9fSwicmV2aWV3ZXJzIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2RlZmluaXRpb25zL3BlcnNvbiJ9fSwidHJhbnNjcmliZXJzIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2RlZmluaXRpb25zL3BlcnNvbiJ9fSwidHJhbnNsYXRvcnMiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiJHJlZiI6IiMvZGVmaW5pdGlvbnMvcGVyc29uIn19LCJ0cmFuc2xhdGlvbnMiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsidGl0bGUiOnsidHlwZSI6InN0cmluZyJ9LCJ1cmwiOnsidHlwZSI6InN0cmluZyJ9LCJsYW5nIjp7IiRyZWYiOiIjL2RlZmluaXRpb25zL2xhbmcifX19fSwiaXNzdWUiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsidGl0bGUiOnsidHlwZSI6InN0cmluZyJ9LCJpZGVudGlmaWVyIjp7InR5cGUiOiJzdHJpbmcifSwibnVtYmVyIjp7InR5cGUiOiJzdHJpbmcifX19LCJpc3N1ZURpcmVjdG9ycyI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9kZWZpbml0aW9ucy9wZXJzb24ifX0sInByb2R1Y3Rpb24iOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaXNzbiI6eyJ0eXBlIjoic3RyaW5nIn0sInByb2R1Y2VyIjp7InR5cGUiOiJzdHJpbmcifSwicHJvZE51bSI6eyJ0eXBlIjoic3RyaW5nIn0sImRpZmZOdW0iOnsidHlwZSI6InN0cmluZyJ9fX0sImpvdXJuYWwiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsibmFtZSI6eyJ0eXBlIjoic3RyaW5nIn0sInB1Ymxpc2hlciI6eyJ0eXBlIjoic3RyaW5nIn0sImVtYWlsIjp7InR5cGUiOiJzdHJpbmcifSwidXJsIjp7InR5cGUiOiJzdHJpbmcifX19LCJqb3VybmFsRGlyZWN0b3JzIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2RlZmluaXRpb25zL3BlcnNvbiJ9fX0sImFsbE9mIjpbeyIkcmVmIjoiIy9kZWZpbml0aW9ucy9sb2NhbGl6ZWRDb250ZW50In1dfSwidWlTY2hlbWEiOnsiZmlyc3ROYW1lIjp7InVpOmF1dG9mb2N1cyI6dHJ1ZSwidWk6ZW1wdHlWYWx1ZSI6IiIsInVpOnBsYWNlaG9sZGVyIjoidWk6ZW1wdHlWYWx1ZSBjYXVzZXMgdGhpcyBmaWVsZCB0byBhbHdheXMgYmUgdmFsaWQgZGVzcGl0ZSBiZWluZyByZXF1aXJlZCIsInVpOmF1dG9jb21wbGV0ZSI6ImZhbWlseS1uYW1lIiwidWk6ZW5hYmxlTWFya2Rvd25JbkRlc2NyaXB0aW9uIjp0cnVlLCJ1aTpkZXNjcmlwdGlvbiI6Ik1ha2UgdGV4dCAqKmJvbGQqKiBvciAqaXRhbGljKi4gVGFrZSBhIGxvb2sgYXQgb3RoZXIgb3B0aW9ucyBbaGVyZV0oaHR0cHM6Ly9tYXJrZG93bi10by1qc3gucXVhbnRpem9yLmRldi8pLiJ9LCJsYXN0TmFtZSI6eyJ1aTphdXRvY29tcGxldGUiOiJnaXZlbi1uYW1lIiwidWk6ZW5hYmxlTWFya2Rvd25JbkRlc2NyaXB0aW9uIjp0cnVlLCJ1aTpkZXNjcmlwdGlvbiI6Ik1ha2UgdGhpbmdzICoqYm9sZCoqIG9yICppdGFsaWMqLiBFbWJlZCBzbmlwcGV0cyBvZiBgY29kZWAuIDxzbWFsbD5BbmQgdGhpcyBpcyBhIHNtYWxsIHRleHRzLjwvc21hbGw+ICJ9LCJhZ2UiOnsidWk6d2lkZ2V0IjoidXBkb3duIiwidWk6dGl0bGUiOiJBZ2Ugb2YgcGVyc29uIiwidWk6ZGVzY3JpcHRpb24iOiIoZWFydGggeWVhcikifSwiYmlvIjp7InVpOndpZGdldCI6InRleHRhcmVhIn0sInBhc3N3b3JkIjp7InVpOndpZGdldCI6InBhc3N3b3JkIiwidWk6aGVscCI6IkhpbnQ6IE1ha2UgaXQgc3Ryb25nISJ9LCJ0ZWxlcGhvbmUiOnsidWk6b3B0aW9ucyI6eyJpbnB1dFR5cGUiOiJ0ZWwifX19LCJ0aGVtZSI6ImRlZmF1bHQiLCJsaXZlU2V0dGluZ3MiOnsic2hvd0Vycm9yTGlzdCI6InRvcCIsInZhbGlkYXRlIjpmYWxzZSwiZGlzYWJsZWQiOmZhbHNlLCJub0h0bWw1VmFsaWRhdGUiOmZhbHNlLCJyZWFkb25seSI6ZmFsc2UsIm9taXRFeHRyYURhdGEiOmZhbHNlLCJsaXZlT21pdCI6ZmFsc2UsImV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IiOnsiYXJyYXlNaW5JdGVtcyI6InBvcHVsYXRlIiwiYWxsT2YiOiJza2lwRGVmYXVsdHMiLCJlbXB0eU9iamVjdEZpZWxkcyI6InBvcHVsYXRlQWxsRGVmYXVsdHMiLCJtZXJnZURlZmF1bHRzSW50b0Zvcm1EYXRhIjoidXNlRm9ybURhdGFJZlByZXNlbnQifX19

@ggrossetie
Copy link
Collaborator Author

Exemple de métadonnées avec la structure actuelle :

{
  "abstract": [
    {
      "lang": "fr",
      "text_f": "Une honte totale nous envahit, à proportion de la stupeur du 24 février dernier. Quatre millions de personnes, surtout des femmes et des enfants, ont fui le risque mortel et connaissent les affres de l’exil. Six millions d’Ukrainiens de plus durent abandonner leur maison pour un lieu moins menacé du territoire national. La Russie a gagné : l’Ukraine détruite a perdu sa souveraineté, le temps des zones d’influence et des pactes militaires est de retour. La nouvelle guerre froide sera arbitrée par les puissances asiatiques, tandis que les soutiens dévoyés à la Russie de Poutine devront ravaler leurs inepties criminelles."
    },
    {
      "lang": "en",
      "text_f": "We are ashamed of ourselves, in proportion to the shock of February 24. Four million people, mostly women and children, have fled the mortal danger and are experiencing the agony of exile. Six million more Ukrainians had to abandon their homes for a less threatened part of the country. Russia has won: the destroyed Ukraine has lost its sovereignty, the time of zones of influence and military pacts has returned. The new Cold War will be mediated by the Asian powers, while the misguided supporters of Putin's Russia will have to swallow their criminal ineptitudes."
    }
  ],
  "authors": [
    {
      "forname": "Gérard",
      "orcid": "0000-0002-6651-1650",
      "surname": "Wormser"
    }
  ],
  "controlledKeywords": [
    {
      "idRameau": "FRBNF119313017",
      "label": "Europe",
      "uriRameau": "http://catalogue.bnf.fr/ark:/12148/cb11931301w"
    },
    {
      "idRameau": "FRBNF13318436",
      "label": "Guerre et conflit",
      "uriRameau": "http://catalogue.bnf.fr/ark:/12148/cb13318436b/"
    },
    {
      "idRameau": "FRBNF11975806",
      "label": "Politique et société",
      "uriRameau": "http://catalogue.bnf.fr/ark:/12148/cb11975806s"
    }
  ],
  "date": "2022-04-14",
  "diffnum": "Érudit",
  "director": [
    {
      "forname": "Gérard",
      "orcid": "0000-0002-6651-1650 ",
      "surname": "Wormser"
    }
  ],
  "id": "SP1637",
  "issnnum": "2104-3272",
  "journal": "Sens public",
  "keywords": [
    {
      "lang": "fr",
      "list_f": [
        "Honte",
        "Ukraine",
        "Gauche",
        "Poutine",
        "Exil",
        "Photographie",
        "Presse"
      ]
    },
    {
      "lang": "en",
      "list_f": [
        "Shame",
        "Ukraine",
        "Left-wing",
        "Exile",
        "Photography",
        "Media"
      ]
    }
  ],
  "lang": "fr",
  "link-citations": true,
  "logocredits": "Volodymyr Zelensky visite Boutcha dévastée, à la veille de son intervention aux Nations-Unies. Le président ukrainien est sur *tous* les fronts depuis le 24 février 2022, son énergie a transcendé une situation impossible pour résister à l'invasion russe, renforcer l'appui militaire américain et européen, et galvaniser tant les corps d'armée que les secouristes et une population en état de choc.",
  "prod": "Sens public",
  "prodnum": "Sens public",
  "publisher": "Département des littératures de langue française",
  "rights": "Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)",
  "title_f": "Honteux, désarmés, décidés ! ",
  "typeArticle": [
    "Essai"
  ],
  "url_article": "/articles/1637"
}

Avec la nouvelle structure :

{
  "type": "article",
  "@version": "1.0",
  "id": "SP1637",
  "url": "/articles/1637",
  "publicationDate": "2022-04-14",
  "license": "CC-BY-SA-4.0",
  "lang": "fr",
  "title": "Honteux, désarmés, décidés !",
  "abstract":"Une honte totale nous envahit, à proportion de la stupeur du 24 février dernier. Quatre millions de personnes, surtout des femmes et des enfants, ont fui le risque mortel et connaissent les affres de l’exil. Six millions d’Ukrainiens de plus durent abandonner leur maison pour un lieu moins menacé du territoire national. La Russie a gagné : l’Ukraine détruite a perdu sa souveraineté, le temps des zones d’influence et des pactes militaires est de retour. La nouvelle guerre froide sera arbitrée par les puissances asiatiques, tandis que les soutiens dévoyés à la Russie de Poutine devront ravaler leurs inepties criminelles.",
  "keywords": [
    "Honte",
    "Ukraine",
    "Gauche",
    "Poutine",
    "Exil",
    "Photographie",
    "Presse"
  ],
  "localizedContent": [
    {
      "lang": "en",
      "abstract":"We are ashamed of ourselves, in proportion to the shock of February 24. Four million people, mostly women and children, have fled the mortal danger and are experiencing the agony of exile. Six million more Ukrainians had to abandon their homes for a less threatened part of the country. Russia has won: the destroyed Ukraine has lost its sovereignty, the time of zones of influence and military pacts has returned. The new Cold War will be mediated by the Asian powers, while the misguided supporters of Putin's Russia will have to swallow their criminal ineptitudes.",
      "keywords": [
        "Shame",
        "Ukraine",
        "Left-wing",
        "Exile",
        "Photography",
        "Media"
      ]
    }
  ],
  "authors": [
    {
      "forname": "Gérard",
      "orcid": "0000-0002-6651-1650",
      "surname": "Wormser"
    }
  ],
  "controlledKeywords": [
    {
      "idRameau": "FRBNF119313017",
      "label": "Europe",
      "uriRameau": "http://catalogue.bnf.fr/ark:/12148/cb11931301w"
    },
    {
      "idRameau": "FRBNF13318436",
      "label": "Guerre et conflit",
      "uriRameau": "http://catalogue.bnf.fr/ark:/12148/cb13318436b/"
    },
    {
      "idRameau": "FRBNF11975806",
      "label": "Politique et société",
      "uriRameau": "http://catalogue.bnf.fr/ark:/12148/cb11975806s"
    }
  ],
  "production": {
    "issn": "2104-3272",
    "diffnum": "Érudit",
    "producer": "Sens public",
    "prodNum": "Sens public"
  },
  "journal": {
    "name": "Sens public",
    "publisher": "Département des littératures de langue française"
  },
  "journalDirectors": [
    {
      "forname": "Gérard",
      "orcid": "0000-0002-6651-1650 ",
      "surname": "Wormser"
    }
  ],
  "@extra": {
    "logocredits": "Volodymyr Zelensky visite Boutcha dévastée, à la veille de son intervention aux Nations-Unies. Le président ukrainien est sur *tous* les fronts depuis le 24 février 2022, son énergie a transcendé une situation impossible pour résister à l'invasion russe, renforcer l'appui militaire américain et européen, et galvaniser tant les corps d'armée que les secouristes et une population en état de choc."
  }
}

@ggrossetie ggrossetie force-pushed the feat/article-metadata-schema branch from 2005b06 to cc94600 Compare November 18, 2024 16:09
@ggrossetie ggrossetie marked this pull request as ready for review November 26, 2024 22:03
},
abstract: abstract,
articleslies: [], // MISSING!
authors: metadata.authors,
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Créer une méthode permettant de mapper les personnes, notamment le fait de mapper forename vers forname (legacy)

publicationDate: metadata.date,
url: metadata.url_article,
license: metadata.rights,
authors: metadata.authors,
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Créer une méthode permettant de mapper les personnes, notamment le fait de mapper forname (legacy) vers forename

Comment on lines 242 to 243
"link-citations": "", // MISSING!
nocite: "", // MISSING!
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Informations déplacées dans l'export

Suggested change
"link-citations": "", // MISSING!
nocite: "", // MISSING!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cf. #1121

funder_name: metadata.funder?.organization,
},
abstract: abstract,
articleslies: [], // MISSING!
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Plus utilisé ? à confirmer par @RochDLY

Suggested change
articleslies: [], // MISSING!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On ne permet pas/plus de le renseigner sur le formulaire actuel, est-ce que tu sais ce que doit contenir key et value ? Est-ce que c'est du spécifique Sens Public ?

Est-ce qu'on déplace la valeur dans senspublic.linkedarticles afin de conserver les données existantes mais on ne permet plus de renseigner les valeurs via le formulaire (uniquement possible en raw YAML) ?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non je ne sais pas du tout ce qu'elle contiennent. Je vais vérifier à dans les archives de Sens Public. En attendant, on peut faire ce que tu proposes pour éviter que d'anciens articles soient cassés

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On se met ça en pense-bête dans une nouvelle issue ?

translationOf: [
metadata.translationOf
],
translations: [], // MISSING!
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Plus utilisé ? à confirmer par @RochDLY

Suggested change
translations: [], // MISSING!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On ne permet pas/plus de le renseigner sur le formulaire actuel, est-ce que tu sais ce que doit contenir key et value ? Est-ce que c'est du spécifique Sens Public ?

Est-ce qu'on déplace la valeur dans senspublic.translations afin de conserver les données existantes mais on ne permet plus de renseigner les valeurs via le formulaire (uniquement possible en raw YAML) ?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non je ne sais pas du tout ce qu'elle contiennent. Je vais vérifier à dans les archives de Sens Public. En attendant, on peut faire ce que tu proposes pour éviter que d'anciens articles soient cassés

],
translations: [], // MISSING!
translator: metadata.translators,
typeArticle: [], // MISSING!
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Faire un mapping à partir de metadata.senspublic.category

prodNum: metadata.prodnum,
diffNum: metadata.diffnum
},
localizedContent: localizedContent
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ajouter senspublic.category renseigné à partir de typeArticle

@ggrossetie ggrossetie force-pushed the feat/article-metadata-schema branch 4 times, most recently from 32072af to 9cd6978 Compare December 3, 2024 09:13
@ggrossetie ggrossetie force-pushed the feat/article-metadata-schema branch from 9cd6978 to f69d0d7 Compare December 3, 2024 09:15
@ggrossetie ggrossetie merged commit b20b5ef into EcrituresNumeriques:master Dec 3, 2024
11 checks passed
@ggrossetie ggrossetie deleted the feat/article-metadata-schema branch December 3, 2024 09:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants