Skip to content

Commit

Permalink
Merge pull request #35 from OpenTechStrategies/23-spreadsheet-column-…
Browse files Browse the repository at this point in the history
…special-page

Add a special page that lists spreadsheet columns
  • Loading branch information
frankduncan authored Jun 10, 2021
2 parents 63e7fe7 + 1f14532 commit a1e2427
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 12 deletions.
4 changes: 3 additions & 1 deletion TorqueDataConnect/extension.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
"TorqueDataConnectUploadToc": "include/api/TorqueDataConnectUploadToc.php",
"TorqueDataConnectUploadAttachment": "include/api/TorqueDataConnectUploadAttachment.php",
"TorqueDataConnectAttachment": "include/specials/TorqueDataConnectAttachment.php",
"TorqueDataConnectColumns": "include/specials/TorqueDataConnectColumns.php",
"TorqueDataConnectHooks": "include/hooks/TorqueDataConnectHooks.php"
},
"Hooks": {
Expand All @@ -53,7 +54,8 @@
"TorqueDataConnectAlias": "TorqueDataConnect.i18n.alias.php"
},
"SpecialPages": {
"TorqueDataConnectAttachment": "TorqueDataConnectAttachment"
"TorqueDataConnectAttachment": "TorqueDataConnectAttachment",
"TorqueDataConnectColumns": "TorqueDataConnectColumns"
},
"config": {
"TorqueDataConnectConfigPage": "",
Expand Down
3 changes: 2 additions & 1 deletion TorqueDataConnect/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,6 @@
"logentry-torquedataconnect-apiaccess-apiaccess": "$1 accessed the api with path $4",
"logentry-torquedataconnect-datachanges-sheetupload": "$1 uploaded a new version of the spreadsheet",
"logentry-torquedataconnect-datachanges-edit": "$1 edited field \"$4\" on page $3",
"torquedataconnect-sidebar-configpage": "Torque Configuration"
"torquedataconnect-sidebar-configpage": "Torque Configuration",
"torquedataconnectcolumns": "TorqueDataConnect Columns"
}
39 changes: 39 additions & 0 deletions TorqueDataConnect/include/specials/TorqueDataConnectColumns.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php

/*
* Special page that lists available spreadsheet columns
*/

class TorqueDataConnectColumns extends SpecialPage {
public function __construct() {
parent::__construct('TorqueDataConnectColumns', 'torquedataconnect-admin');
}

public function execute($subPage) {
global $wgTorqueDataConnectSheetName;
global $wgTorqueDataConnectServerLocation;

$this->setHeaders();
$this->checkPermissions();
$ch = curl_init();
curl_setopt(
$ch,
CURLOPT_URL,
$wgTorqueDataConnectServerLocation .
'/api/sheets/' .
$wgTorqueDataConnectSheetName . '.json'
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$sheet = json_decode(curl_exec($ch), true);
curl_close($ch);

$out = "== " . $wgTorqueDataConnectSheetName . " ==\n";

// this assumes there is at least one row in the spreadsheet
foreach ($sheet["columns"] as $column) {
$out .= "* " . $column . "\n";
}

$this->getOutput()->addWikiTextAsInterface($out);
}
}
27 changes: 17 additions & 10 deletions torquedata/core/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,19 +152,26 @@ def get_sheet(request, sheet_name, fmt):
if fmt == "json":
response = {"name": sheet_name}

group = request.GET["group"]
wiki_key = get_wiki_key(request, sheet_name)

sheet = models.Spreadsheet.objects.get(name=sheet_name)
sheet_config = models.SheetConfig.objects.get(
sheet=sheet,
wiki_key=wiki_key,
group=group,
)

response["columns"] = [
column.name for column in sheet_config.valid_columns.all()
]
if "group" in request.GET:
group = request.GET["group"]
wiki_key = get_wiki_key(request, sheet_name)
sheet_config = models.SheetConfig.objects.get(
sheet=sheet,
wiki_key=wiki_key,
group=group,
)

response["columns"] = [
column.name for column in sheet_config.valid_columns.all()
]
else:
response["columns"] = [
column.name for column in sheet.columns.all()
]

response["last_updated"] = sheet.last_updated.isoformat()

return JsonResponse(response)
Expand Down

0 comments on commit a1e2427

Please sign in to comment.