Fotobot
Get data from your photovoltaic plant
Signals | Public Member Functions | Static Public Member Functions | Private Member Functions | List of all members
UsersController Class Reference
Inheritance diagram for UsersController:
WebPage MRequestHandler

Signals

int saveUser (DBT_USERS)
 
void deleteUser (QString)
 

Public Member Functions

 UsersController ()
 
void servicePrivate (HttpRequest &request)
 
- Public Member Functions inherited from WebPage
 WebPage ()
 
virtual void service (HttpRequest &request, HttpResponse &response)
 
void redirect (const QString &location)
 
- Public Member Functions inherited from MRequestHandler
 MRequestHandler ()
 

Static Public Member Functions

static QString getEditFormContents (const DBT_USERS &line=DBT_USERS())
 
static void readForm (DBT_USERS &user, HttpRequest &request)
 
- Static Public Member Functions inherited from WebPage
static QString percentEncode (const QString &s)
 

Private Member Functions

 Q_DISABLE_COPY (UsersController)
 
void actionAdd (HttpRequest &request)
 
void actionEdit (HttpRequest &request)
 
void actionDelete (HttpRequest &request)
 

Additional Inherited Members

- Protected Member Functions inherited from WebPage
void setStatus (int code, QByteArray description)
 
void setHeader (QByteArray name, QByteArray value)
 
void setHeader (QByteArray name, int value)
 
void write (QByteArray data)
 
void write (QString data)
 
void write (const char *data)
 
void about ()
 
HttpSession getSession ()
 
virtual void writeHeader (HttpRequest &request, HttpResponse &response)
 
virtual void writeFooter (HttpRequest &request, HttpResponse &response)
 
- Protected Member Functions inherited from MRequestHandler
bool needsLogin (HttpRequest &request, HttpResponse &response)
 
- Protected Attributes inherited from WebPage
QString m_javascript
 
- Protected Attributes inherited from MRequestHandler
bool m_needs_access_data
 
bool m_needs_change_settings
 
bool m_cacheable
 

Detailed Description

Definition at line 16 of file userscontroller.h.

Constructor & Destructor Documentation

UsersController::UsersController ( )

Constructor

Definition at line 13 of file userscontroller.cpp.

13  {
14  qRegisterMetaType<DBT_USERS>();
15  connect(this, SIGNAL(saveUser(DBT_USERS)),
16  Static::db, SLOT(saveUser(DBT_USERS)),
17  Qt::QueuedConnection);
18  connect(this, SIGNAL(deleteUser(QString)),
19  Static::db, SLOT(deleteUser(QString)),
20  Qt::QueuedConnection);
21 }
Class describing database table USERS.

Member Function Documentation

void UsersController::actionAdd ( HttpRequest &  request)
private

Add an user action

second page doing the action and redirecting

Definition at line 105 of file userscontroller.cpp.

105  {
106  QByteArray action = request.getParameter("action");
107  write(QString("<h3>%1</h3>\n").arg(tr("Add an user")));
108  write("<form method=\"post\">\n"
109  "<input type=\"hidden\" name=\"action\" value=\"add2\" />\n");
110  DBT_USERS user;
111  readForm(user, request);
112  write("<table class=\"formTable\">");
113  write(getEditFormContents(user));
114  write("</table>");
115  write(QString("<input type=\"submit\" value=\"%1\">\n"
116  "</form>\n").arg(tr("Add")));
117  if (action == "add2") {
119  user.id = QString();
120  emit saveUser(user);
121  QString location = QString("/users?message=%1").arg(percentEncode(tr("User added.")));
122  redirect(location);
123  }
124 }
static void readForm(DBT_USERS &user, HttpRequest &request)
static QString getEditFormContents(const DBT_USERS &line=DBT_USERS())
Class describing database table USERS.
void UsersController::actionDelete ( HttpRequest &  request)
private

Delete user action

Definition at line 173 of file userscontroller.cpp.

173  {
174  write(QString("<h3>%1</h3>\n").arg(tr("Delete an user ")));
175  QString location;
176  QByteArray userid = request.getParameter("user");
177  if(!userid.isEmpty()) {
178  emit deleteUser(userid);
179  location = QString("/users?message=%1").arg(percentEncode(tr("User deleted.")));
180  } else {
181  location = QString("/users?message=%1").arg(percentEncode(tr("Error: Invalid user ID. User not deleted.")));
182  }
183  redirect(location);
184 }
void UsersController::actionEdit ( HttpRequest &  request)
private

Edit user action

a form

second page doing the action and redirecting

Definition at line 130 of file userscontroller.cpp.

130  {
131  QByteArray action = request.getParameter("action");
132  DBT_USERS user;
134  write(QString("<h3>%1</h3>\n").arg(tr("Edit an user")));
135  write("<form method=\"post\">\n"
136  "<input type=\"hidden\" name=\"action\" value=\"edit2\" />\n");
137  if (action == "edit") {
138  QByteArray userid = request.getParameter("user");
139  if(userid.isEmpty()) {
140  redirect(QString("/user?message=%1").arg(percentEncode(tr("Error: Invalid user ID."))));
141  return;
142  }
143  QList<DBT_USERS> users = Static::db->users(userid);
144  if(users.empty()) {
145  redirect(QString("/users?message=%1").arg(percentEncode(tr("Error: no such user found."))));
146  return;
147  }
148  write("<table class=\"formTable\">");
149  write(getEditFormContents(users.at(0)));
150  write("</table>");
151  } else {
152  readForm(user, request);
153  write("<table class=\"formTable\">");
154  write(getEditFormContents(user));
155  write("</table>");
156  }
157  write(QString("<input type=\"submit\" value=\"%1\"></form>\n").arg(tr("Save")));
158  if (action == "edit2") {
160  if(!user.id.isEmpty()) {
161  emit saveUser(user);
162  QString location = QString("/users?message=%1").arg(percentEncode(tr("User edited.")));
163  redirect(location);
164  } else {
165  write(QString("<p>%1</p>").arg(tr("Error: User definition invalid.")));
166  }
167  }
168 }
QList< DBT_USERS > users(const QString &user=QString())
Returs list of users or selected user.
Definition: database.cpp:274
static void readForm(DBT_USERS &user, HttpRequest &request)
static QString getEditFormContents(const DBT_USERS &line=DBT_USERS())
Class describing database table USERS.
QString UsersController::getEditFormContents ( const DBT_USERS line = DBT_USERS())
static

Generates an edit form contents (html input fields)

Definition at line 67 of file userscontroller.cpp.

67  {
68  QString s;
69  s += QString("<input type=\"hidden\" name=\"id\" value=\"%1\" />\n").arg(user.user);
70  s += QString("<tr>");
71  s += QString(" <td><label for=\"user\">%1</td>").arg(tr("Username"));
72  s += QString(" <td><input type=\"text\" name=\"user\" id=\"user\" value=\"%1\"></td>").arg(user.user);
73  s += QString(" </tr>");
74 
75  s += QString("<tr>");
76  s += QString(" <td><label for=\"password\">%1</td>").arg(tr("Password"));
77  s += QString(" <td><input type=\"text\" name=\"password\" id=\"password\"></td>");
78  s += QString(" </tr>");
79 
80  s += QString("<tr>");
81  s += QString(" <td><label for=\"can_access_data\">%1</td>").arg(tr("Can access data"));
82  s += QString(" <td><input type=\"checkbox\" name=\"can_access_data\" id=\"can_access_data\" %1></td>").arg((user.can_access_data) ? "checked=\"checked\"" : "");
83  s += QString(" </tr>");
84 
85  s += QString("<tr>");
86  s += QString(" <td><label for=\"can_change_settings\">%1</td>").arg(tr("Can change settings"));
87  s += QString(" <td><input type=\"checkbox\" name=\"can_change_settings\" id=\"can_change_settings\" %1></td>").arg((user.can_change_settings) ? "checked=\"checked\"" : "");
88  s += QString(" </tr>");
89 
90  return s;
91 }
void UsersController::readForm ( DBT_USERS user,
HttpRequest &  request 
)
static

Read form HTTP post reply and load into the line

Definition at line 93 of file userscontroller.cpp.

93  {
94  user.id = request.getParameter("id");
95  user.user = request.getParameter("user");
96  user.password = request.getParameter("password");
97  user.can_access_data = !request.getParameter("can_access_data").isEmpty();
98  user.can_change_settings = !request.getParameter("can_change_settings").isEmpty();
99 }
void UsersController::servicePrivate ( HttpRequest &  request)
virtual

Generates the response

Default action/page

Implements WebPage.

Definition at line 23 of file userscontroller.cpp.

23  {
24  QByteArray action = request.getParameter("action");
25  if (action.startsWith("add")) {
26  actionAdd(request); return;
27  } else if(action.startsWith("edit")) {
28  actionEdit(request); return;
29  } else if(action.startsWith("delete")) {
30  actionDelete(request); return;
31  }
32 
34 
35  QList<DBT_USERS> users = Static::db->users();
36  write(QString("<h2>%1</h2>\n").arg(tr("Users")));
37  write(QString("<a href=\"/users?action=add\">%1</a>\n").arg(tr("Add an user")));
38  write("<table>\n");
39  write(QString("<tr>"));
40  write(QString("<th></th>"));
41  write(QString("<th>%1</th>").arg("Username"));
42  write(QString("<th>%1</th>").arg("Can acess data"));
43  write(QString("<th>%1</th>").arg("Can change settings"));
44  write(QString("</tr>"));
45 
46  QList<DBT_USERS>::const_iterator i;
47  for(i = users.constBegin(); i != users.constEnd(); ++i) {
48  const DBT_USERS& l = *i;
49  write(QString("<tr>"));
50  write(QString("<td>"
51  "<a href=\"/users?action=edit&user=%1\">%2</a> "
52  "<a href=\"/users?action=delete&user=%1\">%3</a>"
53  "</td>")
54  .arg(l.user)
55  .arg(tr("Edit"))
56  .arg(tr("Delete"))
57  );
58  write(QString("<td>%1</td>").arg( (l.user) ));
59  write(QString("<td>%1</td>").arg( (l.can_access_data) ? "&#x2713;" : ""));
60  write(QString("<td>%2</td>").arg( (l.can_change_settings) ? "&#x2713;" : ""));
61  write(QString("</td>\n"));
62  }
63 
64  write("</table>\n");
65 }
QList< DBT_USERS > users(const QString &user=QString())
Returs list of users or selected user.
Definition: database.cpp:274
void actionAdd(HttpRequest &request)
void actionEdit(HttpRequest &request)
void actionDelete(HttpRequest &request)
Class describing database table USERS.

The documentation for this class was generated from the following files: