[Members] Made frontend to use mainly rest api

This commit is contained in:
Henri Varjotie
2017-03-01 18:41:36 +02:00
parent da9f20a131
commit 75418da403
5 changed files with 41 additions and 29 deletions
+5 -4
View File
@@ -4,7 +4,8 @@ from datetime import datetime
from members.models import Member, MemberRequest
from django.conf import settings
#, default=timezone.now
# , default=datetime.fromtimestamp(0)
class MemberSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
first_name = serializers.CharField(required=True, max_length=127)
@@ -13,8 +14,8 @@ class MemberSerializer(serializers.Serializer):
POR = serializers.CharField(max_length=255)
AYY = serializers.BooleanField(default=False)
jas = serializers.BooleanField(default=False)
created = serializers.DateTimeField(default=timezone.now)
paid = serializers.DateTimeField(default=datetime.fromtimestamp(0))
created = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S")
paid = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S")
def create(self, validated_data):
'''
@@ -32,7 +33,7 @@ class MemberSerializer(serializers.Serializer):
instance.POR = validated_data.get('POR', instance.POR)
instance.AYY = validated_data.get('AYY', instance.AYY)
instance.jas = validated_data.get('jas', instance.jas)
instance.created = validated_data.get('created', instance.created)
# instance.created = validated_data.get('created', instance.created)
instance.paid = validated_data.get('paid', instance.paid)
instance.save()
return instance
+31 -22
View File
@@ -23,12 +23,12 @@ function memberDataEditor(returnPath) {
return function($scope, $http, $window, $location) {
var id = memberId;
console.log("id: " + id);
$http.get("/members/api/member/" + id).then(function(response) {
$http.get("/members/rest/api/members/" + id).then(function(response) {
$scope.member = response.data;
});
$scope.send = function() {
$http.put("/members/api/member/" + id, $scope.member).then(function(response){
$http.put("/members/rest/api/members/" + id + "/", $scope.member).then(function(response){
notySuccess("Jäsentiedot tallennettu");
$window.location = returnPath;
});
@@ -69,26 +69,26 @@ app.controller("getController", function($scope, $document, $http){
/* Fetch all members from the database and show all members in the table */
$scope.updateMembers = function() {
$http.get("/members/api/members").then(function(response){
$http.get("/members/rest/api/members").then(function(response){
$scope.members = response.data;
// map trues and falses to more user-friendly format
_.each($scope.members, function(m){
m.jas = m.jas ? "Kyllä" : "Ei";
m.AYY = m.AYY ? "Kyllä" : "Ei";
});
// _.each($scope.members, function(m){
// m.jas = m.jas ? "Kyllä" : "Ei";
// m.AYY = m.AYY ? "Kyllä" : "Ei";
// });
$scope.shown_members = $scope.members;
});
};
/* Fetch a single member from the database by id and update its row */
$scope.updateMember = function(id) {
$http.get("/members/api/member/" + id).then(function(response) {
$http.get("/members/rest/api/members/" + id).then(function(response) {
for (var i = 0; i < $scope.shown_members.length; i++) {
var member = $scope.shown_members[i];
if (String(member.id) == String(id)) {
member = response.data;
member.jas = member.jas ? "Kyllä" : "Ei";
member.AYY = member.AYY ? "Kyllä" : "Ei";
// member.jas = member.jas ? "Kyllä" : "Ei";
// member.AYY = member.AYY ? "Kyllä" : "Ei";
$scope.shown_members[i] = member;
}
@@ -99,12 +99,21 @@ app.controller("getController", function($scope, $document, $http){
/* Update the payment date of a single member to the current time and send
* the member to the database */
$scope.updatePayment= function(id){
$http.put("/members/api/member/"+id, { paid: moment().format("YYYY-MM-DD kk:mm:ss") }).then(function(response) {
$scope.updateMember(id);
notySuccess("Maksupäivämäärä päivitetty.");
$scope.member = {};
//Find member whose payment needs to be updated
$scope.member = $scope.members.find(function(element){
return element.id == id;
});
//Update the member data if member was found
if($scope.member != undefined){
$scope.member.paid = moment().format("YYYY-MM-DD kk:mm:ss");
$http.put("/members/rest/api/members/"+id +"/", $scope.member).then(function(response) {
$scope.updateMember(id);
notySuccess("Maksupäivämäärä päivitetty.");
});
}
};
/* Redirect the browser to the CSV dump download endpoint */
$scope.loadCSV = function() {
window.location = "/members/api/getCSV";
@@ -112,7 +121,7 @@ app.controller("getController", function($scope, $document, $http){
/* Delete a single member by id */
$scope.deleteMember = function(id) {
$http.delete("/members/api/member/" + id).then(
$http.delete("/members/rest/api/members/" + id).then(
function(response) {
notySuccess("Poistaminen onnistui")
$scope.updateMembers();
@@ -160,7 +169,7 @@ app.controller("getController", function($scope, $document, $http){
if (name.length == 0) continue;
if (member.first_name.toLowerCase().includes(name)
|| member.last_name.toLowerCase().includes(name)
|| member.last_name.toLowerCase().includes(name)
|| member.email.toLowerCase().includes(name)) {
result.push(member);
@@ -213,7 +222,7 @@ app.controller("getController", function($scope, $document, $http){
app.controller("postController", function($scope, $http, $location) {
$scope.member = {};
$scope.send = function() {
$http.post("/members/api/member/", $scope.member).then(function(response){
$http.post("/members/rest/api/members/", $scope.member).then(function(response){
notySuccess("Jäsen lisätty!");
});
}
@@ -222,12 +231,12 @@ app.controller("postController", function($scope, $http, $location) {
/* Controller for application page */
app.controller("applController", function($scope, $http){
$scope.applUpdateAll = function() {
$http.get("/members/api/requests").then(function(response){
$http.get("/members/rest/api/requests").then(function(response){
$scope.applications = response.data;
_.each($scope.applications, function(a){
a.member.jas = a.member.jas ? "Kyllä" : "Ei";
a.member.AYY = a.member.AYY ? "Kyllä" : "Ei";
});
// _.each($scope.applications, function(a){
// a.member.jas = a.member.jas ? "Kyllä" : "Ei";
// a.member.AYY = a.member.AYY ? "Kyllä" : "Ei";
// });
});
};
+2 -2
View File
@@ -33,8 +33,8 @@
<label>Asuinkunta: </label>
<input id="PORField" required type="text" placeholder="Otaniemi" class="form-control" ng-model="member.POR"></input>
</div>
<button class="btn btn-success" ng-click="applicationForm.$valid && sendappl()" type="submit" id="sendmember">Tallenna</button>
<button class="btn btn-warning" ng-click="cancelappl()" type="submit" id="sendmember">Peruuta</button>
<button class="btn btn-success" ng-click="applicationForm.$valid && send()" type="submit" id="sendmember">Tallenna</button>
<button class="btn btn-warning" ng-click="cancel()" type="submit" id="sendmember">Peruuta</button>
</form>
</div>
</div>
+1 -1
View File
@@ -24,7 +24,7 @@ memberlogger = logging.getLogger(__name__)
logging.basicConfig(format='[%(levelname)s]%(asctime)s %(message)s', level=settings.LOGGERLEVEL, filename=settings.LOGPATH)
#API views
# REST API views
########################################
class MembersList(generics.ListCreateAPIView):
queryset = Member.objects.all()
+2
View File
@@ -102,6 +102,8 @@ urlpatterns = [
url(r'^members/api/request/(?P<idx>\d+)$', handle_mem_request),
url(r'^members/api/getCSV$', mem_csv_export),
url(r'^members/tommy$', tommy_blooper),
# Members API
url(r'^members/rest/api/members/$', memsListAPI.as_view()),
url(r'^members/rest/api/members/(?P<pk>\d+)/$', memDetailAPI.as_view()),
url(r'^members/rest/api/requests/$', reqListAPI.as_view()),