Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions anapneo/neo/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@


class UserProfileAdmin(admin.ModelAdmin):
list_display = ['user', 'email', 'first_name', 'last_name', 'city',
list_display = ['display_name', 'get_user_mail', 'first_name', 'last_name', 'city',
'country', 'lat', 'lon']

admin.site.register(UserProfile, UserProfileAdmin)
Expand All @@ -13,7 +13,7 @@ class FeedbackInline(admin.TabularInline):
extra = 2

class NeoAdmin(admin.ModelAdmin):
list_display = ['user', 'no','score', 'observation_date', 'position_ra',
list_display = ['get_user_display_name', 'no','score', 'observation_date', 'position_ra',
'position_dec', 'magnitude', 'updated', 'note', 'num_obs',
'arc', 'nominal_h', 'image', 'number_of_votes_yes',
'number_of_votes_no', 'number_of_votes_total']
Expand Down
17 changes: 14 additions & 3 deletions anapneo/neo/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@

class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
email = models.EmailField(max_length=100)
display_name = models.CharField(max_length=50, unique=True,
validators=[
RegexValidator(regex=r'("")|(^[a-z0-9_]+$)',
Expand All @@ -21,10 +20,17 @@ class UserProfile(models.Model):
country = models.CharField(max_length=40, blank=True, verbose_name="Country")
lat = models.CharField(max_length=20, blank=True, verbose_name="Latitude")
lon = models.CharField(max_length=20, blank=True, verbose_name="Longitude")


def get_user_mail(self):
return self.user.email
get_user_mail.short_description = 'email'

def __unicode__(self):
return str(self.display_name)


class Neo(models.Model):
user = models.ForeignKey(User)
user = models.ForeignKey(UserProfile)
no = models.IntegerField(verbose_name="ID", unique=True)
score = models.PositiveIntegerField(verbose_name="Score (%)")
observation_date = models.DateTimeField(verbose_name="Observation Date")
Expand All @@ -38,6 +44,10 @@ class Neo(models.Model):
arc = models.FloatField(verbose_name="Arc", validators=[MinValueValidator(0.0)])
nominal_h = models.FloatField(verbose_name="Nominal H", blank=True, validators=[MinValueValidator(0.0)])
image = models.ImageField(upload_to='.', verbose_name="Image", blank=True)

def get_user_display_name(self):
return self.user.display_name
get_user_display_name.short_description = 'display name'

def number_of_feedback(self):
return self.feedback_set.count()
Expand Down Expand Up @@ -76,6 +86,7 @@ def __unicode__(self):

class Meta:
ordering = ['no']



class Feedback(models.Model):
Expand Down
50 changes: 39 additions & 11 deletions anapneo/neo/views.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
from django.shortcuts import render, get_object_or_404, get_list_or_404, redirect
from django.contrib.auth.models import User
from django.core.paginator import Paginator, InvalidPage, EmptyPage
from django.template import RequestContext

from anapneo.neo.models import UserProfile, Neo, Feedback
from anapneo.neo.forms import NeoForm, UserProfileForm, FeedbackForm
from anapneo.decorators import is_logged_in
from django.db.models import Q

from datetime import datetime


def index(request):
neo_list = Neo.objects.all().extra(
select={
'display_name': 'SELECT display_name FROM neo_userprofile WHERE neo_userprofile.id = neo_neo.user_id'
},
).order_by('-no')[:7]
neo_list = Neo.objects.all().order_by('-no')[:7]
if request.user.is_authenticated():
me = UserProfile.objects.get(user=request.user)
return render(request, 'index.html', {'me': me, 'neo_list': neo_list})
Expand All @@ -28,11 +26,13 @@ def dashboard(request):
except UserProfile.DoesNotExist:
display_name = request.user
return redirect('/register/')
neos = Neo.objects.all().extra(
select={
'display_name': 'SELECT display_name FROM neo_userprofile WHERE neo_userprofile.id = neo_neo.user_id'
},
)

# Search form
if request.method == 'POST':
q = request.POST['query']
neos = filter_neos(q)
else:
neos = Neo.objects.all()

paginator = Paginator(neos, 50)
# Make sure page request is an int. If not, deliver first page.
Expand All @@ -48,7 +48,35 @@ def dashboard(request):

if request.user.is_authenticated():
return render(request, 'dashboard.html', {'neo_list': neo_list, 'page': page, 'me': me})
return render(request, 'dashboard.html', {'neo_list': neo_list, 'page': page})
return render(request, 'dashboard.html', {'neo_list': neo_list, 'page': page},
context_instance=RequestContext(request))


# It is used for searching in dashboard thus
# neo_fields MUST be the same with fields
# displayed in dashboard.html
def filter_neos(query):
str_fields = ['no',
#'observation_date', # No date fields included
'score',
'user__display_name',
'position_ra',
'position_dec',
'magnitude',
#'updated',
'num_obs',
'arc',
'nominal_h']

or_query = None
for f in str_fields:
q = Q(**{"%s__contains" % f : query})
if or_query is None:
or_query = q
else:
or_query = or_query | q

return Neo.objects.filter(or_query)


@is_logged_in
Expand Down
2 changes: 1 addition & 1 deletion anapneo/templates/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="brand" href="#">anapNEO</a>
<a class="brand" href="/">anapNEO</a>
<div class="nav-collapse collapse">
<ul class="nav">
<li><a href="/">Home</a></li>
Expand Down
10 changes: 8 additions & 2 deletions anapneo/templates/dashboard.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ <h3>Observations</h3>
{% if user.is_authenticated %}
<a id="dashboard-create" href="/neo/create/" class="btn btn-primary">submit new</a>
{% endif %}
<input type="text" placeholder="Search" class="input-medium search-query">
<form action="/dashboard/" method="post">
{% csrf_token %}
<input type="search" name="query" placeholder="Search" class="input-medium search-query">
</form>
</div>
</div>
<div>
Expand All @@ -31,11 +34,14 @@ <h3>Observations</h3>
</thead>
<tbody>
{% for neo in neo_list %}
{% comment %}
same fields with filter_neos() str_fields list
{% endcomment %}
<tr>
<td><a href="/neo/{{ neo.no }}/">{{ neo.no }}</a></td>
<td>{{ neo.observation_date }}</td>
<td>{{ neo.score }}</td>
<td><a href="/u/{{ neo.display_name }}/">{{ neo.display_name }}</a></td>
<td><a href="/u/{{ neo.user.display_name }}/">{{ neo.user.display_name }}</a></td>
<td>{{ neo.position_ra }}</td>
<td>{{ neo.position_dec }}</td>
<td>{{ neo.magnitude }}</td>
Expand Down
2 changes: 1 addition & 1 deletion anapneo/templates/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ <h2>Latest observations</h2>
<tr>
<td>{{ neo.no }}</td>
<td>{{ neo.score }}</td>
<td><a href="/u/{{ neo.display_name }}/">{{ neo.display_name }}</a></td>
<td><a href="/u/{{ neo.user.display_name }}/">{{ neo.user.display_name }}</a></td>
<td>{{ neo.position_ra }}</td>
<td>{{ neo.position_dec }}</td>
</tr>
Expand Down