Commit 4286c65e authored by NAVNEET's avatar NAVNEET

documentationt

parents
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/admin.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">admin.py</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="keyword">from</span> django.contrib <span class="keyword">import</span> admin</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="keyword">from</span> .models <span class="keyword">import</span> Student</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"># Register your models here.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;admin.site.register(Student)</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: Class List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>generatetoken</b></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classgeneratetoken_1_1RequestHelper.html" target="_self">RequestHelper</a></td><td class="desc">This Function is used to Generate Token to access moodle account of the student </td></tr>
<tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>main</b></td><td class="desc"></td></tr>
<tr id="row_1_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_0_" class="arrow" onclick="toggleFolder('1_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>apps</b></td><td class="desc"></td></tr>
<tr id="row_1_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1apps_1_1MainConfig.html" target="_self">MainConfig</a></td><td class="desc"></td></tr>
<tr id="row_1_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_1_" class="arrow" onclick="toggleFolder('1_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>forms</b></td><td class="desc"></td></tr>
<tr id="row_1_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_1_1_0_" class="arrow" onclick="toggleFolder('1_1_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1forms_1_1CreateNewUser.html" target="_self">CreateNewUser</a></td><td class="desc">This Class is Used for Creating entries, adding labels and helper text in the Registration Page </td></tr>
<tr id="row_1_1_0_0_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html" target="_self">Meta</a></td><td class="desc"></td></tr>
<tr id="row_1_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_2_" class="arrow" onclick="toggleFolder('1_2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>letsloginourself</b></td><td class="desc"></td></tr>
<tr id="row_1_2_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html" target="_self">RequestHelper</a></td><td class="desc">This is Class for Creating and formatting requests made to Moodle API functions </td></tr>
<tr id="row_1_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_3_" class="arrow" onclick="toggleFolder('1_3_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>models</b></td><td class="desc"></td></tr>
<tr id="row_1_3_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_1_3_0_" class="arrow" onclick="toggleFolder('1_3_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1models_1_1Student.html" target="_self">Student</a></td><td class="desc">This Class is used for the Database Table: <a class="el" href="classmain_1_1models_1_1Student.html" title="This Class is used for the Database Table: Student.">Student</a> </td></tr>
<tr id="row_1_3_0_0_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1models_1_1Student_1_1Meta.html" target="_self">Meta</a></td><td class="desc"></td></tr>
<tr id="row_1_4_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_4_" class="arrow" onclick="toggleFolder('1_4_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>subjectdatabase</b></td><td class="desc"></td></tr>
<tr id="row_1_4_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html" target="_self">moodle</a></td><td class="desc">This is used for maintaining the Student moodle data </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/apps.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">apps.py</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="keyword">from</span> django.apps <span class="keyword">import</span> AppConfig</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; </div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; </div>
<div class="line"><a name="l00004"></a><span class="lineno"><a class="line" href="classmain_1_1apps_1_1MainConfig.html"> 4</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmain_1_1apps_1_1MainConfig.html">MainConfig</a>(AppConfig):</div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; name = <span class="stringliteral">&#39;main&#39;</span></div>
<div class="ttc" id="aclassmain_1_1apps_1_1MainConfig_html"><div class="ttname"><a href="classmain_1_1apps_1_1MainConfig.html">main.apps.MainConfig</a></div><div class="ttdef"><b>Definition:</b> <a href="apps_8py_source.html#l00004">apps.py:4</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: moodleNotifier/asgi.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_2d978bdce16c291c9c81f068e91d317d.html">moodleNotifier</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">asgi.py</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"><a class="line" href="namespacemoodleNotifier_1_1asgi.html"> 1</a></span>&#160;<span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="stringliteral">ASGI config for moodleNotifier project.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="stringliteral">It exposes the ASGI callable as a module-level variable named ``application``.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="stringliteral">For more information on this file, see</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="stringliteral">https://docs.djangoproject.com/en/3.1/howto/deployment/asgi/</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; </div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="keyword">import</span> os</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; </div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="keyword">from</span> django.core.asgi <span class="keyword">import</span> get_asgi_application</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;os.environ.setdefault(<span class="stringliteral">&#39;DJANGO_SETTINGS_MODULE&#39;</span>, <span class="stringliteral">&#39;moodleNotifier.settings&#39;</span>)</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; </div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;application = get_asgi_application()</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/automation.py File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">automation.py File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>This file is used for Sending messages to the users.
<a href="#details">More...</a></p>
<p><a href="automation_8py_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:aa7c61cd8a77e59e6f75984d16204a7c8"><td class="memItemLeft" align="right" valign="top"><a id="aa7c61cd8a77e59e6f75984d16204a7c8"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="automation_8py.html#aa7c61cd8a77e59e6f75984d16204a7c8">main.automation.send_message</a> (body1, to1)</td></tr>
<tr class="memdesc:aa7c61cd8a77e59e6f75984d16204a7c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">This defintion takes the input message of the user and sends the respective reply to the users via twilio chatbot. <br /></td></tr>
<tr class="separator:aa7c61cd8a77e59e6f75984d16204a7c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This file is used for Sending messages to the users. </p>
<p class="definition">Definition in file <a class="el" href="automation_8py_source.html">automation.py</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/automation.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">automation.py</div> </div>
</div><!--header-->
<div class="contents">
<a href="automation_8py.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; </div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="keyword">from</span> twilio.rest <span class="keyword">import</span> Client </div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; </div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160; </div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="keyword">def </span>send_message(body1,to1):</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; account_sid = <span class="stringliteral">&#39;AC384d42ec4256b21f0fa7d0dfebc15d5c&#39;</span> </div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; auth_token = <span class="stringliteral">&#39;badfcc8f96cdbcc43763baabee132d24&#39;</span> </div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; client = Client(account_sid, auth_token) </div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; message = client.messages.create( </div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; from_=<span class="stringliteral">&#39;whatsapp:+14155238886&#39;</span>, </div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; body=body1, </div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; to=<span class="stringliteral">&#39;whatsapp:+91&#39;</span>+to1</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; ) </div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; print(message.sid) </div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">#&#39;Your appointment is coming up on July 21 at 3PM&#39;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">#&#39;whatsapp:+917382431868&#39;</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: Class Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class Index</div> </div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_c">c</a>&#160;|&#160;<a class="qindex" href="#letter_m">m</a>&#160;|&#160;<a class="qindex" href="#letter_r">r</a>&#160;|&#160;<a class="qindex" href="#letter_s">s</a></div>
<table class="classindex">
<tr><td rowspan="2" valign="bottom"><a name="letter_c"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;c&#160;&#160;</div></td></tr></table>
</td>
<td valign="top"><a class="el" href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html">CreateNewUser.Meta</a> (main.forms)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">RequestHelper</a> (main.letsloginourself)&#160;&#160;&#160;</td>
<td></td></tr>
<tr><td valign="top"><a class="el" href="classmain_1_1models_1_1Student_1_1Meta.html">Student.Meta</a> (main.models)&#160;&#160;&#160;</td>
<td rowspan="2" valign="bottom"><a name="letter_s"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;s&#160;&#160;</div></td></tr></table>
</td>
<td></td></tr>
<tr><td valign="top"><a class="el" href="classmain_1_1forms_1_1CreateNewUser.html">CreateNewUser</a> (main.forms)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">moodle</a> (main.subjectdatabase)&#160;&#160;&#160;</td>
<td></td></tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_m"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;m&#160;&#160;</div></td></tr></table>
</td>
<td rowspan="2" valign="bottom"><a name="letter_r"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;r&#160;&#160;</div></td></tr></table>
</td>
<td valign="top"><a class="el" href="classmain_1_1models_1_1Student.html">Student</a> (main.models)&#160;&#160;&#160;</td>
<td></td></tr>
<tr><td></td><td></td></tr>
<tr><td valign="top"><a class="el" href="classmain_1_1apps_1_1MainConfig.html">MainConfig</a> (main.apps)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="classgeneratetoken_1_1RequestHelper.html">RequestHelper</a> (generatetoken)&#160;&#160;&#160;</td>
<td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td></tr>
</table>
<div class="qindex"><a class="qindex" href="#letter_c">c</a>&#160;|&#160;<a class="qindex" href="#letter_m">m</a>&#160;|&#160;<a class="qindex" href="#letter_r">r</a>&#160;|&#160;<a class="qindex" href="#letter_s">s</a></div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>generatetoken</b></li><li class="navelem"><a class="el" href="classgeneratetoken_1_1RequestHelper.html">RequestHelper</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">generatetoken.RequestHelper Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>__init__</b>(self, str moodle_domain, str moodle_path='/', str token='', bool skip_cert_verify=False, str log_responses_to=None) (defined in <a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a>)</td><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html#a1bf92d3a91253130ad0978c9a2537549">get_login</a>(self, {str:str} data)</td><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html#ab9743c931c6e0490a24b65cda17a845f">get_simple_moodle_version</a>(self)</td><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html#ab38c62635f6e60d54e7d8dea21038b95">get_URL</a>(self, str url, str cookie_jar_path=None)</td><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>log_responses</b> (defined in <a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a>)</td><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>log_responses_to</b> (defined in <a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a>)</td><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>moodle_domain</b> (defined in <a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a>)</td><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>moodle_path</b> (defined in <a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a>)</td><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html#a422ff4a5b67d558a3872c6a18b99c046">post_REST</a>(self, str function, {str:str} data=None)</td><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html#a4574e844798e1515cde1b3696f6b1de7">post_URL</a>(self, str url, {str:str} data=None, str cookie_jar_path=None)</td><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html#a9e6dc179c3f9e2daf9c9716a8fbc7c72">recursive_urlencode</a>(data)</td><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>stdHeader</b> (defined in <a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a>)</td><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>token</b> (defined in <a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a>)</td><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>url_base</b> (defined in <a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a>)</td><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>verify</b> (defined in <a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a>)</td><td class="entry"><a class="el" href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: generatetoken.RequestHelper Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>generatetoken</b></li><li class="navelem"><a class="el" href="classgeneratetoken_1_1RequestHelper.html">RequestHelper</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="classgeneratetoken_1_1RequestHelper-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">generatetoken.RequestHelper Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>This Function is used to Generate Token to access moodle account of the student.
<a href="classgeneratetoken_1_1RequestHelper.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a2ceb7a15d333ebf1d6b69e985124b07a"><td class="memItemLeft" align="right" valign="top"><a id="a2ceb7a15d333ebf1d6b69e985124b07a"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>__init__</b> (self, str moodle_domain, str moodle_path='/', str token='', bool skip_cert_verify=False, str log_responses_to=None)</td></tr>
<tr class="separator:a2ceb7a15d333ebf1d6b69e985124b07a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4574e844798e1515cde1b3696f6b1de7"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeneratetoken_1_1RequestHelper.html#a4574e844798e1515cde1b3696f6b1de7">post_URL</a> (self, str url, {str:str} data=None, str cookie_jar_path=None)</td></tr>
<tr class="separator:a4574e844798e1515cde1b3696f6b1de7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab38c62635f6e60d54e7d8dea21038b95"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeneratetoken_1_1RequestHelper.html#ab38c62635f6e60d54e7d8dea21038b95">get_URL</a> (self, str url, str cookie_jar_path=None)</td></tr>
<tr class="separator:ab38c62635f6e60d54e7d8dea21038b95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a422ff4a5b67d558a3872c6a18b99c046"><td class="memItemLeft" align="right" valign="top">object&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeneratetoken_1_1RequestHelper.html#a422ff4a5b67d558a3872c6a18b99c046">post_REST</a> (self, str function, {str:str} data=None)</td></tr>
<tr class="separator:a422ff4a5b67d558a3872c6a18b99c046"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1bf92d3a91253130ad0978c9a2537549"><td class="memItemLeft" align="right" valign="top">object&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeneratetoken_1_1RequestHelper.html#a1bf92d3a91253130ad0978c9a2537549">get_login</a> (self, {str:str} data)</td></tr>
<tr class="separator:a1bf92d3a91253130ad0978c9a2537549"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9743c931c6e0490a24b65cda17a845f"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeneratetoken_1_1RequestHelper.html#ab9743c931c6e0490a24b65cda17a845f">get_simple_moodle_version</a> (self)</td></tr>
<tr class="separator:ab9743c931c6e0490a24b65cda17a845f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a9e6dc179c3f9e2daf9c9716a8fbc7c72"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeneratetoken_1_1RequestHelper.html#a9e6dc179c3f9e2daf9c9716a8fbc7c72">recursive_urlencode</a> (data)</td></tr>
<tr class="separator:a9e6dc179c3f9e2daf9c9716a8fbc7c72"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a1176524e07be0f61ddb2f400f4b75f00"><td class="memItemLeft" align="right" valign="top"><a id="a1176524e07be0f61ddb2f400f4b75f00"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>token</b></td></tr>
<tr class="separator:a1176524e07be0f61ddb2f400f4b75f00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b20bf8b1c0c3045113cdd51f0f5f5d6"><td class="memItemLeft" align="right" valign="top"><a id="a1b20bf8b1c0c3045113cdd51f0f5f5d6"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>moodle_domain</b></td></tr>
<tr class="separator:a1b20bf8b1c0c3045113cdd51f0f5f5d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6dc29ebecdcdbd27562c18c93c934716"><td class="memItemLeft" align="right" valign="top"><a id="a6dc29ebecdcdbd27562c18c93c934716"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>moodle_path</b></td></tr>
<tr class="separator:a6dc29ebecdcdbd27562c18c93c934716"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9f0b08cff9adc2f85a797e913ee223f"><td class="memItemLeft" align="right" valign="top"><a id="aa9f0b08cff9adc2f85a797e913ee223f"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>verify</b></td></tr>
<tr class="separator:aa9f0b08cff9adc2f85a797e913ee223f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa0be462dca08626925bad713a2bd9b3"><td class="memItemLeft" align="right" valign="top"><a id="afa0be462dca08626925bad713a2bd9b3"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>url_base</b></td></tr>
<tr class="separator:afa0be462dca08626925bad713a2bd9b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2816c2050175e1823c59570359db999"><td class="memItemLeft" align="right" valign="top"><a id="aa2816c2050175e1823c59570359db999"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>log_responses_to</b></td></tr>
<tr class="separator:aa2816c2050175e1823c59570359db999"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1dcbfeedc859a563d49fc0fc62e6d03"><td class="memItemLeft" align="right" valign="top"><a id="ae1dcbfeedc859a563d49fc0fc62e6d03"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>log_responses</b></td></tr>
<tr class="separator:ae1dcbfeedc859a563d49fc0fc62e6d03"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a6518c9c5f142794624a3eb3212ad87ac"><td class="memItemLeft" align="right" valign="top">dictionary&#160;</td><td class="memItemRight" valign="bottom"><b>stdHeader</b></td></tr>
<tr class="separator:a6518c9c5f142794624a3eb3212ad87ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This Function is used to Generate Token to access moodle account of the student. </p>
<pre class="fragment">Encapsulates the recurring logic for sending out requests to the
Moodle-System.
</pre>
<p class="definition">Definition at line <a class="el" href="generatetoken_8py_source.html#l00020">20</a> of file <a class="el" href="generatetoken_8py_source.html">generatetoken.py</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a1bf92d3a91253130ad0978c9a2537549"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1bf92d3a91253130ad0978c9a2537549">&#9670;&nbsp;</a></span>get_login()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> object generatetoken.RequestHelper.get_login </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">{str: str}&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Sends a POST request to the login endpoint of the Moodle system to
obtain a token in JSON format.
@param data: The data is inserted into the Post-Body as arguments. This
should contain the login data.
@return: The JSON response returned by the Moodle System, already
checked for errors.
</pre>
<p class="definition">Definition at line <a class="el" href="generatetoken_8py_source.html#l00172">172</a> of file <a class="el" href="generatetoken_8py_source.html">generatetoken.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keyword">def </span>get_login(self, data: {str: str}) -&gt; object:</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="stringliteral"> Sends a POST request to the login endpoint of the Moodle system to</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="stringliteral"> obtain a token in JSON format.</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="stringliteral"> @param data: The data is inserted into the Post-Body as arguments. This</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="stringliteral"> should contain the login data.</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="stringliteral"> @return: The JSON response returned by the Moodle System, already</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="stringliteral"> checked for errors.</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; </div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; response = requests.post(</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="stringliteral">&#39;%slogin/token.php&#39;</span> % (self.url_base),</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; data=urllib.parse.urlencode(data),</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; headers=self.stdHeader,</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; verify=self.verify,</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; )</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; </div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> self._initial_parse(response)</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
<a id="ab9743c931c6e0490a24b65cda17a845f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab9743c931c6e0490a24b65cda17a845f">&#9670;&nbsp;</a></span>get_simple_moodle_version()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> float generatetoken.RequestHelper.get_simple_moodle_version </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Query the version by looking up the change-log (/lib/upgrade.txt)
of the Moodle
@return: a float number representing the newest version
parsed from the change-log
</pre>
<p class="definition">Definition at line <a class="el" href="generatetoken_8py_source.html#l00202">202</a> of file <a class="el" href="generatetoken_8py_source.html">generatetoken.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keyword">def </span>get_simple_moodle_version(self) -&gt; float:</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="stringliteral"> Query the version by looking up the change-log (/lib/upgrade.txt)</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="stringliteral"> of the Moodle</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="stringliteral"> @return: a float number representing the newest version</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="stringliteral"> parsed from the change-log</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; </div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; url = <span class="stringliteral">&#39;%slib/upgrade.txt&#39;</span> % (self.url_base)</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; response = requests.get(url, headers=self.stdHeader, verify=self.verify)</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; </div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; self._check_response_code(response)</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; </div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; changelog = str(response.text).split(<span class="stringliteral">&#39;\n&#39;</span>)</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; version_string = <span class="stringliteral">&#39;1&#39;</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">for</span> line <span class="keywordflow">in</span> changelog:</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; match = re.match(<span class="stringliteral">r&#39;^===\s*([\d\.]+)\s*===$&#39;</span>, line)</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span> match:</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; version_string = match.group(1)</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">break</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; </div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; majorVersion = version_string.split(<span class="stringliteral">&#39;.&#39;</span>)[0]</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; minorVersion = version_string[len(majorVersion) :].replace(<span class="stringliteral">&#39;.&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; </div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; version = float(majorVersion + <span class="stringliteral">&#39;.&#39;</span> + minorVersion)</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">return</span> version</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
<a id="ab38c62635f6e60d54e7d8dea21038b95"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab38c62635f6e60d54e7d8dea21038b95">&#9670;&nbsp;</a></span>get_URL()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def generatetoken.RequestHelper.get_URL </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">str&#160;</td>
<td class="paramname"><em>url</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">str &#160;</td>
<td class="paramname"><em>cookie_jar_path</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Sends a GET request to a specific URL of the Moodle system, including additional cookies
(cookies are updated after the request)
@param url: The url to which the request is sent. (the moodle base url is not added to the given URL)
@param cookie_jar_path: The optional cookies to add to the request
@return: The resulting Response object.
</pre>
<p class="definition">Definition at line <a class="el" href="generatetoken_8py_source.html#l00093">93</a> of file <a class="el" href="generatetoken_8py_source.html">generatetoken.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">def </span>get_URL(self, url: str, cookie_jar_path: str = <span class="keywordtype">None</span>):</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="stringliteral"> Sends a GET request to a specific URL of the Moodle system, including additional cookies</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="stringliteral"> (cookies are updated after the request)</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="stringliteral"> @param url: The url to which the request is sent. (the moodle base url is not added to the given URL)</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="stringliteral"> @param cookie_jar_path: The optional cookies to add to the request</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="stringliteral"> @return: The resulting Response object.</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; </div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; session = requests.Session()</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; </div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span> cookie_jar_path <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; session.cookies = MozillaCookieJar(cookie_jar_path)</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; </div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span> os.path.exists(cookie_jar_path):</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; session.cookies.load(ignore_discard=<span class="keyword">True</span>, ignore_expires=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; </div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; response = session.get(url, headers=self.stdHeader, verify=self.verify)</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; </div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">if</span> cookie_jar_path <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; session.cookies.save(ignore_discard=<span class="keyword">True</span>, ignore_expires=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; </div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> response, session</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
<a id="a422ff4a5b67d558a3872c6a18b99c046"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a422ff4a5b67d558a3872c6a18b99c046">&#9670;&nbsp;</a></span>post_REST()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> object generatetoken.RequestHelper.post_REST </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">str&#160;</td>
<td class="paramname"><em>function</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">{str: str} &#160;</td>
<td class="paramname"><em>data</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Sends a POST request to the REST endpoint of the Moodle system
@param function: The Web service function to be called.
@param data: The optional data is added to the POST body.
@return: The JSON response returned by the Moodle system, already
checked for errors.
</pre>
<p class="definition">Definition at line <a class="el" href="generatetoken_8py_source.html#l00117">117</a> of file <a class="el" href="generatetoken_8py_source.html">generatetoken.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">def </span>post_REST(self, function: str, data: {str: str} = <span class="keywordtype">None</span>) -&gt; object:</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="stringliteral"> Sends a POST request to the REST endpoint of the Moodle system</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="stringliteral"> @param function: The Web service function to be called.</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="stringliteral"> @param data: The optional data is added to the POST body.</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="stringliteral"> @return: The JSON response returned by the Moodle system, already</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="stringliteral"> checked for errors.</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; </div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">if</span> self.token <span class="keywordflow">is</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">raise</span> ValueError(<span class="stringliteral">&#39;The required Token is not set!&#39;</span>)</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; </div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; data_urlencoded = self._get_POST_DATA(function, self.token, data)</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; url = self._get_REST_POST_URL(self.url_base, function)</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; response = requests.post(url, data=data_urlencoded, headers=self.stdHeader, verify=self.verify)</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; json_result = self._initial_parse(response)</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; </div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> self.log_responses <span class="keywordflow">and</span> function <span class="keywordflow">not</span> <span class="keywordflow">in</span> [<span class="stringliteral">&#39;tool_mobile_get_autologin_key&#39;</span>]:</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">with</span> open(self.log_responses_to, <span class="stringliteral">&#39;a&#39;</span>) <span class="keyword">as</span> response_log_file:</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; response_log_file.write(<span class="stringliteral">&#39;URL: {}\n&#39;</span>.format(response.url))</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; response_log_file.write(<span class="stringliteral">&#39;Function: {}\n\n&#39;</span>.format(function))</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; response_log_file.write(<span class="stringliteral">&#39;Data: {}\n\n&#39;</span>.format(data))</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; response_log_file.write(json.dumps(json_result, indent=4, ensure_ascii=<span class="keyword">False</span>))</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; response_log_file.write(<span class="stringliteral">&#39;\n\n\n&#39;</span>)</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; </div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">return</span> json_result</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
<a id="a4574e844798e1515cde1b3696f6b1de7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4574e844798e1515cde1b3696f6b1de7">&#9670;&nbsp;</a></span>post_URL()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def generatetoken.RequestHelper.post_URL </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">str&#160;</td>
<td class="paramname"><em>url</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">{str: str} &#160;</td>
<td class="paramname"><em>data</em> = <code>None</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">str &#160;</td>
<td class="paramname"><em>cookie_jar_path</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Sends a POST request to a specific URL, including saving of cookies in cookie jar.
@param url: The url to which the request is sent. (the moodle base url is not added to the given URL)
@param data: The optional data is added to the POST body.
@param cookie_jar_path: Path to the cookies file.
@return: The resulting response object and the session object.
</pre>
<p class="definition">Definition at line <a class="el" href="generatetoken_8py_source.html#l00062">62</a> of file <a class="el" href="generatetoken_8py_source.html">generatetoken.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">def </span>post_URL(self, url: str, data: {str: str} = <span class="keywordtype">None</span>, cookie_jar_path: str = <span class="keywordtype">None</span>):</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="stringliteral"> Sends a POST request to a specific URL, including saving of cookies in cookie jar.</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="stringliteral"> @param url: The url to which the request is sent. (the moodle base url is not added to the given URL)</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="stringliteral"> @param data: The optional data is added to the POST body.</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="stringliteral"> @param cookie_jar_path: Path to the cookies file.</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="stringliteral"> @return: The resulting response object and the session object.</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; </div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; data_urlencoded = <span class="stringliteral">&quot;&quot;</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span> data <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; data_urlencoded = RequestHelper.recursive_urlencode(data)</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; session = requests.Session()</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; </div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span> cookie_jar_path <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; session.cookies = MozillaCookieJar(cookie_jar_path)</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; </div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span> os.path.exists(cookie_jar_path):</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; session.cookies.load(ignore_discard=<span class="keyword">True</span>, ignore_expires=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; </div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; response = session.post(url, data=data_urlencoded, headers=self.stdHeader, verify=self.verify)</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; </div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">if</span> cookie_jar_path <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">for</span> cookie <span class="keywordflow">in</span> session.cookies:</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; cookie.expires = 2147483647</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; session.cookies.save(ignore_discard=<span class="keyword">True</span>, ignore_expires=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> response, session</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
<a id="a9e6dc179c3f9e2daf9c9716a8fbc7c72"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e6dc179c3f9e2daf9c9716a8fbc7c72">&#9670;&nbsp;</a></span>recursive_urlencode()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def generatetoken.RequestHelper.recursive_urlencode </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>data</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">URL-encode a multidimensional dictionary.
@param data: the data to be encoded
@returns: the url encoded data
</pre>
<p class="definition">Definition at line <a class="el" href="generatetoken_8py_source.html#l00275">275</a> of file <a class="el" href="generatetoken_8py_source.html">generatetoken.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">def </span>recursive_urlencode(data):</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="stringliteral">&quot;&quot;&quot;URL-encode a multidimensional dictionary.</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="stringliteral"> @param data: the data to be encoded</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="stringliteral"> @returns: the url encoded data</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; </div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">def </span>recursion(data, base=[]):</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; pairs = []</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; </div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">for</span> key, value <span class="keywordflow">in</span> data.items():</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; new_base = base + [key]</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">if</span> hasattr(value, <span class="stringliteral">&#39;values&#39;</span>):</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; pairs += recursion(value, new_base)</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; new_pair = <span class="keywordtype">None</span></div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span> len(new_base) &gt; 1:</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; first = urllib.parse.quote(new_base.pop(0))</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; rest = map(<span class="keyword">lambda</span> x: urllib.parse.quote(x), new_base)</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; new_pair = <span class="stringliteral">&#39;%s[%s]=%s&#39;</span> % (first, <span class="stringliteral">&#39;][&#39;</span>.join(rest), urllib.parse.quote(str(value)))</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; new_pair = <span class="stringliteral">&#39;%s=%s&#39;</span> % (urllib.parse.quote(str(key)), urllib.parse.quote(str(value)))</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; pairs.append(new_pair)</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">return</span> pairs</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; </div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&#39;&amp;&#39;</span>.join(recursion(data))</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a6518c9c5f142794624a3eb3212ad87ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6518c9c5f142794624a3eb3212ad87ac">&#9670;&nbsp;</a></span>stdHeader</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">dictionary generatetoken.RequestHelper.stdHeader</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div>
<div class="line"> <span class="stringliteral">&#39;User-Agent&#39;</span>: (</div>
<div class="line"> <span class="stringliteral">&#39;Mozilla/5.0 (Linux; Android 7.1.1; Moto G Play Build/NPIS26.48-43-2; wv) AppleWebKit/537.36&#39;</span></div>
<div class="line"> + <span class="stringliteral">&#39; (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36 MoodleMobile&#39;</span></div>
<div class="line"> ),</div>
<div class="line"> <span class="stringliteral">&#39;Content-Type&#39;</span>: <span class="stringliteral">&#39;application/x-www-form-urlencoded&#39;</span>,</div>
<div class="line"> }</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="generatetoken_8py_source.html#l00026">26</a> of file <a class="el" href="generatetoken_8py_source.html">generatetoken.py</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="generatetoken_8py_source.html">generatetoken.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>main</b></li><li class="navelem"><b>apps</b></li><li class="navelem"><a class="el" href="classmain_1_1apps_1_1MainConfig.html">MainConfig</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">main.apps.MainConfig Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classmain_1_1apps_1_1MainConfig.html">main.apps.MainConfig</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="classmain_1_1apps_1_1MainConfig.html">main.apps.MainConfig</a>)</td><td class="entry"><a class="el" href="classmain_1_1apps_1_1MainConfig.html">main.apps.MainConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main.apps.MainConfig Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>main</b></li><li class="navelem"><b>apps</b></li><li class="navelem"><a class="el" href="classmain_1_1apps_1_1MainConfig.html">MainConfig</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="classmain_1_1apps_1_1MainConfig-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">main.apps.MainConfig Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for main.apps.MainConfig:</div>
<div class="dyncontent">
<div class="center">
<img src="classmain_1_1apps_1_1MainConfig.png" alt=""/>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:aa4f22f649b0536d455304a3d137d6b2c"><td class="memItemLeft" align="right" valign="top"><a id="aa4f22f649b0536d455304a3d137d6b2c"></a>
string&#160;</td><td class="memItemRight" valign="bottom"><b>name</b> = 'main'</td></tr>
<tr class="separator:aa4f22f649b0536d455304a3d137d6b2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="apps_8py_source.html#l00004">4</a> of file <a class="el" href="apps_8py_source.html">apps.py</a>.</p>
</div><hr/>The documentation for this class was generated from the following file:<ul>
<li>main/<a class="el" href="apps_8py_source.html">apps.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>main</b></li><li class="navelem"><b>forms</b></li><li class="navelem"><a class="el" href="classmain_1_1forms_1_1CreateNewUser.html">CreateNewUser</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">main.forms.CreateNewUser Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classmain_1_1forms_1_1CreateNewUser.html">main.forms.CreateNewUser</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>fname</b> (defined in <a class="el" href="classmain_1_1forms_1_1CreateNewUser.html">main.forms.CreateNewUser</a>)</td><td class="entry"><a class="el" href="classmain_1_1forms_1_1CreateNewUser.html">main.forms.CreateNewUser</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>moodle_token</b> (defined in <a class="el" href="classmain_1_1forms_1_1CreateNewUser.html">main.forms.CreateNewUser</a>)</td><td class="entry"><a class="el" href="classmain_1_1forms_1_1CreateNewUser.html">main.forms.CreateNewUser</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>phone_number</b> (defined in <a class="el" href="classmain_1_1forms_1_1CreateNewUser.html">main.forms.CreateNewUser</a>)</td><td class="entry"><a class="el" href="classmain_1_1forms_1_1CreateNewUser.html">main.forms.CreateNewUser</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>roll_number</b> (defined in <a class="el" href="classmain_1_1forms_1_1CreateNewUser.html">main.forms.CreateNewUser</a>)</td><td class="entry"><a class="el" href="classmain_1_1forms_1_1CreateNewUser.html">main.forms.CreateNewUser</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main.forms.CreateNewUser Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>main</b></li><li class="navelem"><b>forms</b></li><li class="navelem"><a class="el" href="classmain_1_1forms_1_1CreateNewUser.html">CreateNewUser</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="classmain_1_1forms_1_1CreateNewUser-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">main.forms.CreateNewUser Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>This Class is Used for Creating entries, adding labels and helper text in the Registration Page.
<a href="classmain_1_1forms_1_1CreateNewUser.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for main.forms.CreateNewUser:</div>
<div class="dyncontent">
<div class="center">
<img src="classmain_1_1forms_1_1CreateNewUser.png" alt=""/>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html">Meta</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a8da24830c9f188b3b3da932c583f72ef"><td class="memItemLeft" align="right" valign="top"><a id="a8da24830c9f188b3b3da932c583f72ef"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>fname</b> = forms.CharField(max_length=200)</td></tr>
<tr class="separator:a8da24830c9f188b3b3da932c583f72ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab5a4fa66005c3b63c2c0259818d540a"><td class="memItemLeft" align="right" valign="top"><a id="aab5a4fa66005c3b63c2c0259818d540a"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>phone_number</b> = forms.CharField(max_length=10)</td></tr>
<tr class="separator:aab5a4fa66005c3b63c2c0259818d540a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac40e6478f95ba54fe626616d3558bf22"><td class="memItemLeft" align="right" valign="top"><a id="ac40e6478f95ba54fe626616d3558bf22"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>roll_number</b> = forms.CharField(max_length=9)</td></tr>
<tr class="separator:ac40e6478f95ba54fe626616d3558bf22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4d491bddf8fa70b7371f15bde10f587"><td class="memItemLeft" align="right" valign="top"><a id="ac4d491bddf8fa70b7371f15bde10f587"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>moodle_token</b> = forms.CharField(max_length=100)</td></tr>
<tr class="separator:ac4d491bddf8fa70b7371f15bde10f587"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This Class is Used for Creating entries, adding labels and helper text in the Registration Page. </p>
<p class="definition">Definition at line <a class="el" href="forms_8py_source.html#l00010">10</a> of file <a class="el" href="forms_8py_source.html">forms.py</a>.</p>
</div><hr/>The documentation for this class was generated from the following file:<ul>
<li>main/<a class="el" href="forms_8py_source.html">forms.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>main</b></li><li class="navelem"><b>forms</b></li><li class="navelem"><a class="el" href="classmain_1_1forms_1_1CreateNewUser.html">CreateNewUser</a></li><li class="navelem"><a class="el" href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html">Meta</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">main.forms.CreateNewUser.Meta Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html">main.forms.CreateNewUser.Meta</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>fields</b> (defined in <a class="el" href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html">main.forms.CreateNewUser.Meta</a>)</td><td class="entry"><a class="el" href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html">main.forms.CreateNewUser.Meta</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>help_texts</b> (defined in <a class="el" href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html">main.forms.CreateNewUser.Meta</a>)</td><td class="entry"><a class="el" href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html">main.forms.CreateNewUser.Meta</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>labels</b> (defined in <a class="el" href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html">main.forms.CreateNewUser.Meta</a>)</td><td class="entry"><a class="el" href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html">main.forms.CreateNewUser.Meta</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>model</b> (defined in <a class="el" href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html">main.forms.CreateNewUser.Meta</a>)</td><td class="entry"><a class="el" href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html">main.forms.CreateNewUser.Meta</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main.forms.CreateNewUser.Meta Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>main</b></li><li class="navelem"><b>forms</b></li><li class="navelem"><a class="el" href="classmain_1_1forms_1_1CreateNewUser.html">CreateNewUser</a></li><li class="navelem"><a class="el" href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html">Meta</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="classmain_1_1forms_1_1CreateNewUser_1_1Meta-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">main.forms.CreateNewUser.Meta Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a9a45d40da25c3a48d47595213f961b7b"><td class="memItemLeft" align="right" valign="top"><a id="a9a45d40da25c3a48d47595213f961b7b"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>model</b> = <a class="el" href="classmain_1_1models_1_1Student.html">Student</a></td></tr>
<tr class="separator:a9a45d40da25c3a48d47595213f961b7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4305c4abcc7c6f171d994e0236cf78b6"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><b>fields</b></td></tr>
<tr class="separator:a4305c4abcc7c6f171d994e0236cf78b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c10db8cb65382a68e883d7235c2c1e0"><td class="memItemLeft" align="right" valign="top">dictionary&#160;</td><td class="memItemRight" valign="bottom"><b>labels</b></td></tr>
<tr class="separator:a2c10db8cb65382a68e883d7235c2c1e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b4c706479987a7a2d1f644005b51e54"><td class="memItemLeft" align="right" valign="top">dictionary&#160;</td><td class="memItemRight" valign="bottom"><b>help_texts</b></td></tr>
<tr class="separator:a2b4c706479987a7a2d1f644005b51e54"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="forms_8py_source.html#l00021">21</a> of file <a class="el" href="forms_8py_source.html">forms.py</a>.</p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a id="a4305c4abcc7c6f171d994e0236cf78b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4305c4abcc7c6f171d994e0236cf78b6">&#9670;&nbsp;</a></span>fields</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">list main.forms.CreateNewUser.Meta.fields</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= [</div>
<div class="line"> <span class="stringliteral">&quot;fname&quot;</span>, <span class="stringliteral">&quot;phone_number&quot;</span>, <span class="stringliteral">&quot;roll_number&quot;</span>, <span class="stringliteral">&quot;moodle_token&quot;</span></div>
<div class="line"> ]</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="forms_8py_source.html#l00023">23</a> of file <a class="el" href="forms_8py_source.html">forms.py</a>.</p>
</div>
</div>
<a id="a2b4c706479987a7a2d1f644005b51e54"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2b4c706479987a7a2d1f644005b51e54">&#9670;&nbsp;</a></span>help_texts</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">dictionary main.forms.CreateNewUser.Meta.help_texts</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div>
<div class="line"> <span class="stringliteral">&#39;phone_number&#39;</span>: _(<span class="stringliteral">&#39;Enter Your WhatsApp Number.&#39;</span>),</div>
<div class="line"> <span class="stringliteral">&#39;moodle_token&#39;</span>: _(<span class="stringliteral">&#39;Enter Moodle Token Generated&#39;</span>),</div>
<div class="line"> }</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="forms_8py_source.html#l00032">32</a> of file <a class="el" href="forms_8py_source.html">forms.py</a>.</p>
</div>
</div>
<a id="a2c10db8cb65382a68e883d7235c2c1e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c10db8cb65382a68e883d7235c2c1e0">&#9670;&nbsp;</a></span>labels</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">dictionary main.forms.CreateNewUser.Meta.labels</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div>
<div class="line"> <span class="stringliteral">&#39;fname&#39;</span>: _(<span class="stringliteral">&#39;Full Name&#39;</span>),</div>
<div class="line"> <span class="stringliteral">&#39;phone_number&#39;</span>: _(<span class="stringliteral">&#39;Phone Number&#39;</span>),</div>
<div class="line"> <span class="stringliteral">&#39;roll_number&#39;</span>: _(<span class="stringliteral">&#39;Roll Number&#39;</span>),</div>
<div class="line"> <span class="stringliteral">&#39;moodle_token&#39;</span>: _(<span class="stringliteral">&#39;Moodle Token&#39;</span>),</div>
<div class="line"> }</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="forms_8py_source.html#l00026">26</a> of file <a class="el" href="forms_8py_source.html">forms.py</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>main/<a class="el" href="forms_8py_source.html">forms.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>main</b></li><li class="navelem"><b>letsloginourself</b></li><li class="navelem"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">RequestHelper</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">main.letsloginourself.RequestHelper Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>__init__</b>(self, str moodle_domain, str moodle_path='/', str token='', bool skip_cert_verify=False, str log_responses_to=None) (defined in <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a>)</td><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a4b6fe822aad6ca52011906faa04e8be8">get_login</a>(self, {str:str} data)</td><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#aeb5ca2cd43fae0421e55d2aafad47dcb">get_simple_moodle_version</a>(self)</td><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a7ecfd4e19fac657d9ef89b3db78e1fcb">get_URL</a>(self, str url, str cookie_jar_path=None)</td><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>log_responses</b> (defined in <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a>)</td><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>log_responses_to</b> (defined in <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a>)</td><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>moodle_domain</b> (defined in <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a>)</td><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>moodle_path</b> (defined in <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a>)</td><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a798868477ff79a1b4cfab9a1aa344478">post_REST</a>(self, str function, {str:str} data=None)</td><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a86bc5515b701461f9bd32318a6df9429">post_URL</a>(self, str url, {str:str} data=None, str cookie_jar_path=None)</td><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a3bbf9b9329e3ac0cbc9b7d467dd4e0b9">recursive_urlencode</a>(data)</td><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>stdHeader</b> (defined in <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a>)</td><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>token</b> (defined in <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a>)</td><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>url_base</b> (defined in <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a>)</td><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>verify</b> (defined in <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a>)</td><td class="entry"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main.letsloginourself.RequestHelper Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>main</b></li><li class="navelem"><b>letsloginourself</b></li><li class="navelem"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html">RequestHelper</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="classmain_1_1letsloginourself_1_1RequestHelper-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">main.letsloginourself.RequestHelper Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>This is Class for Creating and formatting requests made to Moodle API functions.
<a href="classmain_1_1letsloginourself_1_1RequestHelper.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a221bb8ec8df6860a517a3c807c842cb1"><td class="memItemLeft" align="right" valign="top"><a id="a221bb8ec8df6860a517a3c807c842cb1"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>__init__</b> (self, str moodle_domain, str moodle_path='/', str token='', bool skip_cert_verify=False, str log_responses_to=None)</td></tr>
<tr class="separator:a221bb8ec8df6860a517a3c807c842cb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86bc5515b701461f9bd32318a6df9429"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a86bc5515b701461f9bd32318a6df9429">post_URL</a> (self, str url, {str:str} data=None, str cookie_jar_path=None)</td></tr>
<tr class="separator:a86bc5515b701461f9bd32318a6df9429"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ecfd4e19fac657d9ef89b3db78e1fcb"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a7ecfd4e19fac657d9ef89b3db78e1fcb">get_URL</a> (self, str url, str cookie_jar_path=None)</td></tr>
<tr class="separator:a7ecfd4e19fac657d9ef89b3db78e1fcb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a798868477ff79a1b4cfab9a1aa344478"><td class="memItemLeft" align="right" valign="top">object&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a798868477ff79a1b4cfab9a1aa344478">post_REST</a> (self, str function, {str:str} data=None)</td></tr>
<tr class="separator:a798868477ff79a1b4cfab9a1aa344478"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b6fe822aad6ca52011906faa04e8be8"><td class="memItemLeft" align="right" valign="top">object&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a4b6fe822aad6ca52011906faa04e8be8">get_login</a> (self, {str:str} data)</td></tr>
<tr class="separator:a4b6fe822aad6ca52011906faa04e8be8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb5ca2cd43fae0421e55d2aafad47dcb"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#aeb5ca2cd43fae0421e55d2aafad47dcb">get_simple_moodle_version</a> (self)</td></tr>
<tr class="separator:aeb5ca2cd43fae0421e55d2aafad47dcb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a3bbf9b9329e3ac0cbc9b7d467dd4e0b9"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a3bbf9b9329e3ac0cbc9b7d467dd4e0b9">recursive_urlencode</a> (data)</td></tr>
<tr class="separator:a3bbf9b9329e3ac0cbc9b7d467dd4e0b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a32b85f157482d6deacb1c18a2c02fe56"><td class="memItemLeft" align="right" valign="top"><a id="a32b85f157482d6deacb1c18a2c02fe56"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>token</b></td></tr>
<tr class="separator:a32b85f157482d6deacb1c18a2c02fe56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cbfdff660b19ac8840801731dbe1c8b"><td class="memItemLeft" align="right" valign="top"><a id="a8cbfdff660b19ac8840801731dbe1c8b"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>moodle_domain</b></td></tr>
<tr class="separator:a8cbfdff660b19ac8840801731dbe1c8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee6bb51a8322c8fe69d3c938354bc8f4"><td class="memItemLeft" align="right" valign="top"><a id="aee6bb51a8322c8fe69d3c938354bc8f4"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>moodle_path</b></td></tr>
<tr class="separator:aee6bb51a8322c8fe69d3c938354bc8f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab0c9d39e8ea95cd25b5ad491ccde601"><td class="memItemLeft" align="right" valign="top"><a id="aab0c9d39e8ea95cd25b5ad491ccde601"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>verify</b></td></tr>
<tr class="separator:aab0c9d39e8ea95cd25b5ad491ccde601"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4db0e5584aa8563fa6d4ff868301d920"><td class="memItemLeft" align="right" valign="top"><a id="a4db0e5584aa8563fa6d4ff868301d920"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>url_base</b></td></tr>
<tr class="separator:a4db0e5584aa8563fa6d4ff868301d920"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aadc843bc85384b6f434ac03fbef452e3"><td class="memItemLeft" align="right" valign="top"><a id="aadc843bc85384b6f434ac03fbef452e3"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>log_responses_to</b></td></tr>
<tr class="separator:aadc843bc85384b6f434ac03fbef452e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10be87bcd8709c6959f4c9a6e2dc56cd"><td class="memItemLeft" align="right" valign="top"><a id="a10be87bcd8709c6959f4c9a6e2dc56cd"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>log_responses</b></td></tr>
<tr class="separator:a10be87bcd8709c6959f4c9a6e2dc56cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a972666407d89ff203da27588c77c9c52"><td class="memItemLeft" align="right" valign="top">dictionary&#160;</td><td class="memItemRight" valign="bottom"><b>stdHeader</b></td></tr>
<tr class="separator:a972666407d89ff203da27588c77c9c52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This is Class for Creating and formatting requests made to Moodle API functions. </p>
<pre class="fragment">Encapsulates the recurring logic for sending out requests to the
Moodle-System.
</pre>
<p class="definition">Definition at line <a class="el" href="letsloginourself_8py_source.html#l00018">18</a> of file <a class="el" href="letsloginourself_8py_source.html">letsloginourself.py</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a4b6fe822aad6ca52011906faa04e8be8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4b6fe822aad6ca52011906faa04e8be8">&#9670;&nbsp;</a></span>get_login()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> object main.letsloginourself.RequestHelper.get_login </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">{str: str}&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Sends a POST request to the login endpoint of the Moodle system to
obtain a token in JSON format.
@param data: The data is inserted into the Post-Body as arguments. This
should contain the login data.
@return: The JSON response returned by the Moodle System, already
checked for errors.
</pre>
<p class="definition">Definition at line <a class="el" href="letsloginourself_8py_source.html#l00170">170</a> of file <a class="el" href="letsloginourself_8py_source.html">letsloginourself.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">def </span>get_login(self, data: {str: str}) -&gt; object:</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="stringliteral"> Sends a POST request to the login endpoint of the Moodle system to</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="stringliteral"> obtain a token in JSON format.</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="stringliteral"> @param data: The data is inserted into the Post-Body as arguments. This</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="stringliteral"> should contain the login data.</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="stringliteral"> @return: The JSON response returned by the Moodle System, already</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="stringliteral"> checked for errors.</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; </div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; response = requests.post(</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="stringliteral">&#39;%slogin/token.php&#39;</span> % (self.url_base),</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; data=urllib.parse.urlencode(data),</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; headers=self.stdHeader,</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; verify=self.verify,</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; )</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; </div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> self._initial_parse(response)</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
<a id="aeb5ca2cd43fae0421e55d2aafad47dcb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeb5ca2cd43fae0421e55d2aafad47dcb">&#9670;&nbsp;</a></span>get_simple_moodle_version()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> float main.letsloginourself.RequestHelper.get_simple_moodle_version </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Query the version by looking up the change-log (/lib/upgrade.txt)
of the Moodle
@return: a float number representing the newest version
parsed from the change-log
</pre>
<p class="definition">Definition at line <a class="el" href="letsloginourself_8py_source.html#l00200">200</a> of file <a class="el" href="letsloginourself_8py_source.html">letsloginourself.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keyword">def </span>get_simple_moodle_version(self) -&gt; float:</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="stringliteral"> Query the version by looking up the change-log (/lib/upgrade.txt)</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="stringliteral"> of the Moodle</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="stringliteral"> @return: a float number representing the newest version</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="stringliteral"> parsed from the change-log</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; </div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; url = <span class="stringliteral">&#39;%slib/upgrade.txt&#39;</span> % (self.url_base)</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; response = requests.get(url, headers=self.stdHeader, verify=self.verify)</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; </div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; self._check_response_code(response)</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; </div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; changelog = str(response.text).split(<span class="stringliteral">&#39;\n&#39;</span>)</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; version_string = <span class="stringliteral">&#39;1&#39;</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">for</span> line <span class="keywordflow">in</span> changelog:</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; match = re.match(<span class="stringliteral">r&#39;^===\s*([\d\.]+)\s*===$&#39;</span>, line)</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">if</span> match:</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; version_string = match.group(1)</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">break</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; </div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; majorVersion = version_string.split(<span class="stringliteral">&#39;.&#39;</span>)[0]</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; minorVersion = version_string[len(majorVersion) :].replace(<span class="stringliteral">&#39;.&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; </div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; version = float(majorVersion + <span class="stringliteral">&#39;.&#39;</span> + minorVersion)</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">return</span> version</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
<a id="a7ecfd4e19fac657d9ef89b3db78e1fcb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7ecfd4e19fac657d9ef89b3db78e1fcb">&#9670;&nbsp;</a></span>get_URL()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def main.letsloginourself.RequestHelper.get_URL </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">str&#160;</td>
<td class="paramname"><em>url</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">str &#160;</td>
<td class="paramname"><em>cookie_jar_path</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Sends a GET request to a specific URL of the Moodle system, including additional cookies
(cookies are updated after the request)
@param url: The url to which the request is sent. (the moodle base url is not added to the given URL)
@param cookie_jar_path: The optional cookies to add to the request
@return: The resulting Response object.
</pre>
<p class="definition">Definition at line <a class="el" href="letsloginourself_8py_source.html#l00091">91</a> of file <a class="el" href="letsloginourself_8py_source.html">letsloginourself.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">def </span>get_URL(self, url: str, cookie_jar_path: str = <span class="keywordtype">None</span>):</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="stringliteral"> Sends a GET request to a specific URL of the Moodle system, including additional cookies</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="stringliteral"> (cookies are updated after the request)</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="stringliteral"> @param url: The url to which the request is sent. (the moodle base url is not added to the given URL)</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="stringliteral"> @param cookie_jar_path: The optional cookies to add to the request</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="stringliteral"> @return: The resulting Response object.</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; session = requests.Session()</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; </div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">if</span> cookie_jar_path <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; session.cookies = MozillaCookieJar(cookie_jar_path)</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">if</span> os.path.exists(cookie_jar_path):</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; session.cookies.load(ignore_discard=<span class="keyword">True</span>, ignore_expires=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; response = session.get(url, headers=self.stdHeader, verify=self.verify)</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; </div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">if</span> cookie_jar_path <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; session.cookies.save(ignore_discard=<span class="keyword">True</span>, ignore_expires=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; </div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> response, session</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
<a id="a798868477ff79a1b4cfab9a1aa344478"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a798868477ff79a1b4cfab9a1aa344478">&#9670;&nbsp;</a></span>post_REST()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> object main.letsloginourself.RequestHelper.post_REST </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">str&#160;</td>
<td class="paramname"><em>function</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">{str: str} &#160;</td>
<td class="paramname"><em>data</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Sends a POST request to the REST endpoint of the Moodle system
@param function: The Web service function to be called.
@param data: The optional data is added to the POST body.
@return: The JSON response returned by the Moodle system, already
checked for errors.
</pre>
<p class="definition">Definition at line <a class="el" href="letsloginourself_8py_source.html#l00115">115</a> of file <a class="el" href="letsloginourself_8py_source.html">letsloginourself.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">def </span>post_REST(self, function: str, data: {str: str} = <span class="keywordtype">None</span>) -&gt; object:</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="stringliteral"> Sends a POST request to the REST endpoint of the Moodle system</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="stringliteral"> @param function: The Web service function to be called.</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="stringliteral"> @param data: The optional data is added to the POST body.</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="stringliteral"> @return: The JSON response returned by the Moodle system, already</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="stringliteral"> checked for errors.</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; </div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">if</span> self.token <span class="keywordflow">is</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">raise</span> ValueError(<span class="stringliteral">&#39;The required Token is not set!&#39;</span>)</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; </div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; data_urlencoded = self._get_POST_DATA(function, self.token, data)</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; url = self._get_REST_POST_URL(self.url_base, function)</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; </div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; response = requests.post(url, data=data_urlencoded, headers=self.stdHeader, verify=self.verify)</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; json_result = self._initial_parse(response)</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; </div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span> self.log_responses <span class="keywordflow">and</span> function <span class="keywordflow">not</span> <span class="keywordflow">in</span> [<span class="stringliteral">&#39;tool_mobile_get_autologin_key&#39;</span>]:</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keyword">with</span> open(self.log_responses_to, <span class="stringliteral">&#39;a&#39;</span>) <span class="keyword">as</span> response_log_file:</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; response_log_file.write(<span class="stringliteral">&#39;URL: {}\n&#39;</span>.format(response.url))</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; response_log_file.write(<span class="stringliteral">&#39;Function: {}\n\n&#39;</span>.format(function))</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; response_log_file.write(<span class="stringliteral">&#39;Data: {}\n\n&#39;</span>.format(data))</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; response_log_file.write(json.dumps(json_result, indent=4, ensure_ascii=<span class="keyword">False</span>))</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; response_log_file.write(<span class="stringliteral">&#39;\n\n\n&#39;</span>)</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">return</span> json_result</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
<a id="a86bc5515b701461f9bd32318a6df9429"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86bc5515b701461f9bd32318a6df9429">&#9670;&nbsp;</a></span>post_URL()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def main.letsloginourself.RequestHelper.post_URL </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">str&#160;</td>
<td class="paramname"><em>url</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">{str: str} &#160;</td>
<td class="paramname"><em>data</em> = <code>None</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">str &#160;</td>
<td class="paramname"><em>cookie_jar_path</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Sends a POST request to a specific URL, including saving of cookies in cookie jar.
@param url: The url to which the request is sent. (the moodle base url is not added to the given URL)
@param data: The optional data is added to the POST body.
@param cookie_jar_path: Path to the cookies file.
@return: The resulting response object and the session object.
</pre>
<p class="definition">Definition at line <a class="el" href="letsloginourself_8py_source.html#l00060">60</a> of file <a class="el" href="letsloginourself_8py_source.html">letsloginourself.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">def </span>post_URL(self, url: str, data: {str: str} = <span class="keywordtype">None</span>, cookie_jar_path: str = <span class="keywordtype">None</span>):</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="stringliteral"> Sends a POST request to a specific URL, including saving of cookies in cookie jar.</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="stringliteral"> @param url: The url to which the request is sent. (the moodle base url is not added to the given URL)</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="stringliteral"> @param data: The optional data is added to the POST body.</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="stringliteral"> @param cookie_jar_path: Path to the cookies file.</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="stringliteral"> @return: The resulting response object and the session object.</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; </div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; data_urlencoded = <span class="stringliteral">&quot;&quot;</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">if</span> data <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; data_urlencoded = RequestHelper.recursive_urlencode(data)</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; session = requests.Session()</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> cookie_jar_path <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; session.cookies = MozillaCookieJar(cookie_jar_path)</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; </div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">if</span> os.path.exists(cookie_jar_path):</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; session.cookies.load(ignore_discard=<span class="keyword">True</span>, ignore_expires=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; </div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; response = session.post(url, data=data_urlencoded, headers=self.stdHeader, verify=self.verify)</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; </div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> cookie_jar_path <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">for</span> cookie <span class="keywordflow">in</span> session.cookies:</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; cookie.expires = 2147483647</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; session.cookies.save(ignore_discard=<span class="keyword">True</span>, ignore_expires=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> response, session</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
<a id="a3bbf9b9329e3ac0cbc9b7d467dd4e0b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3bbf9b9329e3ac0cbc9b7d467dd4e0b9">&#9670;&nbsp;</a></span>recursive_urlencode()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def main.letsloginourself.RequestHelper.recursive_urlencode </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>data</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">URL-encode a multidimensional dictionary.
@param data: the data to be encoded
@returns: the url encoded data
</pre>
<p class="definition">Definition at line <a class="el" href="letsloginourself_8py_source.html#l00273">273</a> of file <a class="el" href="letsloginourself_8py_source.html">letsloginourself.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keyword">def </span>recursive_urlencode(data):</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="stringliteral">&quot;&quot;&quot;URL-encode a multidimensional dictionary.</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="stringliteral"> @param data: the data to be encoded</span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="stringliteral"> @returns: the url encoded data</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; </div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keyword">def </span>recursion(data, base=[]):</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; pairs = []</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; </div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">for</span> key, value <span class="keywordflow">in</span> data.items():</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; new_base = base + [key]</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">if</span> hasattr(value, <span class="stringliteral">&#39;values&#39;</span>):</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; pairs += recursion(value, new_base)</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; new_pair = <span class="keywordtype">None</span></div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">if</span> len(new_base) &gt; 1:</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; first = urllib.parse.quote(new_base.pop(0))</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; rest = map(<span class="keyword">lambda</span> x: urllib.parse.quote(x), new_base)</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; new_pair = <span class="stringliteral">&#39;%s[%s]=%s&#39;</span> % (first, <span class="stringliteral">&#39;][&#39;</span>.join(rest), urllib.parse.quote(str(value)))</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; new_pair = <span class="stringliteral">&#39;%s=%s&#39;</span> % (urllib.parse.quote(str(key)), urllib.parse.quote(str(value)))</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; pairs.append(new_pair)</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">return</span> pairs</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; </div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&#39;&amp;&#39;</span>.join(recursion(data))</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a972666407d89ff203da27588c77c9c52"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a972666407d89ff203da27588c77c9c52">&#9670;&nbsp;</a></span>stdHeader</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">dictionary main.letsloginourself.RequestHelper.stdHeader</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div>
<div class="line"> <span class="stringliteral">&#39;User-Agent&#39;</span>: (</div>
<div class="line"> <span class="stringliteral">&#39;Mozilla/5.0 (Linux; Android 7.1.1; Moto G Play Build/NPIS26.48-43-2; wv) AppleWebKit/537.36&#39;</span></div>
<div class="line"> + <span class="stringliteral">&#39; (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36 MoodleMobile&#39;</span></div>
<div class="line"> ),</div>
<div class="line"> <span class="stringliteral">&#39;Content-Type&#39;</span>: <span class="stringliteral">&#39;application/x-www-form-urlencoded&#39;</span>,</div>
<div class="line"> }</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="letsloginourself_8py_source.html#l00024">24</a> of file <a class="el" href="letsloginourself_8py_source.html">letsloginourself.py</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>main/<a class="el" href="letsloginourself_8py_source.html">letsloginourself.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>main</b></li><li class="navelem"><b>models</b></li><li class="navelem"><a class="el" href="classmain_1_1models_1_1Student.html">Student</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">main.models.Student Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>__str__</b>(self) (defined in <a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a>)</td><td class="entry"><a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>courses</b> (defined in <a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a>)</td><td class="entry"><a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>fname</b> (defined in <a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a>)</td><td class="entry"><a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>is_update</b> (defined in <a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a>)</td><td class="entry"><a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>moodle_token</b> (defined in <a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a>)</td><td class="entry"><a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>phone_number</b> (defined in <a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a>)</td><td class="entry"><a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>roll_number</b> (defined in <a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a>)</td><td class="entry"><a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>TYPE_CHOICES</b> (defined in <a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a>)</td><td class="entry"><a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>update_courses</b> (defined in <a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a>)</td><td class="entry"><a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>user_type</b> (defined in <a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a>)</td><td class="entry"><a class="el" href="classmain_1_1models_1_1Student.html">main.models.Student</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main.models.Student Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>main</b></li><li class="navelem"><b>models</b></li><li class="navelem"><a class="el" href="classmain_1_1models_1_1Student.html">Student</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="classmain_1_1models_1_1Student-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">main.models.Student Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>This Class is used for the Database Table: <a class="el" href="classmain_1_1models_1_1Student.html" title="This Class is used for the Database Table: Student.">Student</a>.
<a href="classmain_1_1models_1_1Student.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for main.models.Student:</div>
<div class="dyncontent">
<div class="center">
<img src="classmain_1_1models_1_1Student.png" alt=""/>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmain_1_1models_1_1Student_1_1Meta.html">Meta</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a9d6f4d89c1f8bcc6b7789469059eefba"><td class="memItemLeft" align="right" valign="top"><a id="a9d6f4d89c1f8bcc6b7789469059eefba"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>__str__</b> (self)</td></tr>
<tr class="separator:a9d6f4d89c1f8bcc6b7789469059eefba"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a38b4e6e79786a0a4ec288f5ad3ecda5c"><td class="memItemLeft" align="right" valign="top">tuple&#160;</td><td class="memItemRight" valign="bottom"><b>TYPE_CHOICES</b></td></tr>
<tr class="separator:a38b4e6e79786a0a4ec288f5ad3ecda5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d62a513b2cd797ee0cd3cd2980b90a6"><td class="memItemLeft" align="right" valign="top"><a id="a7d62a513b2cd797ee0cd3cd2980b90a6"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>fname</b> = models.CharField(max_length=200)</td></tr>
<tr class="separator:a7d62a513b2cd797ee0cd3cd2980b90a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa28cb2bd9aed4b43aec8ac0c5b1d046"><td class="memItemLeft" align="right" valign="top"><a id="afa28cb2bd9aed4b43aec8ac0c5b1d046"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>phone_number</b> = models.CharField(max_length=10, unique=True)</td></tr>
<tr class="separator:afa28cb2bd9aed4b43aec8ac0c5b1d046"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6f59b50150a3a1942ae6457b5425bab"><td class="memItemLeft" align="right" valign="top"><a id="aa6f59b50150a3a1942ae6457b5425bab"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>roll_number</b> = models.CharField(max_length=9, default=&quot;&quot;, unique=True)</td></tr>
<tr class="separator:aa6f59b50150a3a1942ae6457b5425bab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45bab9a99a6f6ef4868903ea4d61642b"><td class="memItemLeft" align="right" valign="top"><a id="a45bab9a99a6f6ef4868903ea4d61642b"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>moodle_token</b> = models.CharField(max_length=50, default=&quot;&quot;, unique=True)</td></tr>
<tr class="separator:a45bab9a99a6f6ef4868903ea4d61642b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae216af468962e61ba370bad5e3f38fcd"><td class="memItemLeft" align="right" valign="top"><a id="ae216af468962e61ba370bad5e3f38fcd"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>courses</b> = models.CharField(max_length=50, default=&quot;&quot;)</td></tr>
<tr class="separator:ae216af468962e61ba370bad5e3f38fcd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f12134d6cc166287bc15607506c58d1"><td class="memItemLeft" align="right" valign="top"><a id="a0f12134d6cc166287bc15607506c58d1"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>user_type</b> = models.CharField(max_length=10,choices=TYPE_CHOICES, default=&quot;General&quot;)</td></tr>
<tr class="separator:a0f12134d6cc166287bc15607506c58d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afeb64cee3997c83ed44ff7d367721b2a"><td class="memItemLeft" align="right" valign="top"><a id="afeb64cee3997c83ed44ff7d367721b2a"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>is_update</b> = models.BooleanField(default=False)</td></tr>
<tr class="separator:afeb64cee3997c83ed44ff7d367721b2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8753badf1f335af6f97128f537209cc"><td class="memItemLeft" align="right" valign="top"><a id="ac8753badf1f335af6f97128f537209cc"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>update_courses</b> = models.CharField(max_length=30, default=&quot;&quot;)</td></tr>
<tr class="separator:ac8753badf1f335af6f97128f537209cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This Class is used for the Database Table: <a class="el" href="classmain_1_1models_1_1Student.html" title="This Class is used for the Database Table: Student.">Student</a>. </p>
<p class="definition">Definition at line <a class="el" href="models_8py_source.html#l00008">8</a> of file <a class="el" href="models_8py_source.html">models.py</a>.</p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a id="a38b4e6e79786a0a4ec288f5ad3ecda5c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38b4e6e79786a0a4ec288f5ad3ecda5c">&#9670;&nbsp;</a></span>TYPE_CHOICES</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">tuple main.models.Student.TYPE_CHOICES</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= ( </div>
<div class="line"> (<span class="stringliteral">&quot;updater&quot;</span>, <span class="stringliteral">&quot;updater&quot;</span>),</div>
<div class="line"> (<span class="stringliteral">&quot;General&quot;</span>, <span class="stringliteral">&quot;General&quot;</span>),</div>
<div class="line"> )</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="models_8py_source.html#l00009">9</a> of file <a class="el" href="models_8py_source.html">models.py</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>main/<a class="el" href="models_8py_source.html">models.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main.models.Student.Meta Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>main</b></li><li class="navelem"><b>models</b></li><li class="navelem"><a class="el" href="classmain_1_1models_1_1Student.html">Student</a></li><li class="navelem"><a class="el" href="classmain_1_1models_1_1Student_1_1Meta.html">Meta</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">main.models.Student.Meta Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="models_8py_source.html#l00027">27</a> of file <a class="el" href="models_8py_source.html">models.py</a>.</p>
</div><hr/>The documentation for this class was generated from the following file:<ul>
<li>main/<a class="el" href="models_8py_source.html">models.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>main</b></li><li class="navelem"><b>subjectdatabase</b></li><li class="navelem"><a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">moodle</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">main.subjectdatabase.moodle Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>___init__</b>(self) (defined in <a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a>)</td><td class="entry"><a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>assignment_details</b>(self, subid) (defined in <a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a>)</td><td class="entry"><a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>course_contents</b>(self, subid) (defined in <a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a>)</td><td class="entry"><a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>create_table</b>(self) (defined in <a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a>)</td><td class="entry"><a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>delete_sub</b>(self) (defined in <a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a>)</td><td class="entry"><a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>get_all_courses</b>(self) (defined in <a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a>)</td><td class="entry"><a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_announcements</b>(self, subid) (defined in <a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a>)</td><td class="entry"><a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>get_courseid</b>(self, sub_id) (defined in <a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a>)</td><td class="entry"><a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>insert</b>(self, subject_id, subject_name) (defined in <a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a>)</td><td class="entry"><a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>printdb</b>(self) (defined in <a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a>)</td><td class="entry"><a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>quiz_details</b>(self, subid) (defined in <a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a>)</td><td class="entry"><a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>update</b>(self, row, column, dictt) (defined in <a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a>)</td><td class="entry"><a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main.subjectdatabase.moodle Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>main</b></li><li class="navelem"><b>subjectdatabase</b></li><li class="navelem"><a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html">moodle</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classmain_1_1subjectdatabase_1_1moodle-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">main.subjectdatabase.moodle Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>This is used for maintaining the Student moodle data.
<a href="classmain_1_1subjectdatabase_1_1moodle.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a52478672182614603066c9ce497c0132"><td class="memItemLeft" align="right" valign="top"><a id="a52478672182614603066c9ce497c0132"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>___init__</b> (self)</td></tr>
<tr class="separator:a52478672182614603066c9ce497c0132"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a164e15b4948bc050dc38546b70f26072"><td class="memItemLeft" align="right" valign="top"><a id="a164e15b4948bc050dc38546b70f26072"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>create_table</b> (self)</td></tr>
<tr class="separator:a164e15b4948bc050dc38546b70f26072"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e0b001512ca392b6931ab7fb3331057"><td class="memItemLeft" align="right" valign="top"><a id="a2e0b001512ca392b6931ab7fb3331057"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>insert</b> (self, subject_id, subject_name)</td></tr>
<tr class="separator:a2e0b001512ca392b6931ab7fb3331057"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acdf145b302fcd3bf3746c0136825de6e"><td class="memItemLeft" align="right" valign="top"><a id="acdf145b302fcd3bf3746c0136825de6e"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>update</b> (self, row, column, dictt)</td></tr>
<tr class="separator:acdf145b302fcd3bf3746c0136825de6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b26c5e4d2c8a65b45275a63c46fbe49"><td class="memItemLeft" align="right" valign="top"><a id="a4b26c5e4d2c8a65b45275a63c46fbe49"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>printdb</b> (self)</td></tr>
<tr class="separator:a4b26c5e4d2c8a65b45275a63c46fbe49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab57109236386564e7e4da6a81b9f98c4"><td class="memItemLeft" align="right" valign="top"><a id="ab57109236386564e7e4da6a81b9f98c4"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>get_courseid</b> (self, sub_id)</td></tr>
<tr class="separator:ab57109236386564e7e4da6a81b9f98c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa95e715f5f421b01069a7839bfb1afd3"><td class="memItemLeft" align="right" valign="top"><a id="aa95e715f5f421b01069a7839bfb1afd3"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>get_all_courses</b> (self)</td></tr>
<tr class="separator:aa95e715f5f421b01069a7839bfb1afd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa784218f53f57b5a9c1f7b18f4703d84"><td class="memItemLeft" align="right" valign="top"><a id="aa784218f53f57b5a9c1f7b18f4703d84"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>delete_sub</b> (self)</td></tr>
<tr class="separator:aa784218f53f57b5a9c1f7b18f4703d84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a794fd0dff2ea92065fd1f393d5def983"><td class="memItemLeft" align="right" valign="top"><a id="a794fd0dff2ea92065fd1f393d5def983"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>assignment_details</b> (self, subid)</td></tr>
<tr class="separator:a794fd0dff2ea92065fd1f393d5def983"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84a630f3203718dcad20d57d218b1fec"><td class="memItemLeft" align="right" valign="top"><a id="a84a630f3203718dcad20d57d218b1fec"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>quiz_details</b> (self, subid)</td></tr>
<tr class="separator:a84a630f3203718dcad20d57d218b1fec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a594c0756b53982ca18e1d1273dc86c68"><td class="memItemLeft" align="right" valign="top"><a id="a594c0756b53982ca18e1d1273dc86c68"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>course_contents</b> (self, subid)</td></tr>
<tr class="separator:a594c0756b53982ca18e1d1273dc86c68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c500acd5b147dec98da3c88506ed773"><td class="memItemLeft" align="right" valign="top"><a id="a9c500acd5b147dec98da3c88506ed773"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>get_announcements</b> (self, subid)</td></tr>
<tr class="separator:a9c500acd5b147dec98da3c88506ed773"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This is used for maintaining the Student moodle data. </p>
<p class="definition">Definition at line <a class="el" href="subjectdatabase_8py_source.html#l00060">60</a> of file <a class="el" href="subjectdatabase_8py_source.html">subjectdatabase.py</a>.</p>
</div><hr/>The documentation for this class was generated from the following file:<ul>
<li>main/<a class="el" href="subjectdatabase_8py_source.html">subjectdatabase.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/clockinterval.py File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">clockinterval.py File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>This file is used for Regular Updates automatically.
<a href="#details">More...</a></p>
<p><a href="clockinterval_8py_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a436130e82eac4cb90df0a64d6bcfefd3"><td class="memItemLeft" align="right" valign="top"><a id="a436130e82eac4cb90df0a64d6bcfefd3"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clockinterval_8py.html#a436130e82eac4cb90df0a64d6bcfefd3">main.clockinterval.sendupdates</a> ()</td></tr>
<tr class="memdesc:a436130e82eac4cb90df0a64d6bcfefd3"><td class="mdescLeft">&#160;</td><td class="mdescRight">This definition is Schedules the jobs like updating subject database daily and sending updates to users automatically. <br /></td></tr>
<tr class="separator:a436130e82eac4cb90df0a64d6bcfefd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This file is used for Regular Updates automatically. </p>
<p class="definition">Definition in file <a class="el" href="clockinterval_8py_source.html">clockinterval.py</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/clockinterval.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">clockinterval.py</div> </div>
</div><!--header-->
<div class="contents">
<a href="clockinterval_8py.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; </div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="keyword">from</span> apscheduler.schedulers.blocking <span class="keyword">import</span> BlockingScheduler</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; </div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="keyword">from</span> .timely_update <span class="keyword">import</span> send_update_to_students</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="keyword">from</span> .timely_update <span class="keyword">import</span> update_database_daily</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"># def job_function():</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"># print(&quot;Hello World&quot;)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; </div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; </div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="keyword">def </span>sendupdates():</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; sched = BlockingScheduler()</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; sched.add_job(update_database_daily, <span class="stringliteral">&#39;interval&#39;</span>, seconds=10)<span class="comment">#hours=2</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; sched.add_job(send_update_to_students, <span class="stringliteral">&#39;interval&#39;</span>, seconds=200)<span class="comment">#hours=2</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; sched.start()</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: moodleNotifier Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_2d978bdce16c291c9c81f068e91d317d.html">moodleNotifier</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">moodleNotifier Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">main Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:automation_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="automation_8py.html">automation.py</a> <a href="automation_8py_source.html">[code]</a></td></tr>
<tr class="memdesc:automation_8py"><td class="mdescLeft">&#160;</td><td class="mdescRight">This file is used for Sending messages to the users. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:clockinterval_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clockinterval_8py.html">clockinterval.py</a> <a href="clockinterval_8py_source.html">[code]</a></td></tr>
<tr class="memdesc:clockinterval_8py"><td class="mdescLeft">&#160;</td><td class="mdescRight">This file is used for Regular Updates automatically. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:login_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="login_8py.html">login.py</a> <a href="login_8py_source.html">[code]</a></td></tr>
<tr class="memdesc:login_8py"><td class="mdescLeft">&#160;</td><td class="mdescRight">This file is used get the courses information from the moodle. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:timely__update_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="timely__update_8py.html">timely_update.py</a> <a href="timely__update_8py_source.html">[code]</a></td></tr>
<tr class="memdesc:timely__update_8py"><td class="mdescLeft">&#160;</td><td class="mdescRight">This file contains the list fo functions that are called by scheduler for updating the subject database. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:updateDB_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="updateDB_8py.html">updateDB.py</a> <a href="updateDB_8py_source.html">[code]</a></td></tr>
<tr class="memdesc:updateDB_8py"><td class="mdescLeft">&#160;</td><td class="mdescRight">This file is used for Updating the Moodle Database. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:views_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="views_8py.html">views.py</a> <a href="views_8py_source.html">[code]</a></td></tr>
<tr class="memdesc:views_8py"><td class="mdescLeft">&#160;</td><td class="mdescRight">File documentation. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
/* The standard CSS for doxygen 1.9.0 */
body, table, div, p, dl {
font: 400 14px/22px Roboto,sans-serif;
}
p.reference, p.definition {
font: 400 14px/22px Roboto,sans-serif;
}
/* @group Heading Levels */
h1.groupheader {
font-size: 150%;
}
.title {
font: 400 14px/28px Roboto,sans-serif;
font-size: 150%;
font-weight: bold;
margin: 10px 2px;
}
h2.groupheader {
border-bottom: 1px solid #879ECB;
color: #354C7B;
font-size: 150%;
font-weight: normal;
margin-top: 1.75em;
padding-top: 8px;
padding-bottom: 4px;
width: 100%;
}
h3.groupheader {
font-size: 100%;
}
h1, h2, h3, h4, h5, h6 {
-webkit-transition: text-shadow 0.5s linear;
-moz-transition: text-shadow 0.5s linear;
-ms-transition: text-shadow 0.5s linear;
-o-transition: text-shadow 0.5s linear;
transition: text-shadow 0.5s linear;
margin-right: 15px;
}
h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
text-shadow: 0 0 15px cyan;
}
dt {
font-weight: bold;
}
ul.multicol {
-moz-column-gap: 1em;
-webkit-column-gap: 1em;
column-gap: 1em;
-moz-column-count: 3;
-webkit-column-count: 3;
column-count: 3;
}
p.startli, p.startdd {
margin-top: 2px;
}
th p.starttd, th p.intertd, th p.endtd {
font-size: 100%;
font-weight: 700;
}
p.starttd {
margin-top: 0px;
}
p.endli {
margin-bottom: 0px;
}
p.enddd {
margin-bottom: 4px;
}
p.endtd {
margin-bottom: 2px;
}
p.interli {
}
p.interdd {
}
p.intertd {
}
/* @end */
caption {
font-weight: bold;
}
span.legend {
font-size: 70%;
text-align: center;
}
h3.version {
font-size: 90%;
text-align: center;
}
div.qindex, div.navtab{
background-color: #EBEFF6;
border: 1px solid #A3B4D7;
text-align: center;
}
div.qindex, div.navpath {
width: 100%;
line-height: 140%;
}
div.navtab {
margin-right: 15px;
}
/* @group Link Styling */
a {
color: #3D578C;
font-weight: normal;
text-decoration: none;
}
.contents a:visited {
color: #4665A2;
}
a:hover {
text-decoration: underline;
}
a.qindex {
font-weight: bold;
}
a.qindexHL {
font-weight: bold;
background-color: #9CAFD4;
color: #FFFFFF;
border: 1px double #869DCA;
}
.contents a.qindexHL:visited {
color: #FFFFFF;
}
a.el {
font-weight: bold;
}
a.elRef {
}
a.code, a.code:visited, a.line, a.line:visited {
color: #4665A2;
}
a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
color: #4665A2;
}
/* @end */
dl.el {
margin-left: -1cm;
}
ul {
overflow: hidden; /*Fixed: list item bullets overlap floating elements*/
}
#side-nav ul {
overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */
}
#main-nav ul {
overflow: visible; /* reset ul rule for the navigation bar drop down lists */
}
.fragment {
text-align: left;
direction: ltr;
overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/
overflow-y: hidden;
}
pre.fragment {
border: 1px solid #C4CFE5;
background-color: #FBFCFD;
padding: 4px 6px;
margin: 4px 8px 4px 2px;
overflow: auto;
word-wrap: break-word;
font-size: 9pt;
line-height: 125%;
font-family: monospace, fixed;
font-size: 105%;
}
div.fragment {
padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/
margin: 4px 8px 4px 2px;
background-color: #FBFCFD;
border: 1px solid #C4CFE5;
}
div.line {
font-family: monospace, fixed;
font-size: 13px;
min-height: 13px;
line-height: 1.0;
text-wrap: unrestricted;
white-space: -moz-pre-wrap; /* Moz */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
white-space: pre-wrap; /* CSS3 */
word-wrap: break-word; /* IE 5.5+ */
text-indent: -53px;
padding-left: 53px;
padding-bottom: 0px;
margin: 0px;
-webkit-transition-property: background-color, box-shadow;
-webkit-transition-duration: 0.5s;
-moz-transition-property: background-color, box-shadow;
-moz-transition-duration: 0.5s;
-ms-transition-property: background-color, box-shadow;
-ms-transition-duration: 0.5s;
-o-transition-property: background-color, box-shadow;
-o-transition-duration: 0.5s;
transition-property: background-color, box-shadow;
transition-duration: 0.5s;
}
div.line:after {
content:"\000A";
white-space: pre;
}
div.line.glow {
background-color: cyan;
box-shadow: 0 0 10px cyan;
}
span.lineno {
padding-right: 4px;
text-align: right;
border-right: 2px solid #0F0;
background-color: #E8E8E8;
white-space: pre;
}
span.lineno a {
background-color: #D8D8D8;
}
span.lineno a:hover {
background-color: #C8C8C8;
}
.lineno {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
div.ah, span.ah {
background-color: black;
font-weight: bold;
color: #FFFFFF;
margin-bottom: 3px;
margin-top: 3px;
padding: 0.2em;
border: solid thin #333;
border-radius: 0.5em;
-webkit-border-radius: .5em;
-moz-border-radius: .5em;
box-shadow: 2px 2px 3px #999;
-webkit-box-shadow: 2px 2px 3px #999;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
}
div.classindex ul {
list-style: none;
padding-left: 0;
}
div.classindex span.ai {
display: inline-block;
}
div.groupHeader {
margin-left: 16px;
margin-top: 12px;
font-weight: bold;
}
div.groupText {
margin-left: 16px;
font-style: italic;
}
body {
background-color: white;
color: black;
margin: 0;
}
div.contents {
margin-top: 10px;
margin-left: 12px;
margin-right: 8px;
}
td.indexkey {
background-color: #EBEFF6;
font-weight: bold;
border: 1px solid #C4CFE5;
margin: 2px 0px 2px 0;
padding: 2px 10px;
white-space: nowrap;
vertical-align: top;
}
td.indexvalue {
background-color: #EBEFF6;
border: 1px solid #C4CFE5;
padding: 2px 10px;
margin: 2px 0px;
}
tr.memlist {
background-color: #EEF1F7;
}
p.formulaDsp {
text-align: center;
}
img.formulaDsp {
}
img.formulaInl, img.inline {
vertical-align: middle;
}
div.center {
text-align: center;
margin-top: 0px;
margin-bottom: 0px;
padding: 0px;
}
div.center img {
border: 0px;
}
address.footer {
text-align: right;
padding-right: 12px;
}
img.footer {
border: 0px;
vertical-align: middle;
}
/* @group Code Colorization */
span.keyword {
color: #008000
}
span.keywordtype {
color: #604020
}
span.keywordflow {
color: #e08000
}
span.comment {
color: #800000
}
span.preprocessor {
color: #806020
}
span.stringliteral {
color: #002080
}
span.charliteral {
color: #008080
}
span.vhdldigit {
color: #ff00ff
}
span.vhdlchar {
color: #000000
}
span.vhdlkeyword {
color: #700070
}
span.vhdllogic {
color: #ff0000
}
blockquote {
background-color: #F7F8FB;
border-left: 2px solid #9CAFD4;
margin: 0 24px 0 4px;
padding: 0 12px 0 16px;
}
blockquote.DocNodeRTL {
border-left: 0;
border-right: 2px solid #9CAFD4;
margin: 0 4px 0 24px;
padding: 0 16px 0 12px;
}
/* @end */
/*
.search {
color: #003399;
font-weight: bold;
}
form.search {
margin-bottom: 0px;
margin-top: 0px;
}
input.search {
font-size: 75%;
color: #000080;
font-weight: normal;
background-color: #e8eef2;
}
*/
td.tiny {
font-size: 75%;
}
.dirtab {
padding: 4px;
border-collapse: collapse;
border: 1px solid #A3B4D7;
}
th.dirtab {
background: #EBEFF6;
font-weight: bold;
}
hr {
height: 0px;
border: none;
border-top: 1px solid #4A6AAA;
}
hr.footer {
height: 1px;
}
/* @group Member Descriptions */
table.memberdecls {
border-spacing: 0px;
padding: 0px;
}
.memberdecls td, .fieldtable tr {
-webkit-transition-property: background-color, box-shadow;
-webkit-transition-duration: 0.5s;
-moz-transition-property: background-color, box-shadow;
-moz-transition-duration: 0.5s;
-ms-transition-property: background-color, box-shadow;
-ms-transition-duration: 0.5s;
-o-transition-property: background-color, box-shadow;
-o-transition-duration: 0.5s;
transition-property: background-color, box-shadow;
transition-duration: 0.5s;
}
.memberdecls td.glow, .fieldtable tr.glow {
background-color: cyan;
box-shadow: 0 0 15px cyan;
}
.mdescLeft, .mdescRight,
.memItemLeft, .memItemRight,
.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
background-color: #F9FAFC;
border: none;
margin: 4px;
padding: 1px 0 0 8px;
}
.mdescLeft, .mdescRight {
padding: 0px 8px 4px 8px;
color: #555;
}
.memSeparator {
border-bottom: 1px solid #DEE4F0;
line-height: 1px;
margin: 0px;
padding: 0px;
}
.memItemLeft, .memTemplItemLeft {
white-space: nowrap;
}
.memItemRight, .memTemplItemRight {
width: 100%;
}
.memTemplParams {
color: #4665A2;
white-space: nowrap;
font-size: 80%;
}
/* @end */
/* @group Member Details */
/* Styles for detailed member documentation */
.memtitle {
padding: 8px;
border-top: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9;
border-top-right-radius: 4px;
border-top-left-radius: 4px;
margin-bottom: -1px;
background-image: url('nav_f.png');
background-repeat: repeat-x;
background-color: #E2E8F2;
line-height: 1.25;
font-weight: 300;
float:left;
}
.permalink
{
font-size: 65%;
display: inline-block;
vertical-align: middle;
}
.memtemplate {
font-size: 80%;
color: #4665A2;
font-weight: normal;
margin-left: 9px;
}
.memnav {
background-color: #EBEFF6;
border: 1px solid #A3B4D7;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
.mempage {
width: 100%;
}
.memitem {
padding: 0;
margin-bottom: 10px;
margin-right: 5px;
-webkit-transition: box-shadow 0.5s linear;
-moz-transition: box-shadow 0.5s linear;
-ms-transition: box-shadow 0.5s linear;
-o-transition: box-shadow 0.5s linear;
transition: box-shadow 0.5s linear;
display: table !important;
width: 100%;
}
.memitem.glow {
box-shadow: 0 0 15px cyan;
}
.memname {
font-weight: 400;
margin-left: 6px;
}
.memname td {
vertical-align: bottom;
}
.memproto, dl.reflist dt {
border-top: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9;
padding: 6px 0px 6px 0px;
color: #253555;
font-weight: bold;
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
background-color: #DFE5F1;
/* opera specific markup */
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
border-top-right-radius: 4px;
/* firefox specific markup */
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-moz-border-radius-topright: 4px;
/* webkit specific markup */
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-webkit-border-top-right-radius: 4px;
}
.overload {
font-family: "courier new",courier,monospace;
font-size: 65%;
}
.memdoc, dl.reflist dd {
border-bottom: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9;
padding: 6px 10px 2px 10px;
background-color: #FBFCFD;
border-top-width: 0;
background-image:url('nav_g.png');
background-repeat:repeat-x;
background-color: #FFFFFF;
/* opera specific markup */
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
/* firefox specific markup */
-moz-border-radius-bottomleft: 4px;
-moz-border-radius-bottomright: 4px;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
/* webkit specific markup */
-webkit-border-bottom-left-radius: 4px;
-webkit-border-bottom-right-radius: 4px;
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
}
dl.reflist dt {
padding: 5px;
}
dl.reflist dd {
margin: 0px 0px 10px 0px;
padding: 5px;
}
.paramkey {
text-align: right;
}
.paramtype {
white-space: nowrap;
}
.paramname {
color: #602020;
white-space: nowrap;
}
.paramname em {
font-style: normal;
}
.paramname code {
line-height: 14px;
}
.params, .retval, .exception, .tparams {
margin-left: 0px;
padding-left: 0px;
}
.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {
font-weight: bold;
vertical-align: top;
}
.params .paramtype, .tparams .paramtype {
font-style: italic;
vertical-align: top;
}
.params .paramdir, .tparams .paramdir {
font-family: "courier new",courier,monospace;
vertical-align: top;
}
table.mlabels {
border-spacing: 0px;
}
td.mlabels-left {
width: 100%;
padding: 0px;
}
td.mlabels-right {
vertical-align: bottom;
padding: 0px;
white-space: nowrap;
}
span.mlabels {
margin-left: 8px;
}
span.mlabel {
background-color: #728DC1;
border-top:1px solid #5373B4;
border-left:1px solid #5373B4;
border-right:1px solid #C4CFE5;
border-bottom:1px solid #C4CFE5;
text-shadow: none;
color: white;
margin-right: 4px;
padding: 2px 3px;
border-radius: 3px;
font-size: 7pt;
white-space: nowrap;
vertical-align: middle;
}
/* @end */
/* these are for tree view inside a (index) page */
div.directory {
margin: 10px 0px;
border-top: 1px solid #9CAFD4;
border-bottom: 1px solid #9CAFD4;
width: 100%;
}
.directory table {
border-collapse:collapse;
}
.directory td {
margin: 0px;
padding: 0px;
vertical-align: top;
}
.directory td.entry {
white-space: nowrap;
padding-right: 6px;
padding-top: 3px;
}
.directory td.entry a {
outline:none;
}
.directory td.entry a img {
border: none;
}
.directory td.desc {
width: 100%;
padding-left: 6px;
padding-right: 6px;
padding-top: 3px;
border-left: 1px solid rgba(0,0,0,0.05);
}
.directory tr.even {
padding-left: 6px;
background-color: #F7F8FB;
}
.directory img {
vertical-align: -30%;
}
.directory .levels {
white-space: nowrap;
width: 100%;
text-align: right;
font-size: 9pt;
}
.directory .levels span {
cursor: pointer;
padding-left: 2px;
padding-right: 2px;
color: #3D578C;
}
.arrow {
color: #9CAFD4;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
cursor: pointer;
font-size: 80%;
display: inline-block;
width: 16px;
height: 22px;
}
.icon {
font-family: Arial, Helvetica;
font-weight: bold;
font-size: 12px;
height: 14px;
width: 16px;
display: inline-block;
background-color: #728DC1;
color: white;
text-align: center;
border-radius: 4px;
margin-left: 2px;
margin-right: 2px;
}
.icona {
width: 24px;
height: 22px;
display: inline-block;
}
.iconfopen {
width: 24px;
height: 18px;
margin-bottom: 4px;
background-image:url('folderopen.png');
background-position: 0px -4px;
background-repeat: repeat-y;
vertical-align:top;
display: inline-block;
}
.iconfclosed {
width: 24px;
height: 18px;
margin-bottom: 4px;
background-image:url('folderclosed.png');
background-position: 0px -4px;
background-repeat: repeat-y;
vertical-align:top;
display: inline-block;
}
.icondoc {
width: 24px;
height: 18px;
margin-bottom: 4px;
background-image:url('doc.png');
background-position: 0px -4px;
background-repeat: repeat-y;
vertical-align:top;
display: inline-block;
}
table.directory {
font: 400 14px Roboto,sans-serif;
}
/* @end */
div.dynheader {
margin-top: 8px;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
address {
font-style: normal;
color: #2A3D61;
}
table.doxtable caption {
caption-side: top;
}
table.doxtable {
border-collapse:collapse;
margin-top: 4px;
margin-bottom: 4px;
}
table.doxtable td, table.doxtable th {
border: 1px solid #2D4068;
padding: 3px 7px 2px;
}
table.doxtable th {
background-color: #374F7F;
color: #FFFFFF;
font-size: 110%;
padding-bottom: 4px;
padding-top: 5px;
}
table.fieldtable {
/*width: 100%;*/
margin-bottom: 10px;
border: 1px solid #A8B8D9;
border-spacing: 0px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
-webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
}
.fieldtable td, .fieldtable th {
padding: 3px 7px 2px;
}
.fieldtable td.fieldtype, .fieldtable td.fieldname {
white-space: nowrap;
border-right: 1px solid #A8B8D9;
border-bottom: 1px solid #A8B8D9;
vertical-align: top;
}
.fieldtable td.fieldname {
padding-top: 3px;
}
.fieldtable td.fielddoc {
border-bottom: 1px solid #A8B8D9;
/*width: 100%;*/
}
.fieldtable td.fielddoc p:first-child {
margin-top: 0px;
}
.fieldtable td.fielddoc p:last-child {
margin-bottom: 2px;
}
.fieldtable tr:last-child td {
border-bottom: none;
}
.fieldtable th {
background-image:url('nav_f.png');
background-repeat:repeat-x;
background-color: #E2E8F2;
font-size: 90%;
color: #253555;
padding-bottom: 4px;
padding-top: 5px;
text-align:left;
font-weight: 400;
-moz-border-radius-topleft: 4px;
-moz-border-radius-topright: 4px;
-webkit-border-top-left-radius: 4px;
-webkit-border-top-right-radius: 4px;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom: 1px solid #A8B8D9;
}
.tabsearch {
top: 0px;
left: 10px;
height: 36px;
background-image: url('tab_b.png');
z-index: 101;
overflow: hidden;
font-size: 13px;
}
.navpath ul
{
font-size: 11px;
background-image:url('tab_b.png');
background-repeat:repeat-x;
background-position: 0 -5px;
height:30px;
line-height:30px;
color:#8AA0CC;
border:solid 1px #C2CDE4;
overflow:hidden;
margin:0px;
padding:0px;
}
.navpath li
{
list-style-type:none;
float:left;
padding-left:10px;
padding-right:15px;
background-image:url('bc_s.png');
background-repeat:no-repeat;
background-position:right;
color:#364D7C;
}
.navpath li.navelem a
{
height:32px;
display:block;
text-decoration: none;
outline: none;
color: #283A5D;
font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
text-decoration: none;
}
.navpath li.navelem a:hover
{
color:#6884BD;
}
.navpath li.footer
{
list-style-type:none;
float:right;
padding-left:10px;
padding-right:15px;
background-image:none;
background-repeat:no-repeat;
background-position:right;
color:#364D7C;
font-size: 8pt;
}
div.summary
{
float: right;
font-size: 8pt;
padding-right: 5px;
width: 50%;
text-align: right;
}
div.summary a
{
white-space: nowrap;
}
table.classindex
{
margin: 10px;
white-space: nowrap;
margin-left: 3%;
margin-right: 3%;
width: 94%;
border: 0;
border-spacing: 0;
padding: 0;
}
div.ingroups
{
font-size: 8pt;
width: 50%;
text-align: left;
}
div.ingroups a
{
white-space: nowrap;
}
div.header
{
background-image:url('nav_h.png');
background-repeat:repeat-x;
background-color: #F9FAFC;
margin: 0px;
border-bottom: 1px solid #C4CFE5;
}
div.headertitle
{
padding: 5px 5px 5px 10px;
}
.PageDocRTL-title div.headertitle {
text-align: right;
direction: rtl;
}
dl {
padding: 0 0 0 0;
}
/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */
dl.section {
margin-left: 0px;
padding-left: 0px;
}
dl.section.DocNodeRTL {
margin-right: 0px;
padding-right: 0px;
}
dl.note {
margin-left: -7px;
padding-left: 3px;
border-left: 4px solid;
border-color: #D0C000;
}
dl.note.DocNodeRTL {
margin-left: 0;
padding-left: 0;
border-left: 0;
margin-right: -7px;
padding-right: 3px;
border-right: 4px solid;
border-color: #D0C000;
}
dl.warning, dl.attention {
margin-left: -7px;
padding-left: 3px;
border-left: 4px solid;
border-color: #FF0000;
}
dl.warning.DocNodeRTL, dl.attention.DocNodeRTL {
margin-left: 0;
padding-left: 0;
border-left: 0;
margin-right: -7px;
padding-right: 3px;
border-right: 4px solid;
border-color: #FF0000;
}
dl.pre, dl.post, dl.invariant {
margin-left: -7px;
padding-left: 3px;
border-left: 4px solid;
border-color: #00D000;
}
dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {
margin-left: 0;
padding-left: 0;
border-left: 0;
margin-right: -7px;
padding-right: 3px;
border-right: 4px solid;
border-color: #00D000;
}
dl.deprecated {
margin-left: -7px;
padding-left: 3px;
border-left: 4px solid;
border-color: #505050;
}
dl.deprecated.DocNodeRTL {
margin-left: 0;
padding-left: 0;
border-left: 0;
margin-right: -7px;
padding-right: 3px;
border-right: 4px solid;
border-color: #505050;
}
dl.todo {
margin-left: -7px;
padding-left: 3px;
border-left: 4px solid;
border-color: #00C0E0;
}
dl.todo.DocNodeRTL {
margin-left: 0;
padding-left: 0;
border-left: 0;
margin-right: -7px;
padding-right: 3px;
border-right: 4px solid;
border-color: #00C0E0;
}
dl.test {
margin-left: -7px;
padding-left: 3px;
border-left: 4px solid;
border-color: #3030E0;
}
dl.test.DocNodeRTL {
margin-left: 0;
padding-left: 0;
border-left: 0;
margin-right: -7px;
padding-right: 3px;
border-right: 4px solid;
border-color: #3030E0;
}
dl.bug {
margin-left: -7px;
padding-left: 3px;
border-left: 4px solid;
border-color: #C08050;
}
dl.bug.DocNodeRTL {
margin-left: 0;
padding-left: 0;
border-left: 0;
margin-right: -7px;
padding-right: 3px;
border-right: 4px solid;
border-color: #C08050;
}
dl.section dd {
margin-bottom: 6px;
}
#projectlogo
{
text-align: center;
vertical-align: bottom;
border-collapse: separate;
}
#projectlogo img
{
border: 0px none;
}
#projectalign
{
vertical-align: middle;
}
#projectname
{
font: 300% Tahoma, Arial,sans-serif;
margin: 0px;
padding: 2px 0px;
}
#projectbrief
{
font: 120% Tahoma, Arial,sans-serif;
margin: 0px;
padding: 0px;
}
#projectnumber
{
font: 50% Tahoma, Arial,sans-serif;
margin: 0px;
padding: 0px;
}
#titlearea
{
padding: 0px;
margin: 0px;
width: 100%;
border-bottom: 1px solid #5373B4;
}
.image
{
text-align: center;
}
.dotgraph
{
text-align: center;
}
.mscgraph
{
text-align: center;
}
.plantumlgraph
{
text-align: center;
}
.diagraph
{
text-align: center;
}
.caption
{
font-weight: bold;
}
div.zoom
{
border: 1px solid #90A5CE;
}
dl.citelist {
margin-bottom:50px;
}
dl.citelist dt {
color:#334975;
float:left;
font-weight:bold;
margin-right:10px;
padding:5px;
text-align:right;
width:52px;
}
dl.citelist dd {
margin:2px 0 2px 72px;
padding:5px 0;
}
div.toc {
padding: 14px 25px;
background-color: #F4F6FA;
border: 1px solid #D8DFEE;
border-radius: 7px 7px 7px 7px;
float: right;
height: auto;
margin: 0 8px 10px 10px;
width: 200px;
}
.PageDocRTL-title div.toc {
float: left !important;
text-align: right;
}
div.toc li {
background: url("bdwn.png") no-repeat scroll 0 5px transparent;
font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
margin-top: 5px;
padding-left: 10px;
padding-top: 2px;
}
.PageDocRTL-title div.toc li {
background-position-x: right !important;
padding-left: 0 !important;
padding-right: 10px;
}
div.toc h3 {
font: bold 12px/1.2 Arial,FreeSans,sans-serif;
color: #4665A2;
border-bottom: 0 none;
margin: 0;
}
div.toc ul {
list-style: none outside none;
border: medium none;
padding: 0px;
}
div.toc li.level1 {
margin-left: 0px;
}
div.toc li.level2 {
margin-left: 15px;
}
div.toc li.level3 {
margin-left: 30px;
}
div.toc li.level4 {
margin-left: 45px;
}
span.emoji {
/* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html
* font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort;
*/
}
.PageDocRTL-title div.toc li.level1 {
margin-left: 0 !important;
margin-right: 0;
}
.PageDocRTL-title div.toc li.level2 {
margin-left: 0 !important;
margin-right: 15px;
}
.PageDocRTL-title div.toc li.level3 {
margin-left: 0 !important;
margin-right: 30px;
}
.PageDocRTL-title div.toc li.level4 {
margin-left: 0 !important;
margin-right: 45px;
}
.inherit_header {
font-weight: bold;
color: gray;
cursor: pointer;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.inherit_header td {
padding: 6px 0px 2px 5px;
}
.inherit {
display: none;
}
tr.heading h2 {
margin-top: 12px;
margin-bottom: 4px;
}
/* tooltip related style info */
.ttc {
position: absolute;
display: none;
}
#powerTip {
cursor: default;
white-space: nowrap;
background-color: white;
border: 1px solid gray;
border-radius: 4px 4px 4px 4px;
box-shadow: 1px 1px 7px gray;
display: none;
font-size: smaller;
max-width: 80%;
opacity: 0.9;
padding: 1ex 1em 1em;
position: absolute;
z-index: 2147483647;
}
#powerTip div.ttdoc {
color: grey;
font-style: italic;
}
#powerTip div.ttname a {
font-weight: bold;
}
#powerTip div.ttname {
font-weight: bold;
}
#powerTip div.ttdeci {
color: #006318;
}
#powerTip div {
margin: 0px;
padding: 0px;
font: 12px/16px Roboto,sans-serif;
}
#powerTip:before, #powerTip:after {
content: "";
position: absolute;
margin: 0px;
}
#powerTip.n:after, #powerTip.n:before,
#powerTip.s:after, #powerTip.s:before,
#powerTip.w:after, #powerTip.w:before,
#powerTip.e:after, #powerTip.e:before,
#powerTip.ne:after, #powerTip.ne:before,
#powerTip.se:after, #powerTip.se:before,
#powerTip.nw:after, #powerTip.nw:before,
#powerTip.sw:after, #powerTip.sw:before {
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
}
#powerTip.n:after, #powerTip.s:after,
#powerTip.w:after, #powerTip.e:after,
#powerTip.nw:after, #powerTip.ne:after,
#powerTip.sw:after, #powerTip.se:after {
border-color: rgba(255, 255, 255, 0);
}
#powerTip.n:before, #powerTip.s:before,
#powerTip.w:before, #powerTip.e:before,
#powerTip.nw:before, #powerTip.ne:before,
#powerTip.sw:before, #powerTip.se:before {
border-color: rgba(128, 128, 128, 0);
}
#powerTip.n:after, #powerTip.n:before,
#powerTip.ne:after, #powerTip.ne:before,
#powerTip.nw:after, #powerTip.nw:before {
top: 100%;
}
#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
border-top-color: #FFFFFF;
border-width: 10px;
margin: 0px -10px;
}
#powerTip.n:before {
border-top-color: #808080;
border-width: 11px;
margin: 0px -11px;
}
#powerTip.n:after, #powerTip.n:before {
left: 50%;
}
#powerTip.nw:after, #powerTip.nw:before {
right: 14px;
}
#powerTip.ne:after, #powerTip.ne:before {
left: 14px;
}
#powerTip.s:after, #powerTip.s:before,
#powerTip.se:after, #powerTip.se:before,
#powerTip.sw:after, #powerTip.sw:before {
bottom: 100%;
}
#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
border-bottom-color: #FFFFFF;
border-width: 10px;
margin: 0px -10px;
}
#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
border-bottom-color: #808080;
border-width: 11px;
margin: 0px -11px;
}
#powerTip.s:after, #powerTip.s:before {
left: 50%;
}
#powerTip.sw:after, #powerTip.sw:before {
right: 14px;
}
#powerTip.se:after, #powerTip.se:before {
left: 14px;
}
#powerTip.e:after, #powerTip.e:before {
left: 100%;
}
#powerTip.e:after {
border-left-color: #FFFFFF;
border-width: 10px;
top: 50%;
margin-top: -10px;
}
#powerTip.e:before {
border-left-color: #808080;
border-width: 11px;
top: 50%;
margin-top: -11px;
}
#powerTip.w:after, #powerTip.w:before {
right: 100%;
}
#powerTip.w:after {
border-right-color: #FFFFFF;
border-width: 10px;
top: 50%;
margin-top: -10px;
}
#powerTip.w:before {
border-right-color: #808080;
border-width: 11px;
top: 50%;
margin-top: -11px;
}
@media print
{
#top { display: none; }
#side-nav { display: none; }
#nav-path { display: none; }
body { overflow:visible; }
h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
.summary { display: none; }
.memitem { page-break-inside: avoid; }
#doc-content
{
margin-left:0 !important;
height:auto !important;
width:auto !important;
overflow:inherit;
display:inline;
}
}
/* @group Markdown */
table.markdownTable {
border-collapse:collapse;
margin-top: 4px;
margin-bottom: 4px;
}
table.markdownTable td, table.markdownTable th {
border: 1px solid #2D4068;
padding: 3px 7px 2px;
}
table.markdownTable tr {
}
th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
background-color: #374F7F;
color: #FFFFFF;
font-size: 110%;
padding-bottom: 4px;
padding-top: 5px;
}
th.markdownTableHeadLeft, td.markdownTableBodyLeft {
text-align: left
}
th.markdownTableHeadRight, td.markdownTableBodyRight {
text-align: right
}
th.markdownTableHeadCenter, td.markdownTableBodyCenter {
text-align: center
}
.DocNodeRTL {
text-align: right;
direction: rtl;
}
.DocNodeLTR {
text-align: left;
direction: ltr;
}
table.DocNodeRTL {
width: auto;
margin-right: 0;
margin-left: auto;
}
table.DocNodeLTR {
width: auto;
margin-right: auto;
margin-left: 0;
}
tt, code, kbd, samp
{
display: inline-block;
direction:ltr;
}
/* @end */
u {
text-decoration: underline;
}
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" viewBox="0 0 104 31" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient id="a">
<stop stop-color="#5373B4" offset="0"/>
<stop stop-color="#7C95C6" offset="1"/>
</linearGradient>
<linearGradient id="d" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
<linearGradient id="c" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientTransform="matrix(.6816 0 0 1.0248 72.391 -.91809)" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
<linearGradient id="b" x1="56.295" x2="56.295" y1="24.622" y2="26.574" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
<linearGradient id="e" x1="49.067" x2="48.956" y1="19.719" y2="9.5227" gradientTransform="matrix(.97968 0 0 1.0207 -.25579 -.25579)" gradientUnits="userSpaceOnUse">
<stop stop-color="#C0CCE3" offset="0"/>
<stop stop-color="#EEF1F7" offset="1"/>
</linearGradient>
<filter id="f" x="-.010676" y="-.045304" width="1.0214" height="1.0906" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation="0.45293203"/>
</filter>
</defs>
<g>
<path transform="translate(-2.5759 -27.848)" d="m13.609 32.203v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23645 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88018-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35277 3.7988-1.0566 1.0471-0.70387 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.92299-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.4611 0.28066 1.7988 0.84375 0.33777 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5976v-8.3926c0-0.84464-0.0765-1.6106-0.22851-2.2969-0.13511-0.70387-0.37971-1.2925-0.73438-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.063 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07028-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06051 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3438h-0.05078l-2.9648-9.3438zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914 0.38844 0.24635 0.6991 0.57184 0.93555 0.97656 0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13253 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10134 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88814-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70105 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.4927-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89025 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74023 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" filter="url(#f)" opacity=".3" stroke="#969696" xlink:href="#path141"/>
<path d="m0.97202 24.161 43.605-0.0019 0.0508 3.3061-43.6 0.04174z" fill="url(#d)" stroke="#000" stroke-width=".5"/>
<path d="m10.283 3.5547v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23644 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88017-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35278 3.7988-1.0566 1.0471-0.70386 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.923-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.461 0.28066 1.7988 0.84375 0.33778 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5977v-8.3926c0-0.84464-0.0765-1.6106-0.22852-2.2969-0.13511-0.70387-0.3797-1.2925-0.73437-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.062 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07027-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06052 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3437h-0.05078l-2.9648-9.3437zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914s0.6991 0.57184 0.93555 0.97656c0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13254 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10133 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88813-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70106 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.49271-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89026 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74024 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" fill="url(#e)" stroke="#4665A2" stroke-width=".7"/>
<path d="m52.988 27.291c0.99602-1.0359 1.3944-1.8725 1.7928-3.1076l3.8247-0.03984c0.3113 1.6096 0.82413 2.5137 1.6335 3.1474z" fill="url(#b)" stroke="#000" stroke-width=".5"/>
<path d="m73.89 24.04 28.885-0.2011-0.12476 3.3879-31.033 0.16229c1.2621-1.0234 1.9665-2.2859 2.2724-3.3491z" fill="url(#c)" stroke="#000" stroke-width=".41788"/>
</g>
</svg>
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
function toggleVisibility(linkObj)
{
var base = $(linkObj).attr('id');
var summary = $('#'+base+'-summary');
var content = $('#'+base+'-content');
var trigger = $('#'+base+'-trigger');
var src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
}
function updateStripes()
{
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
}
function toggleLevel(level)
{
$('table.directory tr').each(function() {
var l = this.id.split('_').length-1;
var i = $('#img'+this.id.substring(3));
var a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
a.html('&#9660;');
$(this).show();
} else if (l==level+1) {
i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
a.html('&#9658;');
$(this).show();
} else {
$(this).hide();
}
});
updateStripes();
}
function toggleFolder(id)
{
// the clicked row
var currentRow = $('#row_'+id);
// all rows after the clicked row
var rows = currentRow.nextAll("tr");
var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
// only match elements AFTER this one (can't hide elements before)
var childRows = rows.filter(function() { return this.id.match(re); });
// first row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
// replace down arrow by right arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
currentRowSpans.filter(".arrow").html('&#9658;');
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
currentRowSpans.filter(".arrow").html('&#9660;');
// replace down arrows by right arrows for child rows
var childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
childRowsSpans.filter(".arrow").html('&#9658;');
childRows.show(); //show all children
}
updateStripes();
}
function toggleInherit(id)
{
var rows = $('tr.inherit.'+id);
var img = $('tr.inherit_header.'+id+' img');
var src = $(img).attr('src');
if (rows.filter(':first').is(':visible')===true) {
rows.css('display','none');
$(img).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
rows.css('display','table-row'); // using show() causes jump in firefox
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
}
}
/* @license-end */
$(document).ready(function() {
$('.code,.codeRef').each(function() {
$(this).data('powertip',$('#a'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html());
$(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true });
});
});
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: File List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">File List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html" target="_self">main</a></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="main_2____init_____8py_source.html"><span class="icondoc"></span></a><b>__init__.py</b></td><td class="desc"></td></tr>
<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="admin_8py_source.html"><span class="icondoc"></span></a><b>admin.py</b></td><td class="desc"></td></tr>
<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="apps_8py_source.html"><span class="icondoc"></span></a><b>apps.py</b></td><td class="desc"></td></tr>
<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="automation_8py_source.html"><span class="icondoc"></span></a><a class="el" href="automation_8py.html" target="_self">automation.py</a></td><td class="desc">This file is used for Sending messages to the users </td></tr>
<tr id="row_0_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="clockinterval_8py_source.html"><span class="icondoc"></span></a><a class="el" href="clockinterval_8py.html" target="_self">clockinterval.py</a></td><td class="desc">This file is used for Regular Updates automatically </td></tr>
<tr id="row_0_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="forms_8py_source.html"><span class="icondoc"></span></a><b>forms.py</b></td><td class="desc"></td></tr>
<tr id="row_0_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="letsloginourself_8py_source.html"><span class="icondoc"></span></a><b>letsloginourself.py</b></td><td class="desc"></td></tr>
<tr id="row_0_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="login_8py_source.html"><span class="icondoc"></span></a><a class="el" href="login_8py.html" target="_self">login.py</a></td><td class="desc">This file is used get the courses information from the moodle </td></tr>
<tr id="row_0_8_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="models_8py_source.html"><span class="icondoc"></span></a><b>models.py</b></td><td class="desc"></td></tr>
<tr id="row_0_9_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="subjectdatabase_8py_source.html"><span class="icondoc"></span></a><b>subjectdatabase.py</b></td><td class="desc"></td></tr>
<tr id="row_0_10_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="tests_8py_source.html"><span class="icondoc"></span></a><b>tests.py</b></td><td class="desc"></td></tr>
<tr id="row_0_11_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="timely__update_8py_source.html"><span class="icondoc"></span></a><a class="el" href="timely__update_8py.html" target="_self">timely_update.py</a></td><td class="desc">This file contains the list fo functions that are called by scheduler for updating the subject database </td></tr>
<tr id="row_0_12_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="updateDB_8py_source.html"><span class="icondoc"></span></a><a class="el" href="updateDB_8py.html" target="_self">updateDB.py</a></td><td class="desc">This file is used for Updating the Moodle Database </td></tr>
<tr id="row_0_13_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="main_2urls_8py_source.html"><span class="icondoc"></span></a><b>urls.py</b></td><td class="desc"></td></tr>
<tr id="row_0_14_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="utils_8py_source.html"><span class="icondoc"></span></a><b>utils.py</b></td><td class="desc"></td></tr>
<tr id="row_0_15_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="views_8py_source.html"><span class="icondoc"></span></a><a class="el" href="views_8py.html" target="_self">views.py</a></td><td class="desc">File documentation </td></tr>
<tr id="row_1_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span id="img_1_" class="iconfopen" onclick="toggleFolder('1_')">&#160;</span><a class="el" href="dir_2d978bdce16c291c9c81f068e91d317d.html" target="_self">moodleNotifier</a></td><td class="desc"></td></tr>
<tr id="row_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="moodleNotifier_2____init_____8py_source.html"><span class="icondoc"></span></a><b>__init__.py</b></td><td class="desc"></td></tr>
<tr id="row_1_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="asgi_8py_source.html"><span class="icondoc"></span></a><b>asgi.py</b></td><td class="desc"></td></tr>
<tr id="row_1_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="settings_8py_source.html"><span class="icondoc"></span></a><b>settings.py</b></td><td class="desc"></td></tr>
<tr id="row_1_3_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="moodleNotifier_2urls_8py_source.html"><span class="icondoc"></span></a><b>urls.py</b></td><td class="desc"></td></tr>
<tr id="row_1_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="wsgi_8py_source.html"><span class="icondoc"></span></a><b>wsgi.py</b></td><td class="desc"></td></tr>
<tr id="row_2_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="generatetoken_8py_source.html"><span class="icondoc"></span></a><b>generatetoken.py</b></td><td class="desc"></td></tr>
<tr id="row_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="manage_8py_source.html"><span class="icondoc"></span></a><b>manage.py</b></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/forms.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">forms.py</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="keyword">from</span> django <span class="keyword">import</span> forms</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="keyword">from</span> .models <span class="keyword">import</span> Student</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="keyword">from</span> django.forms <span class="keyword">import</span> ModelForm</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="keyword">from</span> django.utils.translation <span class="keyword">import</span> gettext_lazy <span class="keyword">as</span> _</div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; </div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; </div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160; </div>
<div class="line"><a name="l00010"></a><span class="lineno"><a class="line" href="classmain_1_1forms_1_1CreateNewUser.html"> 10</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmain_1_1forms_1_1CreateNewUser.html">CreateNewUser</a>(forms.ModelForm):</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; fname = forms.CharField(max_length=200)</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; phone_number = forms.CharField(max_length=10)</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; roll_number = forms.CharField(max_length=9)</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; moodle_token = forms.CharField(max_length=100)</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; </div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">class </span><a class="code" href="classmain_1_1forms_1_1CreateNewUser.html">CreateNewUser</a>(ModelForm):</div>
<div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html"> 21</a></span>&#160; <span class="keyword">class </span><a class="code" href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html">Meta</a>:</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; model = Student</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; fields = [</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="stringliteral">&quot;fname&quot;</span>, <span class="stringliteral">&quot;phone_number&quot;</span>, <span class="stringliteral">&quot;roll_number&quot;</span>, <span class="stringliteral">&quot;moodle_token&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; ]</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; labels = {</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="stringliteral">&#39;fname&#39;</span>: _(<span class="stringliteral">&#39;Full Name&#39;</span>),</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="stringliteral">&#39;phone_number&#39;</span>: _(<span class="stringliteral">&#39;Phone Number&#39;</span>),</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="stringliteral">&#39;roll_number&#39;</span>: _(<span class="stringliteral">&#39;Roll Number&#39;</span>),</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="stringliteral">&#39;moodle_token&#39;</span>: _(<span class="stringliteral">&#39;Moodle Token&#39;</span>),</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; }</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; help_texts = {</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="stringliteral">&#39;phone_number&#39;</span>: _(<span class="stringliteral">&#39;Enter Your WhatsApp Number.&#39;</span>),</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="stringliteral">&#39;moodle_token&#39;</span>: _(<span class="stringliteral">&#39;Enter Moodle Token Generated&#39;</span>),</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; }</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; </div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">def </span>clean_phone_number(self):</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; phone_number = self.cleaned_data.get(<span class="stringliteral">&#39;phone_number&#39;</span>)</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">if</span> len(phone_number) != 10:</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">raise</span> forms.ValidationError(<span class="stringliteral">&quot;Invalid Phone Number.&quot;</span>)</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> phone_number</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">def </span>clean_roll_number(self):</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; roll_number = self.cleaned_data.get(<span class="stringliteral">&#39;roll_number&#39;</span>)</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> len(roll_number) != 9:</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">raise</span> forms.ValidationError(<span class="stringliteral">&quot;Invalid Roll Number.&quot;</span>)</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> roll_number</div>
<div class="ttc" id="aclassmain_1_1forms_1_1CreateNewUser_1_1Meta_html"><div class="ttname"><a href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html">main.forms.CreateNewUser.Meta</a></div><div class="ttdef"><b>Definition:</b> <a href="forms_8py_source.html#l00021">forms.py:21</a></div></div>
<div class="ttc" id="aclassmain_1_1forms_1_1CreateNewUser_html"><div class="ttname"><a href="classmain_1_1forms_1_1CreateNewUser.html">main.forms.CreateNewUser</a></div><div class="ttdoc">This Class is Used for Creating entries, adding labels and helper text in the Registration Page.</div><div class="ttdef"><b>Definition:</b> <a href="forms_8py_source.html#l00010">forms.py:10</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: Class Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
<div class="textblock">Here is a list of all documented class members with links to the class documentation for each member:</div><ul>
<li>get_login()
: <a class="el" href="classgeneratetoken_1_1RequestHelper.html#a1bf92d3a91253130ad0978c9a2537549">generatetoken.RequestHelper</a>
, <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a4b6fe822aad6ca52011906faa04e8be8">main.letsloginourself.RequestHelper</a>
</li>
<li>get_simple_moodle_version()
: <a class="el" href="classgeneratetoken_1_1RequestHelper.html#ab9743c931c6e0490a24b65cda17a845f">generatetoken.RequestHelper</a>
, <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#aeb5ca2cd43fae0421e55d2aafad47dcb">main.letsloginourself.RequestHelper</a>
</li>
<li>get_URL()
: <a class="el" href="classgeneratetoken_1_1RequestHelper.html#ab38c62635f6e60d54e7d8dea21038b95">generatetoken.RequestHelper</a>
, <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a7ecfd4e19fac657d9ef89b3db78e1fcb">main.letsloginourself.RequestHelper</a>
</li>
<li>post_REST()
: <a class="el" href="classgeneratetoken_1_1RequestHelper.html#a422ff4a5b67d558a3872c6a18b99c046">generatetoken.RequestHelper</a>
, <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a798868477ff79a1b4cfab9a1aa344478">main.letsloginourself.RequestHelper</a>
</li>
<li>post_URL()
: <a class="el" href="classgeneratetoken_1_1RequestHelper.html#a4574e844798e1515cde1b3696f6b1de7">generatetoken.RequestHelper</a>
, <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a86bc5515b701461f9bd32318a6df9429">main.letsloginourself.RequestHelper</a>
</li>
<li>recursive_urlencode()
: <a class="el" href="classgeneratetoken_1_1RequestHelper.html#a9e6dc179c3f9e2daf9c9716a8fbc7c72">generatetoken.RequestHelper</a>
, <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a3bbf9b9329e3ac0cbc9b7d467dd4e0b9">main.letsloginourself.RequestHelper</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: Class Members - Functions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>get_login()
: <a class="el" href="classgeneratetoken_1_1RequestHelper.html#a1bf92d3a91253130ad0978c9a2537549">generatetoken.RequestHelper</a>
, <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a4b6fe822aad6ca52011906faa04e8be8">main.letsloginourself.RequestHelper</a>
</li>
<li>get_simple_moodle_version()
: <a class="el" href="classgeneratetoken_1_1RequestHelper.html#ab9743c931c6e0490a24b65cda17a845f">generatetoken.RequestHelper</a>
, <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#aeb5ca2cd43fae0421e55d2aafad47dcb">main.letsloginourself.RequestHelper</a>
</li>
<li>get_URL()
: <a class="el" href="classgeneratetoken_1_1RequestHelper.html#ab38c62635f6e60d54e7d8dea21038b95">generatetoken.RequestHelper</a>
, <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a7ecfd4e19fac657d9ef89b3db78e1fcb">main.letsloginourself.RequestHelper</a>
</li>
<li>post_REST()
: <a class="el" href="classgeneratetoken_1_1RequestHelper.html#a422ff4a5b67d558a3872c6a18b99c046">generatetoken.RequestHelper</a>
, <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a798868477ff79a1b4cfab9a1aa344478">main.letsloginourself.RequestHelper</a>
</li>
<li>post_URL()
: <a class="el" href="classgeneratetoken_1_1RequestHelper.html#a4574e844798e1515cde1b3696f6b1de7">generatetoken.RequestHelper</a>
, <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a86bc5515b701461f9bd32318a6df9429">main.letsloginourself.RequestHelper</a>
</li>
<li>recursive_urlencode()
: <a class="el" href="classgeneratetoken_1_1RequestHelper.html#a9e6dc179c3f9e2daf9c9716a8fbc7c72">generatetoken.RequestHelper</a>
, <a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a3bbf9b9329e3ac0cbc9b7d467dd4e0b9">main.letsloginourself.RequestHelper</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: generatetoken.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">generatetoken.py</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="keyword">import</span> re</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="keyword">import</span> os</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="keyword">import</span> json</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="keyword">import</span> urllib</div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="keyword">import</span> urllib3</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="keyword">import</span> requests</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="keyword">import</span> logging</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; </div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="keyword">from</span> http.cookiejar <span class="keyword">import</span> MozillaCookieJar</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="keyword">from</span> urllib.parse <span class="keyword">import</span> urlparse</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="keyword">from</span> getpass <span class="keyword">import</span> getpass</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; </div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;moodle_domain = <span class="stringliteral">&quot;moodle.iitb.ac.in&quot;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;moodle_path = <span class="stringliteral">&quot;/&quot;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; </div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="classgeneratetoken_1_1RequestHelper.html"> 20</a></span>&#160;<span class="keyword">class </span><a class="code" href="classgeneratetoken_1_1RequestHelper.html">RequestHelper</a>:</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="stringliteral"> Encapsulates the recurring logic for sending out requests to the</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="stringliteral"> Moodle-System.</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; stdHeader = {</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="stringliteral">&#39;User-Agent&#39;</span>: (</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="stringliteral">&#39;Mozilla/5.0 (Linux; Android 7.1.1; Moto G Play Build/NPIS26.48-43-2; wv) AppleWebKit/537.36&#39;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; + <span class="stringliteral">&#39; (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36 MoodleMobile&#39;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; ),</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="stringliteral">&#39;Content-Type&#39;</span>: <span class="stringliteral">&#39;application/x-www-form-urlencoded&#39;</span>,</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; </div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">def </span>__init__(</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; self,</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; moodle_domain: str,</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; moodle_path: str = <span class="stringliteral">&#39;/&#39;</span>,</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; token: str = <span class="stringliteral">&#39;&#39;</span>,</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; skip_cert_verify: bool = <span class="keyword">False</span>,</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; log_responses_to: str = <span class="keywordtype">None</span>,</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; ):</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#a1176524e07be0f61ddb2f400f4b75f00">token</a>token = token</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#a1b20bf8b1c0c3045113cdd51f0f5f5d6">moodle_domain</a>moodle_domain = moodle_domain</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#a6dc29ebecdcdbd27562c18c93c934716">moodle_path</a>moodle_path = moodle_path</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#aa9f0b08cff9adc2f85a797e913ee223f">verify</a>verify = <span class="keywordflow">not</span> skip_cert_verify</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#afa0be462dca08626925bad713a2bd9b3">url_base</a>url_base = <span class="stringliteral">&#39;https://&#39;</span> + moodle_domain + moodle_path</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; </div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#aa2816c2050175e1823c59570359db999">log_responses_to</a>log_responses_to = log_responses_to</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#ae1dcbfeedc859a563d49fc0fc62e6d03">log_responses</a>log_responses = <span class="keyword">False</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span> log_responses_to <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#ae1dcbfeedc859a563d49fc0fc62e6d03">log_responses</a>log_responses = <span class="keyword">True</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">with</span> open(self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#aa2816c2050175e1823c59570359db999">log_responses_to</a>log_responses_to, <span class="stringliteral">&#39;w&#39;</span>) <span class="keyword">as</span> response_log_file:</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; response_log_file.write(<span class="stringliteral">&#39;JSON Log:\n\n&#39;</span>)</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; logging.getLogger(<span class="stringliteral">&quot;requests&quot;</span>).setLevel(logging.WARNING)</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; logging.getLogger(<span class="stringliteral">&quot;urllib3&quot;</span>).setLevel(logging.WARNING)</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; urllib3.disable_warnings()</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="comment"># logging.captureWarnings(True)</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; </div>
<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classgeneratetoken_1_1RequestHelper.html#a4574e844798e1515cde1b3696f6b1de7"> 62</a></span>&#160; <span class="keyword">def </span><a class="code" href="classgeneratetoken_1_1RequestHelper.html#a4574e844798e1515cde1b3696f6b1de7">post_URL</a>(self, url: str, data: {str: str} = <span class="keywordtype">None</span>, cookie_jar_path: str = <span class="keywordtype">None</span>):</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="stringliteral"> Sends a POST request to a specific URL, including saving of cookies in cookie jar.</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="stringliteral"> @param url: The url to which the request is sent. (the moodle base url is not added to the given URL)</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="stringliteral"> @param data: The optional data is added to the POST body.</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="stringliteral"> @param cookie_jar_path: Path to the cookies file.</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="stringliteral"> @return: The resulting response object and the session object.</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; </div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; data_urlencoded = <span class="stringliteral">&quot;&quot;</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span> data <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; data_urlencoded = RequestHelper.recursive_urlencode(data)</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; session = requests.Session()</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; </div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span> cookie_jar_path <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; session.cookies = MozillaCookieJar(cookie_jar_path)</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; </div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span> os.path.exists(cookie_jar_path):</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; session.cookies.load(ignore_discard=<span class="keyword">True</span>, ignore_expires=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; </div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; response = session.post(url, data=data_urlencoded, headers=self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#a6518c9c5f142794624a3eb3212ad87ac">stdHeader</a>stdHeader, verify=self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#aa9f0b08cff9adc2f85a797e913ee223f">verify</a>verify)</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; </div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">if</span> cookie_jar_path <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">for</span> cookie <span class="keywordflow">in</span> session.cookies:</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; cookie.expires = 2147483647</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; session.cookies.save(ignore_discard=<span class="keyword">True</span>, ignore_expires=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> response, session</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; </div>
<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classgeneratetoken_1_1RequestHelper.html#ab38c62635f6e60d54e7d8dea21038b95"> 93</a></span>&#160; <span class="keyword">def </span><a class="code" href="classgeneratetoken_1_1RequestHelper.html#ab38c62635f6e60d54e7d8dea21038b95">get_URL</a>(self, url: str, cookie_jar_path: str = <span class="keywordtype">None</span>):</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="stringliteral"> Sends a GET request to a specific URL of the Moodle system, including additional cookies</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="stringliteral"> (cookies are updated after the request)</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="stringliteral"> @param url: The url to which the request is sent. (the moodle base url is not added to the given URL)</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="stringliteral"> @param cookie_jar_path: The optional cookies to add to the request</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="stringliteral"> @return: The resulting Response object.</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; </div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; session = requests.Session()</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; </div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span> cookie_jar_path <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; session.cookies = MozillaCookieJar(cookie_jar_path)</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; </div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span> os.path.exists(cookie_jar_path):</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; session.cookies.load(ignore_discard=<span class="keyword">True</span>, ignore_expires=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; </div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; response = session.get(url, headers=self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#a6518c9c5f142794624a3eb3212ad87ac">stdHeader</a>stdHeader, verify=self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#aa9f0b08cff9adc2f85a797e913ee223f">verify</a>verify)</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; </div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">if</span> cookie_jar_path <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; session.cookies.save(ignore_discard=<span class="keyword">True</span>, ignore_expires=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; </div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> response, session</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; </div>
<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classgeneratetoken_1_1RequestHelper.html#a422ff4a5b67d558a3872c6a18b99c046"> 117</a></span>&#160; <span class="keyword">def </span><a class="code" href="classgeneratetoken_1_1RequestHelper.html#a422ff4a5b67d558a3872c6a18b99c046">post_REST</a>(self, function: str, data: {str: str} = <span class="keywordtype">None</span>) -&gt; object:</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="stringliteral"> Sends a POST request to the REST endpoint of the Moodle system</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="stringliteral"> @param function: The Web service function to be called.</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="stringliteral"> @param data: The optional data is added to the POST body.</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="stringliteral"> @return: The JSON response returned by the Moodle system, already</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="stringliteral"> checked for errors.</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; </div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">if</span> self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#a1176524e07be0f61ddb2f400f4b75f00">token</a>token <span class="keywordflow">is</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">raise</span> ValueError(<span class="stringliteral">&#39;The required Token is not set!&#39;</span>)</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; </div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; data_urlencoded = self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#ad1edba224bbcb8f19daccfaa36dab949">_get_POST_DATA</a>_get_POST_DATA(function, self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#a1176524e07be0f61ddb2f400f4b75f00">token</a>token, data)</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; url = self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#adc0b81bf893a94aafb0d94e6d7f848d3">_get_REST_POST_URL</a>_get_REST_POST_URL(self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#afa0be462dca08626925bad713a2bd9b3">url_base</a>url_base, function)</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; response = requests.post(url, data=data_urlencoded, headers=self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#a6518c9c5f142794624a3eb3212ad87ac">stdHeader</a>stdHeader, verify=self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#aa9f0b08cff9adc2f85a797e913ee223f">verify</a>verify)</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; json_result = self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#af3ed55bac77ac3d821eabeef0029010f">_initial_parse</a>_initial_parse(response)</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; </div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#ae1dcbfeedc859a563d49fc0fc62e6d03">log_responses</a>log_responses <span class="keywordflow">and</span> function <span class="keywordflow">not</span> <span class="keywordflow">in</span> [<span class="stringliteral">&#39;tool_mobile_get_autologin_key&#39;</span>]:</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">with</span> open(self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#aa2816c2050175e1823c59570359db999">log_responses_to</a>log_responses_to, <span class="stringliteral">&#39;a&#39;</span>) <span class="keyword">as</span> response_log_file:</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; response_log_file.write(<span class="stringliteral">&#39;URL: {}\n&#39;</span>.format(response.url))</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; response_log_file.write(<span class="stringliteral">&#39;Function: {}\n\n&#39;</span>.format(function))</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; response_log_file.write(<span class="stringliteral">&#39;Data: {}\n\n&#39;</span>.format(data))</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; response_log_file.write(json.dumps(json_result, indent=4, ensure_ascii=<span class="keyword">False</span>))</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; response_log_file.write(<span class="stringliteral">&#39;\n\n\n&#39;</span>)</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; </div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">return</span> json_result</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; </div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="preprocessor">@staticmethod</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">def </span>_get_REST_POST_URL(url_base: str, function: str) -&gt; str:</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="stringliteral"> Generates an URL for a REST-POST request</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="stringliteral"> @params: The necessary parameters for a REST URL</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="stringliteral"> @return: A formatted URL</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; url = <span class="stringliteral">&#39;%swebservice/rest/server.php?moodlewsrestformat=json&amp;wsfunction=%s&#39;</span> % (url_base, function)</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; </div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">return</span> url</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; </div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="preprocessor">@staticmethod</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">def </span>_get_POST_DATA(function: str, token: str, data_obj: str) -&gt; str:</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="stringliteral"> Generates the data for a REST-POST request</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="stringliteral"> @params: The necessary parameters for a REST URL</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="stringliteral"> @return: A URL-encoded data string</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; data = {<span class="stringliteral">&#39;moodlewssettingfilter&#39;</span>: <span class="stringliteral">&#39;true&#39;</span>, <span class="stringliteral">&#39;moodlewssettingfileurl&#39;</span>: <span class="stringliteral">&#39;true&#39;</span>}</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; </div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">if</span> data_obj <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; data.update(data_obj)</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; </div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; data.update({<span class="stringliteral">&#39;wsfunction&#39;</span>: function, <span class="stringliteral">&#39;wstoken&#39;</span>: token})</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; </div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">return</span> RequestHelper.recursive_urlencode(data)</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; </div>
<div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classgeneratetoken_1_1RequestHelper.html#a1bf92d3a91253130ad0978c9a2537549"> 172</a></span>&#160; <span class="keyword">def </span><a class="code" href="classgeneratetoken_1_1RequestHelper.html#a1bf92d3a91253130ad0978c9a2537549">get_login</a>(self, data: {str: str}) -&gt; object:</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="stringliteral"> Sends a POST request to the login endpoint of the Moodle system to</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="stringliteral"> obtain a token in JSON format.</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="stringliteral"> @param data: The data is inserted into the Post-Body as arguments. This</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="stringliteral"> should contain the login data.</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="stringliteral"> @return: The JSON response returned by the Moodle System, already</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="stringliteral"> checked for errors.</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; </div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; response = requests.post(</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="stringliteral">&#39;%slogin/token.php&#39;</span> % (self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#afa0be462dca08626925bad713a2bd9b3">url_base</a>url_base),</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; data=urllib.parse.urlencode(data),</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; headers=self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#a6518c9c5f142794624a3eb3212ad87ac">stdHeader</a>stdHeader,</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; verify=self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#aa9f0b08cff9adc2f85a797e913ee223f">verify</a>verify,</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; )</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; </div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#af3ed55bac77ac3d821eabeef0029010f">_initial_parse</a>_initial_parse(response)</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; </div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="preprocessor">@staticmethod</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keyword">def </span>_check_response_code(response):</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="comment"># Normally Moodle answer with response 200</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span> response.status_code != 200:</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">raise</span> RuntimeError(</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="stringliteral">&#39;An Unexpected Error happened on side of the Moodle System!&#39;</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; + (<span class="stringliteral">&#39; Status-Code: %s&#39;</span> % str(response.status_code))</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; + (<span class="stringliteral">&#39;\nHeader: %s&#39;</span> % response.headers)</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; + (<span class="stringliteral">&#39;\nResponse: %s&#39;</span> % response.text)</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; )</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; </div>
<div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classgeneratetoken_1_1RequestHelper.html#ab9743c931c6e0490a24b65cda17a845f"> 202</a></span>&#160; <span class="keyword">def </span><a class="code" href="classgeneratetoken_1_1RequestHelper.html#ab9743c931c6e0490a24b65cda17a845f">get_simple_moodle_version</a>(self) -&gt; float:</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="stringliteral"> Query the version by looking up the change-log (/lib/upgrade.txt)</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="stringliteral"> of the Moodle</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="stringliteral"> @return: a float number representing the newest version</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="stringliteral"> parsed from the change-log</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; </div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; url = <span class="stringliteral">&#39;%slib/upgrade.txt&#39;</span> % (self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#afa0be462dca08626925bad713a2bd9b3">url_base</a>url_base)</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; response = requests.get(url, headers=self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#a6518c9c5f142794624a3eb3212ad87ac">stdHeader</a>stdHeader, verify=self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#aa9f0b08cff9adc2f85a797e913ee223f">verify</a>verify)</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; </div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#a6c9a993f6f02b24cf9e501fdad53db4f">_check_response_code</a>_check_response_code(response)</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; </div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; changelog = str(response.text).split(<span class="stringliteral">&#39;\n&#39;</span>)</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; version_string = <span class="stringliteral">&#39;1&#39;</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">for</span> line <span class="keywordflow">in</span> changelog:</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; match = re.match(<span class="stringliteral">r&#39;^===\s*([\d\.]+)\s*===$&#39;</span>, line)</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span> match:</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; version_string = match.group(1)</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">break</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; </div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; majorVersion = version_string.split(<span class="stringliteral">&#39;.&#39;</span>)[0]</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; minorVersion = version_string[len(majorVersion) :].replace(<span class="stringliteral">&#39;.&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; </div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; version = float(majorVersion + <span class="stringliteral">&#39;.&#39;</span> + minorVersion)</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">return</span> version</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; </div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keyword">def </span>_initial_parse(self, response) -&gt; object:</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="stringliteral"> The first time parsing the result of a REST request.</span></div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="stringliteral"> It is checked for known errors.</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="stringliteral"> @param response: The JSON response of the Moodle system</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="stringliteral"> @return: The parsed JSON object</span></div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; </div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; self.<a class="code" href="classgeneratetoken_1_1RequestHelper.html#a6c9a993f6f02b24cf9e501fdad53db4f">_check_response_code</a>_check_response_code(response)</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; </div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment"># Try to parse the JSON</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">try</span>:</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; response_extracted = response.json()</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="comment">#print(response_extracted)</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">except</span> Exception <span class="keyword">as</span> error:</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">raise</span> RuntimeError(</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="stringliteral">&#39;An Unexpected Error occurred while trying&#39;</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; + <span class="stringliteral">&#39; to parse the json response! Moodle&#39;</span></div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; + <span class="stringliteral">&#39; response: %s.\nError: %s&#39;</span> % (response.read(), error)</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; )</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="comment"># Check for known errors</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">if</span> <span class="stringliteral">&#39;error&#39;</span> <span class="keywordflow">in</span> response_extracted:</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; error = response_extracted.get(<span class="stringliteral">&#39;error&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; errorcode = response_extracted.get(<span class="stringliteral">&#39;errorcode&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; stacktrace = response_extracted.get(<span class="stringliteral">&#39;stacktrace&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; debuginfo = response_extracted.get(<span class="stringliteral">&#39;debuginfo&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; reproductionlink = response_extracted.get(<span class="stringliteral">&#39;reproductionlink&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">raise</span> RequestRejectedError(</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="stringliteral">&#39;The Moodle System rejected the Request.&#39;</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; + (<span class="stringliteral">&#39; Details: %s (Errorcode: %s, &#39;</span> % (error, errorcode))</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; + (<span class="stringliteral">&#39;Stacktrace: %s, Debuginfo: %s, Reproductionlink: %s)&#39;</span> % (stacktrace, debuginfo, reproductionlink))</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; )</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; </div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">if</span> <span class="stringliteral">&#39;exception&#39;</span> <span class="keywordflow">in</span> response_extracted:</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; exception = response_extracted.get(<span class="stringliteral">&#39;exception&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; errorcode = response_extracted.get(<span class="stringliteral">&#39;errorcode&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; message = response_extracted.get(<span class="stringliteral">&#39;message&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; </div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">raise</span> RequestRejectedError(</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="stringliteral">&#39;The Moodle System rejected the Request.&#39;</span></div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; + <span class="stringliteral">&#39; Details: %s (Errorcode: %s, Message: %s)&#39;</span> % (exception, errorcode, message)</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; )</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; </div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span> response_extracted</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; </div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="preprocessor">@staticmethod</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="classgeneratetoken_1_1RequestHelper.html#a9e6dc179c3f9e2daf9c9716a8fbc7c72"> 275</a></span>&#160; <span class="keyword">def </span><a class="code" href="classgeneratetoken_1_1RequestHelper.html#a9e6dc179c3f9e2daf9c9716a8fbc7c72">recursive_urlencode</a>(data):</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="stringliteral">&quot;&quot;&quot;URL-encode a multidimensional dictionary.</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="stringliteral"> @param data: the data to be encoded</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="stringliteral"> @returns: the url encoded data</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; </div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">def </span>recursion(data, base=[]):</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; pairs = []</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; </div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">for</span> key, value <span class="keywordflow">in</span> data.items():</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; new_base = base + [key]</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">if</span> hasattr(value, <span class="stringliteral">&#39;values&#39;</span>):</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; pairs += recursion(value, new_base)</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; new_pair = <span class="keywordtype">None</span></div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span> len(new_base) &gt; 1:</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; first = urllib.parse.quote(new_base.pop(0))</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; rest = map(<span class="keyword">lambda</span> x: urllib.parse.quote(x), new_base)</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; new_pair = <span class="stringliteral">&#39;%s[%s]=%s&#39;</span> % (first, <span class="stringliteral">&#39;][&#39;</span>.join(rest), urllib.parse.quote(str(value)))</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; new_pair = <span class="stringliteral">&#39;%s=%s&#39;</span> % (urllib.parse.quote(str(key)), urllib.parse.quote(str(value)))</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; pairs.append(new_pair)</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">return</span> pairs</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; </div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&#39;&amp;&#39;</span>.join(recursion(data))</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; </div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="keyword">def </span>obtain_login_token(</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; username: str, password: str, moodle_domain: str, moodle_path: str = <span class="stringliteral">&#39;/&#39;</span>, skip_cert_verify: bool = <span class="keyword">False</span></div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;) -&gt; str:</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="stringliteral"> Send the login credentials to the Moodle-System and extracts the resulting Login-Token.</span></div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="stringliteral"> @params: The necessary parameters to create a Token.</span></div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="stringliteral"> @return: The received token.</span></div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; login_data = {<span class="stringliteral">&#39;username&#39;</span>: username, <span class="stringliteral">&#39;password&#39;</span>: password, <span class="stringliteral">&#39;service&#39;</span>: <span class="stringliteral">&#39;moodle_mobile_app&#39;</span>}</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; </div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; obj = <a class="code" href="classgeneratetoken_1_1RequestHelper.html">RequestHelper</a>(moodle_domain, moodle_path, skip_cert_verify=skip_cert_verify)</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; response = obj.get_login(login_data)</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; </div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">if</span> <span class="stringliteral">&#39;token&#39;</span> <span class="keywordflow">not</span> <span class="keywordflow">in</span> response:</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="comment"># = we didn&#39;t get an error page (checked by the RequestHelper) but</span></div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="comment"># somehow we don&#39;t have the needed token</span></div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">raise</span> RuntimeError(<span class="stringliteral">&#39;Invalid response received from the Moodle System! No token was received.&#39;</span>)</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; </div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">if</span> <span class="stringliteral">&#39;privatetoken&#39;</span> <span class="keywordflow">not</span> <span class="keywordflow">in</span> response:</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> response.get(<span class="stringliteral">&#39;token&#39;</span>, <span class="stringliteral">&#39;&#39;</span>), <span class="keywordtype">None</span></div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">return</span> response.get(<span class="stringliteral">&#39;token&#39;</span>, <span class="stringliteral">&#39;&#39;</span>), response.get(<span class="stringliteral">&#39;privatetoken&#39;</span>, <span class="stringliteral">&#39;&#39;</span>), obj</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; </div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="keyword">def </span>_split_moodle_uri(moodle_uri: str):</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; </div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; moodle_domain = moodle_uri.netloc</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; moodle_path = moodle_uri.path</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">if</span> <span class="keywordflow">not</span> moodle_path.endswith(<span class="stringliteral">&#39;/&#39;</span>):</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; moodle_path = moodle_path + <span class="stringliteral">&#39;/&#39;</span></div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; </div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">if</span> moodle_path == <span class="stringliteral">&#39;&#39;</span>:</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; moodle_path = <span class="stringliteral">&#39;/&#39;</span></div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; </div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">return</span> moodle_domain, moodle_path</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; </div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="keyword">def </span>interactively_acquire_token(</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; username: str = <span class="keywordtype">None</span>, password: str = <span class="keywordtype">None</span></div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; ) -&gt; str:</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="stringliteral"> Walks the user through executing a login into the Moodle-System to get</span></div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="stringliteral"> the Token and saves it.</span></div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="stringliteral"> @return: The Token for Moodle.</span></div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; moodle_token = <span class="keywordtype">None</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; moodle_username = input(<span class="stringliteral">&quot;Enter Moodle Username : &quot;</span>)</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; moodle_password = getpass()</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; moodle_token, moodle_privatetoken, obj = obtain_login_token(</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; moodle_username, moodle_password, moodle_domain, moodle_path, <span class="keyword">False</span></div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; )</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; print(moodle_token)</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; </div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;interactively_acquire_token()</div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html">generatetoken.RequestHelper</a></div><div class="ttdoc">This Function is used to Generate Token to access moodle account of the student.</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00020">generatetoken.py:20</a></div></div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html_a1176524e07be0f61ddb2f400f4b75f00"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html#a1176524e07be0f61ddb2f400f4b75f00">generatetoken.RequestHelper.token</a></div><div class="ttdeci">token</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00042">generatetoken.py:42</a></div></div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html_a1b20bf8b1c0c3045113cdd51f0f5f5d6"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html#a1b20bf8b1c0c3045113cdd51f0f5f5d6">generatetoken.RequestHelper.moodle_domain</a></div><div class="ttdeci">moodle_domain</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00043">generatetoken.py:43</a></div></div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html_a1bf92d3a91253130ad0978c9a2537549"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html#a1bf92d3a91253130ad0978c9a2537549">generatetoken.RequestHelper.get_login</a></div><div class="ttdeci">object get_login(self, {str:str} data)</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00172">generatetoken.py:172</a></div></div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html_a422ff4a5b67d558a3872c6a18b99c046"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html#a422ff4a5b67d558a3872c6a18b99c046">generatetoken.RequestHelper.post_REST</a></div><div class="ttdeci">object post_REST(self, str function, {str:str} data=None)</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00117">generatetoken.py:117</a></div></div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html_a4574e844798e1515cde1b3696f6b1de7"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html#a4574e844798e1515cde1b3696f6b1de7">generatetoken.RequestHelper.post_URL</a></div><div class="ttdeci">def post_URL(self, str url, {str:str} data=None, str cookie_jar_path=None)</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00062">generatetoken.py:62</a></div></div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html_a6518c9c5f142794624a3eb3212ad87ac"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html#a6518c9c5f142794624a3eb3212ad87ac">generatetoken.RequestHelper.stdHeader</a></div><div class="ttdeci">dictionary stdHeader</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00026">generatetoken.py:26</a></div></div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html_a6c9a993f6f02b24cf9e501fdad53db4f"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html#a6c9a993f6f02b24cf9e501fdad53db4f">generatetoken.RequestHelper._check_response_code</a></div><div class="ttdeci">def _check_response_code(response)</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00192">generatetoken.py:192</a></div></div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html_a6dc29ebecdcdbd27562c18c93c934716"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html#a6dc29ebecdcdbd27562c18c93c934716">generatetoken.RequestHelper.moodle_path</a></div><div class="ttdeci">moodle_path</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00044">generatetoken.py:44</a></div></div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html_a9e6dc179c3f9e2daf9c9716a8fbc7c72"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html#a9e6dc179c3f9e2daf9c9716a8fbc7c72">generatetoken.RequestHelper.recursive_urlencode</a></div><div class="ttdeci">def recursive_urlencode(data)</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00275">generatetoken.py:275</a></div></div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html_aa2816c2050175e1823c59570359db999"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html#aa2816c2050175e1823c59570359db999">generatetoken.RequestHelper.log_responses_to</a></div><div class="ttdeci">log_responses_to</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00049">generatetoken.py:49</a></div></div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html_aa9f0b08cff9adc2f85a797e913ee223f"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html#aa9f0b08cff9adc2f85a797e913ee223f">generatetoken.RequestHelper.verify</a></div><div class="ttdeci">verify</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00046">generatetoken.py:46</a></div></div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html_ab38c62635f6e60d54e7d8dea21038b95"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html#ab38c62635f6e60d54e7d8dea21038b95">generatetoken.RequestHelper.get_URL</a></div><div class="ttdeci">def get_URL(self, str url, str cookie_jar_path=None)</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00093">generatetoken.py:93</a></div></div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html_ab9743c931c6e0490a24b65cda17a845f"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html#ab9743c931c6e0490a24b65cda17a845f">generatetoken.RequestHelper.get_simple_moodle_version</a></div><div class="ttdeci">float get_simple_moodle_version(self)</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00202">generatetoken.py:202</a></div></div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html_ad1edba224bbcb8f19daccfaa36dab949"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html#ad1edba224bbcb8f19daccfaa36dab949">generatetoken.RequestHelper._get_POST_DATA</a></div><div class="ttdeci">str _get_POST_DATA(str function, str token, str data_obj)</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00157">generatetoken.py:157</a></div></div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html_adc0b81bf893a94aafb0d94e6d7f848d3"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html#adc0b81bf893a94aafb0d94e6d7f848d3">generatetoken.RequestHelper._get_REST_POST_URL</a></div><div class="ttdeci">str _get_REST_POST_URL(str url_base, str function)</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00146">generatetoken.py:146</a></div></div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html_ae1dcbfeedc859a563d49fc0fc62e6d03"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html#ae1dcbfeedc859a563d49fc0fc62e6d03">generatetoken.RequestHelper.log_responses</a></div><div class="ttdeci">log_responses</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00050">generatetoken.py:50</a></div></div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html_af3ed55bac77ac3d821eabeef0029010f"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html#af3ed55bac77ac3d821eabeef0029010f">generatetoken.RequestHelper._initial_parse</a></div><div class="ttdeci">object _initial_parse(self, response)</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00229">generatetoken.py:229</a></div></div>
<div class="ttc" id="aclassgeneratetoken_1_1RequestHelper_html_afa0be462dca08626925bad713a2bd9b3"><div class="ttname"><a href="classgeneratetoken_1_1RequestHelper.html#afa0be462dca08626925bad713a2bd9b3">generatetoken.RequestHelper.url_base</a></div><div class="ttdeci">url_base</div><div class="ttdef"><b>Definition:</b> <a href="generatetoken_8py_source.html#l00047">generatetoken.py:47</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: Class Hierarchy</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class Hierarchy</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html" target="_self">main.forms.CreateNewUser.Meta</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1models_1_1Student_1_1Meta.html" target="_self">main.models.Student.Meta</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="toggleFolder('2_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>Model</b></td><td class="desc"></td></tr>
<tr id="row_2_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1models_1_1Student.html" target="_self">main.models.Student</a></td><td class="desc">This Class is used for the Database Table: <a class="el" href="classmain_1_1models_1_1Student.html" title="This Class is used for the Database Table: Student.">Student</a> </td></tr>
<tr id="row_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html" target="_self">main.subjectdatabase.moodle</a></td><td class="desc">This is used for maintaining the Student moodle data </td></tr>
<tr id="row_4_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classgeneratetoken_1_1RequestHelper.html" target="_self">generatetoken.RequestHelper</a></td><td class="desc">This Function is used to Generate Token to access moodle account of the student </td></tr>
<tr id="row_5_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html" target="_self">main.letsloginourself.RequestHelper</a></td><td class="desc">This is Class for Creating and formatting requests made to Moodle API functions </td></tr>
<tr id="row_6_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_6_" class="arrow" onclick="toggleFolder('6_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>AppConfig</b></td><td class="desc"></td></tr>
<tr id="row_6_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1apps_1_1MainConfig.html" target="_self">main.apps.MainConfig</a></td><td class="desc"></td></tr>
<tr id="row_7_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_7_" class="arrow" onclick="toggleFolder('7_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>ModelForm</b></td><td class="desc"></td></tr>
<tr id="row_7_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1forms_1_1CreateNewUser.html" target="_self">main.forms.CreateNewUser</a></td><td class="desc">This Class is Used for Creating entries, adding labels and helper text in the Registration Page </td></tr>
<tr id="row_7_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1forms_1_1CreateNewUser.html" target="_self">main.forms.CreateNewUser</a></td><td class="desc">This Class is Used for Creating entries, adding labels and helper text in the Registration Page </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: Main Page</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">moodleNotifer Documentation</div> </div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<div class="title">To fetch important announcements and assignment deadlines
from moodle and provide them to the user in the form of whatsapp notifications. </div> </div>
</div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
This source diff could not be displayed because it is too large. You can view the blob instead.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/letsloginourself.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">letsloginourself.py</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="keyword">import</span> re</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="keyword">import</span> os</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="keyword">import</span> json</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="keyword">import</span> urllib</div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="keyword">import</span> urllib3</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="keyword">import</span> requests</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="keyword">import</span> logging</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; </div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="keyword">from</span> http.cookiejar <span class="keyword">import</span> MozillaCookieJar</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="keyword">from</span> urllib.parse <span class="keyword">import</span> urlparse</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="keyword">from</span> getpass <span class="keyword">import</span> getpass</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; </div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;moodle_domain = <span class="stringliteral">&quot;moodle.iitb.ac.in&quot;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;moodle_path = <span class="stringliteral">&quot;/&quot;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; </div>
<div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="classmain_1_1letsloginourself_1_1RequestHelper.html"> 18</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html">RequestHelper</a>:</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="stringliteral"> Encapsulates the recurring logic for sending out requests to the</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="stringliteral"> Moodle-System.</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; </div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; stdHeader = {</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="stringliteral">&#39;User-Agent&#39;</span>: (</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="stringliteral">&#39;Mozilla/5.0 (Linux; Android 7.1.1; Moto G Play Build/NPIS26.48-43-2; wv) AppleWebKit/537.36&#39;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; + <span class="stringliteral">&#39; (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36 MoodleMobile&#39;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; ),</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="stringliteral">&#39;Content-Type&#39;</span>: <span class="stringliteral">&#39;application/x-www-form-urlencoded&#39;</span>,</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; }</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">def </span>__init__(</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; self,</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; moodle_domain: str,</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; moodle_path: str = <span class="stringliteral">&#39;/&#39;</span>,</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; token: str = <span class="stringliteral">&#39;&#39;</span>,</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; skip_cert_verify: bool = <span class="keyword">False</span>,</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; log_responses_to: str = <span class="keywordtype">None</span>,</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; ):</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a32b85f157482d6deacb1c18a2c02fe56">token</a>token = token</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a8cbfdff660b19ac8840801731dbe1c8b">moodle_domain</a>moodle_domain = moodle_domain</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#aee6bb51a8322c8fe69d3c938354bc8f4">moodle_path</a>moodle_path = moodle_path</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#aab0c9d39e8ea95cd25b5ad491ccde601">verify</a>verify = <span class="keywordflow">not</span> skip_cert_verify</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a4db0e5584aa8563fa6d4ff868301d920">url_base</a>url_base = <span class="stringliteral">&#39;https://&#39;</span> + moodle_domain + moodle_path</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#aadc843bc85384b6f434ac03fbef452e3">log_responses_to</a>log_responses_to = log_responses_to</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a10be87bcd8709c6959f4c9a6e2dc56cd">log_responses</a>log_responses = <span class="keyword">False</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span> log_responses_to <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a10be87bcd8709c6959f4c9a6e2dc56cd">log_responses</a>log_responses = <span class="keyword">True</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">with</span> open(self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#aadc843bc85384b6f434ac03fbef452e3">log_responses_to</a>log_responses_to, <span class="stringliteral">&#39;w&#39;</span>) <span class="keyword">as</span> response_log_file:</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; response_log_file.write(<span class="stringliteral">&#39;JSON Log:\n\n&#39;</span>)</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; logging.getLogger(<span class="stringliteral">&quot;requests&quot;</span>).setLevel(logging.WARNING)</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; logging.getLogger(<span class="stringliteral">&quot;urllib3&quot;</span>).setLevel(logging.WARNING)</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; urllib3.disable_warnings()</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment"># logging.captureWarnings(True)</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a86bc5515b701461f9bd32318a6df9429"> 60</a></span>&#160; <span class="keyword">def </span><a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a86bc5515b701461f9bd32318a6df9429">post_URL</a>(self, url: str, data: {str: str} = <span class="keywordtype">None</span>, cookie_jar_path: str = <span class="keywordtype">None</span>):</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="stringliteral"> Sends a POST request to a specific URL, including saving of cookies in cookie jar.</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="stringliteral"> @param url: The url to which the request is sent. (the moodle base url is not added to the given URL)</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="stringliteral"> @param data: The optional data is added to the POST body.</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="stringliteral"> @param cookie_jar_path: Path to the cookies file.</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="stringliteral"> @return: The resulting response object and the session object.</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; </div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; data_urlencoded = <span class="stringliteral">&quot;&quot;</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">if</span> data <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; data_urlencoded = RequestHelper.recursive_urlencode(data)</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; session = requests.Session()</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> cookie_jar_path <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; session.cookies = MozillaCookieJar(cookie_jar_path)</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; </div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">if</span> os.path.exists(cookie_jar_path):</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; session.cookies.load(ignore_discard=<span class="keyword">True</span>, ignore_expires=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; </div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; response = session.post(url, data=data_urlencoded, headers=self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a972666407d89ff203da27588c77c9c52">stdHeader</a>stdHeader, verify=self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#aab0c9d39e8ea95cd25b5ad491ccde601">verify</a>verify)</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; </div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> cookie_jar_path <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">for</span> cookie <span class="keywordflow">in</span> session.cookies:</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; cookie.expires = 2147483647</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; session.cookies.save(ignore_discard=<span class="keyword">True</span>, ignore_expires=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> response, session</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a7ecfd4e19fac657d9ef89b3db78e1fcb"> 91</a></span>&#160; <span class="keyword">def </span><a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a7ecfd4e19fac657d9ef89b3db78e1fcb">get_URL</a>(self, url: str, cookie_jar_path: str = <span class="keywordtype">None</span>):</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="stringliteral"> Sends a GET request to a specific URL of the Moodle system, including additional cookies</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="stringliteral"> (cookies are updated after the request)</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="stringliteral"> @param url: The url to which the request is sent. (the moodle base url is not added to the given URL)</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="stringliteral"> @param cookie_jar_path: The optional cookies to add to the request</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="stringliteral"> @return: The resulting Response object.</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; session = requests.Session()</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; </div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">if</span> cookie_jar_path <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; session.cookies = MozillaCookieJar(cookie_jar_path)</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">if</span> os.path.exists(cookie_jar_path):</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; session.cookies.load(ignore_discard=<span class="keyword">True</span>, ignore_expires=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; response = session.get(url, headers=self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a972666407d89ff203da27588c77c9c52">stdHeader</a>stdHeader, verify=self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#aab0c9d39e8ea95cd25b5ad491ccde601">verify</a>verify)</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; </div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">if</span> cookie_jar_path <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; session.cookies.save(ignore_discard=<span class="keyword">True</span>, ignore_expires=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; </div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> response, session</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; </div>
<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a798868477ff79a1b4cfab9a1aa344478"> 115</a></span>&#160; <span class="keyword">def </span><a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a798868477ff79a1b4cfab9a1aa344478">post_REST</a>(self, function: str, data: {str: str} = <span class="keywordtype">None</span>) -&gt; object:</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="stringliteral"> Sends a POST request to the REST endpoint of the Moodle system</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="stringliteral"> @param function: The Web service function to be called.</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="stringliteral"> @param data: The optional data is added to the POST body.</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="stringliteral"> @return: The JSON response returned by the Moodle system, already</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="stringliteral"> checked for errors.</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; </div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">if</span> self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a32b85f157482d6deacb1c18a2c02fe56">token</a>token <span class="keywordflow">is</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">raise</span> ValueError(<span class="stringliteral">&#39;The required Token is not set!&#39;</span>)</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; </div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; data_urlencoded = self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a302a412939e683942c9a73611deea0ef">_get_POST_DATA</a>_get_POST_DATA(function, self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a32b85f157482d6deacb1c18a2c02fe56">token</a>token, data)</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; url = self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a54ed06a1a7eb4d2635750dddb1561c77">_get_REST_POST_URL</a>_get_REST_POST_URL(self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a4db0e5584aa8563fa6d4ff868301d920">url_base</a>url_base, function)</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; </div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; response = requests.post(url, data=data_urlencoded, headers=self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a972666407d89ff203da27588c77c9c52">stdHeader</a>stdHeader, verify=self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#aab0c9d39e8ea95cd25b5ad491ccde601">verify</a>verify)</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; json_result = self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a5968b5fda7ce5f90cd242a7d7de8989e">_initial_parse</a>_initial_parse(response)</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; </div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span> self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a10be87bcd8709c6959f4c9a6e2dc56cd">log_responses</a>log_responses <span class="keywordflow">and</span> function <span class="keywordflow">not</span> <span class="keywordflow">in</span> [<span class="stringliteral">&#39;tool_mobile_get_autologin_key&#39;</span>]:</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keyword">with</span> open(self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#aadc843bc85384b6f434ac03fbef452e3">log_responses_to</a>log_responses_to, <span class="stringliteral">&#39;a&#39;</span>) <span class="keyword">as</span> response_log_file:</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; response_log_file.write(<span class="stringliteral">&#39;URL: {}\n&#39;</span>.format(response.url))</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; response_log_file.write(<span class="stringliteral">&#39;Function: {}\n\n&#39;</span>.format(function))</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; response_log_file.write(<span class="stringliteral">&#39;Data: {}\n\n&#39;</span>.format(data))</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; response_log_file.write(json.dumps(json_result, indent=4, ensure_ascii=<span class="keyword">False</span>))</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; response_log_file.write(<span class="stringliteral">&#39;\n\n\n&#39;</span>)</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">return</span> json_result</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; </div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="preprocessor">@staticmethod</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">def </span>_get_REST_POST_URL(url_base: str, function: str) -&gt; str:</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="stringliteral"> Generates an URL for a REST-POST request</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="stringliteral"> @params: The necessary parameters for a REST URL</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="stringliteral"> @return: A formatted URL</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; url = <span class="stringliteral">&#39;%swebservice/rest/server.php?moodlewsrestformat=json&amp;wsfunction=%s&#39;</span> % (url_base, function)</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; </div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> url</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; </div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="preprocessor">@staticmethod</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">def </span>_get_POST_DATA(function: str, token: str, data_obj: str) -&gt; str:</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="stringliteral"> Generates the data for a REST-POST request</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="stringliteral"> @params: The necessary parameters for a REST URL</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="stringliteral"> @return: A URL-encoded data string</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; data = {<span class="stringliteral">&#39;moodlewssettingfilter&#39;</span>: <span class="stringliteral">&#39;true&#39;</span>, <span class="stringliteral">&#39;moodlewssettingfileurl&#39;</span>: <span class="stringliteral">&#39;true&#39;</span>}</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; </div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">if</span> data_obj <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; data.update(data_obj)</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; </div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; data.update({<span class="stringliteral">&#39;wsfunction&#39;</span>: function, <span class="stringliteral">&#39;wstoken&#39;</span>: token})</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; </div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">return</span> RequestHelper.recursive_urlencode(data)</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; </div>
<div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a4b6fe822aad6ca52011906faa04e8be8"> 170</a></span>&#160; <span class="keyword">def </span><a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a4b6fe822aad6ca52011906faa04e8be8">get_login</a>(self, data: {str: str}) -&gt; object:</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="stringliteral"> Sends a POST request to the login endpoint of the Moodle system to</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="stringliteral"> obtain a token in JSON format.</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="stringliteral"> @param data: The data is inserted into the Post-Body as arguments. This</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="stringliteral"> should contain the login data.</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="stringliteral"> @return: The JSON response returned by the Moodle System, already</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="stringliteral"> checked for errors.</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; </div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; response = requests.post(</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="stringliteral">&#39;%slogin/token.php&#39;</span> % (self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a4db0e5584aa8563fa6d4ff868301d920">url_base</a>url_base),</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; data=urllib.parse.urlencode(data),</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; headers=self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a972666407d89ff203da27588c77c9c52">stdHeader</a>stdHeader,</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; verify=self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#aab0c9d39e8ea95cd25b5ad491ccde601">verify</a>verify,</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; )</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; </div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a5968b5fda7ce5f90cd242a7d7de8989e">_initial_parse</a>_initial_parse(response)</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; </div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="preprocessor">@staticmethod</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keyword">def </span>_check_response_code(response):</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="comment"># Normally Moodle answer with response 200</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span> response.status_code != 200:</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">raise</span> RuntimeError(</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="stringliteral">&#39;An Unexpected Error happened on side of the Moodle System!&#39;</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; + (<span class="stringliteral">&#39; Status-Code: %s&#39;</span> % str(response.status_code))</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; + (<span class="stringliteral">&#39;\nHeader: %s&#39;</span> % response.headers)</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; + (<span class="stringliteral">&#39;\nResponse: %s&#39;</span> % response.text)</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; )</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; </div>
<div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classmain_1_1letsloginourself_1_1RequestHelper.html#aeb5ca2cd43fae0421e55d2aafad47dcb"> 200</a></span>&#160; <span class="keyword">def </span><a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#aeb5ca2cd43fae0421e55d2aafad47dcb">get_simple_moodle_version</a>(self) -&gt; float:</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="stringliteral"> Query the version by looking up the change-log (/lib/upgrade.txt)</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="stringliteral"> of the Moodle</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="stringliteral"> @return: a float number representing the newest version</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="stringliteral"> parsed from the change-log</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; </div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; url = <span class="stringliteral">&#39;%slib/upgrade.txt&#39;</span> % (self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a4db0e5584aa8563fa6d4ff868301d920">url_base</a>url_base)</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; response = requests.get(url, headers=self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a972666407d89ff203da27588c77c9c52">stdHeader</a>stdHeader, verify=self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#aab0c9d39e8ea95cd25b5ad491ccde601">verify</a>verify)</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; </div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a15ae8259e90a516499bedb6cfd75da97">_check_response_code</a>_check_response_code(response)</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; </div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; changelog = str(response.text).split(<span class="stringliteral">&#39;\n&#39;</span>)</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; version_string = <span class="stringliteral">&#39;1&#39;</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">for</span> line <span class="keywordflow">in</span> changelog:</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; match = re.match(<span class="stringliteral">r&#39;^===\s*([\d\.]+)\s*===$&#39;</span>, line)</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">if</span> match:</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; version_string = match.group(1)</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">break</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; </div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; majorVersion = version_string.split(<span class="stringliteral">&#39;.&#39;</span>)[0]</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; minorVersion = version_string[len(majorVersion) :].replace(<span class="stringliteral">&#39;.&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; </div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; version = float(majorVersion + <span class="stringliteral">&#39;.&#39;</span> + minorVersion)</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">return</span> version</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; </div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keyword">def </span>_initial_parse(self, response) -&gt; object:</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="stringliteral"> The first time parsing the result of a REST request.</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="stringliteral"> It is checked for known errors.</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="stringliteral"> @param response: The JSON response of the Moodle system</span></div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="stringliteral"> @return: The parsed JSON object</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; </div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; self.<a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a15ae8259e90a516499bedb6cfd75da97">_check_response_code</a>_check_response_code(response)</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; </div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="comment"># Try to parse the JSON</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">try</span>:</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; response_extracted = response.json()</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="comment">#print(response_extracted)</span></div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">except</span> Exception <span class="keyword">as</span> error:</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">raise</span> RuntimeError(</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="stringliteral">&#39;An Unexpected Error occurred while trying&#39;</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; + <span class="stringliteral">&#39; to parse the json response! Moodle&#39;</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; + <span class="stringliteral">&#39; response: %s.\nError: %s&#39;</span> % (response.read(), error)</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; )</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="comment"># Check for known errors</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">if</span> <span class="stringliteral">&#39;error&#39;</span> <span class="keywordflow">in</span> response_extracted:</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; error = response_extracted.get(<span class="stringliteral">&#39;error&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; errorcode = response_extracted.get(<span class="stringliteral">&#39;errorcode&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; stacktrace = response_extracted.get(<span class="stringliteral">&#39;stacktrace&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; debuginfo = response_extracted.get(<span class="stringliteral">&#39;debuginfo&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; reproductionlink = response_extracted.get(<span class="stringliteral">&#39;reproductionlink&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">raise</span> RequestRejectedError(</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="stringliteral">&#39;The Moodle System rejected the Request.&#39;</span></div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; + (<span class="stringliteral">&#39; Details: %s (Errorcode: %s, &#39;</span> % (error, errorcode))</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; + (<span class="stringliteral">&#39;Stacktrace: %s, Debuginfo: %s, Reproductionlink: %s)&#39;</span> % (stacktrace, debuginfo, reproductionlink))</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; )</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; </div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">if</span> <span class="stringliteral">&#39;exception&#39;</span> <span class="keywordflow">in</span> response_extracted:</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; exception = response_extracted.get(<span class="stringliteral">&#39;exception&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; errorcode = response_extracted.get(<span class="stringliteral">&#39;errorcode&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; message = response_extracted.get(<span class="stringliteral">&#39;message&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; </div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">raise</span> RequestRejectedError(</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="stringliteral">&#39;The Moodle System rejected the Request.&#39;</span></div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; + <span class="stringliteral">&#39; Details: %s (Errorcode: %s, Message: %s)&#39;</span> % (exception, errorcode, message)</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; )</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; </div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">return</span> response_extracted</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; </div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="preprocessor">@staticmethod</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a3bbf9b9329e3ac0cbc9b7d467dd4e0b9"> 273</a></span>&#160; <span class="keyword">def </span><a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html#a3bbf9b9329e3ac0cbc9b7d467dd4e0b9">recursive_urlencode</a>(data):</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="stringliteral">&quot;&quot;&quot;URL-encode a multidimensional dictionary.</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="stringliteral"> @param data: the data to be encoded</span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="stringliteral"> @returns: the url encoded data</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; </div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keyword">def </span>recursion(data, base=[]):</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; pairs = []</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; </div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">for</span> key, value <span class="keywordflow">in</span> data.items():</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; new_base = base + [key]</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">if</span> hasattr(value, <span class="stringliteral">&#39;values&#39;</span>):</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; pairs += recursion(value, new_base)</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; new_pair = <span class="keywordtype">None</span></div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">if</span> len(new_base) &gt; 1:</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; first = urllib.parse.quote(new_base.pop(0))</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; rest = map(<span class="keyword">lambda</span> x: urllib.parse.quote(x), new_base)</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; new_pair = <span class="stringliteral">&#39;%s[%s]=%s&#39;</span> % (first, <span class="stringliteral">&#39;][&#39;</span>.join(rest), urllib.parse.quote(str(value)))</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; new_pair = <span class="stringliteral">&#39;%s=%s&#39;</span> % (urllib.parse.quote(str(key)), urllib.parse.quote(str(value)))</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; pairs.append(new_pair)</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">return</span> pairs</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; </div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&#39;&amp;&#39;</span>.join(recursion(data))</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; </div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="keyword">def </span>obtain_login_token(</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; username: str, password: str, moodle_domain: str, moodle_path: str = <span class="stringliteral">&#39;/&#39;</span>, skip_cert_verify: bool = <span class="keyword">False</span></div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;) -&gt; str:</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="stringliteral"> Send the login credentials to the Moodle-System and extracts the resulting Login-Token.</span></div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="stringliteral"> @params: The necessary parameters to create a Token.</span></div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="stringliteral"> @return: The received token.</span></div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; login_data = {<span class="stringliteral">&#39;username&#39;</span>: username, <span class="stringliteral">&#39;password&#39;</span>: password, <span class="stringliteral">&#39;service&#39;</span>: <span class="stringliteral">&#39;moodle_mobile_app&#39;</span>}</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; </div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; obj = <a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html">RequestHelper</a>(moodle_domain, moodle_path, skip_cert_verify=skip_cert_verify)</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; response = obj.get_login(login_data)</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; </div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">if</span> <span class="stringliteral">&#39;token&#39;</span> <span class="keywordflow">not</span> <span class="keywordflow">in</span> response:</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="comment"># = we didn&#39;t get an error page (checked by the RequestHelper) but</span></div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="comment"># somehow we don&#39;t have the needed token</span></div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">raise</span> RuntimeError(<span class="stringliteral">&#39;Invalid response received from the Moodle System! No token was received.&#39;</span>)</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; </div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">if</span> <span class="stringliteral">&#39;privatetoken&#39;</span> <span class="keywordflow">not</span> <span class="keywordflow">in</span> response:</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">return</span> response.get(<span class="stringliteral">&#39;token&#39;</span>, <span class="stringliteral">&#39;&#39;</span>), <span class="keywordtype">None</span></div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> response.get(<span class="stringliteral">&#39;token&#39;</span>, <span class="stringliteral">&#39;&#39;</span>), response.get(<span class="stringliteral">&#39;privatetoken&#39;</span>, <span class="stringliteral">&#39;&#39;</span>), obj</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; </div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="keyword">def </span>_split_moodle_uri(moodle_uri: str):</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; </div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; moodle_domain = moodle_uri.netloc</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; moodle_path = moodle_uri.path</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">if</span> <span class="keywordflow">not</span> moodle_path.endswith(<span class="stringliteral">&#39;/&#39;</span>):</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; moodle_path = moodle_path + <span class="stringliteral">&#39;/&#39;</span></div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; </div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">if</span> moodle_path == <span class="stringliteral">&#39;&#39;</span>:</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; moodle_path = <span class="stringliteral">&#39;/&#39;</span></div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; </div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">return</span> moodle_domain, moodle_path</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; </div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; </div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="keyword">def </span>worker(moodle_token):</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="comment">#moodle_token, moodle_privatetoken, obj = interactively_acquire_token()</span></div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="comment">#moodle_uri = &quot;https://moodle.iitb.ac.in&quot;</span></div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="comment">#moodle_uri = urlparse(moodle_uri)</span></div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="comment">#moodle_domain, moodle_path = _split_moodle_uri(moodle_uri)</span></div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; request_helper = <a class="code" href="classmain_1_1letsloginourself_1_1RequestHelper.html">RequestHelper</a>(moodle_domain, moodle_path, moodle_token, <span class="keyword">False</span>)</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">return</span> request_helper</div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html">main.letsloginourself.RequestHelper</a></div><div class="ttdoc">This is Class for Creating and formatting requests made to Moodle API functions.</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00018">letsloginourself.py:18</a></div></div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html_a10be87bcd8709c6959f4c9a6e2dc56cd"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html#a10be87bcd8709c6959f4c9a6e2dc56cd">main.letsloginourself.RequestHelper.log_responses</a></div><div class="ttdeci">log_responses</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00048">letsloginourself.py:48</a></div></div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html_a15ae8259e90a516499bedb6cfd75da97"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html#a15ae8259e90a516499bedb6cfd75da97">main.letsloginourself.RequestHelper._check_response_code</a></div><div class="ttdeci">def _check_response_code(response)</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00190">letsloginourself.py:190</a></div></div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html_a302a412939e683942c9a73611deea0ef"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html#a302a412939e683942c9a73611deea0ef">main.letsloginourself.RequestHelper._get_POST_DATA</a></div><div class="ttdeci">str _get_POST_DATA(str function, str token, str data_obj)</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00155">letsloginourself.py:155</a></div></div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html_a32b85f157482d6deacb1c18a2c02fe56"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html#a32b85f157482d6deacb1c18a2c02fe56">main.letsloginourself.RequestHelper.token</a></div><div class="ttdeci">token</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00040">letsloginourself.py:40</a></div></div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html_a3bbf9b9329e3ac0cbc9b7d467dd4e0b9"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html#a3bbf9b9329e3ac0cbc9b7d467dd4e0b9">main.letsloginourself.RequestHelper.recursive_urlencode</a></div><div class="ttdeci">def recursive_urlencode(data)</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00273">letsloginourself.py:273</a></div></div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html_a4b6fe822aad6ca52011906faa04e8be8"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html#a4b6fe822aad6ca52011906faa04e8be8">main.letsloginourself.RequestHelper.get_login</a></div><div class="ttdeci">object get_login(self, {str:str} data)</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00170">letsloginourself.py:170</a></div></div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html_a4db0e5584aa8563fa6d4ff868301d920"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html#a4db0e5584aa8563fa6d4ff868301d920">main.letsloginourself.RequestHelper.url_base</a></div><div class="ttdeci">url_base</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00045">letsloginourself.py:45</a></div></div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html_a54ed06a1a7eb4d2635750dddb1561c77"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html#a54ed06a1a7eb4d2635750dddb1561c77">main.letsloginourself.RequestHelper._get_REST_POST_URL</a></div><div class="ttdeci">str _get_REST_POST_URL(str url_base, str function)</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00144">letsloginourself.py:144</a></div></div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html_a5968b5fda7ce5f90cd242a7d7de8989e"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html#a5968b5fda7ce5f90cd242a7d7de8989e">main.letsloginourself.RequestHelper._initial_parse</a></div><div class="ttdeci">object _initial_parse(self, response)</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00227">letsloginourself.py:227</a></div></div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html_a798868477ff79a1b4cfab9a1aa344478"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html#a798868477ff79a1b4cfab9a1aa344478">main.letsloginourself.RequestHelper.post_REST</a></div><div class="ttdeci">object post_REST(self, str function, {str:str} data=None)</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00115">letsloginourself.py:115</a></div></div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html_a7ecfd4e19fac657d9ef89b3db78e1fcb"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html#a7ecfd4e19fac657d9ef89b3db78e1fcb">main.letsloginourself.RequestHelper.get_URL</a></div><div class="ttdeci">def get_URL(self, str url, str cookie_jar_path=None)</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00091">letsloginourself.py:91</a></div></div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html_a86bc5515b701461f9bd32318a6df9429"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html#a86bc5515b701461f9bd32318a6df9429">main.letsloginourself.RequestHelper.post_URL</a></div><div class="ttdeci">def post_URL(self, str url, {str:str} data=None, str cookie_jar_path=None)</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00060">letsloginourself.py:60</a></div></div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html_a8cbfdff660b19ac8840801731dbe1c8b"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html#a8cbfdff660b19ac8840801731dbe1c8b">main.letsloginourself.RequestHelper.moodle_domain</a></div><div class="ttdeci">moodle_domain</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00041">letsloginourself.py:41</a></div></div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html_a972666407d89ff203da27588c77c9c52"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html#a972666407d89ff203da27588c77c9c52">main.letsloginourself.RequestHelper.stdHeader</a></div><div class="ttdeci">dictionary stdHeader</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00024">letsloginourself.py:24</a></div></div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html_aab0c9d39e8ea95cd25b5ad491ccde601"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html#aab0c9d39e8ea95cd25b5ad491ccde601">main.letsloginourself.RequestHelper.verify</a></div><div class="ttdeci">verify</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00044">letsloginourself.py:44</a></div></div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html_aadc843bc85384b6f434ac03fbef452e3"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html#aadc843bc85384b6f434ac03fbef452e3">main.letsloginourself.RequestHelper.log_responses_to</a></div><div class="ttdeci">log_responses_to</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00047">letsloginourself.py:47</a></div></div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html_aeb5ca2cd43fae0421e55d2aafad47dcb"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html#aeb5ca2cd43fae0421e55d2aafad47dcb">main.letsloginourself.RequestHelper.get_simple_moodle_version</a></div><div class="ttdeci">float get_simple_moodle_version(self)</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00200">letsloginourself.py:200</a></div></div>
<div class="ttc" id="aclassmain_1_1letsloginourself_1_1RequestHelper_html_aee6bb51a8322c8fe69d3c938354bc8f4"><div class="ttname"><a href="classmain_1_1letsloginourself_1_1RequestHelper.html#aee6bb51a8322c8fe69d3c938354bc8f4">main.letsloginourself.RequestHelper.moodle_path</a></div><div class="ttdeci">moodle_path</div><div class="ttdef"><b>Definition:</b> <a href="letsloginourself_8py_source.html#l00042">letsloginourself.py:42</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/login.py File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">login.py File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>This file is used get the courses information from the moodle.
<a href="#details">More...</a></p>
<p><a href="login_8py_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a2e396387f1693307eef81c0dded02a37"><td class="memItemLeft" align="right" valign="top"><a id="a2e396387f1693307eef81c0dded02a37"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>main.login.prune_dict</b> (list_of_data, keys)</td></tr>
<tr class="separator:a2e396387f1693307eef81c0dded02a37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7aacddd771be10a8736e6b117b3e09b0"><td class="memItemLeft" align="right" valign="top"><a id="a7aacddd771be10a8736e6b117b3e09b0"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>main.login.string_from_html</b> (data)</td></tr>
<tr class="separator:a7aacddd771be10a8736e6b117b3e09b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62839d03a86ff0fde26e3b7f1a20f7ea"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="login_8py.html#a62839d03a86ff0fde26e3b7f1a20f7ea">main.login.get_list_of_courses</a> (request_helper)</td></tr>
<tr class="memdesc:a62839d03a86ff0fde26e3b7f1a20f7ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">This definition is used to get list of courses the user registered. <a href="login_8py.html#a62839d03a86ff0fde26e3b7f1a20f7ea">More...</a><br /></td></tr>
<tr class="separator:a62839d03a86ff0fde26e3b7f1a20f7ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a6b441326ba06695621db609f532793"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="login_8py.html#a8a6b441326ba06695621db609f532793">main.login.get_assignments_info</a> (request_helper, course_id, all=True)</td></tr>
<tr class="memdesc:a8a6b441326ba06695621db609f532793"><td class="mdescLeft">&#160;</td><td class="mdescRight">This definition is used to get the assignment information for the courses. <a href="login_8py.html#a8a6b441326ba06695621db609f532793">More...</a><br /></td></tr>
<tr class="separator:a8a6b441326ba06695621db609f532793"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f57b9ecd192e2ea511252924ae1dc61"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="login_8py.html#a4f57b9ecd192e2ea511252924ae1dc61">main.login.get_quizzes_info</a> (request_helper, course_id, all=True)</td></tr>
<tr class="memdesc:a4f57b9ecd192e2ea511252924ae1dc61"><td class="mdescLeft">&#160;</td><td class="mdescRight">This definition is used to get the information about quizzes for the courses. <a href="login_8py.html#a4f57b9ecd192e2ea511252924ae1dc61">More...</a><br /></td></tr>
<tr class="separator:a4f57b9ecd192e2ea511252924ae1dc61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a135b91c9d2a9585ec1531425edcc03e6"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="login_8py.html#a135b91c9d2a9585ec1531425edcc03e6">main.login.get_course_contents</a> (request_helper, course_id)</td></tr>
<tr class="memdesc:a135b91c9d2a9585ec1531425edcc03e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">This definition is used to get the content added in the course in weekly. <a href="login_8py.html#a135b91c9d2a9585ec1531425edcc03e6">More...</a><br /></td></tr>
<tr class="separator:a135b91c9d2a9585ec1531425edcc03e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d380cb98e5740f1eeb3136e5df77c06"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="login_8py.html#a0d380cb98e5740f1eeb3136e5df77c06">main.login.get_discussion_forum_id</a> (request_helper, course_id)</td></tr>
<tr class="memdesc:a0d380cb98e5740f1eeb3136e5df77c06"><td class="mdescLeft">&#160;</td><td class="mdescRight">This definition is used to get the Announcements forum. <a href="login_8py.html#a0d380cb98e5740f1eeb3136e5df77c06">More...</a><br /></td></tr>
<tr class="separator:a0d380cb98e5740f1eeb3136e5df77c06"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac21ffafc69c98267b6ca12f439966f70"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="login_8py.html#ac21ffafc69c98267b6ca12f439966f70">main.login.get_discussion_forum_discussions</a> (request_helper, forum_id)</td></tr>
<tr class="memdesc:ac21ffafc69c98267b6ca12f439966f70"><td class="mdescLeft">&#160;</td><td class="mdescRight">This definition is used to get latest 5 discussions in the discussion forum. <a href="login_8py.html#ac21ffafc69c98267b6ca12f439966f70">More...</a><br /></td></tr>
<tr class="separator:ac21ffafc69c98267b6ca12f439966f70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a056612636f770b45b00a265686b1f348"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="login_8py.html#a056612636f770b45b00a265686b1f348">main.login.get_discussion_forum_posts</a> ()</td></tr>
<tr class="separator:a056612636f770b45b00a265686b1f348"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This file is used get the courses information from the moodle. </p>
<p>grep -rnw moodle_dl -e post_REST : command to get all places in code where pose_REST has been called </p>
<p class="definition">Definition in file <a class="el" href="login_8py_source.html">login.py</a>.</p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a8a6b441326ba06695621db609f532793"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a6b441326ba06695621db609f532793">&#9670;&nbsp;</a></span>get_assignments_info()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def main.login.get_assignments_info </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>request_helper</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>course_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>all</em> = <code>True</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This definition is used to get the assignment information for the courses. </p>
<pre class="fragment">Returns information of all assignments , if the second aruguement is false it returns info of only the latest assignment
input : object of class RequestHelper
output : list of all assignments with following attributes {'id','name','course','duedate','intro','introattachments'}
</pre>
<p class="definition">Definition at line <a class="el" href="login_8py_source.html#l00065">65</a> of file <a class="el" href="login_8py_source.html">login.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keyword">def </span>get_assignments_info(request_helper,course_id,all = True):</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="stringliteral"> Returns information of all assignments , if the second aruguement is false it returns info of only the latest assignment</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="stringliteral"> input : object of class RequestHelper</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="stringliteral"> output : list of all assignments with following attributes {&#39;id&#39;,&#39;name&#39;,&#39;course&#39;,&#39;duedate&#39;,&#39;intro&#39;,&#39;introattachments&#39;}</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="stringliteral"> &#39;&#39;&#39;</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; extra_data = {}</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; courseids = {<span class="stringliteral">&quot;0&quot;</span>:course_id}</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; extra_data.update({<span class="stringliteral">&#39;courseids&#39;</span>: courseids})</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; result = request_helper.post_REST(<span class="stringliteral">&#39;mod_assign_get_assignments&#39;</span>, extra_data)</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; assignments = result[<span class="stringliteral">&#39;courses&#39;</span>][0][<span class="stringliteral">&#39;assignments&#39;</span>]</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; l = []</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; </div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span> assign <span class="keywordflow">in</span> assignments:</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; data = dict((k, assign[k]) <span class="keywordflow">for</span> k <span class="keywordflow">in</span> assign <span class="keywordflow">if</span> k <span class="keywordflow">in</span> [<span class="stringliteral">&#39;id&#39;</span>,<span class="stringliteral">&#39;name&#39;</span>,<span class="stringliteral">&#39;course&#39;</span>,<span class="stringliteral">&#39;duedate&#39;</span>,<span class="stringliteral">&#39;timemodified&#39;</span>,<span class="stringliteral">&#39;intro&#39;</span>,<span class="stringliteral">&#39;introattachments&#39;</span>])</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; soup = BeautifulSoup(data[<span class="stringliteral">&#39;intro&#39;</span>],<span class="stringliteral">&#39;lxml&#39;</span>)</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="comment">#processing intro</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">if</span> data[<span class="stringliteral">&#39;intro&#39;</span>]:</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; data[<span class="stringliteral">&#39;intro&#39;</span>] = string_from_html(data[<span class="stringliteral">&#39;intro&#39;</span>])</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">#processing introattachments</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">if</span> data[<span class="stringliteral">&#39;introattachments&#39;</span>]:</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; data[<span class="stringliteral">&#39;introattachments&#39;</span>] = prune_dict(data[<span class="stringliteral">&#39;introattachments&#39;</span>],[<span class="stringliteral">&#39;filename&#39;</span>,<span class="stringliteral">&#39;fileurl&#39;</span>])</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; l.append(data) </div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> <span class="keywordflow">not</span> l:</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">#print(&quot;Empty assignments for&quot;,extra_data)</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> l</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; if(all == <span class="keyword">True</span>):</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> l</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">else</span>: </div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">return</span> l[-1]</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
<a id="a135b91c9d2a9585ec1531425edcc03e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a135b91c9d2a9585ec1531425edcc03e6">&#9670;&nbsp;</a></span>get_course_contents()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def main.login.get_course_contents </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>request_helper</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>course_id</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This definition is used to get the content added in the course in weekly. </p>
<pre class="fragment">returns contents of course week wise as uploaded
input : object of class RequestHelper
output: course contents for all weeks
</pre>
<p class="definition">Definition at line <a class="el" href="login_8py_source.html#l00129">129</a> of file <a class="el" href="login_8py_source.html">login.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keyword">def </span>get_course_contents(request_helper,course_id):</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="stringliteral"> returns contents of course week wise as uploaded</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="stringliteral"> input : object of class RequestHelper</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="stringliteral"> output: course contents for all weeks</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="stringliteral"> &#39;&#39;&#39;</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; data = {<span class="stringliteral">&#39;courseid&#39;</span>: course_id}</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; result = request_helper.post_REST(<span class="stringliteral">&#39;core_course_get_contents&#39;</span>, data)</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; l = []</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">for</span> week <span class="keywordflow">in</span> result:</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; data = dict((k, week[k]) <span class="keywordflow">for</span> k <span class="keywordflow">in</span> week <span class="keywordflow">if</span> k <span class="keywordflow">in</span> [<span class="stringliteral">&#39;id&#39;</span>,<span class="stringliteral">&#39;name&#39;</span>,<span class="stringliteral">&#39;modules&#39;</span>])</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> data[<span class="stringliteral">&#39;modules&#39;</span>]:</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; files = []</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">for</span> mod <span class="keywordflow">in</span> data[<span class="stringliteral">&#39;modules&#39;</span>]:</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; fl = dict((j, mod[j]) <span class="keywordflow">for</span> j <span class="keywordflow">in</span> mod <span class="keywordflow">if</span> j <span class="keywordflow">in</span> [<span class="stringliteral">&#39;url&#39;</span>,<span class="stringliteral">&#39;name&#39;</span>,<span class="stringliteral">&#39;contents&#39;</span>])</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">if</span> <span class="stringliteral">&#39;contents&#39;</span> <span class="keywordflow">in</span> fl.keys():</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; fl[<span class="stringliteral">&#39;contents&#39;</span>] = prune_dict(fl[<span class="stringliteral">&#39;contents&#39;</span>],[<span class="stringliteral">&#39;filename&#39;</span>,<span class="stringliteral">&#39;fileurl&#39;</span>])</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; files.append(fl)</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; data[<span class="stringliteral">&#39;modules&#39;</span>] = files</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; l.append(data)</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> l</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; </div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
<a id="ac21ffafc69c98267b6ca12f439966f70"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac21ffafc69c98267b6ca12f439966f70">&#9670;&nbsp;</a></span>get_discussion_forum_discussions()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def main.login.get_discussion_forum_discussions </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>request_helper</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>forum_id</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This definition is used to get latest 5 discussions in the discussion forum. </p>
<pre class="fragment">input : object of class RequestHelper, forum_id
output: returns most recent 5 discussions of the discussion forum
</pre>
<p class="definition">Definition at line <a class="el" href="login_8py_source.html#l00174">174</a> of file <a class="el" href="login_8py_source.html">login.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="keyword">def </span>get_discussion_forum_discussions(request_helper,forum_id):</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="stringliteral"> input : object of class RequestHelper, forum_id</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="stringliteral"> output: returns most recent 5 discussions of the discussion forum</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="stringliteral"> &#39;&#39;&#39;</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; data = {</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="stringliteral">&#39;forumid&#39;</span>: forum_id,</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; result = request_helper.post_REST(<span class="stringliteral">&#39;mod_forum_get_forum_discussions&#39;</span>, data)</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; discussions = result[<span class="stringliteral">&#39;discussions&#39;</span>]</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; if(len(discussions) &gt; 5):</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; discussions = discussions[0:5]</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; discussions = prune_dict(discussions,[<span class="stringliteral">&#39;name&#39;</span>,<span class="stringliteral">&#39;created&#39;</span>,<span class="stringliteral">&#39;message&#39;</span>])</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">for</span> i <span class="keywordflow">in</span> discussions:</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; i[<span class="stringliteral">&#39;message&#39;</span>] = string_from_html(i[<span class="stringliteral">&#39;message&#39;</span>])</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> discussions</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; </div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
<a id="a0d380cb98e5740f1eeb3136e5df77c06"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d380cb98e5740f1eeb3136e5df77c06">&#9670;&nbsp;</a></span>get_discussion_forum_id()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def main.login.get_discussion_forum_id </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>request_helper</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>course_id</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This definition is used to get the Announcements forum. </p>
<pre class="fragment">input : object of class RequestHelper and course id
output: dictionary containing id and name of the Announcements forum
</pre>
<p class="definition">Definition at line <a class="el" href="login_8py_source.html#l00155">155</a> of file <a class="el" href="login_8py_source.html">login.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="keyword">def </span>get_discussion_forum_id(request_helper,course_id):</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="stringliteral"> input : object of class RequestHelper and course id</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="stringliteral"> output: dictionary containing id and name of the Announcements forum</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="stringliteral"> &#39;&#39;&#39;</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; extra_data = {}</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; courseids = {<span class="stringliteral">&quot;0&quot;</span>:course_id}</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; extra_data.update({<span class="stringliteral">&#39;courseids&#39;</span>: courseids})</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; result = request_helper.post_REST(<span class="stringliteral">&#39;mod_forum_get_forums_by_courses&#39;</span>, extra_data)</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; forums = {}</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">for</span> forum <span class="keywordflow">in</span> result:</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; if(forum[<span class="stringliteral">&#39;name&#39;</span>] <span class="keywordflow">in</span> [<span class="stringliteral">&#39;Announcements&#39;</span>]):</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; forums = dict((k, forum[k]) <span class="keywordflow">for</span> k <span class="keywordflow">in</span> forum <span class="keywordflow">if</span> k <span class="keywordflow">in</span> [<span class="stringliteral">&#39;id&#39;</span>,<span class="stringliteral">&#39;name&#39;</span>])</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">return</span> forums</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; </div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
<a id="a056612636f770b45b00a265686b1f348"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a056612636f770b45b00a265686b1f348">&#9670;&nbsp;</a></span>get_discussion_forum_posts()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def main.login.get_discussion_forum_posts </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">input : object of class RequestHelper
</pre>
<p class="definition">Definition at line <a class="el" href="login_8py_source.html#l00192">192</a> of file <a class="el" href="login_8py_source.html">login.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="keyword">def </span>get_discussion_forum_posts():</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="stringliteral"> input : object of class RequestHelper</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="stringliteral"> &#39;&#39;&#39;</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; data = {</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="stringliteral">&#39;discussionid&#39;</span>: 16545,</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="stringliteral">&#39;sortby&#39;</span>: <span class="stringliteral">&#39;modified&#39;</span>,</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="stringliteral">&#39;sortdirection&#39;</span>: <span class="stringliteral">&#39;ASC&#39;</span>,</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; posts_result = request_helper.post_REST(<span class="stringliteral">&#39;mod_forum_get_forum_discussion_posts&#39;</span>, data)</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; print(posts_result)</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; </div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; </div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; </div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; </div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; </div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment">#function Call to get list of courses taken by a student</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="stringliteral">course_ids,course_names = get_list_of_courses(request_helper)</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="stringliteral">print(course_ids,course_names)</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; </div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="comment">#function Call to get assignments corresponding to a subject</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="stringliteral">course_id = 219 #eg for 699</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="stringliteral">assignments = get_assignments_info(request_helper,course_id,False)</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="stringliteral">print(assignments)</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; </div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment">#function Call to get quizzes corresponding to a subject</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="stringliteral">course_id = 230 #eg for 771 course</span></div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="stringliteral">quizzes = get_quizzes_info(request_helper,course_id,True)</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="stringliteral">print(quizzes)</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; </div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment">#function Call to get quizzes corresponding to a subject</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="stringliteral">course_id = 230 #eg for 771 course</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="stringliteral">quizzes = get_quizzes_info(request_helper,course_id,True)</span></div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="stringliteral">print(quizzes)</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; </div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment">#function Call to get announcement forum id</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="stringliteral">ann_forum = get_discussion_forum_id(request_helper,230)</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="stringliteral">print(ann_forum)</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; </div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment">#function Call to get course contents</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="stringliteral">cc = get_course_contents(request_helper,230)</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="stringliteral">print(cc[-1])</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; </div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="comment">#function Call to get 5 most recent posts from a discussion forum</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="stringliteral">discs = get_discussion_forum_discussions(request_helper,229)</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="stringliteral"># for d in discs:</span></div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="stringliteral"># print(d)</span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="stringliteral">print(type(discs),discs)</span></div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
</div><!-- fragment -->
</div>
</div>
<a id="a62839d03a86ff0fde26e3b7f1a20f7ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a62839d03a86ff0fde26e3b7f1a20f7ea">&#9670;&nbsp;</a></span>get_list_of_courses()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def main.login.get_list_of_courses </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>request_helper</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This definition is used to get list of courses the user registered. </p>
<pre class="fragment">input : object of class RequestHelper
output : two dictionaries: 1. course_ids with key value pairs as 'SubjectCode' : 'Id used by moodle for it'
2. course_names with key value pairs as 'SubjectCode' : 'Name of the Subject'
</pre>
<p class="definition">Definition at line <a class="el" href="login_8py_source.html#l00042">42</a> of file <a class="el" href="login_8py_source.html">login.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">def </span>get_list_of_courses(request_helper):</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="stringliteral"> input : object of class RequestHelper</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="stringliteral"> output : two dictionaries: 1. course_ids with key value pairs as &#39;SubjectCode&#39; : &#39;Id used by moodle for it&#39;</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="stringliteral"> 2. course_names with key value pairs as &#39;SubjectCode&#39; : &#39;Name of the Subject&#39;</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="stringliteral"> &#39;&#39;&#39;</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; result = request_helper.post_REST(<span class="stringliteral">&#39;core_webservice_get_site_info&#39;</span>)</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span> <span class="stringliteral">&#39;userid&#39;</span> <span class="keywordflow">not</span> <span class="keywordflow">in</span> result:</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">raise</span> RuntimeError(<span class="stringliteral">&#39;Error could not receive your user ID!&#39;</span>)</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; userid = result.get(<span class="stringliteral">&#39;userid&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; data = {<span class="stringliteral">&#39;userid&#39;</span>: userid}</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; result = request_helper.post_REST(<span class="stringliteral">&#39;core_enrol_get_users_courses&#39;</span>, data)</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; course_names = {}</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; course_ids = {}</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">for</span> index <span class="keywordflow">in</span> result:</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; course_ids[index[<span class="stringliteral">&#39;shortname&#39;</span>][3:6]] = index[<span class="stringliteral">&#39;id&#39;</span>]</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; course_names[index[<span class="stringliteral">&#39;shortname&#39;</span>][3:6]] = index[<span class="stringliteral">&#39;fullname&#39;</span>]</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> course_ids,course_names</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; </div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
<a id="a4f57b9ecd192e2ea511252924ae1dc61"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f57b9ecd192e2ea511252924ae1dc61">&#9670;&nbsp;</a></span>get_quizzes_info()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def main.login.get_quizzes_info </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>request_helper</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>course_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>all</em> = <code>True</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This definition is used to get the information about quizzes for the courses. </p>
<pre class="fragment">returns information about all quizes if all is true else about the latest quiz
input : object of class RequestHelper, couse_id, all flag
output : list of all quizzes with following attributes {''id','name','timeopen','timeclose','intro','grade'}
</pre>
<p class="definition">Definition at line <a class="el" href="login_8py_source.html#l00100">100</a> of file <a class="el" href="login_8py_source.html">login.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword">def </span>get_quizzes_info(request_helper,course_id,all = True):</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="stringliteral"> returns information about all quizes if all is true else about the latest quiz</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="stringliteral"> input : object of class RequestHelper, couse_id, all flag</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="stringliteral"> output : list of all quizzes with following attributes {&#39;&#39;id&#39;,&#39;name&#39;,&#39;timeopen&#39;,&#39;timeclose&#39;,&#39;intro&#39;,&#39;grade&#39;}</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="stringliteral"> &#39;&#39;&#39;</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; extra_data = {}</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; courseids = {<span class="stringliteral">&quot;0&quot;</span>:course_id}</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; extra_data.update({<span class="stringliteral">&#39;courseids&#39;</span>: courseids})</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; result = request_helper.post_REST(<span class="stringliteral">&#39;mod_quiz_get_quizzes_by_courses&#39;</span>, extra_data)</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; quizzes = result[<span class="stringliteral">&#39;quizzes&#39;</span>]</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; l = []</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">if</span> <span class="keywordflow">not</span> quizzes:</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> l</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">for</span> quiz <span class="keywordflow">in</span> quizzes:</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; data = dict((k, quiz[k]) <span class="keywordflow">for</span> k <span class="keywordflow">in</span> quiz <span class="keywordflow">if</span> k <span class="keywordflow">in</span> [<span class="stringliteral">&#39;id&#39;</span>,<span class="stringliteral">&#39;name&#39;</span>,<span class="stringliteral">&#39;timeopen&#39;</span>,<span class="stringliteral">&#39;timeclose&#39;</span>,<span class="stringliteral">&#39;intro&#39;</span>,<span class="stringliteral">&#39;grade&#39;</span>])</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">#intro processing</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">if</span> data[<span class="stringliteral">&#39;intro&#39;</span>]:</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; data[<span class="stringliteral">&#39;intro&#39;</span>] = string_from_html(data[<span class="stringliteral">&#39;intro&#39;</span>])</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; l.append(data)</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; if(all == <span class="keyword">True</span>):</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">return</span> l</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">else</span>: </div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> l[-1]</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; </div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/login.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">login.py</div> </div>
</div><!--header-->
<div class="contents">
<a href="login_8py.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; </div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; </div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="keyword">import</span> re</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="keyword">from</span> bs4 <span class="keyword">import</span> BeautifulSoup</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; </div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"># import pickle</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"># from .letsloginourself import RequestHelper</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"># with open(&#39;configdictionary&#39;, &#39;rb&#39;) as config_dictionary_file:</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"># config_dictionary = pickle.load(config_dictionary_file)</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"># #print(config_dictionary)</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; </div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"># moodle_domain = config_dictionary[&#39;domain&#39;] </span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"># moodle_path = config_dictionary[&#39;path&#39;]</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"># moodle_token = config_dictionary[&#39;moodle_token&#39;]</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"># #print(moodle_domain,moodle_path,moodle_token)</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"># request_helper = RequestHelper(moodle_domain, moodle_path, moodle_token, False)</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; </div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">def </span>prune_dict(list_of_data, keys):</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; files = []</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">for</span> val <span class="keywordflow">in</span> list_of_data:</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; valid_val = dict((j, val[j]) <span class="keywordflow">for</span> j <span class="keywordflow">in</span> val <span class="keywordflow">if</span> j <span class="keywordflow">in</span> keys)</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; files.append(valid_val)</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> files</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">def </span>string_from_html(data):</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; soup = BeautifulSoup(data,<span class="stringliteral">&#39;lxml&#39;</span>)</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; txt = <span class="stringliteral">&quot;&quot;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span> ptag <span class="keywordflow">in</span> soup.find_all(<span class="stringliteral">&#39;p&#39;</span>):</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; txt += ptag.text</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> txt</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; </div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; </div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">def </span>get_list_of_courses(request_helper):</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="stringliteral"> input : object of class RequestHelper</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="stringliteral"> output : two dictionaries: 1. course_ids with key value pairs as &#39;SubjectCode&#39; : &#39;Id used by moodle for it&#39;</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="stringliteral"> 2. course_names with key value pairs as &#39;SubjectCode&#39; : &#39;Name of the Subject&#39;</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="stringliteral"> &#39;&#39;&#39;</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; result = request_helper.post_REST(<span class="stringliteral">&#39;core_webservice_get_site_info&#39;</span>)</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span> <span class="stringliteral">&#39;userid&#39;</span> <span class="keywordflow">not</span> <span class="keywordflow">in</span> result:</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">raise</span> RuntimeError(<span class="stringliteral">&#39;Error could not receive your user ID!&#39;</span>)</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; userid = result.get(<span class="stringliteral">&#39;userid&#39;</span>, <span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; data = {<span class="stringliteral">&#39;userid&#39;</span>: userid}</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; result = request_helper.post_REST(<span class="stringliteral">&#39;core_enrol_get_users_courses&#39;</span>, data)</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; course_names = {}</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; course_ids = {}</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">for</span> index <span class="keywordflow">in</span> result:</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; course_ids[index[<span class="stringliteral">&#39;shortname&#39;</span>][3:6]] = index[<span class="stringliteral">&#39;id&#39;</span>]</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; course_names[index[<span class="stringliteral">&#39;shortname&#39;</span>][3:6]] = index[<span class="stringliteral">&#39;fullname&#39;</span>]</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> course_ids,course_names</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; </div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; </div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keyword">def </span>get_assignments_info(request_helper,course_id,all = True):</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="stringliteral"> Returns information of all assignments , if the second aruguement is false it returns info of only the latest assignment</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="stringliteral"> input : object of class RequestHelper</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="stringliteral"> output : list of all assignments with following attributes {&#39;id&#39;,&#39;name&#39;,&#39;course&#39;,&#39;duedate&#39;,&#39;intro&#39;,&#39;introattachments&#39;}</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="stringliteral"> &#39;&#39;&#39;</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; extra_data = {}</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; courseids = {<span class="stringliteral">&quot;0&quot;</span>:course_id}</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; extra_data.update({<span class="stringliteral">&#39;courseids&#39;</span>: courseids})</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; result = request_helper.post_REST(<span class="stringliteral">&#39;mod_assign_get_assignments&#39;</span>, extra_data)</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; assignments = result[<span class="stringliteral">&#39;courses&#39;</span>][0][<span class="stringliteral">&#39;assignments&#39;</span>]</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; l = []</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; </div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span> assign <span class="keywordflow">in</span> assignments:</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; data = dict((k, assign[k]) <span class="keywordflow">for</span> k <span class="keywordflow">in</span> assign <span class="keywordflow">if</span> k <span class="keywordflow">in</span> [<span class="stringliteral">&#39;id&#39;</span>,<span class="stringliteral">&#39;name&#39;</span>,<span class="stringliteral">&#39;course&#39;</span>,<span class="stringliteral">&#39;duedate&#39;</span>,<span class="stringliteral">&#39;timemodified&#39;</span>,<span class="stringliteral">&#39;intro&#39;</span>,<span class="stringliteral">&#39;introattachments&#39;</span>])</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; soup = BeautifulSoup(data[<span class="stringliteral">&#39;intro&#39;</span>],<span class="stringliteral">&#39;lxml&#39;</span>)</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="comment">#processing intro</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">if</span> data[<span class="stringliteral">&#39;intro&#39;</span>]:</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; data[<span class="stringliteral">&#39;intro&#39;</span>] = string_from_html(data[<span class="stringliteral">&#39;intro&#39;</span>])</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">#processing introattachments</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">if</span> data[<span class="stringliteral">&#39;introattachments&#39;</span>]:</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; data[<span class="stringliteral">&#39;introattachments&#39;</span>] = prune_dict(data[<span class="stringliteral">&#39;introattachments&#39;</span>],[<span class="stringliteral">&#39;filename&#39;</span>,<span class="stringliteral">&#39;fileurl&#39;</span>])</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; l.append(data) </div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> <span class="keywordflow">not</span> l:</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">#print(&quot;Empty assignments for&quot;,extra_data)</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> l</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; if(all == <span class="keyword">True</span>):</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> l</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">else</span>: </div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">return</span> l[-1]</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; </div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; </div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword">def </span>get_quizzes_info(request_helper,course_id,all = True):</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="stringliteral"> returns information about all quizes if all is true else about the latest quiz</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="stringliteral"> input : object of class RequestHelper, couse_id, all flag</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="stringliteral"> output : list of all quizzes with following attributes {&#39;&#39;id&#39;,&#39;name&#39;,&#39;timeopen&#39;,&#39;timeclose&#39;,&#39;intro&#39;,&#39;grade&#39;}</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="stringliteral"> &#39;&#39;&#39;</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; extra_data = {}</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; courseids = {<span class="stringliteral">&quot;0&quot;</span>:course_id}</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; extra_data.update({<span class="stringliteral">&#39;courseids&#39;</span>: courseids})</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; result = request_helper.post_REST(<span class="stringliteral">&#39;mod_quiz_get_quizzes_by_courses&#39;</span>, extra_data)</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; quizzes = result[<span class="stringliteral">&#39;quizzes&#39;</span>]</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; l = []</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">if</span> <span class="keywordflow">not</span> quizzes:</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> l</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">for</span> quiz <span class="keywordflow">in</span> quizzes:</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; data = dict((k, quiz[k]) <span class="keywordflow">for</span> k <span class="keywordflow">in</span> quiz <span class="keywordflow">if</span> k <span class="keywordflow">in</span> [<span class="stringliteral">&#39;id&#39;</span>,<span class="stringliteral">&#39;name&#39;</span>,<span class="stringliteral">&#39;timeopen&#39;</span>,<span class="stringliteral">&#39;timeclose&#39;</span>,<span class="stringliteral">&#39;intro&#39;</span>,<span class="stringliteral">&#39;grade&#39;</span>])</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">#intro processing</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">if</span> data[<span class="stringliteral">&#39;intro&#39;</span>]:</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; data[<span class="stringliteral">&#39;intro&#39;</span>] = string_from_html(data[<span class="stringliteral">&#39;intro&#39;</span>])</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; l.append(data)</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; if(all == <span class="keyword">True</span>):</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">return</span> l</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">else</span>: </div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> l[-1]</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; </div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; </div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; </div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keyword">def </span>get_course_contents(request_helper,course_id):</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="stringliteral"> returns contents of course week wise as uploaded</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="stringliteral"> input : object of class RequestHelper</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="stringliteral"> output: course contents for all weeks</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="stringliteral"> &#39;&#39;&#39;</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; data = {<span class="stringliteral">&#39;courseid&#39;</span>: course_id}</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; result = request_helper.post_REST(<span class="stringliteral">&#39;core_course_get_contents&#39;</span>, data)</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; l = []</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">for</span> week <span class="keywordflow">in</span> result:</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; data = dict((k, week[k]) <span class="keywordflow">for</span> k <span class="keywordflow">in</span> week <span class="keywordflow">if</span> k <span class="keywordflow">in</span> [<span class="stringliteral">&#39;id&#39;</span>,<span class="stringliteral">&#39;name&#39;</span>,<span class="stringliteral">&#39;modules&#39;</span>])</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> data[<span class="stringliteral">&#39;modules&#39;</span>]:</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; files = []</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">for</span> mod <span class="keywordflow">in</span> data[<span class="stringliteral">&#39;modules&#39;</span>]:</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; fl = dict((j, mod[j]) <span class="keywordflow">for</span> j <span class="keywordflow">in</span> mod <span class="keywordflow">if</span> j <span class="keywordflow">in</span> [<span class="stringliteral">&#39;url&#39;</span>,<span class="stringliteral">&#39;name&#39;</span>,<span class="stringliteral">&#39;contents&#39;</span>])</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">if</span> <span class="stringliteral">&#39;contents&#39;</span> <span class="keywordflow">in</span> fl.keys():</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; fl[<span class="stringliteral">&#39;contents&#39;</span>] = prune_dict(fl[<span class="stringliteral">&#39;contents&#39;</span>],[<span class="stringliteral">&#39;filename&#39;</span>,<span class="stringliteral">&#39;fileurl&#39;</span>])</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; files.append(fl)</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; data[<span class="stringliteral">&#39;modules&#39;</span>] = files</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; l.append(data)</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> l</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; </div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; </div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; </div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="keyword">def </span>get_discussion_forum_id(request_helper,course_id):</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="stringliteral"> input : object of class RequestHelper and course id</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="stringliteral"> output: dictionary containing id and name of the Announcements forum</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="stringliteral"> &#39;&#39;&#39;</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; extra_data = {}</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; courseids = {<span class="stringliteral">&quot;0&quot;</span>:course_id}</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; extra_data.update({<span class="stringliteral">&#39;courseids&#39;</span>: courseids})</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; result = request_helper.post_REST(<span class="stringliteral">&#39;mod_forum_get_forums_by_courses&#39;</span>, extra_data)</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; forums = {}</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">for</span> forum <span class="keywordflow">in</span> result:</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; if(forum[<span class="stringliteral">&#39;name&#39;</span>] <span class="keywordflow">in</span> [<span class="stringliteral">&#39;Announcements&#39;</span>]):</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; forums = dict((k, forum[k]) <span class="keywordflow">for</span> k <span class="keywordflow">in</span> forum <span class="keywordflow">if</span> k <span class="keywordflow">in</span> [<span class="stringliteral">&#39;id&#39;</span>,<span class="stringliteral">&#39;name&#39;</span>])</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">return</span> forums</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; </div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; </div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; </div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="keyword">def </span>get_discussion_forum_discussions(request_helper,forum_id):</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="stringliteral"> input : object of class RequestHelper, forum_id</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="stringliteral"> output: returns most recent 5 discussions of the discussion forum</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="stringliteral"> &#39;&#39;&#39;</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; data = {</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="stringliteral">&#39;forumid&#39;</span>: forum_id,</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; result = request_helper.post_REST(<span class="stringliteral">&#39;mod_forum_get_forum_discussions&#39;</span>, data)</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; discussions = result[<span class="stringliteral">&#39;discussions&#39;</span>]</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; if(len(discussions) &gt; 5):</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; discussions = discussions[0:5]</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; discussions = prune_dict(discussions,[<span class="stringliteral">&#39;name&#39;</span>,<span class="stringliteral">&#39;created&#39;</span>,<span class="stringliteral">&#39;message&#39;</span>])</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">for</span> i <span class="keywordflow">in</span> discussions:</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; i[<span class="stringliteral">&#39;message&#39;</span>] = string_from_html(i[<span class="stringliteral">&#39;message&#39;</span>])</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> discussions</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; </div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; </div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="keyword">def </span>get_discussion_forum_posts():</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="stringliteral"> input : object of class RequestHelper</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="stringliteral"> &#39;&#39;&#39;</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; data = {</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="stringliteral">&#39;discussionid&#39;</span>: 16545,</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="stringliteral">&#39;sortby&#39;</span>: <span class="stringliteral">&#39;modified&#39;</span>,</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="stringliteral">&#39;sortdirection&#39;</span>: <span class="stringliteral">&#39;ASC&#39;</span>,</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; posts_result = request_helper.post_REST(<span class="stringliteral">&#39;mod_forum_get_forum_discussion_posts&#39;</span>, data)</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; print(posts_result)</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; </div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; </div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; </div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; </div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; </div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment">#function Call to get list of courses taken by a student</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="stringliteral">course_ids,course_names = get_list_of_courses(request_helper)</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="stringliteral">print(course_ids,course_names)</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; </div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="comment">#function Call to get assignments corresponding to a subject</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="stringliteral">course_id = 219 #eg for 699</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="stringliteral">assignments = get_assignments_info(request_helper,course_id,False)</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="stringliteral">print(assignments)</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; </div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment">#function Call to get quizzes corresponding to a subject</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="stringliteral">course_id = 230 #eg for 771 course</span></div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="stringliteral">quizzes = get_quizzes_info(request_helper,course_id,True)</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="stringliteral">print(quizzes)</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; </div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment">#function Call to get quizzes corresponding to a subject</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="stringliteral">course_id = 230 #eg for 771 course</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="stringliteral">quizzes = get_quizzes_info(request_helper,course_id,True)</span></div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="stringliteral">print(quizzes)</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; </div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment">#function Call to get announcement forum id</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="stringliteral">ann_forum = get_discussion_forum_id(request_helper,230)</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="stringliteral">print(ann_forum)</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; </div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment">#function Call to get course contents</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="stringliteral">cc = get_course_contents(request_helper,230)</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="stringliteral">print(cc[-1])</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; </div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="comment">#function Call to get 5 most recent posts from a discussion forum</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="stringliteral">discs = get_discussion_forum_discussions(request_helper,229)</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="stringliteral"># for d in discs:</span></div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="stringliteral"># print(d)</span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="stringliteral">print(type(discs),discs)</span></div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/__init__.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">__init__.py</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"></div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/urls.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">urls.py</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="keyword">from</span> collections <span class="keyword">import</span> namedtuple</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="keyword">from</span> django.conf.urls <span class="keyword">import</span> url</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="keyword">from</span> django.urls <span class="keyword">import</span> path</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160; </div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="keyword">from</span> . <span class="keyword">import</span> views</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; </div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;urlpatterns = [</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; path(<span class="stringliteral">&quot;&quot;</span>, views.home, name=<span class="stringliteral">&quot;index&quot;</span>),</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; path(<span class="stringliteral">&quot;home/&quot;</span>, views.home, name=<span class="stringliteral">&quot;home&quot;</span>),</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; path(<span class="stringliteral">&quot;register/&quot;</span>, views.register, name=<span class="stringliteral">&quot;register&quot;</span>),</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; path(<span class="stringliteral">&quot;success/&quot;</span>, views.success, name=<span class="stringliteral">&quot;success&quot;</span>),</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; path(<span class="stringliteral">&quot;sms&quot;</span>,views.sms_reply, name=<span class="stringliteral">&quot;smsreply&quot;</span> ),</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; path(<span class="stringliteral">&quot;updater/&quot;</span>,views.updater, name=<span class="stringliteral">&quot;updater&quot;</span> ),</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;]</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: manage.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">manage.py</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"><a class="line" href="namespacemanage.html"> 1</a></span>&#160;<span class="comment">#!/usr/bin/env python</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="stringliteral">&quot;&quot;&quot;Django&#39;s command-line utility for administrative tasks.&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="keyword">import</span> os</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="keyword">import</span> sys</div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; </div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; </div>
<div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="namespacemanage.html#afd5b00260cc364aa5bde07e227c6ea78"> 7</a></span>&#160;<span class="keyword">def </span><a class="code" href="namespacemanage.html#afd5b00260cc364aa5bde07e227c6ea78">main</a>():</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; <span class="stringliteral">&quot;&quot;&quot;Run administrative tasks.&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; os.environ.setdefault(<span class="stringliteral">&#39;DJANGO_SETTINGS_MODULE&#39;</span>, <span class="stringliteral">&#39;moodleNotifier.settings&#39;</span>)</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; <span class="keywordflow">try</span>:</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; <span class="keyword">from</span> django.core.management <span class="keyword">import</span> execute_from_command_line</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; <span class="keywordflow">except</span> ImportError <span class="keyword">as</span> exc:</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; <span class="keywordflow">raise</span> ImportError(</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <span class="stringliteral">&quot;Couldn&#39;t import Django. Are you sure it&#39;s installed and &quot;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="stringliteral">&quot;available on your PYTHONPATH environment variable? Did you &quot;</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="stringliteral">&quot;forget to activate a virtual environment?&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; ) <span class="keyword">from</span> exc</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; execute_from_command_line(sys.argv)</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; </div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keywordflow">if</span> __name__ == <span class="stringliteral">&#39;__main__&#39;</span>:</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <a class="code" href="namespacemain.html">main</a>()</div>
<div class="ttc" id="anamespacemain_html"><div class="ttname"><a href="namespacemain.html">main</a></div><div class="ttdef"><b>Definition:</b> <a href="main_2____init_____8py_source.html#l00001">__init__.py:1</a></div></div>
<div class="ttc" id="anamespacemanage_html_afd5b00260cc364aa5bde07e227c6ea78"><div class="ttname"><a href="namespacemanage.html#afd5b00260cc364aa5bde07e227c6ea78">manage.main</a></div><div class="ttdeci">def main()</div><div class="ttdef"><b>Definition:</b> <a href="manage_8py_source.html#l00007">manage.py:7</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
function makeTree(data,relPath) {
var result='';
if ('children' in data) {
result+='<ul>';
for (var i in data.children) {
result+='<li><a href="'+relPath+data.children[i].url+'">'+
data.children[i].text+'</a>'+
makeTree(data.children[i],relPath)+'</li>';
}
result+='</ul>';
}
return result;
}
$('#main-nav').append(makeTree(menudata,relPath));
$('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
if (searchEnabled) {
if (serverSide) {
$('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><div class="left"><form id="FSearchBox" action="'+relPath+searchPage+'" method="get"><img id="MSearchSelect" src="'+relPath+'search/mag.svg" alt=""/><input type="text" id="MSearchField" name="query" value="'+search+'" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)"></form></div><div class="right"></div></div></li>');
} else {
$('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><span class="left"><img id="MSearchSelect" src="'+relPath+'search/mag_sel.svg" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/><input type="text" id="MSearchField" value="'+search+'" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/></span><span class="right"><a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="'+relPath+'search/close.svg" alt=""/></a></span></div></li>');
}
}
$('#main-menu').smartmenus();
}
/* @license-end */
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
var menudata={children:[
{text:"Main Page",url:"index.html"},
{text:"Namespaces",url:"namespaces.html",children:[
{text:"Namespace List",url:"namespaces.html"},
{text:"Namespace Members",url:"namespacemembers.html",children:[
{text:"All",url:"namespacemembers.html"},
{text:"Functions",url:"namespacemembers_func.html"}]}]},
{text:"Classes",url:"annotated.html",children:[
{text:"Class List",url:"annotated.html"},
{text:"Class Index",url:"classes.html"},
{text:"Class Hierarchy",url:"hierarchy.html"},
{text:"Class Members",url:"functions.html",children:[
{text:"All",url:"functions.html"},
{text:"Functions",url:"functions_func.html"}]}]},
{text:"Files",url:"files.html",children:[
{text:"File List",url:"files.html"}]}]}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/models.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">models.py</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="keyword">from</span> django.db <span class="keyword">import</span> models</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; </div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"># Create your models here.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160; </div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; </div>
<div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="classmain_1_1models_1_1Student.html"> 8</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmain_1_1models_1_1Student.html">Student</a>(models.Model):</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; TYPE_CHOICES = ( </div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; (<span class="stringliteral">&quot;updater&quot;</span>, <span class="stringliteral">&quot;updater&quot;</span>),</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; (<span class="stringliteral">&quot;General&quot;</span>, <span class="stringliteral">&quot;General&quot;</span>),</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; ) </div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; fname = models.CharField(max_length=200)</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; phone_number = models.CharField(max_length=10, unique=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; roll_number = models.CharField(max_length=9, default=<span class="stringliteral">&quot;&quot;</span>, unique=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; moodle_token = models.CharField(max_length=50, default=<span class="stringliteral">&quot;&quot;</span>, unique=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; courses = models.CharField(max_length=50, default=<span class="stringliteral">&quot;&quot;</span>)</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; user_type = models.CharField(max_length=10,choices=TYPE_CHOICES, default=<span class="stringliteral">&quot;General&quot;</span>)</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; is_update = models.BooleanField(default=<span class="keyword">False</span>)</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; update_courses = models.CharField(max_length=30, default=<span class="stringliteral">&quot;&quot;</span>)</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">def </span>__str__(self):</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;%s %s %s %s %s %s %s %s&quot;</span> % (self.<a class="code" href="classmain_1_1models_1_1Student.html#a7d62a513b2cd797ee0cd3cd2980b90a6">fname</a>fname, self.<a class="code" href="classmain_1_1models_1_1Student.html#afa28cb2bd9aed4b43aec8ac0c5b1d046">phone_number</a>phone_number, self.<a class="code" href="classmain_1_1models_1_1Student.html#aa6f59b50150a3a1942ae6457b5425bab">roll_number</a>roll_number, self.<a class="code" href="classmain_1_1models_1_1Student.html#a45bab9a99a6f6ef4868903ea4d61642b">moodle_token</a>moodle_token, self.<a class="code" href="classmain_1_1models_1_1Student.html#ae216af468962e61ba370bad5e3f38fcd">courses</a>courses,</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; self.<a class="code" href="classmain_1_1models_1_1Student.html#a0f12134d6cc166287bc15607506c58d1">user_type</a>user_type, self.<a class="code" href="classmain_1_1models_1_1Student.html#afeb64cee3997c83ed44ff7d367721b2a">is_update</a>is_update, self.<a class="code" href="classmain_1_1models_1_1Student.html#ac8753badf1f335af6f97128f537209cc">update_courses</a>update_courses)</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; </div>
<div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="classmain_1_1models_1_1Student_1_1Meta.html"> 27</a></span>&#160; <span class="keyword">class </span><a class="code" href="classmain_1_1models_1_1Student_1_1Meta.html">Meta</a>:</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; db_table = <span class="stringliteral">&quot;student&quot;</span></div>
<div class="ttc" id="aclassmain_1_1models_1_1Student_1_1Meta_html"><div class="ttname"><a href="classmain_1_1models_1_1Student_1_1Meta.html">main.models.Student.Meta</a></div><div class="ttdef"><b>Definition:</b> <a href="models_8py_source.html#l00027">models.py:27</a></div></div>
<div class="ttc" id="aclassmain_1_1models_1_1Student_html"><div class="ttname"><a href="classmain_1_1models_1_1Student.html">main.models.Student</a></div><div class="ttdoc">This Class is used for the Database Table: Student.</div><div class="ttdef"><b>Definition:</b> <a href="models_8py_source.html#l00008">models.py:8</a></div></div>
<div class="ttc" id="aclassmain_1_1models_1_1Student_html_a0f12134d6cc166287bc15607506c58d1"><div class="ttname"><a href="classmain_1_1models_1_1Student.html#a0f12134d6cc166287bc15607506c58d1">main.models.Student.user_type</a></div><div class="ttdeci">user_type</div><div class="ttdef"><b>Definition:</b> <a href="models_8py_source.html#l00019">models.py:19</a></div></div>
<div class="ttc" id="aclassmain_1_1models_1_1Student_html_a45bab9a99a6f6ef4868903ea4d61642b"><div class="ttname"><a href="classmain_1_1models_1_1Student.html#a45bab9a99a6f6ef4868903ea4d61642b">main.models.Student.moodle_token</a></div><div class="ttdeci">moodle_token</div><div class="ttdef"><b>Definition:</b> <a href="models_8py_source.html#l00017">models.py:17</a></div></div>
<div class="ttc" id="aclassmain_1_1models_1_1Student_html_a7d62a513b2cd797ee0cd3cd2980b90a6"><div class="ttname"><a href="classmain_1_1models_1_1Student.html#a7d62a513b2cd797ee0cd3cd2980b90a6">main.models.Student.fname</a></div><div class="ttdeci">fname</div><div class="ttdef"><b>Definition:</b> <a href="models_8py_source.html#l00014">models.py:14</a></div></div>
<div class="ttc" id="aclassmain_1_1models_1_1Student_html_aa6f59b50150a3a1942ae6457b5425bab"><div class="ttname"><a href="classmain_1_1models_1_1Student.html#aa6f59b50150a3a1942ae6457b5425bab">main.models.Student.roll_number</a></div><div class="ttdeci">roll_number</div><div class="ttdef"><b>Definition:</b> <a href="models_8py_source.html#l00016">models.py:16</a></div></div>
<div class="ttc" id="aclassmain_1_1models_1_1Student_html_ac8753badf1f335af6f97128f537209cc"><div class="ttname"><a href="classmain_1_1models_1_1Student.html#ac8753badf1f335af6f97128f537209cc">main.models.Student.update_courses</a></div><div class="ttdeci">update_courses</div><div class="ttdef"><b>Definition:</b> <a href="models_8py_source.html#l00021">models.py:21</a></div></div>
<div class="ttc" id="aclassmain_1_1models_1_1Student_html_ae216af468962e61ba370bad5e3f38fcd"><div class="ttname"><a href="classmain_1_1models_1_1Student.html#ae216af468962e61ba370bad5e3f38fcd">main.models.Student.courses</a></div><div class="ttdeci">courses</div><div class="ttdef"><b>Definition:</b> <a href="models_8py_source.html#l00018">models.py:18</a></div></div>
<div class="ttc" id="aclassmain_1_1models_1_1Student_html_afa28cb2bd9aed4b43aec8ac0c5b1d046"><div class="ttname"><a href="classmain_1_1models_1_1Student.html#afa28cb2bd9aed4b43aec8ac0c5b1d046">main.models.Student.phone_number</a></div><div class="ttdeci">phone_number</div><div class="ttdef"><b>Definition:</b> <a href="models_8py_source.html#l00015">models.py:15</a></div></div>
<div class="ttc" id="aclassmain_1_1models_1_1Student_html_afeb64cee3997c83ed44ff7d367721b2a"><div class="ttname"><a href="classmain_1_1models_1_1Student.html#afeb64cee3997c83ed44ff7d367721b2a">main.models.Student.is_update</a></div><div class="ttdeci">is_update</div><div class="ttdef"><b>Definition:</b> <a href="models_8py_source.html#l00020">models.py:20</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: moodleNotifier/__init__.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_2d978bdce16c291c9c81f068e91d317d.html">moodleNotifier</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">__init__.py</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"></div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: moodleNotifier/urls.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_2d978bdce16c291c9c81f068e91d317d.html">moodleNotifier</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">urls.py</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"><a class="line" href="namespacemoodleNotifier_1_1urls.html"> 1</a></span>&#160;<span class="stringliteral">&quot;&quot;&quot;moodleNotifier URL Configuration</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="stringliteral">The `urlpatterns` list routes URLs to views. For more information please see:</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="stringliteral"> https://docs.djangoproject.com/en/3.1/topics/http/urls/</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="stringliteral">Examples:</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="stringliteral">Function views</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="stringliteral"> 1. Add an import: from my_app import views</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="stringliteral"> 2. Add a URL to urlpatterns: path(&#39;&#39;, views.home, name=&#39;home&#39;)</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="stringliteral">Class-based views</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="stringliteral"> 1. Add an import: from other_app.views import Home</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="stringliteral"> 2. Add a URL to urlpatterns: path(&#39;&#39;, Home.as_view(), name=&#39;home&#39;)</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="stringliteral">Including another URLconf</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="stringliteral"> 1. Import the include() function: from django.urls import include, path</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="stringliteral"> 2. Add a URL to urlpatterns: path(&#39;blog/&#39;, include(&#39;blog.urls&#39;))</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="keyword">from</span> django.contrib <span class="keyword">import</span> admin</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">from</span> django.urls <span class="keyword">import</span> path, include</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;urlpatterns = [</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; path(<span class="stringliteral">&#39;admin/&#39;</span>, admin.site.urls),</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; path(<span class="stringliteral">&#39;&#39;</span>, include(<span class="stringliteral">&quot;main.urls&quot;</span>)),</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;]</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: manage Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">manage Namespace Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:afd5b00260cc364aa5bde07e227c6ea78"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemanage.html#afd5b00260cc364aa5bde07e227c6ea78">main</a> ()</td></tr>
<tr class="separator:afd5b00260cc364aa5bde07e227c6ea78"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">Django's command-line utility for administrative tasks.</pre> </div><h2 class="groupheader">Function Documentation</h2>
<a id="afd5b00260cc364aa5bde07e227c6ea78"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd5b00260cc364aa5bde07e227c6ea78">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def manage.main </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Run administrative tasks.</pre>
<p class="definition">Definition at line <a class="el" href="manage_8py_source.html#l00007">7</a> of file <a class="el" href="manage_8py_source.html">manage.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="keyword">def </span><a class="code" href="namespacemain.html">main</a>():</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; <span class="stringliteral">&quot;&quot;&quot;Run administrative tasks.&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; os.environ.setdefault(<span class="stringliteral">&#39;DJANGO_SETTINGS_MODULE&#39;</span>, <span class="stringliteral">&#39;moodleNotifier.settings&#39;</span>)</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; <span class="keywordflow">try</span>:</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; <span class="keyword">from</span> django.core.management <span class="keyword">import</span> execute_from_command_line</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; <span class="keywordflow">except</span> ImportError <span class="keyword">as</span> exc:</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; <span class="keywordflow">raise</span> ImportError(</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <span class="stringliteral">&quot;Couldn&#39;t import Django. Are you sure it&#39;s installed and &quot;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="stringliteral">&quot;available on your PYTHONPATH environment variable? Did you &quot;</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="stringliteral">&quot;forget to activate a virtual environment?&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; ) <span class="keyword">from</span> exc</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; execute_from_command_line(sys.argv)</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; </div>
<div class="ttc" id="anamespacemain_html"><div class="ttname"><a href="namespacemain.html">main</a></div><div class="ttdef"><b>Definition:</b> <a href="main_2____init_____8py_source.html#l00001">__init__.py:1</a></div></div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: Namespace Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
<div class="textblock">Here is a list of all documented namespace members with links to the namespaces they belong to:</div><ul>
<li>main()
: <a class="el" href="namespacemanage.html#afd5b00260cc364aa5bde07e227c6ea78">manage</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: Namespace Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>main()
: <a class="el" href="namespacemanage.html#afd5b00260cc364aa5bde07e227c6ea78">manage</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: moodleNotifier.asgi Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>moodleNotifier</b></li><li class="navelem"><a class="el" href="namespacemoodleNotifier_1_1asgi.html">asgi</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">moodleNotifier.asgi Namespace Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a5e638aab8069e8d3d4f2f1d6d4944655"><td class="memItemLeft" align="right" valign="top"><a id="a5e638aab8069e8d3d4f2f1d6d4944655"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>application</b> = get_asgi_application()</td></tr>
<tr class="separator:a5e638aab8069e8d3d4f2f1d6d4944655"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">ASGI config for moodleNotifier project.
It exposes the ASGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/3.1/howto/deployment/asgi/
</pre> </div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: moodleNotifier.settings Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>moodleNotifier</b></li><li class="navelem"><a class="el" href="namespacemoodleNotifier_1_1settings.html">settings</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">moodleNotifier.settings Namespace Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a88337759d9bd4d2bc0dc6b36e47e5fcb"><td class="memItemLeft" align="right" valign="top"><a id="a88337759d9bd4d2bc0dc6b36e47e5fcb"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>BASE_DIR</b> = Path(__file__).resolve().parent.parent</td></tr>
<tr class="separator:a88337759d9bd4d2bc0dc6b36e47e5fcb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50d7d167d1f92be610937d93a687659f"><td class="memItemLeft" align="right" valign="top"><a id="a50d7d167d1f92be610937d93a687659f"></a>
string&#160;</td><td class="memItemRight" valign="bottom"><b>SECRET_KEY</b> = 'u630&amp;&amp;w(_x#)qcz6z!ybi_84*u*132%1obnyueh07(8tiwssae'</td></tr>
<tr class="separator:a50d7d167d1f92be610937d93a687659f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35faa858218dab7be9241d03390e13f1"><td class="memItemLeft" align="right" valign="top"><a id="a35faa858218dab7be9241d03390e13f1"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>DEBUG</b> = True</td></tr>
<tr class="separator:a35faa858218dab7be9241d03390e13f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adeb4de6631c7d67a41aa4dc1c6cca209"><td class="memItemLeft" align="right" valign="top"><a id="adeb4de6631c7d67a41aa4dc1c6cca209"></a>
list&#160;</td><td class="memItemRight" valign="bottom"><b>ALLOWED_HOSTS</b> = ['a4c3e59c5aac.ngrok.io','moodlenotifier.herokuapp.com','127.0.0.1']</td></tr>
<tr class="separator:adeb4de6631c7d67a41aa4dc1c6cca209"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad43f1aa9eb43441cdf6e0be6137daaf6"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><b>INSTALLED_APPS</b></td></tr>
<tr class="separator:ad43f1aa9eb43441cdf6e0be6137daaf6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d9bc19b5cf08991fa9f54a4ddec99bc"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><b>MIDDLEWARE</b></td></tr>
<tr class="separator:a9d9bc19b5cf08991fa9f54a4ddec99bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cb7402eb24df36fdefe259a05f7a6a6"><td class="memItemLeft" align="right" valign="top"><a id="a9cb7402eb24df36fdefe259a05f7a6a6"></a>
string&#160;</td><td class="memItemRight" valign="bottom"><b>ROOT_URLCONF</b> = 'moodleNotifier.urls'</td></tr>
<tr class="separator:a9cb7402eb24df36fdefe259a05f7a6a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3fb1e6b62962c6a24f411012ae950ed"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><b>TEMPLATES</b></td></tr>
<tr class="separator:ad3fb1e6b62962c6a24f411012ae950ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2947bb71e686217c29f87c26d035ed2"><td class="memItemLeft" align="right" valign="top"><a id="ae2947bb71e686217c29f87c26d035ed2"></a>
string&#160;</td><td class="memItemRight" valign="bottom"><b>WSGI_APPLICATION</b> = 'moodleNotifier.wsgi.application'</td></tr>
<tr class="separator:ae2947bb71e686217c29f87c26d035ed2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c82996bf2a469a8aefa040e3e7a5682"><td class="memItemLeft" align="right" valign="top">dictionary&#160;</td><td class="memItemRight" valign="bottom"><b>DATABASES</b></td></tr>
<tr class="separator:a3c82996bf2a469a8aefa040e3e7a5682"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec0cfe50f2f0e729a273b223cc93623e"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><b>AUTH_PASSWORD_VALIDATORS</b></td></tr>
<tr class="separator:aec0cfe50f2f0e729a273b223cc93623e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5770a1b1abc8a848f9b9a5dec5b36489"><td class="memItemLeft" align="right" valign="top"><a id="a5770a1b1abc8a848f9b9a5dec5b36489"></a>
string&#160;</td><td class="memItemRight" valign="bottom"><b>LANGUAGE_CODE</b> = 'en-us'</td></tr>
<tr class="separator:a5770a1b1abc8a848f9b9a5dec5b36489"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb8ebcc9b0efe3ffc0e462805d8b68cf"><td class="memItemLeft" align="right" valign="top"><a id="acb8ebcc9b0efe3ffc0e462805d8b68cf"></a>
string&#160;</td><td class="memItemRight" valign="bottom"><b>TIME_ZONE</b> = 'UTC'</td></tr>
<tr class="separator:acb8ebcc9b0efe3ffc0e462805d8b68cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40ad6c573b26b5ad041634efff2eb9f1"><td class="memItemLeft" align="right" valign="top"><a id="a40ad6c573b26b5ad041634efff2eb9f1"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>USE_I18N</b> = True</td></tr>
<tr class="separator:a40ad6c573b26b5ad041634efff2eb9f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac07074df4886f9d46d5c91371b239763"><td class="memItemLeft" align="right" valign="top"><a id="ac07074df4886f9d46d5c91371b239763"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>USE_L10N</b> = True</td></tr>
<tr class="separator:ac07074df4886f9d46d5c91371b239763"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a107269109a537f4cc873ef236c8f8424"><td class="memItemLeft" align="right" valign="top"><a id="a107269109a537f4cc873ef236c8f8424"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>USE_TZ</b> = True</td></tr>
<tr class="separator:a107269109a537f4cc873ef236c8f8424"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74ed6ef3dedd40b7f5bc155af10942e2"><td class="memItemLeft" align="right" valign="top"><a id="a74ed6ef3dedd40b7f5bc155af10942e2"></a>
string&#160;</td><td class="memItemRight" valign="bottom"><b>CRISPY_TEMPLATE_PACK</b> = &quot;bootstrap4&quot;</td></tr>
<tr class="separator:a74ed6ef3dedd40b7f5bc155af10942e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5520648d86b5c04c593a22c57aa31dbe"><td class="memItemLeft" align="right" valign="top"><a id="a5520648d86b5c04c593a22c57aa31dbe"></a>
string&#160;</td><td class="memItemRight" valign="bottom"><b>STATIC_URL</b> = '/static/'</td></tr>
<tr class="separator:a5520648d86b5c04c593a22c57aa31dbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">Django settings for moodleNotifier project.
Generated by 'django-admin startproject' using Django 3.1.3.
For more information on this file, see
https://docs.djangoproject.com/en/3.1/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/3.1/ref/settings/
</pre> </div><h2 class="groupheader">Variable Documentation</h2>
<a id="aec0cfe50f2f0e729a273b223cc93623e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec0cfe50f2f0e729a273b223cc93623e">&#9670;&nbsp;</a></span>AUTH_PASSWORD_VALIDATORS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">list moodleNotifier.settings.AUTH_PASSWORD_VALIDATORS</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;= [</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; {</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; <span class="stringliteral">&#39;NAME&#39;</span>: <span class="stringliteral">&#39;django.contrib.auth.password_validation.UserAttributeSimilarityValidator&#39;</span>,</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160; },</div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; {</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; <span class="stringliteral">&#39;NAME&#39;</span>: <span class="stringliteral">&#39;django.contrib.auth.password_validation.MinimumLengthValidator&#39;</span>,</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160; },</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; {</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; <span class="stringliteral">&#39;NAME&#39;</span>: <span class="stringliteral">&#39;django.contrib.auth.password_validation.CommonPasswordValidator&#39;</span>,</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; },</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; {</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; <span class="stringliteral">&#39;NAME&#39;</span>: <span class="stringliteral">&#39;django.contrib.auth.password_validation.NumericPasswordValidator&#39;</span>,</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; },</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;]</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="settings_8py_source.html#l00089">89</a> of file <a class="el" href="settings_8py_source.html">settings.py</a>.</p>
</div>
</div>
<a id="a3c82996bf2a469a8aefa040e3e7a5682"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c82996bf2a469a8aefa040e3e7a5682">&#9670;&nbsp;</a></span>DATABASES</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">dictionary moodleNotifier.settings.DATABASES</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;= {</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; <span class="stringliteral">&#39;default&#39;</span>: {</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; <span class="stringliteral">&#39;ENGINE&#39;</span>: <span class="stringliteral">&#39;django.db.backends.sqlite3&#39;</span>,</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160; <span class="stringliteral">&#39;NAME&#39;</span>: BASE_DIR / <span class="stringliteral">&#39;db.sqlite3&#39;</span>,</div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; }</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;}</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="settings_8py_source.html#l00078">78</a> of file <a class="el" href="settings_8py_source.html">settings.py</a>.</p>
</div>
</div>
<a id="ad43f1aa9eb43441cdf6e0be6137daaf6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad43f1aa9eb43441cdf6e0be6137daaf6">&#9670;&nbsp;</a></span>INSTALLED_APPS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">list moodleNotifier.settings.INSTALLED_APPS</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;= [</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; <span class="stringliteral">&#39;django.contrib.admin&#39;</span>,</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; <span class="stringliteral">&#39;django.contrib.auth&#39;</span>,</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160; <span class="stringliteral">&#39;django.contrib.contenttypes&#39;</span>,</div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; <span class="stringliteral">&#39;django.contrib.sessions&#39;</span>,</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; <span class="stringliteral">&#39;django.contrib.messages&#39;</span>,</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160; <span class="stringliteral">&#39;django.contrib.staticfiles&#39;</span>,</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; <span class="stringliteral">&#39;crispy_forms&#39;</span>,</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; <span class="stringliteral">&#39;main.apps.MainConfig&#39;</span>,</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;]</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="settings_8py_source.html#l00033">33</a> of file <a class="el" href="settings_8py_source.html">settings.py</a>.</p>
</div>
</div>
<a id="a9d9bc19b5cf08991fa9f54a4ddec99bc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9d9bc19b5cf08991fa9f54a4ddec99bc">&#9670;&nbsp;</a></span>MIDDLEWARE</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">list moodleNotifier.settings.MIDDLEWARE</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;= [</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; <span class="stringliteral">&#39;django.middleware.security.SecurityMiddleware&#39;</span>,</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; <span class="stringliteral">&#39;django.contrib.sessions.middleware.SessionMiddleware&#39;</span>,</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160; <span class="stringliteral">&#39;django.middleware.common.CommonMiddleware&#39;</span>,</div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; <span class="stringliteral">&#39;django.middleware.csrf.CsrfViewMiddleware&#39;</span>,</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; <span class="stringliteral">&#39;django.contrib.auth.middleware.AuthenticationMiddleware&#39;</span>,</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160; <span class="stringliteral">&#39;django.contrib.messages.middleware.MessageMiddleware&#39;</span>,</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; <span class="stringliteral">&#39;django.middleware.clickjacking.XFrameOptionsMiddleware&#39;</span>,</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;]</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="settings_8py_source.html#l00044">44</a> of file <a class="el" href="settings_8py_source.html">settings.py</a>.</p>
</div>
</div>
<a id="ad3fb1e6b62962c6a24f411012ae950ed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad3fb1e6b62962c6a24f411012ae950ed">&#9670;&nbsp;</a></span>TEMPLATES</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">list moodleNotifier.settings.TEMPLATES</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;= [</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; {</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; <span class="stringliteral">&#39;BACKEND&#39;</span>: <span class="stringliteral">&#39;django.template.backends.django.DjangoTemplates&#39;</span>,</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160; <span class="stringliteral">&#39;DIRS&#39;</span>: [],</div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; <span class="stringliteral">&#39;APP_DIRS&#39;</span>: <span class="keyword">True</span>,</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; <span class="stringliteral">&#39;OPTIONS&#39;</span>: {</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160; <span class="stringliteral">&#39;context_processors&#39;</span>: [</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; <span class="stringliteral">&#39;django.template.context_processors.debug&#39;</span>,</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; <span class="stringliteral">&#39;django.template.context_processors.request&#39;</span>,</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; <span class="stringliteral">&#39;django.contrib.auth.context_processors.auth&#39;</span>,</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; <span class="stringliteral">&#39;django.contrib.messages.context_processors.messages&#39;</span>,</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; ],</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; },</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; },</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;]</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="settings_8py_source.html#l00056">56</a> of file <a class="el" href="settings_8py_source.html">settings.py</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: moodleNotifier.urls Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>moodleNotifier</b></li><li class="navelem"><a class="el" href="namespacemoodleNotifier_1_1urls.html">urls</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">moodleNotifier.urls Namespace Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ab2478ac33d3a5116e03986be7cca4bbb"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><b>urlpatterns</b></td></tr>
<tr class="separator:ab2478ac33d3a5116e03986be7cca4bbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">moodleNotifier URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/3.1/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
</pre> </div><h2 class="groupheader">Variable Documentation</h2>
<a id="ab2478ac33d3a5116e03986be7cca4bbb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab2478ac33d3a5116e03986be7cca4bbb">&#9670;&nbsp;</a></span>urlpatterns</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">list moodleNotifier.urls.urlpatterns</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;= [</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; path(<span class="stringliteral">&#39;admin/&#39;</span>, admin.site.urls),</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; path(<span class="stringliteral">&#39;&#39;</span>, include(<span class="stringliteral">&quot;main.urls&quot;</span>)),</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;]</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="moodleNotifier_2urls_8py_source.html#l00019">19</a> of file <a class="el" href="moodleNotifier_2urls_8py_source.html">urls.py</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: moodleNotifier.wsgi Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>moodleNotifier</b></li><li class="navelem"><a class="el" href="namespacemoodleNotifier_1_1wsgi.html">wsgi</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">moodleNotifier.wsgi Namespace Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a42c1a1c6025f3595d442a674cc39d38f"><td class="memItemLeft" align="right" valign="top"><a id="a42c1a1c6025f3595d442a674cc39d38f"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>application</b> = get_wsgi_application()</td></tr>
<tr class="separator:a42c1a1c6025f3595d442a674cc39d38f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">WSGI config for moodleNotifier project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/
</pre> </div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: Namespace List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Namespace List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all documented namespaces with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>generatetoken</b></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classgeneratetoken_1_1RequestHelper.html" target="_self">RequestHelper</a></td><td class="desc">This Function is used to Generate Token to access moodle account of the student </td></tr>
<tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>main</b></td><td class="desc"></td></tr>
<tr id="row_1_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_0_" class="arrow" onclick="toggleFolder('1_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>apps</b></td><td class="desc"></td></tr>
<tr id="row_1_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1apps_1_1MainConfig.html" target="_self">MainConfig</a></td><td class="desc"></td></tr>
<tr id="row_1_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><b>automation</b></td><td class="desc"></td></tr>
<tr id="row_1_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><b>clockinterval</b></td><td class="desc"></td></tr>
<tr id="row_1_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_3_" class="arrow" onclick="toggleFolder('1_3_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>forms</b></td><td class="desc"></td></tr>
<tr id="row_1_3_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_1_3_0_" class="arrow" onclick="toggleFolder('1_3_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1forms_1_1CreateNewUser.html" target="_self">CreateNewUser</a></td><td class="desc">This Class is Used for Creating entries, adding labels and helper text in the Registration Page </td></tr>
<tr id="row_1_3_0_0_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1forms_1_1CreateNewUser_1_1Meta.html" target="_self">Meta</a></td><td class="desc"></td></tr>
<tr id="row_1_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_4_" class="arrow" onclick="toggleFolder('1_4_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>letsloginourself</b></td><td class="desc"></td></tr>
<tr id="row_1_4_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1letsloginourself_1_1RequestHelper.html" target="_self">RequestHelper</a></td><td class="desc">This is Class for Creating and formatting requests made to Moodle API functions </td></tr>
<tr id="row_1_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><b>login</b></td><td class="desc"></td></tr>
<tr id="row_1_6_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_6_" class="arrow" onclick="toggleFolder('1_6_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>models</b></td><td class="desc"></td></tr>
<tr id="row_1_6_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_1_6_0_" class="arrow" onclick="toggleFolder('1_6_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1models_1_1Student.html" target="_self">Student</a></td><td class="desc">This Class is used for the Database Table: <a class="el" href="classmain_1_1models_1_1Student.html" title="This Class is used for the Database Table: Student.">Student</a> </td></tr>
<tr id="row_1_6_0_0_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1models_1_1Student_1_1Meta.html" target="_self">Meta</a></td><td class="desc"></td></tr>
<tr id="row_1_7_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_7_" class="arrow" onclick="toggleFolder('1_7_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>subjectdatabase</b></td><td class="desc"></td></tr>
<tr id="row_1_7_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmain_1_1subjectdatabase_1_1moodle.html" target="_self">moodle</a></td><td class="desc">This is used for maintaining the Student moodle data </td></tr>
<tr id="row_1_8_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><b>timely_update</b></td><td class="desc"></td></tr>
<tr id="row_1_9_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><b>updateDB</b></td><td class="desc"></td></tr>
<tr id="row_1_10_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><b>utils</b></td><td class="desc"></td></tr>
<tr id="row_1_11_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><b>views</b></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacemanage.html" target="_self">manage</a></td><td class="desc"></td></tr>
<tr id="row_3_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_3_" class="arrow" onclick="toggleFolder('3_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>moodleNotifier</b></td><td class="desc"></td></tr>
<tr id="row_3_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacemoodleNotifier_1_1asgi.html" target="_self">asgi</a></td><td class="desc"></td></tr>
<tr id="row_3_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacemoodleNotifier_1_1settings.html" target="_self">settings</a></td><td class="desc"></td></tr>
<tr id="row_3_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacemoodleNotifier_1_1urls.html" target="_self">urls</a></td><td class="desc"></td></tr>
<tr id="row_3_3_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacemoodleNotifier_1_1wsgi.html" target="_self">wsgi</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['automation_2epy_0',['automation.py',['../automation_8py.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_1.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['clockinterval_2epy_1',['clockinterval.py',['../clockinterval_8py.html',1,'']]],
['createnewuser_2',['CreateNewUser',['../classmain_1_1forms_1_1CreateNewUser.html',1,'main::forms']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_2.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['get_5fassignments_5finfo_3',['get_assignments_info',['../login_8py.html#a8a6b441326ba06695621db609f532793',1,'main::login']]],
['get_5fcourse_5fcontents_4',['get_course_contents',['../login_8py.html#a135b91c9d2a9585ec1531425edcc03e6',1,'main::login']]],
['get_5fdiscussion_5fforum_5fdiscussions_5',['get_discussion_forum_discussions',['../login_8py.html#ac21ffafc69c98267b6ca12f439966f70',1,'main::login']]],
['get_5fdiscussion_5fforum_5fid_6',['get_discussion_forum_id',['../login_8py.html#a0d380cb98e5740f1eeb3136e5df77c06',1,'main::login']]],
['get_5fdiscussion_5fforum_5fposts_7',['get_discussion_forum_posts',['../login_8py.html#a056612636f770b45b00a265686b1f348',1,'main::login']]],
['get_5flist_5fof_5fcourses_8',['get_list_of_courses',['../login_8py.html#a62839d03a86ff0fde26e3b7f1a20f7ea',1,'main::login']]],
['get_5flogin_9',['get_login',['../classgeneratetoken_1_1RequestHelper.html#a1bf92d3a91253130ad0978c9a2537549',1,'generatetoken.RequestHelper.get_login()'],['../classmain_1_1letsloginourself_1_1RequestHelper.html#a4b6fe822aad6ca52011906faa04e8be8',1,'main.letsloginourself.RequestHelper.get_login()']]],
['get_5fquizzes_5finfo_10',['get_quizzes_info',['../login_8py.html#a4f57b9ecd192e2ea511252924ae1dc61',1,'main::login']]],
['get_5fsimple_5fmoodle_5fversion_11',['get_simple_moodle_version',['../classgeneratetoken_1_1RequestHelper.html#ab9743c931c6e0490a24b65cda17a845f',1,'generatetoken.RequestHelper.get_simple_moodle_version()'],['../classmain_1_1letsloginourself_1_1RequestHelper.html#aeb5ca2cd43fae0421e55d2aafad47dcb',1,'main.letsloginourself.RequestHelper.get_simple_moodle_version()']]],
['get_5furl_12',['get_URL',['../classgeneratetoken_1_1RequestHelper.html#ab38c62635f6e60d54e7d8dea21038b95',1,'generatetoken.RequestHelper.get_URL()'],['../classmain_1_1letsloginourself_1_1RequestHelper.html#a7ecfd4e19fac657d9ef89b3db78e1fcb',1,'main.letsloginourself.RequestHelper.get_URL()']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_3.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['home_13',['home',['../views_8py.html#ab460da9c4a9a42c60f09a48cef3f670e',1,'main::views']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_4.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['index_14',['index',['../views_8py.html#a9a4ac8eafe07b76e9032c0e8ce40fcf8',1,'main::views']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_5.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['login_2epy_15',['login.py',['../login_8py.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_6.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['asgi_16',['asgi',['../namespacemoodleNotifier_1_1asgi.html',1,'moodleNotifier']]],
['main_17',['main',['../namespacemanage.html#afd5b00260cc364aa5bde07e227c6ea78',1,'manage']]],
['mainconfig_18',['MainConfig',['../classmain_1_1apps_1_1MainConfig.html',1,'main::apps']]],
['manage_19',['manage',['../namespacemanage.html',1,'']]],
['meta_20',['Meta',['../classmain_1_1forms_1_1CreateNewUser_1_1Meta.html',1,'main.forms.CreateNewUser.Meta'],['../classmain_1_1models_1_1Student_1_1Meta.html',1,'main.models.Student.Meta']]],
['moodle_21',['moodle',['../classmain_1_1subjectdatabase_1_1moodle.html',1,'main::subjectdatabase']]],
['settings_22',['settings',['../namespacemoodleNotifier_1_1settings.html',1,'moodleNotifier']]],
['urls_23',['urls',['../namespacemoodleNotifier_1_1urls.html',1,'moodleNotifier']]],
['wsgi_24',['wsgi',['../namespacemoodleNotifier_1_1wsgi.html',1,'moodleNotifier']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_7.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['new_5fuser_5ffirstcontact_25',['new_user_firstContact',['../updateDB_8py.html#ab650e186570f4f16a1e491d589bca394',1,'main::updateDB']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_8.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['post_5frest_26',['post_REST',['../classgeneratetoken_1_1RequestHelper.html#a422ff4a5b67d558a3872c6a18b99c046',1,'generatetoken.RequestHelper.post_REST()'],['../classmain_1_1letsloginourself_1_1RequestHelper.html#a798868477ff79a1b4cfab9a1aa344478',1,'main.letsloginourself.RequestHelper.post_REST()']]],
['post_5furl_27',['post_URL',['../classgeneratetoken_1_1RequestHelper.html#a4574e844798e1515cde1b3696f6b1de7',1,'generatetoken.RequestHelper.post_URL()'],['../classmain_1_1letsloginourself_1_1RequestHelper.html#a86bc5515b701461f9bd32318a6df9429',1,'main.letsloginourself.RequestHelper.post_URL()']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_9.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['recursive_5furlencode_28',['recursive_urlencode',['../classgeneratetoken_1_1RequestHelper.html#a9e6dc179c3f9e2daf9c9716a8fbc7c72',1,'generatetoken.RequestHelper.recursive_urlencode()'],['../classmain_1_1letsloginourself_1_1RequestHelper.html#a3bbf9b9329e3ac0cbc9b7d467dd4e0b9',1,'main.letsloginourself.RequestHelper.recursive_urlencode()']]],
['register_29',['register',['../views_8py.html#ac89a04bd460dc8d517118c4ee2aadaba',1,'main::views']]],
['requesthelper_30',['RequestHelper',['../classgeneratetoken_1_1RequestHelper.html',1,'generatetoken.RequestHelper'],['../classmain_1_1letsloginourself_1_1RequestHelper.html',1,'main.letsloginourself.RequestHelper']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_a.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['send_5fmessage_31',['send_message',['../automation_8py.html#aa7c61cd8a77e59e6f75984d16204a7c8',1,'main::automation']]],
['send_5fnotification_32',['send_notification',['../timely__update_8py.html#a6ac8a6b450d9051925cb53da6c450d33',1,'main::timely_update']]],
['send_5fupdate_5fto_5fstudents_33',['send_update_to_students',['../timely__update_8py.html#a72d553ce3210836ff82c82b3e67c63d2',1,'main::timely_update']]],
['sendupdates_34',['sendupdates',['../clockinterval_8py.html#a436130e82eac4cb90df0a64d6bcfefd3',1,'main::clockinterval']]],
['sms_5freply_35',['sms_reply',['../views_8py.html#a5c0611a42a44025fc5a01aedbf68ce18',1,'main::views']]],
['student_36',['Student',['../classmain_1_1models_1_1Student.html',1,'main::models']]],
['success_37',['success',['../views_8py.html#ab3148222185e5aa58003409709005b52',1,'main::views']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_b.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['timely_5fupdate_2epy_38',['timely_update.py',['../timely__update_8py.html',1,'']]],
['token_5fwith_5fnew_5fsubject_39',['token_with_new_subject',['../updateDB_8py.html#af9171aa87217fbb1405ec2848d546311',1,'main::updateDB']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_c.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['update_5fdatabase_5fdaily_40',['update_database_daily',['../timely__update_8py.html#ad4ed6821a1475f9940fe507d488d0473',1,'main::timely_update']]],
['updatedb_2epy_41',['updateDB.py',['../updateDB_8py.html',1,'']]],
['updater_42',['updater',['../updateDB_8py.html#acea4e14bc7412d35203ec15684fb22d6',1,'main::updateDB']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_d.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['views_2epy_43',['views.py',['../views_8py.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['createnewuser_44',['CreateNewUser',['../classmain_1_1forms_1_1CreateNewUser.html',1,'main::forms']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_1.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['mainconfig_45',['MainConfig',['../classmain_1_1apps_1_1MainConfig.html',1,'main::apps']]],
['meta_46',['Meta',['../classmain_1_1forms_1_1CreateNewUser_1_1Meta.html',1,'main.forms.CreateNewUser.Meta'],['../classmain_1_1models_1_1Student_1_1Meta.html',1,'main.models.Student.Meta']]],
['moodle_47',['moodle',['../classmain_1_1subjectdatabase_1_1moodle.html',1,'main::subjectdatabase']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_2.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['requesthelper_48',['RequestHelper',['../classgeneratetoken_1_1RequestHelper.html',1,'generatetoken.RequestHelper'],['../classmain_1_1letsloginourself_1_1RequestHelper.html',1,'main.letsloginourself.RequestHelper']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_3.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['student_49',['Student',['../classmain_1_1models_1_1Student.html',1,'main::models']]]
];
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 11 11"
height="11"
width="11"
id="svg2"
version="1.1">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<path
id="path12"
d="M 5.5 0.5 A 5 5 0 0 0 0.5 5.5 A 5 5 0 0 0 5.5 10.5 A 5 5 0 0 0 10.5 5.5 A 5 5 0 0 0 5.5 0.5 z M 3.5820312 3 A 0.58291923 0.58291923 0 0 1 4 3.1757812 L 5.5 4.6757812 L 7 3.1757812 A 0.58291923 0.58291923 0 0 1 7.4003906 3 A 0.58291923 0.58291923 0 0 1 7.8242188 4 L 6.3242188 5.5 L 7.8242188 7 A 0.58291923 0.58291923 0 1 1 7 7.8242188 L 5.5 6.3242188 L 4 7.8242188 A 0.58291923 0.58291923 0 1 1 3.1757812 7 L 4.6757812 5.5 L 3.1757812 4 A 0.58291923 0.58291923 0 0 1 3.5820312 3 z "
style="stroke-width:1.09870648;fill:#bababa;fill-opacity:1" />
</svg>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="files_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['automation_2epy_55',['automation.py',['../automation_8py.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="files_1.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['clockinterval_2epy_56',['clockinterval.py',['../clockinterval_8py.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="files_2.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['login_2epy_57',['login.py',['../login_8py.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="files_3.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['timely_5fupdate_2epy_58',['timely_update.py',['../timely__update_8py.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="files_4.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['updatedb_2epy_59',['updateDB.py',['../updateDB_8py.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="files_5.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['views_2epy_60',['views.py',['../views_8py.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['get_5fassignments_5finfo_61',['get_assignments_info',['../login_8py.html#a8a6b441326ba06695621db609f532793',1,'main::login']]],
['get_5fcourse_5fcontents_62',['get_course_contents',['../login_8py.html#a135b91c9d2a9585ec1531425edcc03e6',1,'main::login']]],
['get_5fdiscussion_5fforum_5fdiscussions_63',['get_discussion_forum_discussions',['../login_8py.html#ac21ffafc69c98267b6ca12f439966f70',1,'main::login']]],
['get_5fdiscussion_5fforum_5fid_64',['get_discussion_forum_id',['../login_8py.html#a0d380cb98e5740f1eeb3136e5df77c06',1,'main::login']]],
['get_5fdiscussion_5fforum_5fposts_65',['get_discussion_forum_posts',['../login_8py.html#a056612636f770b45b00a265686b1f348',1,'main::login']]],
['get_5flist_5fof_5fcourses_66',['get_list_of_courses',['../login_8py.html#a62839d03a86ff0fde26e3b7f1a20f7ea',1,'main::login']]],
['get_5flogin_67',['get_login',['../classgeneratetoken_1_1RequestHelper.html#a1bf92d3a91253130ad0978c9a2537549',1,'generatetoken.RequestHelper.get_login()'],['../classmain_1_1letsloginourself_1_1RequestHelper.html#a4b6fe822aad6ca52011906faa04e8be8',1,'main.letsloginourself.RequestHelper.get_login()']]],
['get_5fquizzes_5finfo_68',['get_quizzes_info',['../login_8py.html#a4f57b9ecd192e2ea511252924ae1dc61',1,'main::login']]],
['get_5fsimple_5fmoodle_5fversion_69',['get_simple_moodle_version',['../classgeneratetoken_1_1RequestHelper.html#ab9743c931c6e0490a24b65cda17a845f',1,'generatetoken.RequestHelper.get_simple_moodle_version()'],['../classmain_1_1letsloginourself_1_1RequestHelper.html#aeb5ca2cd43fae0421e55d2aafad47dcb',1,'main.letsloginourself.RequestHelper.get_simple_moodle_version()']]],
['get_5furl_70',['get_URL',['../classgeneratetoken_1_1RequestHelper.html#ab38c62635f6e60d54e7d8dea21038b95',1,'generatetoken.RequestHelper.get_URL()'],['../classmain_1_1letsloginourself_1_1RequestHelper.html#a7ecfd4e19fac657d9ef89b3db78e1fcb',1,'main.letsloginourself.RequestHelper.get_URL()']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_1.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['home_71',['home',['../views_8py.html#ab460da9c4a9a42c60f09a48cef3f670e',1,'main::views']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_2.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['index_72',['index',['../views_8py.html#a9a4ac8eafe07b76e9032c0e8ce40fcf8',1,'main::views']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_3.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['main_73',['main',['../namespacemanage.html#afd5b00260cc364aa5bde07e227c6ea78',1,'manage']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_4.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['new_5fuser_5ffirstcontact_74',['new_user_firstContact',['../updateDB_8py.html#ab650e186570f4f16a1e491d589bca394',1,'main::updateDB']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_5.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['post_5frest_75',['post_REST',['../classgeneratetoken_1_1RequestHelper.html#a422ff4a5b67d558a3872c6a18b99c046',1,'generatetoken.RequestHelper.post_REST()'],['../classmain_1_1letsloginourself_1_1RequestHelper.html#a798868477ff79a1b4cfab9a1aa344478',1,'main.letsloginourself.RequestHelper.post_REST()']]],
['post_5furl_76',['post_URL',['../classgeneratetoken_1_1RequestHelper.html#a4574e844798e1515cde1b3696f6b1de7',1,'generatetoken.RequestHelper.post_URL()'],['../classmain_1_1letsloginourself_1_1RequestHelper.html#a86bc5515b701461f9bd32318a6df9429',1,'main.letsloginourself.RequestHelper.post_URL()']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_6.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['recursive_5furlencode_77',['recursive_urlencode',['../classgeneratetoken_1_1RequestHelper.html#a9e6dc179c3f9e2daf9c9716a8fbc7c72',1,'generatetoken.RequestHelper.recursive_urlencode()'],['../classmain_1_1letsloginourself_1_1RequestHelper.html#a3bbf9b9329e3ac0cbc9b7d467dd4e0b9',1,'main.letsloginourself.RequestHelper.recursive_urlencode()']]],
['register_78',['register',['../views_8py.html#ac89a04bd460dc8d517118c4ee2aadaba',1,'main::views']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_7.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['send_5fmessage_79',['send_message',['../automation_8py.html#aa7c61cd8a77e59e6f75984d16204a7c8',1,'main::automation']]],
['send_5fnotification_80',['send_notification',['../timely__update_8py.html#a6ac8a6b450d9051925cb53da6c450d33',1,'main::timely_update']]],
['send_5fupdate_5fto_5fstudents_81',['send_update_to_students',['../timely__update_8py.html#a72d553ce3210836ff82c82b3e67c63d2',1,'main::timely_update']]],
['sendupdates_82',['sendupdates',['../clockinterval_8py.html#a436130e82eac4cb90df0a64d6bcfefd3',1,'main::clockinterval']]],
['sms_5freply_83',['sms_reply',['../views_8py.html#a5c0611a42a44025fc5a01aedbf68ce18',1,'main::views']]],
['success_84',['success',['../views_8py.html#ab3148222185e5aa58003409709005b52',1,'main::views']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_8.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['token_5fwith_5fnew_5fsubject_85',['token_with_new_subject',['../updateDB_8py.html#af9171aa87217fbb1405ec2848d546311',1,'main::updateDB']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_9.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['update_5fdatabase_5fdaily_86',['update_database_daily',['../timely__update_8py.html#ad4ed6821a1475f9940fe507d488d0473',1,'main::timely_update']]],
['updater_87',['updater',['../updateDB_8py.html#acea4e14bc7412d35203ec15684fb22d6',1,'main::updateDB']]]
];
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="20"
height="19"
viewBox="0 0 20 19"
sodipodi:docname="mag_sel.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="2096"
id="namedview4"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="32"
inkscape:cx="5.9792688"
inkscape:cy="1.1436277"
inkscape:window-x="1920"
inkscape:window-y="27"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<circle
style="fill:#000000;fill-opacity:0;stroke:#656565;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
id="path4611"
cx="5.5"
cy="8.5"
r="3.5" />
<path
style="fill:#656565;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 11,7 13.5,10 16,7 Z"
id="path4609"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="fill:none;stroke:#656565;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 8.1085854,11.109059 2.7823556,2.782356"
id="path4630"
inkscape:connector-curvature="0" />
</svg>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="namespaces_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
--></script>
</div>
</body>
</html>
var searchData=
[
['asgi_50',['asgi',['../namespacemoodleNotifier_1_1asgi.html',1,'moodleNotifier']]],
['manage_51',['manage',['../namespacemanage.html',1,'']]],
['settings_52',['settings',['../namespacemoodleNotifier_1_1settings.html',1,'moodleNotifier']]],
['urls_53',['urls',['../namespacemoodleNotifier_1_1urls.html',1,'moodleNotifier']]],
['wsgi_54',['wsgi',['../namespacemoodleNotifier_1_1wsgi.html',1,'moodleNotifier']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</body>
</html>
/*---------------- Search Box */
#MSearchBox {
white-space : nowrap;
background: white;
border-radius: 0.65em;
box-shadow: inset 0.5px 0.5px 3px 0px #555;
z-index: 102;
}
#MSearchBox .left {
display: inline-block;
vertical-align: middle;
height: 1.4em;
}
#MSearchSelect {
display: inline-block;
vertical-align: middle;
height: 1.4em;
padding: 0 0 0 0.3em;
margin: 0;
}
#MSearchField {
display: inline-block;
vertical-align: middle;
width: 7.5em;
height: 1.1em;
margin: 0 0.15em;
padding: 0;
line-height: 1em;
border:none;
color: #909090;
outline: none;
font-family: Arial, Verdana, sans-serif;
-webkit-border-radius: 0px;
border-radius: 0px;
background: none;
}
#MSearchBox .right {
display: inline-block;
vertical-align: middle;
width: 1.4em;
height: 1.4em;
}
#MSearchClose {
display: none;
font-size: inherit;
background : none;
border: none;
margin: 0;
padding: 0;
outline: none;
}
#MSearchCloseImg {
height: 1.4em;
padding: 0.3em;
margin: 0;
}
.MSearchBoxActive #MSearchField {
color: #000000;
}
#main-menu > li:last-child {
/* This <li> object is the parent of the search bar */
display: flex;
justify-content: center;
align-items: center;
height: 36px;
margin-right: 1em;
}
/*---------------- Search filter selection */
#MSearchSelectWindow {
display: none;
position: absolute;
left: 0; top: 0;
border: 1px solid #90A5CE;
background-color: #F9FAFC;
z-index: 10001;
padding-top: 4px;
padding-bottom: 4px;
-moz-border-radius: 4px;
-webkit-border-top-left-radius: 4px;
-webkit-border-top-right-radius: 4px;
-webkit-border-bottom-left-radius: 4px;
-webkit-border-bottom-right-radius: 4px;
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
}
.SelectItem {
font: 8pt Arial, Verdana, sans-serif;
padding-left: 2px;
padding-right: 12px;
border: 0px;
}
span.SelectionMark {
margin-right: 4px;
font-family: monospace;
outline-style: none;
text-decoration: none;
}
a.SelectItem {
display: block;
outline-style: none;
color: #000000;
text-decoration: none;
padding-left: 6px;
padding-right: 12px;
}
a.SelectItem:focus,
a.SelectItem:active {
color: #000000;
outline-style: none;
text-decoration: none;
}
a.SelectItem:hover {
color: #FFFFFF;
background-color: #3D578C;
outline-style: none;
text-decoration: none;
cursor: pointer;
display: block;
}
/*---------------- Search results window */
iframe#MSearchResults {
width: 60ex;
height: 15em;
}
#MSearchResultsWindow {
display: none;
position: absolute;
left: 0; top: 0;
border: 1px solid #000;
background-color: #EEF1F7;
z-index:10000;
}
/* ----------------------------------- */
#SRIndex {
clear:both;
padding-bottom: 15px;
}
.SREntry {
font-size: 10pt;
padding-left: 1ex;
}
.SRPage .SREntry {
font-size: 8pt;
padding: 1px 5px;
}
body.SRPage {
margin: 5px 2px;
}
.SRChildren {
padding-left: 3ex; padding-bottom: .5em
}
.SRPage .SRChildren {
display: none;
}
.SRSymbol {
font-weight: bold;
color: #425E97;
font-family: Arial, Verdana, sans-serif;
text-decoration: none;
outline: none;
}
a.SRScope {
display: block;
color: #425E97;
font-family: Arial, Verdana, sans-serif;
text-decoration: none;
outline: none;
}
a.SRSymbol:focus, a.SRSymbol:active,
a.SRScope:focus, a.SRScope:active {
text-decoration: underline;
}
span.SRScope {
padding-left: 4px;
}
.SRPage .SRStatus {
padding: 2px 5px;
font-size: 8pt;
font-style: italic;
}
.SRResult {
display: none;
}
DIV.searchresults {
margin-left: 10px;
margin-right: 10px;
}
/*---------------- External search page results */
.searchresult {
background-color: #F0F3F8;
}
.pages b {
color: white;
padding: 5px 5px 3px 5px;
background-image: url("../tab_a.png");
background-repeat: repeat-x;
text-shadow: 0 1px 1px #000000;
}
.pages {
line-height: 17px;
margin-left: 4px;
text-decoration: none;
}
.hl {
font-weight: bold;
}
#searchresults {
margin-bottom: 20px;
}
.searchpages {
margin-top: 10px;
}
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
function convertToId(search)
{
var result = '';
for (i=0;i<search.length;i++)
{
var c = search.charAt(i);
var cn = c.charCodeAt(0);
if (c.match(/[a-z0-9\u0080-\uFFFF]/))
{
result+=c;
}
else if (cn<16)
{
result+="_0"+cn.toString(16);
}
else
{
result+="_"+cn.toString(16);
}
}
return result;
}
function getXPos(item)
{
var x = 0;
if (item.offsetWidth)
{
while (item && item!=document.body)
{
x += item.offsetLeft;
item = item.offsetParent;
}
}
return x;
}
function getYPos(item)
{
var y = 0;
if (item.offsetWidth)
{
while (item && item!=document.body)
{
y += item.offsetTop;
item = item.offsetParent;
}
}
return y;
}
/* A class handling everything associated with the search panel.
Parameters:
name - The name of the global variable that will be
storing this instance. Is needed to be able to set timeouts.
resultPath - path to use for external files
*/
function SearchBox(name, resultsPath, inFrame, label, extension)
{
if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); }
if (!extension || extension == "") { extension = ".html"; }
// ---------- Instance variables
this.name = name;
this.resultsPath = resultsPath;
this.keyTimeout = 0;
this.keyTimeoutLength = 500;
this.closeSelectionTimeout = 300;
this.lastSearchValue = "";
this.lastResultsPage = "";
this.hideTimeout = 0;
this.searchIndex = 0;
this.searchActive = false;
this.insideFrame = inFrame;
this.searchLabel = label;
this.extension = extension;
// ----------- DOM Elements
this.DOMSearchField = function()
{ return document.getElementById("MSearchField"); }
this.DOMSearchSelect = function()
{ return document.getElementById("MSearchSelect"); }
this.DOMSearchSelectWindow = function()
{ return document.getElementById("MSearchSelectWindow"); }
this.DOMPopupSearchResults = function()
{ return document.getElementById("MSearchResults"); }
this.DOMPopupSearchResultsWindow = function()
{ return document.getElementById("MSearchResultsWindow"); }
this.DOMSearchClose = function()
{ return document.getElementById("MSearchClose"); }
this.DOMSearchBox = function()
{ return document.getElementById("MSearchBox"); }
// ------------ Event Handlers
// Called when focus is added or removed from the search field.
this.OnSearchFieldFocus = function(isActive)
{
this.Activate(isActive);
}
this.OnSearchSelectShow = function()
{
var searchSelectWindow = this.DOMSearchSelectWindow();
var searchField = this.DOMSearchSelect();
if (this.insideFrame)
{
var left = getXPos(searchField);
var top = getYPos(searchField);
left += searchField.offsetWidth + 6;
top += searchField.offsetHeight;
// show search selection popup
searchSelectWindow.style.display='block';
left -= searchSelectWindow.offsetWidth;
searchSelectWindow.style.left = left + 'px';
searchSelectWindow.style.top = top + 'px';
}
else
{
var left = getXPos(searchField);
var top = getYPos(searchField);
top += searchField.offsetHeight;
// show search selection popup
searchSelectWindow.style.display='block';
searchSelectWindow.style.left = left + 'px';
searchSelectWindow.style.top = top + 'px';
}
// stop selection hide timer
if (this.hideTimeout)
{
clearTimeout(this.hideTimeout);
this.hideTimeout=0;
}
return false; // to avoid "image drag" default event
}
this.OnSearchSelectHide = function()
{
this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
this.closeSelectionTimeout);
}
// Called when the content of the search field is changed.
this.OnSearchFieldChange = function(evt)
{
if (this.keyTimeout) // kill running timer
{
clearTimeout(this.keyTimeout);
this.keyTimeout = 0;
}
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==40 || e.keyCode==13)
{
if (e.shiftKey==1)
{
this.OnSearchSelectShow();
var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
if (child.className=='SelectItem')
{
child.focus();
return;
}
}
return;
}
else
{
window.frames.MSearchResults.postMessage("take_focus", "*");
}
}
else if (e.keyCode==27) // Escape out of the search field
{
this.DOMSearchField().blur();
this.DOMPopupSearchResultsWindow().style.display = 'none';
this.DOMSearchClose().style.display = 'none';
this.lastSearchValue = '';
this.Activate(false);
return;
}
// strip whitespaces
var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
if (searchValue != this.lastSearchValue) // search value has changed
{
if (searchValue != "") // non-empty search
{
// set timer for search update
this.keyTimeout = setTimeout(this.name + '.Search()',
this.keyTimeoutLength);
}
else // empty search field
{
this.DOMPopupSearchResultsWindow().style.display = 'none';
this.DOMSearchClose().style.display = 'none';
this.lastSearchValue = '';
}
}
}
this.SelectItemCount = function(id)
{
var count=0;
var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
if (child.className=='SelectItem')
{
count++;
}
}
return count;
}
this.SelectItemSet = function(id)
{
var i,j=0;
var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
if (child.className=='SelectItem')
{
var node = child.firstChild;
if (j==id)
{
node.innerHTML='&#8226;';
}
else
{
node.innerHTML='&#160;';
}
j++;
}
}
}
// Called when an search filter selection is made.
// set item with index id as the active item
this.OnSelectItem = function(id)
{
this.searchIndex = id;
this.SelectItemSet(id);
var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
if (searchValue!="" && this.searchActive) // something was found -> do a search
{
this.Search();
}
}
this.OnSearchSelectKey = function(evt)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
{
this.searchIndex++;
this.OnSelectItem(this.searchIndex);
}
else if (e.keyCode==38 && this.searchIndex>0) // Up
{
this.searchIndex--;
this.OnSelectItem(this.searchIndex);
}
else if (e.keyCode==13 || e.keyCode==27)
{
this.OnSelectItem(this.searchIndex);
this.CloseSelectionWindow();
this.DOMSearchField().focus();
}
return false;
}
// --------- Actions
// Closes the results window.
this.CloseResultsWindow = function()
{
this.DOMPopupSearchResultsWindow().style.display = 'none';
this.DOMSearchClose().style.display = 'none';
this.Activate(false);
}
this.CloseSelectionWindow = function()
{
this.DOMSearchSelectWindow().style.display = 'none';
}
// Performs a search.
this.Search = function()
{
this.keyTimeout = 0;
// strip leading whitespace
var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
var code = searchValue.toLowerCase().charCodeAt(0);
var idxChar = searchValue.substr(0, 1).toLowerCase();
if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
{
idxChar = searchValue.substr(0, 2);
}
var resultsPage;
var resultsPageWithSearch;
var hasResultsPage;
var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
if (idx!=-1)
{
var hexCode=idx.toString(16);
resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension;
resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
hasResultsPage = true;
}
else // nothing available for this search term
{
resultsPage = this.resultsPath + '/nomatches.html';
resultsPageWithSearch = resultsPage;
hasResultsPage = false;
}
window.frames.MSearchResults.location = resultsPageWithSearch;
var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
if (domPopupSearchResultsWindow.style.display!='block')
{
var domSearchBox = this.DOMSearchBox();
this.DOMSearchClose().style.display = 'inline-block';
if (this.insideFrame)
{
var domPopupSearchResults = this.DOMPopupSearchResults();
domPopupSearchResultsWindow.style.position = 'relative';
domPopupSearchResultsWindow.style.display = 'block';
var width = document.body.clientWidth - 8; // the -8 is for IE :-(
domPopupSearchResultsWindow.style.width = width + 'px';
domPopupSearchResults.style.width = width + 'px';
}
else
{
var domPopupSearchResults = this.DOMPopupSearchResults();
var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1;
domPopupSearchResultsWindow.style.display = 'block';
left -= domPopupSearchResults.offsetWidth;
domPopupSearchResultsWindow.style.top = top + 'px';
domPopupSearchResultsWindow.style.left = left + 'px';
}
}
this.lastSearchValue = searchValue;
this.lastResultsPage = resultsPage;
}
// -------- Activation Functions
// Activates or deactivates the search panel, resetting things to
// their default values if necessary.
this.Activate = function(isActive)
{
if (isActive || // open it
this.DOMPopupSearchResultsWindow().style.display == 'block'
)
{
this.DOMSearchBox().className = 'MSearchBoxActive';
var searchField = this.DOMSearchField();
if (searchField.value == this.searchLabel) // clear "Search" term upon entry
{
searchField.value = '';
this.searchActive = true;
}
}
else if (!isActive) // directly remove the panel
{
this.DOMSearchBox().className = 'MSearchBoxInactive';
this.DOMSearchField().value = this.searchLabel;
this.searchActive = false;
this.lastSearchValue = ''
this.lastResultsPage = '';
}
}
}
// -----------------------------------------------------------------------
// The class that handles everything on the search results page.
function SearchResults(name)
{
// The number of matches from the last run of <Search()>.
this.lastMatchCount = 0;
this.lastKey = 0;
this.repeatOn = false;
// Toggles the visibility of the passed element ID.
this.FindChildElement = function(id)
{
var parentElement = document.getElementById(id);
var element = parentElement.firstChild;
while (element && element!=parentElement)
{
if (element.nodeName == 'DIV' && element.className == 'SRChildren')
{
return element;
}
if (element.nodeName == 'DIV' && element.hasChildNodes())
{
element = element.firstChild;
}
else if (element.nextSibling)
{
element = element.nextSibling;
}
else
{
do
{
element = element.parentNode;
}
while (element && element!=parentElement && !element.nextSibling);
if (element && element!=parentElement)
{
element = element.nextSibling;
}
}
}
}
this.Toggle = function(id)
{
var element = this.FindChildElement(id);
if (element)
{
if (element.style.display == 'block')
{
element.style.display = 'none';
}
else
{
element.style.display = 'block';
}
}
}
// Searches for the passed string. If there is no parameter,
// it takes it from the URL query.
//
// Always returns true, since other documents may try to call it
// and that may or may not be possible.
this.Search = function(search)
{
if (!search) // get search word from URL
{
search = window.location.search;
search = search.substring(1); // Remove the leading '?'
search = unescape(search);
}
search = search.replace(/^ +/, ""); // strip leading spaces
search = search.replace(/ +$/, ""); // strip trailing spaces
search = search.toLowerCase();
search = convertToId(search);
var resultRows = document.getElementsByTagName("div");
var matches = 0;
var i = 0;
while (i < resultRows.length)
{
var row = resultRows.item(i);
if (row.className == "SRResult")
{
var rowMatchName = row.id.toLowerCase();
rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
if (search.length<=rowMatchName.length &&
rowMatchName.substr(0, search.length)==search)
{
row.style.display = 'block';
matches++;
}
else
{
row.style.display = 'none';
}
}
i++;
}
document.getElementById("Searching").style.display='none';
if (matches == 0) // no results
{
document.getElementById("NoMatches").style.display='block';
}
else // at least one result
{
document.getElementById("NoMatches").style.display='none';
}
this.lastMatchCount = matches;
return true;
}
// return the first item with index index or higher that is visible
this.NavNext = function(index)
{
var focusItem;
while (1)
{
var focusName = 'Item'+index;
focusItem = document.getElementById(focusName);
if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
{
break;
}
else if (!focusItem) // last element
{
break;
}
focusItem=null;
index++;
}
return focusItem;
}
this.NavPrev = function(index)
{
var focusItem;
while (1)
{
var focusName = 'Item'+index;
focusItem = document.getElementById(focusName);
if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
{
break;
}
else if (!focusItem) // last element
{
break;
}
focusItem=null;
index--;
}
return focusItem;
}
this.ProcessKeys = function(e)
{
if (e.type == "keydown")
{
this.repeatOn = false;
this.lastKey = e.keyCode;
}
else if (e.type == "keypress")
{
if (!this.repeatOn)
{
if (this.lastKey) this.repeatOn = true;
return false; // ignore first keypress after keydown
}
}
else if (e.type == "keyup")
{
this.lastKey = 0;
this.repeatOn = false;
}
return this.lastKey!=0;
}
this.Nav = function(evt,itemIndex)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==13) return true;
if (!this.ProcessKeys(e)) return false;
if (this.lastKey==38) // Up
{
var newIndex = itemIndex-1;
var focusItem = this.NavPrev(newIndex);
if (focusItem)
{
var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
if (child && child.style.display == 'block') // children visible
{
var n=0;
var tmpElem;
while (1) // search for last child
{
tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
if (tmpElem)
{
focusItem = tmpElem;
}
else // found it!
{
break;
}
n++;
}
}
}
if (focusItem)
{
focusItem.focus();
}
else // return focus to search field
{
parent.document.getElementById("MSearchField").focus();
}
}
else if (this.lastKey==40) // Down
{
var newIndex = itemIndex+1;
var focusItem;
var item = document.getElementById('Item'+itemIndex);
var elem = this.FindChildElement(item.parentNode.parentNode.id);
if (elem && elem.style.display == 'block') // children visible
{
focusItem = document.getElementById('Item'+itemIndex+'_c0');
}
if (!focusItem) focusItem = this.NavNext(newIndex);
if (focusItem) focusItem.focus();
}
else if (this.lastKey==39) // Right
{
var item = document.getElementById('Item'+itemIndex);
var elem = this.FindChildElement(item.parentNode.parentNode.id);
if (elem) elem.style.display = 'block';
}
else if (this.lastKey==37) // Left
{
var item = document.getElementById('Item'+itemIndex);
var elem = this.FindChildElement(item.parentNode.parentNode.id);
if (elem) elem.style.display = 'none';
}
else if (this.lastKey==27) // Escape
{
parent.searchBox.CloseResultsWindow();
parent.document.getElementById("MSearchField").focus();
}
else if (this.lastKey==13) // Enter
{
return true;
}
return false;
}
this.NavChild = function(evt,itemIndex,childIndex)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==13) return true;
if (!this.ProcessKeys(e)) return false;
if (this.lastKey==38) // Up
{
if (childIndex>0)
{
var newIndex = childIndex-1;
document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
}
else // already at first child, jump to parent
{
document.getElementById('Item'+itemIndex).focus();
}
}
else if (this.lastKey==40) // Down
{
var newIndex = childIndex+1;
var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
if (!elem) // last child, jump to parent next parent
{
elem = this.NavNext(itemIndex+1);
}
if (elem)
{
elem.focus();
}
}
else if (this.lastKey==27) // Escape
{
parent.searchBox.CloseResultsWindow();
parent.document.getElementById("MSearchField").focus();
}
else if (this.lastKey==13) // Enter
{
return true;
}
return false;
}
}
function setKeyActions(elem,action)
{
elem.setAttribute('onkeydown',action);
elem.setAttribute('onkeypress',action);
elem.setAttribute('onkeyup',action);
}
function setClassAttr(elem,attr)
{
elem.setAttribute('class',attr);
elem.setAttribute('className',attr);
}
function createResults()
{
var results = document.getElementById("SRResults");
for (var e=0; e<searchData.length; e++)
{
var id = searchData[e][0];
var srResult = document.createElement('div');
srResult.setAttribute('id','SR_'+id);
setClassAttr(srResult,'SRResult');
var srEntry = document.createElement('div');
setClassAttr(srEntry,'SREntry');
var srLink = document.createElement('a');
srLink.setAttribute('id','Item'+e);
setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
setClassAttr(srLink,'SRSymbol');
srLink.innerHTML = searchData[e][1][0];
srEntry.appendChild(srLink);
if (searchData[e][1].length==2) // single result
{
srLink.setAttribute('href',searchData[e][1][1][0]);
if (searchData[e][1][1][1])
{
srLink.setAttribute('target','_parent');
}
var srScope = document.createElement('span');
setClassAttr(srScope,'SRScope');
srScope.innerHTML = searchData[e][1][1][2];
srEntry.appendChild(srScope);
}
else // multiple results
{
srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
var srChildren = document.createElement('div');
setClassAttr(srChildren,'SRChildren');
for (var c=0; c<searchData[e][1].length-1; c++)
{
var srChild = document.createElement('a');
srChild.setAttribute('id','Item'+e+'_c'+c);
setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
setClassAttr(srChild,'SRScope');
srChild.setAttribute('href',searchData[e][1][c+1][0]);
if (searchData[e][1][c+1][1])
{
srChild.setAttribute('target','_parent');
}
srChild.innerHTML = searchData[e][1][c+1][2];
srChildren.appendChild(srChild);
}
srEntry.appendChild(srChildren);
}
srResult.appendChild(srEntry);
results.appendChild(srResult);
}
}
function init_search()
{
var results = document.getElementById("MSearchSelectWindow");
for (var key in indexSectionLabels)
{
var link = document.createElement('a');
link.setAttribute('class','SelectItem');
link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
link.href='javascript:void(0)';
link.innerHTML='<span class="SelectionMark">&#160;</span>'+indexSectionLabels[key];
results.appendChild(link);
}
searchBox.OnSelectItem(0);
}
/* @license-end */
var indexSectionsWithContent =
{
0: "acghilmnprstuv",
1: "cmrs",
2: "m",
3: "acltuv",
4: "ghimnprstu"
};
var indexSectionNames =
{
0: "all",
1: "classes",
2: "namespaces",
3: "files",
4: "functions"
};
var indexSectionLabels =
{
0: "All",
1: "Classes",
2: "Namespaces",
3: "Files",
4: "Functions"
};
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: moodleNotifier/settings.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_2d978bdce16c291c9c81f068e91d317d.html">moodleNotifier</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">settings.py</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"><a class="line" href="namespacemoodleNotifier_1_1settings.html"> 1</a></span>&#160;<span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="stringliteral">Django settings for moodleNotifier project.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="stringliteral">Generated by &#39;django-admin startproject&#39; using Django 3.1.3.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="stringliteral">For more information on this file, see</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="stringliteral">https://docs.djangoproject.com/en/3.1/topics/settings/</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="stringliteral">For the full list of settings and their values, see</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="stringliteral">https://docs.djangoproject.com/en/3.1/ref/settings/</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">#import django_heroku</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="keyword">from</span> pathlib <span class="keyword">import</span> Path</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; </div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"># Build paths inside the project like this: BASE_DIR / &#39;subdir&#39;.</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;BASE_DIR = Path(__file__).resolve().parent.parent</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; </div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"># Quick-start development settings - unsuitable for production</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"># See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"># SECURITY WARNING: keep the secret key used in production secret!</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;SECRET_KEY = <span class="stringliteral">&#39;u630&amp;&amp;w(_x#)qcz6z!ybi_84*u*132%1obnyueh07(8tiwssae&#39;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"># SECURITY WARNING: don&#39;t run with debug turned on in production!</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;DEBUG = <span class="keyword">True</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;ALLOWED_HOSTS = [<span class="stringliteral">&#39;a4c3e59c5aac.ngrok.io&#39;</span>,<span class="stringliteral">&#39;moodlenotifier.herokuapp.com&#39;</span>,<span class="stringliteral">&#39;127.0.0.1&#39;</span>]</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"># Application definition</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; </div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;INSTALLED_APPS = [</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="stringliteral">&#39;django.contrib.admin&#39;</span>,</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="stringliteral">&#39;django.contrib.auth&#39;</span>,</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="stringliteral">&#39;django.contrib.contenttypes&#39;</span>,</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="stringliteral">&#39;django.contrib.sessions&#39;</span>,</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="stringliteral">&#39;django.contrib.messages&#39;</span>,</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="stringliteral">&#39;django.contrib.staticfiles&#39;</span>,</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="stringliteral">&#39;crispy_forms&#39;</span>,</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="stringliteral">&#39;main.apps.MainConfig&#39;</span>,</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;]</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;MIDDLEWARE = [</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="stringliteral">&#39;django.middleware.security.SecurityMiddleware&#39;</span>,</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="stringliteral">&#39;django.contrib.sessions.middleware.SessionMiddleware&#39;</span>,</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="stringliteral">&#39;django.middleware.common.CommonMiddleware&#39;</span>,</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="stringliteral">&#39;django.middleware.csrf.CsrfViewMiddleware&#39;</span>,</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="stringliteral">&#39;django.contrib.auth.middleware.AuthenticationMiddleware&#39;</span>,</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="stringliteral">&#39;django.contrib.messages.middleware.MessageMiddleware&#39;</span>,</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="stringliteral">&#39;django.middleware.clickjacking.XFrameOptionsMiddleware&#39;</span>,</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;]</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; </div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;ROOT_URLCONF = <span class="stringliteral">&#39;moodleNotifier.urls&#39;</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;TEMPLATES = [</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="stringliteral">&#39;BACKEND&#39;</span>: <span class="stringliteral">&#39;django.template.backends.django.DjangoTemplates&#39;</span>,</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="stringliteral">&#39;DIRS&#39;</span>: [],</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="stringliteral">&#39;APP_DIRS&#39;</span>: <span class="keyword">True</span>,</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="stringliteral">&#39;OPTIONS&#39;</span>: {</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="stringliteral">&#39;context_processors&#39;</span>: [</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="stringliteral">&#39;django.template.context_processors.debug&#39;</span>,</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="stringliteral">&#39;django.template.context_processors.request&#39;</span>,</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="stringliteral">&#39;django.contrib.auth.context_processors.auth&#39;</span>,</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="stringliteral">&#39;django.contrib.messages.context_processors.messages&#39;</span>,</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; ],</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; },</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; },</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;]</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;WSGI_APPLICATION = <span class="stringliteral">&#39;moodleNotifier.wsgi.application&#39;</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; </div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"># Database</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"># https://docs.djangoproject.com/en/3.1/ref/settings/#databases</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; </div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;DATABASES = {</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="stringliteral">&#39;default&#39;</span>: {</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="stringliteral">&#39;ENGINE&#39;</span>: <span class="stringliteral">&#39;django.db.backends.sqlite3&#39;</span>,</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="stringliteral">&#39;NAME&#39;</span>: BASE_DIR / <span class="stringliteral">&#39;db.sqlite3&#39;</span>,</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;}</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; </div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; </div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"># Password validation</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"># https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;AUTH_PASSWORD_VALIDATORS = [</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="stringliteral">&#39;NAME&#39;</span>: <span class="stringliteral">&#39;django.contrib.auth.password_validation.UserAttributeSimilarityValidator&#39;</span>,</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; },</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="stringliteral">&#39;NAME&#39;</span>: <span class="stringliteral">&#39;django.contrib.auth.password_validation.MinimumLengthValidator&#39;</span>,</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; },</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="stringliteral">&#39;NAME&#39;</span>: <span class="stringliteral">&#39;django.contrib.auth.password_validation.CommonPasswordValidator&#39;</span>,</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; },</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="stringliteral">&#39;NAME&#39;</span>: <span class="stringliteral">&#39;django.contrib.auth.password_validation.NumericPasswordValidator&#39;</span>,</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; },</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;]</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; </div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"># Internationalization</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"># https://docs.djangoproject.com/en/3.1/topics/i18n/</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;LANGUAGE_CODE = <span class="stringliteral">&#39;en-us&#39;</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; </div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;TIME_ZONE = <span class="stringliteral">&#39;UTC&#39;</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; </div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;USE_I18N = <span class="keyword">True</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; </div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;USE_L10N = <span class="keyword">True</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; </div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;USE_TZ = <span class="keyword">True</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; </div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;CRISPY_TEMPLATE_PACK=<span class="stringliteral">&quot;bootstrap4&quot;</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"># Static files (CSS, JavaScript, Images)</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"># https://docs.djangoproject.com/en/3.1/howto/static-files/</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; </div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;STATIC_URL = <span class="stringliteral">&#39;/static/&#39;</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment">#django_heroku.settings(locals())</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/subjectdatabase.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">subjectdatabase.py</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="keyword">import</span> sqlite3</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="keyword">from</span> .login <span class="keyword">import</span> *</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; </div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="keyword">from</span> datetime <span class="keyword">import</span> datetime</div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="keyword">from</span> pytz <span class="keyword">import</span> timezone</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="keyword">import</span> pytz</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160; </div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"># TABLE_NAME = &quot;studentdetails&quot;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"># STUDENT_ID = &quot;student_roll_no&quot;</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"># STUDENT_TOCKEN=&quot;student_tocken&quot;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"># STUDENT_NAME = &quot;student_name&quot;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"># SUBJECT = &quot;subjects&quot;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"># STUDENT_PHONE = &quot;student_phone&quot;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; </div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; </div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;SUBJECT_ID=<span class="stringliteral">&quot;subject_id&quot;</span><span class="comment">#1</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;SUBJECT_NAME=<span class="stringliteral">&quot;subject_name&quot;</span><span class="comment">#2</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;SUBJECT_MID=<span class="stringliteral">&quot;subject_mid&quot;</span><span class="comment">#3</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;ASSIGNMENT_NAME=<span class="stringliteral">&quot;assignment_name&quot;</span><span class="comment">#4</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;AUPLOAD_ON=<span class="stringliteral">&quot;aupload_on&quot;</span><span class="comment">#5</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;ADUE_DATE=<span class="stringliteral">&quot;adue_date&quot;</span><span class="comment">#6</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;AINTRO=<span class="stringliteral">&quot;aintro&quot;</span><span class="comment">#7</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;AATTACHMENTS_FILE_NAME=<span class="stringliteral">&quot;aattachments_file_name&quot;</span><span class="comment">#8</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;QUIZ_NAME=<span class="stringliteral">&quot;quiz_name&quot;</span><span class="comment">#9</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;QUPLOAD_ON=<span class="stringliteral">&quot;qupload_on&quot;</span><span class="comment">#10</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;QDUE_DATE=<span class="stringliteral">&quot;qdue_date&quot;</span><span class="comment">#11</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;GRADE=<span class="stringliteral">&quot;grade&quot;</span><span class="comment">#12</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;ANNOUNCENMENTS=<span class="stringliteral">&quot;announcements_id&quot;</span><span class="comment">#13</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;ANNAMES1=<span class="stringliteral">&quot;annames1&quot;</span><span class="comment">#14</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;ANUPLOAD_ON1=<span class="stringliteral">&quot;aNupload_on1&quot;</span><span class="comment">#15</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;ANINTRO1=<span class="stringliteral">&quot;anintro1&quot;</span><span class="comment">#16</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;ANNAMES2=<span class="stringliteral">&quot;annames2&quot;</span><span class="comment">#17</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;ANUPLOAD_ON2=<span class="stringliteral">&quot;aNupload_on2&quot;</span><span class="comment">#18</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;ANINTRO2=<span class="stringliteral">&quot;anintro2&quot;</span><span class="comment">#19</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;ANNAMES3=<span class="stringliteral">&quot;annames3&quot;</span><span class="comment">#20</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;ANUPLOAD_ON3=<span class="stringliteral">&quot;aNupload_on3&quot;</span><span class="comment">#21</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;ANINTRO3=<span class="stringliteral">&quot;anintro3&quot;</span><span class="comment">#22</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;ANNAMES4=<span class="stringliteral">&quot;annames4&quot;</span><span class="comment">#23</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;ANUPLOAD_ON4=<span class="stringliteral">&quot;aNupload_on4&quot;</span><span class="comment">#24</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;ANINTRO4=<span class="stringliteral">&quot;anintro4&quot;</span><span class="comment">#25</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;ANNAMES5=<span class="stringliteral">&quot;annames5&quot;</span><span class="comment">#26</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;ANUPLOAD_ON5=<span class="stringliteral">&quot;aNupload_on5&quot;</span><span class="comment">#27</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;ANINTRO5=<span class="stringliteral">&quot;anintro5&quot;</span><span class="comment">#28</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; </div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;LATEST_COURSE_CONTENTS=<span class="stringliteral">&quot;latest_course_contents&quot;</span><span class="comment">#29</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; </div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;connection=sqlite3.Connection(<span class="stringliteral">&quot;management.db&quot;</span>)</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;cursor=connection.cursor()</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classmain_1_1subjectdatabase_1_1moodle.html"> 60</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmain_1_1subjectdatabase_1_1moodle.html">moodle</a>:</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">def </span>___init__(self):</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">pass</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">def </span>create_table(self):</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; connection=sqlite3.Connection(<span class="stringliteral">&quot;management.db&quot;</span>)</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; cursor=connection.cursor()</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; connection.execute(<span class="stringliteral">&quot; CREATE TABLE IF NOT EXISTS moodle_data&quot;</span>+ <span class="stringliteral">&quot; ( &quot;</span> + SUBJECT_ID +</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="stringliteral">&quot; INTEGER PRIMARY KEY, &quot;</span> +</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; SUBJECT_NAME + <span class="stringliteral">&quot; TEXT, &quot;</span> +</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; SUBJECT_MID + <span class="stringliteral">&quot; INTEGER, &quot;</span> + ASSIGNMENT_NAME + <span class="stringliteral">&quot; TEXT, &quot;</span> </div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; + AUPLOAD_ON + <span class="stringliteral">&quot; INTEGER, &quot;</span> + ADUE_DATE + <span class="stringliteral">&quot; INTEGER, &quot;</span> </div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; + AINTRO + <span class="stringliteral">&quot; TEXT, &quot;</span> + AATTACHMENTS_FILE_NAME + <span class="stringliteral">&quot; TEXT, &quot;</span> </div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; + QUIZ_NAME + <span class="stringliteral">&quot; TEXT, &quot;</span> </div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; + QUPLOAD_ON + <span class="stringliteral">&quot; INTEGER, &quot;</span>+ QDUE_DATE + <span class="stringliteral">&quot; INTEGER, &quot;</span>+ GRADE + <span class="stringliteral">&quot; INTEGER, &quot;</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; + ANNOUNCENMENTS+ <span class="stringliteral">&quot; INTEGER, &quot;</span>+ ANNAMES1 + <span class="stringliteral">&quot; TEXT, &quot;</span>+ ANUPLOAD_ON1 + <span class="stringliteral">&quot; INTEGER, &quot;</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; + ANINTRO1 + <span class="stringliteral">&quot; TEXT, &quot;</span>+ ANNAMES2 + <span class="stringliteral">&quot; TEXT, &quot;</span>+ ANUPLOAD_ON2 + <span class="stringliteral">&quot; INTEGER, &quot;</span>+ ANINTRO2</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; + <span class="stringliteral">&quot; TEXT, &quot;</span>+ ANNAMES3 + <span class="stringliteral">&quot; TEXT, &quot;</span>+ ANUPLOAD_ON3 + <span class="stringliteral">&quot; INTEGER, &quot;</span>+ ANINTRO3 + <span class="stringliteral">&quot; TEXT, &quot;</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; + ANNAMES4 + <span class="stringliteral">&quot; TEXT, &quot;</span>+ ANUPLOAD_ON4 + <span class="stringliteral">&quot; INTEGER, &quot;</span>+ ANINTRO4 + <span class="stringliteral">&quot; TEXT, &quot;</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; + ANNAMES5 + <span class="stringliteral">&quot; TEXT, &quot;</span>+ ANUPLOAD_ON5 + <span class="stringliteral">&quot; INTEGER, &quot;</span>+ ANINTRO5 + <span class="stringliteral">&quot; TEXT, &quot;</span>+ LATEST_COURSE_CONTENTS + <span class="stringliteral">&quot; TEXT)&quot;</span>)</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; </div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">def </span>insert(self,subject_id,subject_name):</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; connection=sqlite3.Connection(<span class="stringliteral">&quot;management.db&quot;</span>)</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; cursor=connection.cursor()</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; cursor.execute(<span class="stringliteral">&quot;INSERT INTO moodle_data VALUES(&quot;</span>+str(subject_id)+<span class="stringliteral">&quot;,&#39;&quot;</span>+subject_name+<span class="stringliteral">&quot;&#39;,0,&#39;null&#39;,0,0,&#39;null&#39;,&#39;null&#39;, &#39;null&#39;,0,0,0 ,0,&#39;null&#39;,0,&#39;null&#39;,&#39;null&#39;,0,&#39;null&#39;,&#39;null&#39;,0,&#39;null&#39;,&#39;null&#39;,0,&#39;null&#39;,&#39;null&#39;,0,&#39;null&#39;,&#39;null&#39;)&quot;</span>)</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; connection.commit()</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; </div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">def </span>update(self,row,column,dictt):</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; connection=sqlite3.Connection(<span class="stringliteral">&quot;management.db&quot;</span>)</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; cursor=connection.cursor()</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; if(column==1):<span class="comment">#row is the subid dict is submid</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; cursor.execute(<span class="stringliteral">&quot;UPDATE moodle_data SET subject_mid=&quot;</span>+str(dictt)+ <span class="stringliteral">&quot; WHERE subject_id=&quot;</span>+str(row))</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; connection.commit()</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; if(column==2):<span class="comment">#assignment row is subid dict is dict of assignment</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; i=dictt</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span> <span class="keywordflow">not</span> i:</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; t2=i[<span class="stringliteral">&quot;name&quot;</span>]</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; t3=i[<span class="stringliteral">&quot;timemodified&quot;</span>]</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; t4=i[<span class="stringliteral">&quot;duedate&quot;</span>]</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; t5=i[<span class="stringliteral">&quot;intro&quot;</span>]</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; t6=i[<span class="stringliteral">&quot;introattachments&quot;</span>]</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; t7=<span class="stringliteral">&quot;&quot;</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; if(len(t6)!=0):</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">for</span> k <span class="keywordflow">in</span> t6:</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; t7=t7+k[<span class="stringliteral">&quot;filename&quot;</span>]+<span class="stringliteral">&quot;\n&quot;</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; t7=t7+k[<span class="stringliteral">&quot;fileurl&quot;</span>]+<span class="stringliteral">&quot;\n&quot;</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; cursor.execute(<span class="stringliteral">&quot;UPDATE moodle_data SET assignment_name=&quot;</span>+<span class="stringliteral">&quot;?&quot;</span>+<span class="stringliteral">&quot; , aupload_on=&quot;</span>+<span class="stringliteral">&quot;?&quot;</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; +<span class="stringliteral">&quot; , adue_date=&quot;</span>+<span class="stringliteral">&quot;?&quot;</span>+<span class="stringliteral">&quot; , aintro=&quot;</span>+<span class="stringliteral">&quot;?&quot;</span> +<span class="stringliteral">&quot; , aattachments_file_name=&quot;</span>+<span class="stringliteral">&quot;?&quot;</span> +<span class="stringliteral">&quot; WHERE subject_id=&quot;</span>+<span class="stringliteral">&quot;?&quot;</span>,(t2,t3,t4,t5,t7,row))</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; connection.commit()</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; if(column==3):<span class="comment">#</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; i=dictt</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">if</span> <span class="keywordflow">not</span> i:</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; t2=i[<span class="stringliteral">&quot;name&quot;</span>]</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; t3=i[<span class="stringliteral">&quot;timeopen&quot;</span>]</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; t4=i[<span class="stringliteral">&quot;timeclose&quot;</span>]</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; t5=i[<span class="stringliteral">&quot;grade&quot;</span>]</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; cursor.execute(<span class="stringliteral">&quot;UPDATE moodle_data SET quiz_name=&quot;</span>+<span class="stringliteral">&quot;?&quot;</span>+<span class="stringliteral">&quot; , qupload_on=&quot;</span>+<span class="stringliteral">&quot;?&quot;</span>+</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="stringliteral">&quot; , qdue_date=&quot;</span>+<span class="stringliteral">&quot;?&quot;</span>+<span class="stringliteral">&quot; , grade=&quot;</span>+<span class="stringliteral">&quot;?&quot;</span> +<span class="stringliteral">&quot; WHERE subject_id=&quot;</span>+<span class="stringliteral">&quot;?&quot;</span>,(t2,t3,t4,t5,row))</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; connection.commit()</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; if(column==4):<span class="comment">#annoncements</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; cursor.execute(<span class="stringliteral">&quot;UPDATE moodle_data SET announcements_id=&quot;</span>+str(dictt[<span class="stringliteral">&quot;id&quot;</span>])+ <span class="stringliteral">&quot; WHERE subject_id=&quot;</span>+str(row))</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; connection.commit()</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; if(column==6):<span class="comment">#latest course contents</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; t7=<span class="stringliteral">&quot;&quot;</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; t7=t7+dictt[<span class="stringliteral">&quot;name&quot;</span>]+<span class="stringliteral">&quot;\n&quot;</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; dictt=dictt[<span class="stringliteral">&quot;modules&quot;</span>]</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">for</span> k <span class="keywordflow">in</span> dictt:</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; t7=t7+k[<span class="stringliteral">&quot;name&quot;</span>]+<span class="stringliteral">&quot;\n&quot;</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">try</span>:</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; t7=t7+k[<span class="stringliteral">&quot;fileurl&quot;</span>]+<span class="stringliteral">&quot;\n&quot;</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">except</span> KeyError:</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">pass</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; cursor.execute(<span class="stringliteral">&quot;UPDATE moodle_data SET latest_course_contents=&quot;</span>+<span class="stringliteral">&quot;?&quot;</span>+ <span class="stringliteral">&quot; WHERE subject_id=&quot;</span>+<span class="stringliteral">&quot;?&quot;</span>,(t7,row))</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; connection.commit()</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; if(column==5):</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; n=0</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">for</span> k <span class="keywordflow">in</span> dictt:</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; n+=1</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; t2=k[<span class="stringliteral">&quot;name&quot;</span>]</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; t3=k[<span class="stringliteral">&quot;created&quot;</span>]</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; t4=k[<span class="stringliteral">&quot;message&quot;</span>]</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; cursor.execute(<span class="stringliteral">&quot;UPDATE moodle_data SET annames%s=&quot;</span> %n+<span class="stringliteral">&quot;?&quot;</span>+<span class="stringliteral">&quot; , anupload_on%s=&quot;</span> %n+<span class="stringliteral">&quot;?&quot;</span>+<span class="stringliteral">&quot; , anintro%s=&quot;</span> %n+<span class="stringliteral">&quot;?&quot;</span>+<span class="stringliteral">&quot; WHERE subject_id=?&quot;</span>,(t2,t3,t4,row))</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; connection.commit()</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">def </span>printdb(self):</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; connection=sqlite3.Connection(<span class="stringliteral">&quot;management.db&quot;</span>)</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; cursor=connection.cursor()</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; rows = cursor.execute(<span class="stringliteral">&quot;SELECT subject_id, subject_name,subject_mid,assignment_name,aupload_on,adue_date,aintro,aattachments_file_name,quiz_name,qupload_on,qdue_date,grade,announcements_id,annames1,anupload_on1,anintro1,annames2,anupload_on2,anintro2,annames3,anupload_on3,anintro3,annames4,anupload_on4,anintro4,annames5,anupload_on5,anintro5,latest_course_contents FROM moodle_data&quot;</span>).fetchall()</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; print(rows) </div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; </div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">def </span>get_courseid(self,sub_id):</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; connection=sqlite3.Connection(<span class="stringliteral">&quot;management.db&quot;</span>)</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; cursor=connection.cursor()</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; rows = cursor.execute(<span class="stringliteral">&quot;SELECT subject_mid, announcements_id FROM moodle_data WHERE subject_id = &quot;</span> + sub_id).fetchall()</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">return</span> rows[0][0]</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; </div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">def </span>get_all_courses(self):</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; self.create_table()</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; connection=sqlite3.Connection(<span class="stringliteral">&quot;management.db&quot;</span>)</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; cursor=connection.cursor()</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; rows = cursor.execute(<span class="stringliteral">&quot;SELECT subject_id FROM moodle_data&quot;</span>).fetchall()</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; l = []</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">for</span> i <span class="keywordflow">in</span> rows:</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; l.append(str(i[0]))</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">return</span> l</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; </div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keyword">def </span>delete_sub(self):</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; connection=sqlite3.Connection(<span class="stringliteral">&quot;management.db&quot;</span>)</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; cursor=connection.cursor()</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; cursor.execute(<span class="stringliteral">&quot;DELETE FROM moodle_data WHERE subject_id = 725&quot;</span>)</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; connection.commit()</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; </div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; </div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keyword">def </span>assignment_details(self,subid):</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; connection=sqlite3.Connection(<span class="stringliteral">&quot;management.db&quot;</span>)</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; cursor=connection.cursor()</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; rows = cursor.execute(<span class="stringliteral">&quot;SELECT assignment_name,adue_date,aintro,aattachments_file_name FROM moodle_data WHERE subject_id = &quot;</span> + subid).fetchall()</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; s = <span class="stringliteral">&quot;&quot;</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; </div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; j = 0</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">for</span> i <span class="keywordflow">in</span> rows[0]:</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; if(j == 1):</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; i = <span class="stringliteral">&quot;Due Date : &quot;</span> + getDate(i)</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; if(j == 2): </div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; i = <span class="stringliteral">&quot;Details : &quot;</span> + i</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; </div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; if(j == 3):</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; i = <span class="stringliteral">&quot;PDFs/URLs : &quot;</span> + i</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; s = s+str(i)+<span class="stringliteral">&quot;\n&quot;</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; j += 1</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">return</span> s</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; </div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">def </span>quiz_details(self,subid):</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; connection=sqlite3.Connection(<span class="stringliteral">&quot;management.db&quot;</span>)</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; cursor=connection.cursor()</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; rows = cursor.execute(<span class="stringliteral">&quot;SELECT quiz_name,qdue_date, grade FROM moodle_data WHERE subject_id = &quot;</span>+ subid).fetchall()</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; s = <span class="stringliteral">&#39;&#39;</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; j = 0</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">for</span> i <span class="keywordflow">in</span> rows[0]:</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; if(j == 1):</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; i = <span class="stringliteral">&quot;Due Date : &quot;</span> + getDate(i)</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; </div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; if(j == 2): </div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; i = <span class="stringliteral">&quot;Grade : &quot;</span> + str(i)</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; s = s+str(i)+<span class="stringliteral">&quot;\n&quot;</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; j += 1</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span> s</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; </div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keyword">def </span>course_contents(self, subid):</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; connection=sqlite3.Connection(<span class="stringliteral">&quot;management.db&quot;</span>)</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; cursor=connection.cursor()</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; rows = cursor.execute(<span class="stringliteral">&quot;SELECT latest_course_contents FROM moodle_data WHERE subject_id = &quot;</span>+ subid).fetchall()</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; s=<span class="stringliteral">&#39;&#39;</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">for</span> i <span class="keywordflow">in</span> rows[0]:</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; s=s+str(i)+<span class="stringliteral">&quot;\n&quot;</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">return</span> s </div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; </div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keyword">def </span>get_announcements(self,subid):</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; connection=sqlite3.Connection(<span class="stringliteral">&quot;management.db&quot;</span>)</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; cursor=connection.cursor()</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; rows = cursor.execute(<span class="stringliteral">&quot;SELECT annames1, aNupload_on1 , anintro1 , annames2 , aNupload_on2 , anintro2 FROM moodle_data WHERE subject_id = &quot;</span>+ subid).fetchall()</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; s=<span class="stringliteral">&#39;&#39;</span></div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; j = 0</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">for</span> i <span class="keywordflow">in</span> rows[0]:</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; if(j ==1):</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; i = <span class="stringliteral">&quot;Date : &quot;</span> + getDate(i)</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; if(j == 4):</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; i = <span class="stringliteral">&quot;Date : &quot;</span> + getDate(i)</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; s=s+str(i)+<span class="stringliteral">&quot;\n&quot;</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; j += 1</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">return</span> s </div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; </div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="keyword">def </span>getDate(unixdate):</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; ts = int(unixdate)</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> str(datetime.utcfromtimestamp(ts).astimezone(timezone(<span class="stringliteral">&#39;Asia/Kolkata&#39;</span>)).strftime(<span class="stringliteral">&#39;%Y-%m-%d&#39;</span>))</div>
<div class="ttc" id="aclassmain_1_1subjectdatabase_1_1moodle_html"><div class="ttname"><a href="classmain_1_1subjectdatabase_1_1moodle.html">main.subjectdatabase.moodle</a></div><div class="ttdoc">This is used for maintaining the Student moodle data.</div><div class="ttdef"><b>Definition:</b> <a href="subjectdatabase_8py_source.html#l00060">subjectdatabase.py:60</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}
\ No newline at end of file
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/tests.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">tests.py</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="keyword">from</span> django.test <span class="keyword">import</span> TestCase</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; </div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"># Create your tests here.</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/timely_update.py File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">timely_update.py File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>This file contains the list fo functions that are called by scheduler for updating the subject database.
<a href="#details">More...</a></p>
<p><a href="timely__update_8py_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ad4ed6821a1475f9940fe507d488d0473"><td class="memItemLeft" align="right" valign="top"><a id="ad4ed6821a1475f9940fe507d488d0473"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="timely__update_8py.html#ad4ed6821a1475f9940fe507d488d0473">main.timely_update.update_database_daily</a> ()</td></tr>
<tr class="memdesc:ad4ed6821a1475f9940fe507d488d0473"><td class="mdescLeft">&#160;</td><td class="mdescRight">This definition will update the subject Database daily. <br /></td></tr>
<tr class="separator:ad4ed6821a1475f9940fe507d488d0473"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a72d553ce3210836ff82c82b3e67c63d2"><td class="memItemLeft" align="right" valign="top"><a id="a72d553ce3210836ff82c82b3e67c63d2"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="timely__update_8py.html#a72d553ce3210836ff82c82b3e67c63d2">main.timely_update.send_update_to_students</a> ()</td></tr>
<tr class="memdesc:a72d553ce3210836ff82c82b3e67c63d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">This Definition will queries the student database for phone number and subjects and calls send-notifications function. <br /></td></tr>
<tr class="separator:a72d553ce3210836ff82c82b3e67c63d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ac8a6b450d9051925cb53da6c450d33"><td class="memItemLeft" align="right" valign="top"><a id="a6ac8a6b450d9051925cb53da6c450d33"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="timely__update_8py.html#a6ac8a6b450d9051925cb53da6c450d33">main.timely_update.send_notification</a> (phone_no, subs)</td></tr>
<tr class="memdesc:a6ac8a6b450d9051925cb53da6c450d33"><td class="mdescLeft">&#160;</td><td class="mdescRight">This Definition will queries for subjects for all information, creates a message and call send_message function to send message to students. <br /></td></tr>
<tr class="separator:a6ac8a6b450d9051925cb53da6c450d33"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This file contains the list fo functions that are called by scheduler for updating the subject database. </p>
<p class="definition">Definition in file <a class="el" href="timely__update_8py_source.html">timely_update.py</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/timely_update.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">timely_update.py</div> </div>
</div><!--header-->
<div class="contents">
<a href="timely__update_8py.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; </div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="keyword">from</span> .updateDB <span class="keyword">import</span> updater</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="keyword">from</span> .models <span class="keyword">import</span> Student</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="keyword">import</span> re</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="keyword">from</span> .subjectdatabase <span class="keyword">import</span> moodle</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="keyword">from</span> .automation <span class="keyword">import</span> send_message</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; </div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; </div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="keyword">def </span>update_database_daily():</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; all_students = Student.objects.all()</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; print(<span class="stringliteral">&quot;hello&quot;</span>)</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="comment">#print(all_students)</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordflow">for</span> student <span class="keywordflow">in</span> all_students:</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; if(student.user_type == <span class="stringliteral">&quot;updater&quot;</span>):</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; token = student.moodle_token</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; subs = student.update_courses</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; subs = subs.replace(<span class="stringliteral">&#39;[&#39;</span>,<span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; subs = subs.replace(<span class="stringliteral">&#39;]&#39;</span>,<span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; subs = subs.replace(<span class="stringliteral">&quot;&#39;&quot;</span>,<span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="comment">#print(subs)</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; subs = subs.split(<span class="stringliteral">&quot;,&quot;</span>) </div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="comment">#print(subs)</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; updater(token,subs)</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">def </span>send_update_to_students():</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; all_students = Student.objects.all()</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span> student <span class="keywordflow">in</span> all_students:</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; subs = student.courses</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; subs = subs.replace(<span class="stringliteral">&#39;[&#39;</span>,<span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; subs = subs.replace(<span class="stringliteral">&#39;]&#39;</span>,<span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; subs = subs.replace(<span class="stringliteral">&quot;&#39;&quot;</span>,<span class="stringliteral">&#39;&#39;</span>)</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; subs = subs.split(<span class="stringliteral">&quot;,&quot;</span>)</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; phone_no = student.phone_number</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; send_notification(phone_no,subs)</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; </div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; </div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; </div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keyword">def </span>send_notification(phone_no,subs):</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; print(subs,phone_no)</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; d = moodle()</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">for</span> sub <span class="keywordflow">in</span> subs:</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; ass_info = d.assignment_details(sub)</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; quiz_info = d.quiz_details(sub)</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; contents = d.course_contents(sub)</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; final_message = sub +<span class="stringliteral">&quot;\n&quot;</span>+ ass_info + quiz_info + contents</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; send_message(final_message,phone_no)</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; </div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/updateDB.py File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">updateDB.py File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>This file is used for Updating the Moodle Database.
<a href="#details">More...</a></p>
<p><a href="updateDB_8py_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ab650e186570f4f16a1e491d589bca394"><td class="memItemLeft" align="right" valign="top"><a id="ab650e186570f4f16a1e491d589bca394"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="updateDB_8py.html#ab650e186570f4f16a1e491d589bca394">main.updateDB.new_user_firstContact</a> (moodle_token)</td></tr>
<tr class="memdesc:ab650e186570f4f16a1e491d589bca394"><td class="mdescLeft">&#160;</td><td class="mdescRight">This definition checks info if user has taken courses that are not in subject database and assigns user as updater if yes. <br /></td></tr>
<tr class="separator:ab650e186570f4f16a1e491d589bca394"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acea4e14bc7412d35203ec15684fb22d6"><td class="memItemLeft" align="right" valign="top"><a id="acea4e14bc7412d35203ec15684fb22d6"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="updateDB_8py.html#acea4e14bc7412d35203ec15684fb22d6">main.updateDB.updater</a> (moodle_token, subjects)</td></tr>
<tr class="memdesc:acea4e14bc7412d35203ec15684fb22d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">This definition is called by update_database_daily to update the subject database. <br /></td></tr>
<tr class="separator:acea4e14bc7412d35203ec15684fb22d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9171aa87217fbb1405ec2848d546311"><td class="memItemLeft" align="right" valign="top"><a id="af9171aa87217fbb1405ec2848d546311"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="updateDB_8py.html#af9171aa87217fbb1405ec2848d546311">main.updateDB.token_with_new_subject</a> (moodle_token, sub_name, sub_id)</td></tr>
<tr class="memdesc:af9171aa87217fbb1405ec2848d546311"><td class="mdescLeft">&#160;</td><td class="mdescRight">This definition called by new_user_firstContact to update the new subject details in subject database. <br /></td></tr>
<tr class="separator:af9171aa87217fbb1405ec2848d546311"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This file is used for Updating the Moodle Database. </p>
<p class="definition">Definition in file <a class="el" href="updateDB_8py_source.html">updateDB.py</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/updateDB.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">updateDB.py</div> </div>
</div><!--header-->
<div class="contents">
<a href="updateDB_8py.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; </div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="keyword">from</span> .subjectdatabase <span class="keyword">import</span> *</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="keyword">from</span> .login <span class="keyword">import</span> *</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="keyword">from</span> .letsloginourself <span class="keyword">import</span> worker</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="stringliteral">Assumption here is that when this function is called it has token and number of subjects as the valid arguemnts</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; </div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; </div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword">def </span>new_user_firstContact(moodle_token):</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="comment">#print(&quot;hello&quot;)</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; request_helper = worker(moodle_token)</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; course_id, course_name = get_list_of_courses(request_helper)</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; courses = []</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">for</span> key <span class="keywordflow">in</span> course_id.keys():</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; courses.append(key)</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; d=moodle()</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; courses_present = d.get_all_courses()</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; updater = <span class="keyword">False</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="comment">#d.delete_sub()</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; updater_subs = []</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; update_sub_name = {}</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; update_sub_id = {}</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="comment">#print(&quot;sample&quot;,&quot;vample&quot;)</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="comment">#print(&quot;tatti&quot;,courses_present, &quot;hello guys 000 here&quot;)</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">for</span> key <span class="keywordflow">in</span> course_id.keys():</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">if</span> key <span class="keywordflow">not</span> <span class="keywordflow">in</span> courses_present:</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; print(key)</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; updater = <span class="keyword">True</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; updater_subs.append(key)</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; update_sub_name[key] = course_name[key]</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; update_sub_id[key] = course_id[key]</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; </div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment"># print(courses)</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment"># print(updater)</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment"># print(updater_subs)</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">#d.printdb()</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; print(courses,update_sub_name,update_sub_id)</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; token_with_new_subject(moodle_token,update_sub_name,update_sub_id)</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">#d.printdb()</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> courses,updater,updater_subs</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; </div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; </div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keyword">def </span>updater(moodle_token, subjects):</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; d=moodle()</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; request_helper = worker(moodle_token)</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">for</span> sub <span class="keywordflow">in</span> subjects:</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; key_to_pass = sub</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; mcourse_id = d.get_courseid(sub)</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; assignments = get_assignments_info(request_helper,mcourse_id,<span class="keyword">False</span>)</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; d.update(key_to_pass,2,assignments)</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; quizzes = get_quizzes_info(request_helper,mcourse_id,<span class="keyword">False</span>)</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; d.update(key_to_pass,3,quizzes)</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; ann_forum = get_discussion_forum_id(request_helper,mcourse_id)</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; d.update(key_to_pass,4,ann_forum)</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; discs = get_discussion_forum_discussions(request_helper, ann_forum[<span class="stringliteral">&#39;id&#39;</span>])</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; d.update(key_to_pass,5,discs)</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; cc = get_course_contents(request_helper,mcourse_id)</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; d.update(sub,6,cc[-1])</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="comment">#print(cc[-1])</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">#d.printdb()</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; </div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword">def </span>token_with_new_subject(moodle_token, sub_name, sub_id):</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">#{771: &quot;fml&quot;}</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment"># add sub to the subjects table</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment"># call functions to update the contents of the subject information table</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; d=moodle()</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; request_helper = worker(moodle_token)</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">for</span> key <span class="keywordflow">in</span> sub_id.keys():</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; key_to_pass = int(key)</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; d.insert(key_to_pass,sub_name[key])</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; d.update(key_to_pass,1,sub_id[key])</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; assignments = get_assignments_info(request_helper,sub_id[key],<span class="keyword">False</span>)</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; d.update(key_to_pass,2,assignments)</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; quizzes = get_quizzes_info(request_helper,sub_id[key],<span class="keyword">False</span>)</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; d.update(key_to_pass,3,quizzes)</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; ann_forum = get_discussion_forum_id(request_helper,sub_id[key])</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; d.update(key_to_pass,4,ann_forum)</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; discs = get_discussion_forum_discussions(request_helper,ann_forum[<span class="stringliteral">&#39;id&#39;</span>])</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; d.update(key_to_pass,5,discs)</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; cc = get_course_contents(request_helper,sub_id[key])</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; d.update(key_to_pass,6,cc[-1])</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">#d.printdb()</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; </div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/utils.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">utils.py</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="keyword">from</span> .subjectdatabase <span class="keyword">import</span> moodle</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="keyword">import</span> os</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;os.environ[<span class="stringliteral">&quot;GOOGLE_APPLICATION_CREDENTIALS&quot;</span>] = <span class="stringliteral">&quot;wbot99-yafn-04233a19031b.json&quot;</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160; </div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="keyword">import</span> dialogflow_v2 <span class="keyword">as</span> dialogflow</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;dialogflow_session_client = dialogflow.SessionsClient()</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;PROJECT_ID = <span class="stringliteral">&quot;wbot99-yafn&quot;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="keyword">def </span>detect_intent_from_text(text, session_id, language_code=&#39;en&#39;):</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; session = dialogflow_session_client.session_path(PROJECT_ID, session_id)</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; text_input = dialogflow.types.TextInput(text=text, language_code=language_code)</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; query_input = dialogflow.types.QueryInput(text=text_input)</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; response = dialogflow_session_client.detect_intent(session=session, query_input=query_input)</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; <span class="keywordflow">return</span> response.query_result</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; </div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword">def </span>fetch_reply(query,session_id):</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; response = detect_intent_from_text(query,session_id)</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; d = moodle()</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; courses = d.get_all_courses()</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordflow">if</span> response.intent.display_name == <span class="stringliteral">&quot;assignment&quot;</span> :</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; sub = (dict(response.parameters))[<span class="stringliteral">&#39;assignment&#39;</span>]</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">if</span> sub <span class="keywordflow">in</span> courses:</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; response = d.assignment_details(sub) </div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">if</span> response:</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> response</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;No assignment found&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Subject not found !!&quot;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; elif(response.intent.display_name == <span class="stringliteral">&quot;quiz&quot;</span>):</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; sub = (dict(response.parameters))[<span class="stringliteral">&#39;assignment&#39;</span>]</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">if</span> sub <span class="keywordflow">in</span> courses:</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; response = d.quiz_details(sub) </div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">if</span> response:</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">return</span> response</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;No quiz found&quot;</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Subject not found !!&quot;</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; elif(response.intent.display_name == <span class="stringliteral">&quot;getcontent&quot;</span>):</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; sub = (dict(response.parameters))[<span class="stringliteral">&#39;assignment&#39;</span>]</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">if</span> sub <span class="keywordflow">in</span> courses:</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; response = d.course_contents(sub) </div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">if</span> response:</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> response</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;No contents found&quot;</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Subject not found !!&quot;</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; elif(response.intent.display_name == <span class="stringliteral">&quot;announcement&quot;</span>):</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; sub = (dict(response.parameters))[<span class="stringliteral">&#39;assignment&#39;</span>]</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span> sub <span class="keywordflow">in</span> courses:</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; response = d.get_announcements(sub) </div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span> response:</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">return</span> response</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;No contents found&quot;</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Subject not found !!&quot;</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">else</span> :</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Didn&#39;t get it? Try again&quot;</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; </div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/views.py File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">views.py File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>File documentation.
<a href="#details">More...</a></p>
<p><a href="views_8py_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a9a4ac8eafe07b76e9032c0e8ce40fcf8"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="views_8py.html#a9a4ac8eafe07b76e9032c0e8ce40fcf8">main.views.index</a> (response)</td></tr>
<tr class="memdesc:a9a4ac8eafe07b76e9032c0e8ce40fcf8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create your views here. <a href="views_8py.html#a9a4ac8eafe07b76e9032c0e8ce40fcf8">More...</a><br /></td></tr>
<tr class="separator:a9a4ac8eafe07b76e9032c0e8ce40fcf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12b680b1a9d59917f5a0cdc834a8f190"><td class="memItemLeft" align="right" valign="top"><a id="a12b680b1a9d59917f5a0cdc834a8f190"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>main.views.updater</b> (response)</td></tr>
<tr class="separator:a12b680b1a9d59917f5a0cdc834a8f190"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab460da9c4a9a42c60f09a48cef3f670e"><td class="memItemLeft" align="right" valign="top"><a id="ab460da9c4a9a42c60f09a48cef3f670e"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="views_8py.html#ab460da9c4a9a42c60f09a48cef3f670e">main.views.home</a> (response)</td></tr>
<tr class="memdesc:ab460da9c4a9a42c60f09a48cef3f670e"><td class="mdescLeft">&#160;</td><td class="mdescRight">This definition is used for Home page rendering. <br /></td></tr>
<tr class="separator:ab460da9c4a9a42c60f09a48cef3f670e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3148222185e5aa58003409709005b52"><td class="memItemLeft" align="right" valign="top"><a id="ab3148222185e5aa58003409709005b52"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="views_8py.html#ab3148222185e5aa58003409709005b52">main.views.success</a> (response)</td></tr>
<tr class="memdesc:ab3148222185e5aa58003409709005b52"><td class="mdescLeft">&#160;</td><td class="mdescRight">After Submission fo form, this page will be rendered. <br /></td></tr>
<tr class="separator:ab3148222185e5aa58003409709005b52"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c0611a42a44025fc5a01aedbf68ce18"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="views_8py.html#a5c0611a42a44025fc5a01aedbf68ce18">main.views.sms_reply</a> (request)</td></tr>
<tr class="memdesc:a5c0611a42a44025fc5a01aedbf68ce18"><td class="mdescLeft">&#160;</td><td class="mdescRight">This definition is used to check if the user gets registered and sends the respective Response to the user. <a href="views_8py.html#a5c0611a42a44025fc5a01aedbf68ce18">More...</a><br /></td></tr>
<tr class="separator:a5c0611a42a44025fc5a01aedbf68ce18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac89a04bd460dc8d517118c4ee2aadaba"><td class="memItemLeft" align="right" valign="top"><a id="ac89a04bd460dc8d517118c4ee2aadaba"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="views_8py.html#ac89a04bd460dc8d517118c4ee2aadaba">main.views.register</a> (response)</td></tr>
<tr class="memdesc:ac89a04bd460dc8d517118c4ee2aadaba"><td class="mdescLeft">&#160;</td><td class="mdescRight">This definition will add entries into the Student Table in the Database. <br /></td></tr>
<tr class="separator:ac89a04bd460dc8d517118c4ee2aadaba"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>File documentation. </p>
<p class="definition">Definition in file <a class="el" href="views_8py_source.html">views.py</a>.</p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a9a4ac8eafe07b76e9032c0e8ce40fcf8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9a4ac8eafe07b76e9032c0e8ce40fcf8">&#9670;&nbsp;</a></span>index()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def main.views.index </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>response</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create your views here. </p>
<p>the default path is loaded to index page which renders base.html page </p>
<p class="definition">Definition at line <a class="el" href="views_8py_source.html#l00031">31</a> of file <a class="el" href="views_8py_source.html">views.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">def </span>index(response):</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">return</span> render(response, <span class="stringliteral">&quot;main/base.html&quot;</span>,{})</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
<a id="a5c0611a42a44025fc5a01aedbf68ce18"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c0611a42a44025fc5a01aedbf68ce18">&#9670;&nbsp;</a></span>sms_reply()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def main.views.sms_reply </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>request</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This definition is used to check if the user gets registered and sends the respective Response to the user. </p>
<pre class="fragment">Respond to incoming calls with a simple text message.</pre>
<p class="definition">Definition at line <a class="el" href="views_8py_source.html#l00057">57</a> of file <a class="el" href="views_8py_source.html">views.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="keyword">def </span>sms_reply(request):</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="stringliteral">&quot;&quot;&quot;Respond to incoming calls with a simple text message.&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment"># Fetch the message</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> request.method == <span class="stringliteral">&quot;POST&quot;</span>:</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="comment"># Create reply</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; message = request.POST[<span class="stringliteral">&#39;Body&#39;</span>]</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; phone_no=request.POST[<span class="stringliteral">&#39;From&#39;</span>]</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; print(phone_no)</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">if</span> phone_no :</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; phone_no = phone_no[-10:]</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span> Student.objects.filter(phone_number = phone_no).exists():</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; reply=fetch_reply(message,phone_no)</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; resp = MessagingResponse()</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; resp.message(reply)</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> HttpResponse(resp)</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; resp = MessagingResponse()</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; resp.message(<span class="stringliteral">&quot;You are not registered!!&quot;</span>)</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> HttpResponse(resp)</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; resp = MessagingResponse()</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; resp.message(<span class="stringliteral">&quot;Phone Number Not found!!&quot;</span>)</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> HttpResponse(resp)</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: main/views.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5c982d53a68cdbcd421152b4020263a9.html">main</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">views.py</div> </div>
</div><!--header-->
<div class="contents">
<a href="views_8py.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; </div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="keyword">from</span> django.core.exceptions <span class="keyword">import</span> ValidationError</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="keyword">from</span> django.shortcuts <span class="keyword">import</span> render, redirect</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="keyword">from</span> django.http.response <span class="keyword">import</span> HttpResponseRedirect</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="keyword">from</span> django.http <span class="keyword">import</span> HttpResponse, response</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="keyword">from</span> django.contrib.auth <span class="keyword">import</span> default_app_config, login, authenticate</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; </div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; </div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="keyword">from</span> .forms <span class="keyword">import</span> CreateNewUser</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword">from</span> .models <span class="keyword">import</span> Student</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="keyword">from</span> .updateDB <span class="keyword">import</span> new_user_firstContact</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">from</span> .timely_update <span class="keyword">import</span> update_database_daily</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">from</span> .timely_update <span class="keyword">import</span> send_update_to_students</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">from</span> twilio.twiml.messaging_response <span class="keyword">import</span> MessagingResponse</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">from</span> .utils <span class="keyword">import</span> fetch_reply</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">from</span> django.views.decorators.csrf <span class="keyword">import</span> csrf_exempt</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">from</span> .clockinterval <span class="keyword">import</span> sendupdates</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; </div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">def </span>index(response):</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">return</span> render(response, <span class="stringliteral">&quot;main/base.html&quot;</span>,{})</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; </div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; </div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">def </span>updater(response):</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; sendupdates()</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">return</span> render(response, <span class="stringliteral">&quot;main/base.html&quot;</span>,{})</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; </div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">def </span>home(response):</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> render(response, <span class="stringliteral">&quot;main/home.html&quot;</span>,{})</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; </div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; </div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">def </span>success(response):</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> render(response, <span class="stringliteral">&quot;main/success.html&quot;</span>, {})</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; </div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">@csrf_exempt</span> </div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="keyword">def </span>sms_reply(request):</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="stringliteral">&quot;&quot;&quot;Respond to incoming calls with a simple text message.&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment"># Fetch the message</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> request.method == <span class="stringliteral">&quot;POST&quot;</span>:</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="comment"># Create reply</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; message = request.POST[<span class="stringliteral">&#39;Body&#39;</span>]</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; phone_no=request.POST[<span class="stringliteral">&#39;From&#39;</span>]</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; print(phone_no)</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">if</span> phone_no :</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; phone_no = phone_no[-10:]</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span> Student.objects.filter(phone_number = phone_no).exists():</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; reply=fetch_reply(message,phone_no)</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; resp = MessagingResponse()</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; resp.message(reply)</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> HttpResponse(resp)</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; resp = MessagingResponse()</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; resp.message(<span class="stringliteral">&quot;You are not registered!!&quot;</span>)</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> HttpResponse(resp)</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; resp = MessagingResponse()</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; resp.message(<span class="stringliteral">&quot;Phone Number Not found!!&quot;</span>)</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> HttpResponse(resp)</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; </div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="keyword">def </span>register(response):</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">if</span> response.method == <span class="stringliteral">&quot;POST&quot;</span>:</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; form = CreateNewUser(response.POST)</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">if</span> form.is_valid():</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; fn = form.cleaned_data[<span class="stringliteral">&quot;fname&quot;</span>]</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; pnumb = form.cleaned_data[<span class="stringliteral">&quot;phone_number&quot;</span>]</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; rnumb = form.cleaned_data[<span class="stringliteral">&quot;roll_number&quot;</span>]</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; token = form.cleaned_data[<span class="stringliteral">&quot;moodle_token&quot;</span>]</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; </div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="stringliteral">&#39;&#39;&#39;Other Functions are called from here</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="stringliteral"> to update the database table Student entries&#39;&#39;&#39;</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; </div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; course_taken,updater, update_subs = new_user_firstContact(token)</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; course_taken = <span class="stringliteral">&#39;,&#39;</span>.join(course_taken)</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; update_subs = <span class="stringliteral">&#39;,&#39;</span>.join(update_subs)</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; if(updater == <span class="keyword">True</span>):</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; user = <span class="stringliteral">&quot;updater&quot;</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">else</span> :</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; user = <span class="stringliteral">&quot;General&quot;</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; </div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; t = Student(fname=fn, phone_number=pnumb, roll_number=rnumb, moodle_token=token,user_type = user,courses=course_taken,update_courses= update_subs)</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; t.save()</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">#update_database_daily()</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="comment">#sendupdates(</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> redirect(<span class="stringliteral">&quot;/success&quot;</span>)</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; form = CreateNewUser()</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; </div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> render(response, <span class="stringliteral">&quot;main/register.html&quot;</span>, {<span class="stringliteral">&quot;form&quot;</span>:form})</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>moodleNotifer: moodleNotifier/wsgi.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">moodleNotifer
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_2d978bdce16c291c9c81f068e91d317d.html">moodleNotifier</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">wsgi.py</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"><a class="line" href="namespacemoodleNotifier_1_1wsgi.html"> 1</a></span>&#160;<span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="stringliteral">WSGI config for moodleNotifier project.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="stringliteral">It exposes the WSGI callable as a module-level variable named ``application``.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="stringliteral">For more information on this file, see</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="stringliteral">https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; </div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="keyword">import</span> os</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; </div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="keyword">from</span> django.core.wsgi <span class="keyword">import</span> get_wsgi_application</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;os.environ.setdefault(<span class="stringliteral">&#39;DJANGO_SETTINGS_MODULE&#39;</span>, <span class="stringliteral">&#39;moodleNotifier.settings&#39;</span>)</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; </div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;application = get_wsgi_application()</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>
How to use:
For using moodleNotifier,
You need to have Moodle Token, for generating Moodle token you can use generatetoken.py file to generate the moodle token.
Command : python3 generatetoken.py
You have to input your username and password in the terminal and then it will print your moodle token in the terminal itself. Just copy and use while registering on website.
Write the moodle username and password in the letsloginyourself.py and the code will generate moodle token.
Open the Web Browser and go to https://moodlenotifier.herokuapp.com and register for the moodleNotifier.
To Run on the Local Machines with Source Code:
Using moodleNotifier is very simple. You need to have installed the dependencies for running the server locally in your machine.
To install python3 on ubuntu, run the following command in your terminal.
sudo apt-get install python3
To install Django on ubuntu, run the following command in your terminal.
pip3 install django
And install the requirements as mentioned in requirements.txt
One needs to git clone the project. After that open terminal in moodlenotifier of the project directory and run following commands.
python3 manage.py makemigrations
python3 manage.py migrate
python3 manage.py runserver
To access the application open the web browser and go to "localhost:8000"
To Run from the herokuapp Server:
The moodleNotifier app is hosted on the heroku Server.
To run it. Open web browser and goto https://moodlenotifier.herokuapp.com/
And then register yourself by clicking on register button and adding the details as required.
To chat with the bot :
Register with us at the website.
Add +1 (415) 523-8886 to your contacts.
Send first message : join enemy-pig
Just send Hi to the bot and it will send you information on what kind of questions to ask the bot.
NOTE:
You can't test the bot as you need to have a twilio account for that and add the server link/sms in the twilio whatsapp settings.
\documentclass[11pt,letterpaper]{article}
\usepackage[none]{hyphenat}
\usepackage{geometry}
\usepackage[utf8]{inputenc}
\usepackage{graphicx} % support the \includegraphics command and options
\graphicspath{ {./images/} }
\title{\vfill \textbf{{\Huge Notifier}\\ {\large SOFTWARE LAB PROJECT}\\
{\large INDIAN INSTITUTE OF TECHNOLOGY, BOMBAY}}}
\author{\textbf{Bandana Raviteja}\\ 203050084\\ \textbf{Navneet Ranjan}\\ 203050106\\ \textbf{Abhishek Chugh}\\ 203050046\\ \textbf{Vara Prasad Kolli}\\ 203050114
}
\date{$27^{th}November,2020$\vfill}
\begin{document}
\maketitle
\pagebreak
\section{\usefont{T1}{fve}{b}{n}{ Introduction}}
\usefont{T1}{fve}{m}{n}{The \textbf{Notifier} is a simple and user friendly chatbot which helps user by answering the questions asked by the students regarding the subject related data.Like deadlines of assignment or quizzes and lot more .This data is already present in the moodle account of the students and the same data is used by the chatbot.\\ This helps the student saving a lot of time and since it is very easy to use with little effort students will regularly interact on Whatsapp and it is hard for them miss anything with every day notifications of what needs there attention. }
%\textbf{Suggestion:-} Take assignments easy it will be fun.
\section{\usefont{T1}{fve}{b}{n}{Motivation}}
\usefont{T1}{fve}{m}{n}{People like interactions and the world is moving in the era of developing AI which can understand the understand the meaning behind the words we say.\\
Inspired by this we wanted to develop a chatbot which can interact to the students and help them with their subjects they have taken and ours is a simple step we have taken to mimic a basic chatbot.}
\section{\usefont{T1}{fve}{b}{n}{Dependencies}}
\usefont{T1}{fve}{m}{n}{\begin{itemize}
\item Python3
\item urllib3
\item requests
\end{itemize}
\section{\usefont{T1}{fve}{b}{n}{Generating the tocken}}
\usefont{T1}{fve}{m}{n}{
Using the Notifier is very simple. You need to have installed the dependencies.\\
To install python3 on ubuntu, run the following command in your terminal.\\
\textbf{• sudo apt-get install python3.6}\\
To install urllib3, run the following command in your terminal.\\
\textbf{• pip3 install urllib3}\\
To install requests, run the following command in your terminal.\\
\textbf{• pip3 install requests}\\
Get into the link\\ https://github.com/abhishekchugh17/generatetoken/blob/master/generatetoken.py \\
Run the code given by adding the user name and password details of your moodle account in the interactively acquire token function.\\
\\
\includegraphics{generator}\\
\\
To Generate the tocken on ubuntu, run the following command in your terminal.\\
\textbf{• python3 generatetoken.py}\\
It will print your moodle token in the terminal itself.\\
}}
\section{\usefont{T1}{fve}{b}{n}{ Registration}}
\usefont{T1}{fve}{m}{n}{
The student first needs to register.\\
Hit the Register button and and enter the student credentials here.\\
\vspace{1cm}
\includegraphics{register} \\
\vspace{1cm}
After successful registration.\\
student need to save the whatsapp number and\\
+1(415)523-8886\\
The first message they need to send before the interaction is the
'join enemy-pig'
With this the chatbot will activate for your help and you don't need to use this this activation message ever again.\\
Every thing is set and student can start chatting with chatbot using whatsapp as the platform.\\
\vspace{1cm}
\begin{center}\includegraphics[width=50mm,scale=0.5]{3} \end{center}
\vspace{1cm}
This is a perfect example of how a user asks the question to the chat bot as long the keyword assignment and the subject name or code or short name is present in the message sent by the user the chatbot will search for the keyword and reply accordingly.\\
\vspace{1cm}
\begin{center}\includegraphics[width=50mm,scale=0.5]{1}\end{center}
\vspace{1cm}
Here we are asking the about the announcements and as long the keyword announcement and the subject name or code or short name is present in the message sent by the user the chatbot will search for the keyword and reply accordingly.\\In this case last two latest announcements are returned withe all the Information, pdf names, links that are given in the Announcement so that the user can directly access the content.\\
\vspace{1cm}
\begin{center}\includegraphics[width=50mm,scale=0.5]{2}\end{center}
\vspace{1cm}
In this the latest assignment details, Quiz details, latest course content like videos or any resources that are posted are sent by the chatbot.\\
The next image are the daily notifications that the chatbot sends to every student with respective to the subjects that the student has taken.\\
At first will be the subject code, the latest assignment, it's due date.\\
Next is the quiz details its name, due date, grade. If the subject has no quiz then it will show null with dummy date.\\
\vspace{1cm}
\begin{center}\includegraphics[width=50mm,scale=0.5]{b}\end{center}
\vspace{1cm}
}
These details will be sent about every subject.\\
\section{\usefont{T1}{fve}{b}{n}{ Future scope}}
\usefont{T1}{fve}{m}{n}{The Notifier is not limited to getting the data from just the moodle account but also be upgraded to get more rich data from various sources.Instead of using the python as its basic code if we do it with c++ it will be much faster.\\
The Notifier can also be used not just for the course work related but also replying to the common troubles that the student faces.\\
If the dialog flow of the chatbot is increased it can be used as the personal AI of IIT Bombay solving the student problems in many different fields by giving it access to the data that need to be Shared.}
\end{document}
Git Link:
https://git.cse.iitb.ac.in/navneetranjan/cs699documentation
Navneet Ranjan <203050106> Dialogflow intent creation and working with twilio part.
Bandana Ravi Teja <203050084> Writing Database code for accesssing stored subject information and automation code for sending updates to students daily.s
Abhishek Chugh <203050046> Getting data from moodle Api and writing integration functions along with updations.
Vara Prasad Kolli <203050114> Writing the website Registration page in Django and the storage of students in the database.
How to use:
For using moodleNotifier,
You need to have Moodle Token, for generating Moodle token you can use generatetoken.py file to generate the moodle token.
Command : python3 generatetoken.py
You have to input your username and password in the terminal and then it will print your moodle token in the terminal itself. Just copy and use while registering on website.
Write the moodle username and password in the letsloginyourself.py and the code will generate moodle token.
Open the Web Browser and go to https://moodlenotifier.herokuapp.com and register for the moodleNotifier.
To Run on the Local Machines with Source Code:
Using moodleNotifier is very simple. You need to have installed the dependencies for running the server locally in your machine.
To install python3 on ubuntu, run the following command in your terminal.
sudo apt-get install python3
To install Django on ubuntu, run the following command in your terminal.
pip3 install django
And install the requirements as mentioned in requirements.txt
One needs to git clone the project. After that open terminal in moodlenotifier of the project directory and run following commands.
python3 manage.py makemigrations
python3 manage.py migrate
python3 manage.py runserver
To access the application open the web browser and go to "localhost:8000"
To Run from the herokuapp Server:
The moodleNotifier app is hosted on the heroku Server.
To run it. Open web browser and goto https://moodlenotifier.herokuapp.com/
And then register yourself by clicking on register button and adding the details as required.
To chat with the bot :
Register with us at the website.
Add +1 (415) 523-8886 to your contacts.
Send first message : join enemy-pig
Just send Hi to the bot and it will send you information on what kind of questions to ask the bot.
NOTE:
You can't test the bot as you need to have a twilio account for that and add the server link/sms in the twilio whatsapp settings.
References :
https://docs.moodle.org/dev/Core_APIs
https://github.com/C0D3D3V/Moodle-Downloader-2
https://docs.djangoproject.com/en/3.1/
https://apscheduler.readthedocs.io/en/stable/modules/triggers/interval.html#module-apscheduler.triggers.interval
https://github.com/nikhilkumarsingh/WhatsAppBotTut
https://www.twilio.com/user/account/two-factor/verify?g=%2Fconsole%2Fsms%2Fwhatsapp%2Flearn%3F&t=f8ac1360bcde721e2e5d56ee98dc6b802a45b3aaa9b8b32b418cb431010b9d60
https://www.youtube.com/watch?v=MoX36izzEWY
https://getbootstrap.com/docs/4.5/getting-started/introduction/
source @ b3e98e2c
Subproject commit b3e98e2c2d46f7ef4549fb0746c0a92a340793d8
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