Skip to content

Commit

Permalink
refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
sirmmo committed Jul 31, 2011
1 parent fe019b1 commit 12edc86
Show file tree
Hide file tree
Showing 6 changed files with 104 additions and 75 deletions.
3 changes: 3 additions & 0 deletions rambo/core/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ def index(request):
'get_shared_resources':reverse("get_shared_resources", kwargs={"user":request.user.username}),
})

def register(request):
pass

# Create your views here.

def add_booking(request):
Expand Down
2 changes: 0 additions & 2 deletions rambo/resources/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,5 @@

admin.site.register(Resource)
admin.site.register(ResourceCategory)
admin.site.register(ResourceProperty)

admin.site.register(UserConnection)
admin.site.register(ConnectionRequest)
17 changes: 7 additions & 10 deletions rambo/resources/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,20 @@
def do_get_resources(user):
r = Resource.objects.filter(owner__username = user)

return [{'name':n.name, 'url':n.url()} for n in r]
return [{'name':n.name, 'url':n.url(), 'share':n.share()} for n in r]

def do_get_resource(user, resource_name):
r = Resource.objects.get(owner__username = user, name = resource_name)
r = Resource.objects.get(owner__username = user, slug = resource_name)

ps = r.properties.all()

pr = {}
for p in ps:
pr[p.name] = p.value
pu = {
pu = {
'slug': str(r.slug),
'category':str(r.category),
'owner':str(r.owner),
'name':str(r.name),
'icon':str(r.icon),
'url':r.url(),
'properties':pr,
'share':r.share(),
'bookings':r.url()
}
return pu
def get_template():
Expand Down Expand Up @@ -64,6 +61,6 @@ def do_remove_category(user, name):
def do_get_shared_resources(user):
r_set = set()
for uc in UserConnection.objects.filter(target__username = user):
r_set.update(uc.shared_resources.all())
r_set.add(uc.shared_resource)
return [{'name':n.name, 'url':n.url(), 'owner':n.owner.username} for n in r_set]

56 changes: 11 additions & 45 deletions rambo/resources/models.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,14 @@
from django.db import models

from django.contrib.admin.models import User
from django.template.defaultfilters import slugify

from django.core.urlresolvers import reverse

class ResourceCategory(models.Model):
parent = models.ForeignKey('ResourceCategory', null=True,blank=True, default=None)
name = models.CharField(max_length=250)
slug = models.SlugField(blank=True, null=True, unique=True)

def save(self, *args, **kwargs):

self.slug = slugify(self.name)

super(ResourceCategory, self).save(self, *args, **kwargs)

def __unicode__(self):
Expand All @@ -23,56 +18,27 @@ class Resource(models.Model):
owner = models.ForeignKey(User)
category=models.ForeignKey(ResourceCategory)
name = models.CharField(max_length = 250)

slug = models.SlugField(blank=True, null=True, unique=True)
icon = models.ImageField(upload_to="icons")

def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(Resource, self).save(self, *args, **kwargs)

def __unicode__(self):
return self.name
def url(self):
kwa = {'user':self.owner.username, 'name':self.name}
return reverse('get_resource',args=[],kwargs={'user':self.owner.username, 'resource':self.name})
return reverse('get_resource',args=[],kwargs={'user':self.owner.username, 'resource':self.slug})
def share(self):
return reverse('share_resource', args=[], kwargs={'user':self.owner.username, 'resource':self.slug})
class Meta:
unique_together= ('owner', 'name')

class ResourceProperty(models.Model):
name = models.CharField(max_length=250)
value=models.CharField(max_length=250)

resource = models.ForeignKey(Resource, related_name="properties")

def __unicode__(self):
return "%s.%s = %s" % (self.resource, self.name, self.value)

unique_together= ('owner', 'slug')

class UserConnection(models.Model):
owner = models.ForeignKey(User, related_name="sharing")
target = models.ForeignKey(User, related_name ="shared")

shared_resource = models.ForeignKey(Resource,related_name="shared_by")

def __unicode__(self):
return "%s => %s [%s]" % (self.owner, self.target, ", ".join([str(r) for r in self.shared_resources.all()]))

class ConnectionRequest(models.Model):
requester = models.ForeignKey(User, related_name="requests_sent")
owner = models.ForeignKey(User, related_name="requests_to_answer")

def accept(self, resources):
u = UserConnection()
u.owner = self.owner
u.target = self.requester
u.save()
for resource in resources :
u.shared_resources.add(Resource.objects.get(id=resource))
u.save()

self.remove()

def refuse(self):
self.remove()

def ignore(self):
pass

transparent_share = models.BooleanField(default=False)
def __unicode__(self):
return "%s => %s" % (self.requester, self.owner)
return "%s => %s [%s]" % (self.owner, self.target, self.shared_resource)
5 changes: 3 additions & 2 deletions rambo/resources/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@
url(r'r/add$', 'resources.views.add_resource', name='add_resource'),
url(r'r/add/template$', 'resources.views.add_resource_template', name='add_resource_template'),
# url(r'r/add/form$', 'resources.views.add_resourcei_form', name='add_resource_form'),
url(r'r/(?P<user>\w+)/(?P<resource>\w+)$', 'resources.views.get_resource', name='get_resource'),
url(r'r/(?P<user>\w+)/(?P<resource>\w+)/remove$', 'resources.views.remove_resource', name='remove_resource'),
url(r'r/(?P<user>\w+)/(?P<resource>[-\w]+)$', 'resources.views.get_resource', name='get_resource'),
url(r'r/(?P<user>\w+)/(?P<resource>[-\w]+)/share$', 'resources.views.get_resource', name='share_resource'),
url(r'r/(?P<user>\w+)/(?P<resource>[-\w]+)/remove$', 'resources.views.remove_resource', name='remove_resource'),
url(r'r/(?P<user>\w+)$', 'resources.views.get_resources', name='get_resources'),
url(r's/(?P<user>\w+)$', 'resources.views.get_shared_resources', name="get_shared_resources"),
url(r'c$', 'resources.views.get_categories', name="get_categories"),
Expand Down
96 changes: 80 additions & 16 deletions rambo/templates/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/ui-lightness/jquery-ui.css" type="text/css" rel="Stylesheet" />

<link rel="stylesheet" type="text/css" href="http://arshaw.com/js/fullcalendar-1.5.1/fullcalendar/fullcalendar.css" />
<link href='http://fonts.googleapis.com/css?family=Dawning+of+a+New+Day|Meddon' rel='stylesheet' type='text/css'>
<style>
body{
margin:0 0 0 0;
Expand All @@ -17,6 +18,9 @@
#header{
height:100px;
display:block;
font-family: 'Dawning of a New Day', cursive;
font-size:70px;
padding-left:25px;
}
#footer{
display:block;
Expand Down Expand Up @@ -44,17 +48,28 @@
width:16px;
height:16px;
}
.share{
float:right;
padding-right:16px;
}
</style>
<script>
render_resource = function(data){
var r = $("<li></li>");
var a = $("<a></a>");
if ('owner' in data)
r.append(data['owner'] + ": ");
r.append(data['owner'] + ": ");
a.attr('href',"#"+ data['url']);
a.attr('class', 'resource');
a.append(data['name']);
r.append(a);
if (!('owner' in data)){
var s = $('<a></a>');
s.append('share');
s.attr('href', '#'+data['share']);
s.attr('class', 'share');
r.append(s);
}
return r;
}

Expand All @@ -77,36 +92,56 @@
return data['content']
}

drag_start = function(event, ui){
var el = $(event.srcElement);
url = el.attr('href').split('#')[1];
$.getJSON(url, function(data){
/*setup calendar*/
});
}

$(function(){


$.getJSON('{{get_user_resources}}', function(data){
if(data['type'] == "response"){
$('#own_resources').append(render_resources(data['content']));
$('.resource').draggable({
revert:true,
revertDuration:0
});
}else;
if(data['type'] == "response"){
$('#own_resources').append(render_resources(data['content']));
$('.resource').draggable({
revert:true,
revertDuration:0,
start:drag_start
});
}else;
});

$.getJSON('{{get_shared_resources}}', function(data){
if(data['type'] == "response")
{$('#shared_resources').append(render_resources(data['content']));
$('.resource').draggable({
revert:true,
revertDuration:0
});
}else;
if(data['type'] == "response"){
$('#shared_resources').append(render_resources(data['content']));
$('.resource').draggable({
revert:true,
revertDuration:0,
start:drag_start
});
}else;
});

$(window).hashchange(function(){
nurl = location.hash.split('#')[1];
alert(nurl);
$.getJSON(nurl, function(data){
alert(data);
});
});
$('#resource_calendar').fullCalendar({
droppable:true,
dropaccept:".resource",
drop: function(date, allDay){
alert("Dropped " +$(this).attr('href')+ " on " + date + " with allDay=" + allDay);
},
defaultView:'agendaWeek',
header:{
left:'title',
center:'month,agendaWeek,agendaDay',
right: 'today prev,next'
}
});

Expand All @@ -117,6 +152,35 @@
});
});
});
$('.share').live('click', function(event){
var dd = $(this);
event.preventDefault();
var t = $("<div></div>");
t.addClass('sharebox');
var i = $("<input></input>");
i.attr('type', 'text');
t.append(i);
var p = dd.position();
t.dialog({
position:[p.left, p.top],
title:"Share",
buttons:{
"Ok":function(){
var url = dd.attr('href').split('#')[1];
var user = $(this).find('input').val();
$.getJSON(url, {"user":user}, function(data){
/*do stuff*/
$(this).dialog('destroy');
$('.sharebox').remove();
});
},
"Cancel":function(){
$(this).dialog('destroy');
$('.sharebox').remove();
}
}
});
});
});
</script>
</head>
Expand Down

0 comments on commit 12edc86

Please sign in to comment.